Возможные методы синтеза фисгармонии/тростникового органа

Я работаю над проектом по созданию синтезатора для RaspberryPi, способного играть на Harmonium/Reed Organ с использованием внешней MIDI-клавиатуры. Я делаю это на Python 2.7, используя Numpy. На данный момент я завершил первую фазу своего проекта, которая включает в себя создание пользовательского интерфейса и основного сценария синтеза, взаимодействие с клавиатурой и сопоставление заметок с клавишами. На втором этапе я планирую перенести его на RaspberryPi с ПК и улучшить качество звука.

Для синтеза звука фисгармонии на первом этапе я записал сэмплы фисгармонии, выполнил преобразование Фурье и извлек из него доминирующие частоты, а затем написал функцию синтеза, добавив синусоидальные волны этих частот. Однако сгенерированный звук подходит для тестирования, но он не соответствует оригинальному звуку Harmonium, что неизбежно для окончательной версии проекта. Поэтому я прошу подсказать мне технику создания звука фисгармонии. Также возможно генерировать с помощью осцилляторов, фильтров и т. д., которые доступны в Helm Synthesizer ? и если да, то как настроить их так, чтобы генерировать идеальную волну фисгармонии? Пожалуйста, помогите мне, так как я новичок в этой области.

Спасибо!

Добро пожаловать на Music.SE! Хороший вопрос, но вы почти наверняка получите ответы на SoundDesign.SE.

Ответы (2)

Простое воспроизведение одних и тех же частот не даст вам фазовых соотношений звука. Это становится намного хуже, когда вы выполняете «преобразование Фурье» (это инструмент теоретического анализа, для которого существует быстрый алгоритм с учетом дискретизированных условий, которые на практике никогда не выполняются): фактические фазовые отношения и частоты затем распределяются по нескольким «частотным интервалам». и приводят к фазовым паттернам, которые сложно ресинтезировать.

Без надежных фазовых соотношений вы не получите ничего, кроме качества «окружающего звука», а бины по частоте будут определять, насколько далеко вы приземлитесь.

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

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

Для вашего проекта может иметь смысл просто забыть о любых попытках синтеза и просто воспроизвести семплированный материал с базовыми оболочками.

Я также работал над электронной фисгармонией и, после экспериментов с синтезом, я согласен с пользователем 44435, что имеет смысл воспроизводить семплированный материал. Я использую Javascript AudioContext. Каждый из 42 звуков язычков моей фисгармонии записывается в виде отдельных mp3-файлов, декодируется и сохраняется в буфере с помощью createBufferSource и decodeAudioData. После этого музыкальные ноты доступны для мгновенного воспроизведения по отдельности или в комбинации. У меня есть длинная гибкая дренажная трубка, которую я купил в Home Depot за 20 долларов, и я буду использовать ее с воздуходувкой на расстоянии, чтобы обеспечить постоянное давление воздуха на фисгармонию для семплирования десяти секунд звука для каждой клавиши.