Синтезируйте музыкальные ноты (с фортепианными звуками) в 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.