Синтезировать музыкальные ноты (со звуками фортепиано) в Python - PullRequest
15 голосов
/ 27 июня 2011

Мне бы хотелось иметь реализацию Python для библиотеки музыкальных инструментов (например, объект пианино), которую я могу использовать для преобразования списка нот и длительности в звук.Например, что-то вроде:

import Piano

pn = Piano()
pn.play([note, note, ..., note], duration)

Существует ли что-то подобное для python 2.7?Я хотел бы реализовать это, если это не так.В настоящее время у меня есть кое-что, что использует audiere, но это просто синусоиды, так что это звучит ужасно.Есть ли способ подключиться к пианино или что-то в этом роде - я использую windows 7?Есть ли какие-либо шаги по реализации, которые я мог бы не ожидать?

Ответы [ 2 ]

16 голосов
/ 04 апреля 2013

Мой ученик только что начал использовать mingus, чтобы сделать это, поэтому вот краткое руководство о том, как начать работать с Linux (Ubuntu):

Установите Fluidsynth и Mingus, если у вас их еще нет:

$ sudo apt-get install fluidsynth

$ sudo easy_install mingus

Теперь вы сможете открыть python и набрать:

>>> from mingus.midi import fluidsynth   
>>> fluidsynth.init('/usr/share/sounds/sf2/FluidR3_GM.sf2',"alsa")

Это импортирует необходимый материал из mingus и инициализирует fluidsynth для воспроизведения через alsa (не jack, который используется по умолчанию).Затем:

>>> fluidsynth.play_Note(64,0,100)

... и вы должны услышать ноту, сыгранную на пианино (аргументы: номер ноты, номер канала и скорость).

Для получения дополнительной информации перейдите сюда:

https://code.google.com/p/mingus/wiki/tutorialFluidsynth

10 голосов
/ 27 июня 2011

Подмножество ответа @Marcelos: http://code.google.com/p/mingus/

mingus - пакет для Python, используемый программистами, музыкантами, композиторами и исследователями для создания и исследования музыки. В основе mingus лежит теория музыки, которая включает такие темы, как интервалы, аккорды, гаммы и прогрессии .

Пакет MIDI может сохранять и загружать файлы MIDI, и, что не менее важно, предоставляет секвенсор общего назначения для всех контейнеров и подкласс секвенсора FluidSynth. Это позволяет вам воспроизводить все ваши структуры данных прямо из Python всего за пару строк . Большая часть неаккуратного хронометража и MIDI-кода была абстрагирована для вас, оставляя чистый, относительно простой API.

...