Как синтезировать звуки?

Я хотел бы создавать звуки, которые напоминали бы звуки реальных инструментов. Проблема в том, что я очень мало знаю, как это получить.

Что я знаю вдали от настоящих инструментов, так это то, что звуки, которые они издают, редко бывают чистыми. Но как издавать такие нечистые звуки?

До сих пор я делал это, он производил довольно простой звук, из которого я не уверен, что он даже правильно использует alsa.

import numpy
from numpy.fft import fft, ifft
from numpy.random import random_sample
from alsaaudio import PCM, PCM_NONBLOCK, PCM_FORMAT_FLOAT_LE

pcm = PCM()#mode=PCM_NONBLOCK)
pcm.setrate(44100)
pcm.setformat(PCM_FORMAT_FLOAT_LE)
pcm.setchannels(1)
pcm.setperiodsize(4096)

def sine_wave(x, freq=100):
    sample = numpy.arange(x*4096, (x+1)*4096, dtype=numpy.float32)
    sample *= numpy.pi * 2 / 44100
    sample *= freq
    return numpy.sin(sample)

for x in xrange(1000):
    sample = sine_wave(x, 100)
    pcm.write(sample.tostring())

person Cheery    schedule 26.04.2009    source источник
comment
Это вполне возможно с music21. Вы можете собрать партитуру, используя библиотечные объекты, а затем воспроизвести ее. Вы создаете музыку, используя только музыкальные понятия, такие как ноты и темп. Еще, а также это вопрос. При рендеринге используются миди-банки. Music21 — это продвинутая платформа для управления партитурами и нотами и их глубокого анализа.   -  person mins    schedule 17.03.2021


Ответы (4)


Веселенький, если вы хотите сгенерировать (с нуля) что-то, что действительно звучит «органично», то есть как физический объект, вам, вероятно, лучше немного узнать о том, как генерируются эти звуки. Для основательного введения вы можете взглянуть на книгу Флетчера и Россингса Физика музыкальных инструментов. В Интернете также есть много материала, вы можете взглянуть на учебник для начинающих Джеймса Кларка здесь

По крайней мере беглый просмотр подобных вещей даст вам представление о том, с чем вы имеете дело. Точное моделирование физических инструментов очень сложно!

Если то, что вы хотите сделать, это иметь что-то, что звучит физически, а не как инструмент X, ваша работа немного упрощается. Вы можете довольно легко создать частоты и сложить их вместе, добавить немного шума, и вы получите что-то, что, по крайней мере, не будет звучать как чистый тон.

Полезно прочитать немного об анализе Фурье в целом, а также о методах частотной модуляции (ЧМ).

Развлекайся!

person simon    schedule 26.04.2009

Синтез звука — сложная тема, для освоения которой требуются многие годы изучения.

Это также не полностью решенная проблема, хотя относительно недавние разработки (такие как синтез физического моделирования) достигли прогресса в имитации инструментов реального мира.

Есть несколько вариантов, открытых для вас. Если вы уверены, что хотите продолжить изучение синтеза, то я предлагаю вам начать с изучения FM-синтеза. Его относительно легко изучить и реализовать в программном обеспечении, по крайней мере, в основных формах, и он производит широкий спектр интересных звуков. Кроме того, ознакомьтесь с книгой «The Computer Music Tutorial» Кертиса Роудса. Это библия для всего, что связано с компьютерной музыкой, и, хотя ей несколько лет, она является предпочтительной книгой для изучения основ.

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

person netflux    schedule 26.04.2009
comment
Я бы не хотел использовать банки сэмплов. Я хочу что-то похожее на инструменты, совсем не живое. - person Cheery; 26.04.2009

Я согласен с тем, что это очень нетривиально и нет определенного «правильного пути», но вам следует подумать о том, чтобы начать с (или создать свой собственный) MIDI SoundFont.

person Matthew Flaschen    schedule 26.04.2009

Как говорили другие люди, совсем не тривиальная тема. Есть проблемы как со стороны программирования (особенно если вы заботитесь о низкой задержке), так и со стороны синтеза. Золотая жила для звукового синтеза — страница Джулиуса О. Смита. Существует множество методов синтеза http://ccrma-www.stanford.edu/~jos/.

person David Cournapeau    schedule 15.06.2009