Найти в Дзене
Властелин машин

Заставляем ноты звучать с помощью Python

Напишем небольшой скрипт, позволяющий генерировать мелодию из заданного набора нот.
Сначала напишем функцию make_signal, которая по определенным параметрам (подробнее описаны здесь) генерирует звуковую волну и возвращает результат в виде двух последовательностей: временных меток, отстоящих друг от друга на период дискретизации, и значений сигнала в них:
Теперь загрузим словарь (tone_freqs)

Напишем небольшой скрипт, позволяющий генерировать мелодию из заданного набора нот.

Сначала напишем функцию make_signal, которая по определенным параметрам (подробнее описаны здесь) генерирует звуковую волну и возвращает результат в виде двух последовательностей: временных меток, отстоящих друг от друга на период дискретизации, и значений сигнала в них:

-2

Теперь загрузим словарь (tone_freqs) соответствий нот и частот, полученный в виде json файла с сайта mtu.edu:

-3

Зададим частоту дискретизации сигнала (sample_rate), список нот (tone_t) и их длительностей, а также пустой массив для хранения результатов (music). Затем переберем все значения tone_t и для каждого получим частоту и значения сигнала, которые добавим в music. Затем запишем результат в виде wav файла, используя функцию scipy.io.wavfile.write:

-4

Итоговый скрипт получился следующий:

-5