>Могу помочь перевести на C# или C++, но не раньше послезавтра.
Но если
>Нет, получаются только последовательные семплы, но за счёт этого как раз все формулы сильно упрощаются.
то не надо.
А в сложном виде формул это возможно? И насколько они будут громоздкими?
практически случайно сделал перегруженную гитару. просто домножил сигнал на слишком большую величину и обрезал. всио. звучит офигенно. завтра студентам на паре сыграю что-нибудь из раммштайна : D
Suslik
> просто домножил сигнал на слишком большую величину и обрезал. всио. звучит
> офигенно
Тоже сталкивался с этим. Ещё лучше зазвучит, если предварительно подрезать сильно низкие частоты и немного верхние. Ещё в реальных Overdrive обработках применяют несимметричный срез - диод в одну сторону, свотодиод в другую. Да и сами диоды имеют не совсем прямоугольную характеристику.
А в компьютерном софте для электрогитар вообще можно произвольную функцию выбрать. От синуса, вроде, прикольный хлесткий звук получался :)
Mikle
чем бы семпл звуковой записать? в смысле как бы снять прямо системный звук?
Suslik
> чем бы семпл звуковой записать?
Просто гони в WAV то, что воспроизводишь. Или я вопрос не понял?
}:+()___ [Smile]
В смысле синусом грузить? Это от роста амплитуды будут сильно расти гармоники... можно попробовать.
Mikle
> Просто гони в WAV то, что воспроизводишь. Или я вопрос не понял?
а, точно. просто у меня же звук в реалтайме генерится, я думал его записывать чем-то, как фрапсом записывают видео. но можно просто писать в wav.
Mikle, перетащил твой код в си.
Такой вопрос, с какого перепуга волна "ерзает" при циклическом запуске функции? т.е. если повторить просчет, результат будет другой...
Или я чего-то с портированием накосячил?
1. Там есть RND, то есть при каждом новом запуске результат немного разный.
2. Если ты сделал коэффициент RND равным нулю, то, может быть, просто не очищаешь память массива или какие-то переменные? VB6 это делает автоматом.
Какой именно пример переводил?
rnd=0, ну и он как-бы инитится, так что последовательность идентична.
>>не очищаешь память массива или какие-то переменные? VB6 это делает автоматом
о, об этом не знал (с vb первый раз сегодня столкнулся, но там у тебя компактно по коду, минут за 10 перетащил на си), гляну сегодня еще. пример - "физическая модель струны"
f0xx
> rnd=0, ну и он как-бы инитится, так что последовательность идентична.
В том примере инициализируется так:
Randomize Timer
То есть каждый раз по разному.
А вот эти строки:
ReDim P(stLen) ReDim S(stLen) ReDim FdM(stLen)
Делают что-то типа zeromem, даже если значение stLen с прошлого раза не поменялось.
код сишный вылить сюда? надо кому?
p.s. от rnd ползет тон. так и надо?
f0xx
> от rnd ползет тон
Mikle
> коэффициент рэндома лучше всего ставить в пределах от 1/1000 до 1/500 длины
> струны. Меньше - звук электронный, больше - фальшивит.
еще, вопрос. Как это настраивать, чтобы, скажем, получить ДО (пофиг какой октавы)?
Тема в архиве.