Как сослаться или рассчитать процентное изменение высоты тона между двумя нотами?

Я создаю программное обеспечение для арпеджиатора.

Итак, для начала у меня есть нота для фортепианного семпла, назовите ее 'piano-base-note.mp3'.

и у меня есть скрипт для увеличения/уменьшения высоты тона mp3 файла на несколько процентов. Когда арпеджиатор запустится, он создаст измененные mp3-файлы, необходимые для воспроизведения арпеджио. То есть он изменит высоту тона и сохранит новые копии.

Прямо сейчас я определяю «ноту» с точки зрения процентной разницы от базовой ноты. Т.е. снизить высоту тона на 50% будет 0.5. Для двойного шага есть 2.0.

Теперь я пытаюсь использовать этот процентный подход для создания реальных весов, но я не знаю, как это сделать.

Есть ли какая-нибудь диаграмма, показывающая процентное изменение высоты тона между двумя нотами? Или формула для расчета?

huygens-fokker.org/scala , возможно, стоит заглянуть.
Я собирался спросить, почему вы используете процентную разницу (ненужное усложнение), а не отношение, но потом увидел, что вы используете отношение! (Два смещения, которые вы упомянули, выраженные в процентах, будут составлять -50% и +100%.)
Если вы читаете код Objective-C, посмотрите этот созданный мной класс, который делает именно то, о чем вы просите. Класс аудиоплеера в библиотеке также позволяет изменять высоту семпла в режиме реального времени. Здесь: github.com/rednebmas/SBMusicUtilities/blob/master/…

Ответы (7)

Общий ответ на вопрос «каково процентное изменение высоты тона между двумя нотами», вероятно, «четверг», поскольку ОП не дал никакой подсказки, что означает «нота».

Если вы говорите об обычной западной музыке и равной темперации, октава имеет соотношение частот 2:1 и делится на 12 частей (полутонов). Изменения высоты звука работают в логарифмической шкале, поэтому один полутон имеет соотношение высоты тона (12-й корень из 2) : 1, или увеличение на 5,94630943592952645618252949463% (согласно калькулятору в Windows 10).

Стандартный способ описания численного размера музыкальных интервалов — в «центах» — один цент равен 1/100 полутона или 1/1200 октавы в логарифмической шкале. Таким образом, один цент представляет собой отношение высоты тона 0,05777895065548592967925757932% - обратите внимание, что, поскольку это логарифмическая шкала, это НЕ «размер полутона, разделенный на 100», то есть 0,0594630943592952645618252949463%.

Есть много других возможных систем настройки - попробуйте https://en.wikipedia.org/wiki/Musical_temperament , чтобы начать, или погуглите "музыкальный темперамент".

В «Просто интонации» интервалы арпеджио обычно представляют собой довольно простые дроби, такие как 5/4, 4/3, 3/2, 8/5 и т. д.

Нет глубокой логической причины, почему октава должна быть разделена на 12 равных частей, как в популярной западной музыке. Например, в «классической» индийской музыке используется шкала с 22 неравными делениями. На Западе также использовались шкалы с другими числами равных делений - например, 19, 24, 53 или 72 «ноты на октаву» вместо 12.

Отличный ответ, но есть (не обязательно глубокая) логическая причина разделить гамму на равные полутона. Если мы используем только интонацию и движемся по кругу пятых, от до до до, мы окажемся немного не в том месте, где начали. Исторически использовались другие компромиссы, когда одни клавиши звучали более гармонично, чем другие - каждая клавиша имела свой «цвет». . . с появлением равной темперации стало возможным писать музыку, в которой использовались изменения тональности, такие как переход в другую тональность из доминирующего 7-го аккорда. (Как ни странно, доминирующий септаккорд в одной интонации звучит очень ровно)

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

Во-первых, общее правило, справедливое для обеих систем.

Чтобы найти ноту на октаву выше другой, умножьте ее номер на 2. Чтобы найти ноту на октаву ниже другой, разделите ее номер на 2.

Просто интонация

В простой интонации число, на которое вы будете умножать высоту тона, будет отношением между двумя целыми числами — вы привели два примера в своем вопросе: 1/2 (или 0,5) и 2/1 (или 2,0).

