Рубрики
Без рубрики

Python Audio Обработка в LightSpeed ⚡ Часть 2: pytuning.

В последнем посте я охватил, как Zignal может делать основные виды волн и манипулировать и отображать их …. Теги с Python, Audio.

Python-Audio (4 части серии)

В последнем посте я охватил, как Zignal может делать основные виды волн и манипулировать и отображать их. Теперь я собираюсь описать другую аудио библиотеку под названием Pyyuning Отказ Эта библиотека делает весы, которые могут настраивать синтезаторы, такие как yoshimi или zynaddsubfx.

Для того, чтобы вы понять этот пост, вы должны понять, что такое тюнинг Отказ Тюнинг – это процесс «регулировки шага одного или многих тонов от музыкальных инструментов для установления типичных интервалов между этими тонами» ( Wikipedia Ссылка). Другими словами, каждый инструмент может построить мелодии разных смол/частоты, есть шаги, которые предполагаются, что эти тона должны быть в зависимости от прибора и тюнинга калибруют тонус, чтобы быть правильным эталонным шагом/частотой для прибора.

Есть определенные частоты для каждой музыкальной ноты. Например, примечание A выше среднего C (A4) закреплена до 440 Гц, и то, как большинство людей настраивают свои инструменты, состоит в том, чтобы прослушиваться к полету, что тона делает и угадать, если это правильная частота. Требуется обученный ухо, чтобы привыкнуть к каждой частоте. Есть также электронные тюнеры, которые могут рассчитать шаг, который воспроизводится.

Как Pypyuning полезен

В то время как Pyyuning Не является заменой тюнера, он имеет разные масштабы частот, которые вы можете создавать и настроить звуковым согласным. Недоставленная или неправильно настроенная настраиваемая шкала, а также при инструменте расширения, будет иметь несколько заметок на мелодии, и такие заметки называются диссонанс И есть диссонанс в масштабе.

Привести пример, Просто интонация Использует интервалы соотношения, такие как 3/2, а затем нормализуют масштаб. Это звучит приятно, но как следствие дробного интервала у него есть несколько диссонансов. Чтобы сделать согласный масштаб, вы будете использовать даже темперамент (также называться EDO) масштабами, что означает интервалы между двумя нотами, которые рядом друг с другом являются идентичными. Весы будут определены в следующем разделе.

Цель Pytuning состоит в том, чтобы позволить музыкантам, которые используют необычные масштабы (любые масштабы, которые не edo), чтобы сделать их как можно более согласными, хотя эта библиотека также может сделать и работать с EDO Scales просто хорошо.

Градусы являются соотношениями частоты шага и данного эталона. Степень описывает примечание, такую как B4 между масштабом A4 и A5. Интервал Это длина масштаба, или насколько далеко эквивалентные степени в соседних весах являются E.g. Интервал шкалы A5-A4 равен интервалу масштаба B5-B4.

Среди поддерживаемых интервалов:

  • октава: интервал 2
  • идеальный пятый: 3/2
  • Незначительный второй TET: SQRT (12)
  • Lucy Deng Face: 2 ** (1/(2 * PI))

Весы

Весы являются список степеней. Список всегда начинается с унисон (1) и заканчивается октава (2). Октаву действительно может быть каким-либо формальным числом, но в этом посте я всегда буду предполагать, что октава 2 – 2, а большинство функций, генерирующих масштабных генераций по умолчанию 2 раза.

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

Вот неиспользовательный список весов, которые доступны:

  • Гармоника – create_harmonic_scale (первый, последний,) Отказ Все степени в этой масштабе являются гармониками последовательности Сначала/первая , (Первый + 1)/Первый , …, Последнее/первое Отказ
  • Эдо (равное разделение октавы или равным темпераментом) – create_edo_scale (number_tones) . Это распространенная шкала, используемая в большинстве музыки, особенно 12 градусов EDO (12-EDO). Number_tones не считает унисон. Весы Эдо всегда нормализуются.
  • Пифагорен – create_pythagorean_scale (facle_size = 12,) . Для этой масштабировки есть огромное количество интервалов, но достаточно, чтобы узнать, что аргументы по умолчанию используют идеальную пятую (3/2) в качестве интервала.
  • Четверть запятая – create_quarter_comma_meantone_scale (scale_size = 12,) . Почти идентичны пифагоресному масштабам, кроме интервала Perfect_fifth/Pow (81/80, 1/4) Отказ

Существуют также функции для создания геновых масштабов EULER-FOKKER и диатонических масштабов.

