Синтезируйте музыкальные ноты (с фортепианными звуками) в Python

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

import Piano

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

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

Ответ 1

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

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

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

Ответ 2

Один мой ученик только что начал использовать 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 (а не по умолчанию). Тогда:

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

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

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

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

Ответ 3

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