Вот дроби, на которые нужно умножить базовую ноту, чтобы получить ноты мажорной гаммы только в интонации:

Тоник/1-й: 1

2-й: 9/8

3-й: 5/4

4-й: 4/3

5-й: 3/2

6-й: 5/3

7-е: 15/8

А вот дроби для нот минорной гаммы:

Тоник/1-й: 1

2-й: 9/8

3-й: 6/5

4-й: 4/3

5-й: 3/2

6-й: 8/5

7-й: 9/5

Равный темперамент

Октава делится на 12 полутонов. В равной темперации каждый из полутонов имеет одинаковую величину — корень двенадцатой степени из двух. Таким образом, 1 полутон вверх равен 1 умноженному на двенадцатый корень из двух, 2 полутона вверх равен 2 умноженному на двенадцатый корень из двух и так далее. Вот десятичные приближения для равных темперированных интервалов шкалы.

1 полутон/младшая секунда: 1,059463

2 полутона/большая секунда: 1,122462

3 полутона/минорная терция: 1,189207

4 полутона/мажорная терция: 1,259921

5 полутонов/чистая четвертая: 1,334840

6 полутонов/тритон: 1,414214

7 полутонов/чистая квинта: 1,498307

8 полутонов / минорная шестая: 1,587401

9 полутонов/большая шестая: 1,681793

10 полутонов/младшая септима: 1,781797

11 полутонов/большая септима: 1,887749

12 полутонов/октава: 2,0

Итак, какую систему следует использовать?

Интервалы просто интонации имеют более чистое звучание. Однако он работает только в одном ключе. Если вы установите пропорции для до мажор только в интонации, а затем сыграете ре мажорную гамму или арпеджио, это будет звучать неправильно. Поскольку вы пишете программу, я предполагаю, что вы хотите, чтобы она работала во всех тональностях, поэтому я бы сказал, что равный темперамент — правильная формула для работы. Кроме того, вы упомянули, что использовали сэмпл фортепиано. Фортепиано настроено в равной темперации, поэтому, вероятно, звук настоящего фортепиано будет звучать более точно, если вы используете равную темперацию.

На самом деле пианино не настроено на одинаковую темперацию (погуглите «Растянутая настройка»), но если ОП работает только с ОДНИМ семплом пианино, это в любом случае не имеет значения.
В растянутом строе шаги не равны друг другу?
Растянутый строй - это что-то близкое к идеальной квинте, равно темперированной на 7 шагов, поэтому pow((3/2), (n/7)), а не октава, разделенная поровну на 12 нот. Насколько я понимаю, Steinway ожидает, что их пианино будут настроены именно так. В действительности оно варьируется в зависимости от фортепиано и регистра, так как обертоны ударной фортепианной струны шире, чем обертоны идеальной струны, и изменяются в зависимости от индивидуальных характеристик каждой струны (подробнее об этом явлении читайте на en.m. wikipedia.org/wiki/Негармоничность ).

Ваша формула в стиле Excel будет выглядеть как pow(2, (n/12)), где n — это n на полшага выше исходного шага.

Для мажорной гаммы используйте ноты 0, 2, 4, 5, 7, 9, 11 и 12.

Это даст вам равномерную темперированную мажорную гамму в формате mp3.

Другие ответы идут довольно глубоко, но я обнаружил, что для быстрых предварительных расчетов я буду использовать 6% в качестве полушага - умножить или разделить на 1,06 - поскольку это примерно равно 12-й корень из 2. Это приличное приближение к 12-TET, если вас не волнует интонация и вы просто хотите оценить, скажем, насколько меньше ваши гитарные лады должны быть выше грифа или еще что-то. Конечно, если мне нужен точный ответ, я бы никогда этого не сделал, но только для мысленных экспериментов, где мне нужна приблизительная догадка, я укажу 6%.

6% — удивительно хорошее приближение (ошибка 0,9 цента), но при суммировании ошибки могут суммироваться, поэтому нет причин не использовать полную точность в компьютерной программе. Примечательно, что исторически в приборостроении использовалось «правило 18», поэтому первый лад находился на 17/18 длины мензуры инструмента (погрешность 1,0 цент).