Некоторые масштабы могут быть нормализованы, что просто означает «Нахождение наименьшей мощности двух (или октавы), что при умножении на интервал (в случае интервала менее 1) или разделен на интервал (для интервалов выше 2) приведет к интервалу в целевой диапазон 1 . “ ( Источник Несомненно

Итак, чтобы нормализовать число 9, он должен был быть разделен на 8, чтобы сделать номер менее 2, октава. Таким образом, все числа в интервале должны быть разделены на 8, а затем зажаты между унисон и октавой в списке.

А Режим это маска масштаба, где выбираются разные градусы. Взятые из документации, вы можете отфильтровать степень 12-Эдо:

major_mask = (0,2,4,5,7,9,11,12)
major_mode = mask_scale(create_edo_scale(12), major_mask)

Это производит:

Тюнинг столы

В конце концов масштабные степени должны быть преобразованы в частоты. То, как это делается, зависит от масштаба, но для масштаба 12-EDO есть MIDI ключей, какую карту на частоты.

Примечание: В этой таблице октавы используются для сортировки чисел масштаба по частоте, предполагая, что каждая шкала имеет интервал 2.

9 11 0 2 4 5 7 10 1 3 6 8 -2
21 23 12 14 16 17 19 22 13 15 18 20 -1
33 35 24 26 28 29 31 34 25 27 30 32 0
45 47 36 38 40 41 43 46 37 39 42 44 1
57 59 48 50 52 53 55 58 49 51 54 56 2
69 71 60 62 64 65 67 70 61 63 66 68 3
81 83 72 74 76 77 79 82 73 75 78 80 4
93 95 84 86 88 89 91 94 85 87 90 92 5
105 107 96 98 100 101 103 106 97 99 102 104 6
117 119 108 110 112 113 115 118 109 111 114 116 7
120 122 124 125 127 121 123 126 8

Ключ MIDI может использоваться в качестве эталонной ноты для масштаба, и в этом случае частоты градусов в масштабе относительно эталонного MIDI-ключа.

Также возможно выбросить масштаб в строку (Python), называемую настройкой. Таблица тюнинга затем можно прочитать другими синтезаторами. Вот как вы сделаете один для Scala, yoshimi или Zynaddsubfx:

pythag_scale       = create_pythagorean_scale()
scala_tuning_table = create_scala_tuning(pythag_scale, "Pythagorean Scale")
print(scala_tuning_table)

Это будет печать:

! Scale produced by pytuning. For tuning yoshimi or zynaddsubfx,
! only include the portion below the final '!'
!
Pythagorean Scale
 12
!
256/243
9/8
32/27
81/64
4/3
1024/729
3/2
128/81
27/16
16/9
243/128
2/1

Столы Taility ++ Tuning Tables также могут быть сделаны Pyyuning. Здесь каждая запись в 1000 раз в 1000 раз на фактическую частоту, которая является форматом, который может понять робость:

reference_note = 60
scale = create_euler_fokker_scale([3,5],[3,1])

tuning = create_timidity_tuning(scale, reference_note=reference_note)
print(tuning)

Это первые несколько строк выхода:

# Timidity tuning table created by pytuning,
# call timidity with the -Z option to enable.
# Note reference: 60; Freq reference: 261.625565 Hz
1437
1533
1725
1916
2044
2156
2299
2555
2874
3066
... More entries below

Точно так же существуют функции, которые создают тюнинг-таблицы для жидкости и CSUND.

Метрические функции

Метрические функции вычислить метрики, связанные с масштабом. Одна метрика будет покрыта здесь, и это согласованность . В основном именно так повторяется звук, так как в повторении согласных в предложении, как «Она съела семь бутербродов на солнечное воскресенье в прошлом году» За исключением частот вместо букв, конечно.

В Pyyuning согласие рассчитывается, набрав:

pythag = create_pythagorean_scale()
metric = sum_p_q_for_all_intervals(pythag)

метрика Переменная будет содержать {'sum_p_q_for_all_intervals': 1092732} Отказ Меньшее значение означает более высокую согласующуюся.

Под капотом

Можно использовать Pyyuning, как обычный пакет PIP, но для того, чтобы полностью оценить библиотеку, вам нужно установить свои зависимости, используя PIP Установить Matplotlib Scikit-Surlection Pyqt5 Jupyter Отказ Jupyter поставляется с грузовиком зависимостей, поэтому загрузка может занять некоторое время. Убедитесь, что у вас также есть Qt5 Установлен, используйте опцию «Открытый исходный». Это может быть доступно в вашем менеджере по пакетам.

Когда все, что сделано, будут доступны обычные команды Jupyter. Если вы не знакомы с Jupyter, как я, я признаю, единственное, что вам нужно знать, это то, что есть программа под названием «Jupyter-Qtconsole», которую вы можете запустить. Эта команда открывает графическое окно, которое содержит консоль iPython, вариант консоли Python.

Когда Pytuning установлен, он поставит сценарий под названием Interactive.py в Bin/ Папка, относительно везде, где Python установлен в. Я говорю это, потому что вы могли бы установить Pytuning в виртуалене, так что в этом случае Interactive.py будет в виртуаленеве Bin/ папка.

Interactive.py Это помощник скрипта, который импортирует все функции Pyyuning, а также некоторые другие математические библиотеки, такие как Sympy и MatPlotlib. Когда вы открываете Jupyter-QTConsole, вы должны ввести % нагрузки Path-To-interactive.py Для того, чтобы запустить этот скрипт внутри консоли. Затем вы подтвердите, что вы хотите запустить его, нажав Shift-Enter.

Jupyter-QTConsole может сделать графику и отформатировать математику, как это:

Закрытие слов

Я очень благодарен за разработчик этой библиотеки для написания ReadTheDocs Документация Для этой библиотеки, потому что это сделало написание этого поста намного проще. Документация и прокомментированные функции важны для любой серьезной библиотеки, потому что он не только помогает пользователям использовать эту библиотеку, это также помогает людям, как мне блог. И как я люблю говорить, Исходный код не документация !!!

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

И он не говорит, если вы видите какие-либо ошибки в этом посте, дайте мне знать Так что я могу исправить их.

Изображение Гордон Джонсон от Pixabay.

Python-Audio (4 части серии)

Оригинал: “https://dev.to/zenulabidin/python-audio-processing-at-lightspeed-part-2-pytuning-16o9”