2014-10-13 4 views
1

Я занимаюсь исследованиями, пытаясь понять, как звучат звуки и синусоидальные волны, особенно с аккордами. До сих пор мое понимание заключается в следующем:Генератор музыки Sine Wave

1) b(t) = sin(Api(t)) is the base note of the chord at frequency A. 
2) T(t) = sin(5/4piA(t)) is the major third of the base b(t). 
3) D(t) = sin(3/2piA(t)) is the dominant (fifth) of the base b(t). 
4) A(t) = sin(2Api(t)) is the octave. 

в одиночку Каждый отдельная частота, которая легко для компьютера генератор звука. Тем не менее, основной аккорд ноты с частотой A выглядит следующим образом:

мажорный аккорд = B + T + D + A

мне было интересно, если кто-то есть способ сделать компьютерный синтезатор играть эту функцию так Я слышу результат; большинство программ, которые я нашел, принимают только Hz как вход, а эта функция имеет длину волны, она отличается от простой синусоидальной волны с той же длиной волны.

Примечание: опубликуйте это также в разделах физики и музыки - просто интересно, знаете ли вы, что компьютерные ученые что-то об этом знают.

+0

появляется этот вопрос, чтобы быть вне темы, потому что речь идет о музыкальных алгоритмах, а не программирование, и кросс-публикуемой здесь: http://stackoverflow.com/questions/26334531/science-of-chords –

ответ

2

Вам просто нужно масштабировать функцию так, чтобы корень хорды был на желаемой частоте. Например, частота корней А в основной аккорде составляет 440 Гц. Поэтому 3-я, 5-я и октава будут составлять 440 * 5/4, 440 * 3/2 и 440 * 2 соответственно.

Чтобы создать звуки на компьютере, первое, что вам нужно сделать, - это преобразовать функции из непрерывного времени в дискретное время и от непрерывного уровня до квантованного уровня. В Интернете есть много хороших ссылок на эту тему.

непрерывной версии время синусоидальной волны будет нечто вроде

y = ampl * sin(2 * pi * freq) 

Дискретный версия хотел бы это:

y[n] = ampl * sin(2 * pi * freq/sampleRate) 

где п представляет собой число выборок и SampleRate это число разделов второй.

Затем компоненты мажорного будут построены следующим образом:

root[n] = ampl * sin(2 * pi * freq/sampleRate) 
third[n] = ampl * sin(2 * pi * freq * (5/4)/sampleRate) 
fifth[n] = ampl * sin(2 * pi * freq * (3/2)/sampleRate) 
octave[n] = ampl * sin(2 * pi * freq * 2/sampleRate)