Используя высокоточный калькулятор SpeedCrunch для Linux... это похоже на майнинг биткойнов, поскольку конечное число выстраивается в линию с идеальным рядом нулей в конце....

В 64-битной плавающей запятой:


1
= 1.00000000000000000000000000000000000000000000000000

ans*2^(1/12)
= 1.05946309435929526456182529494634170077920431749419

ans*2^(1/12)
= 1.12246204830937298143353304967917951623241111061399

ans*2^(1/12)
= 1.18920711500272106671749997056047591529297209246382

ans*2^(1/12)
= 1.25992104989487316476721060727822835057025146470151

ans*2^(1/12)
= 1.33483985417003436483083188118445277491239021262520

ans*2^(1/12)
= 1.41421356237309504880168872420969807856967187537695

ans*2^(1/12)
= 1.49830707687668149879928073202979579630215155373175

ans*2^(1/12)
= 1.58740105196819947475170563927230826039149332789985

ans*2^(1/12)
= 1.68179283050742908606225095246642979008006852471357

ans*2^(1/12)
= 1.78179743628067860948045241118102501597442523175632

ans*2^(1/12)
= 1.88774862536338699328382631333506875201513660667749

ans*2^(1/12)
= 2.00000000000000000000000000000000000000000000000000

@user19146 user19146 похоже, вы имеете в виду пифагорейскую настройку, которая, хотя и довольно крутая, математически элегантная и использует простые дроби, не так причудлива, как логарифм 1/12. Близко, но не совсем.

Обязательно ли, чтобы ноты арпеджио были нотами тональности? Вы можете подумать о том, чтобы распределить их одинаково (в абсолютных частотах, а не в логарифмах), чтобы каждый был кратным (в пределах допуска темперамента) одной и той же основной частоты. Таким образом: предположим, что вы переходите от частоты 0 к частоте 1 с N-1 промежуточными шагами, j-я нота такого арпеджио будет freq0+j*(freq1-freq0)/N.

(Если идеальное соотношение между крайними частотами равно p:q, например 5:8 для минорной сексты, N должно быть кратно |pq|.)

Я знаю, что это старо, но мне было интересно то же самое. После некоторых исследований и расчетов для себя ответ, который, как мне кажется, искал ОП, выглядит следующим образом: для равнотемперированной шкалы с 12 нотами на октаву каждая нота или полутон на 5,946309436% «выше» по частоте, чем предыдущее примечание. Таким образом, если у вас есть фортепианный сэмпл в «A», и вы играете его со скоростью 1,0596309436x, он будет воспроизводиться как A#/Bb. Для B вы увеличиваете скорость воспроизведения семпла A#/Bb еще на 5,963...% (что примерно в 1,1225 раз превышает скорость воспроизведения исходного семпла). Значение 5,96309436% работает только постепенно при увеличении масштаба. При понижении шкалы каждая нота (полутон) должна воспроизводиться на 5,612568731% ниже/медленнее, чем предыдущая нота (или приблизительно 0,9439-кратная скорость воспроизведения).

Вот простая частичная диаграмма, показывающая скорость воспроизведения и результирующую частоту нескольких нот, если вы использовали образец, который был A с нормальной скоростью (440 Гц):

F#Gb- 0,8409x 369,99 Гц (на 5,61% медленнее, чем G)

G------ 0,8909x 392,00 Гц (на 5,61% медленнее, чем G#/Ab)

G#Ab- 0,9439x 415,30 Гц (на 5,61% медленнее, чем A)

А------ 1.0000x 440.00Гц

A#Bb- 1,0595x 466,16 Гц (на 5,95% быстрее, чем A)

B------ 1,1225x 493,88 Гц (на 5,95% быстрее, чем A#Bb)

C ------ 1,1892x 523,25 Гц (на 5,95% быстрее, чем B)

C#Db — 1,2599x 554,37 Гц (на 5,95% быстрее, чем C)

Просто продолжайте таким же образом в любом направлении для любой другой ноты, которую вы хотите воспроизвести на основе исходного семпла.

Я бы добавил формулу вычисления магических 5,6...% (12-й корень из 2 минус 1) и рекомендовал бы заменить медленнее на меньшую , а быстрее на большую, так как если уже говорить о частотах, то медленнее/быстрее больше вводит в заблуждение, чем полезный.