Я смотрел на синтезатор Java людей, но не могу понять, как создать простую версию их программы. Моя цель - создать простой тестовый тон в java, который пользователь сможет изменять, нажимая определенные клавиши. Например, нажатие «r» увеличит амплитуду, или «f» увеличит частоту. Я просто хотел бы знать: с чего начать создание этого?
Java Synth: создание тестового сигнала
Ответы (3)
Что ж, это было бы неприятно, но самый простой подход - создать прямоугольную волну.
В зависимости от того, создаете ли вы файл со знаковыми или беззнаковыми амплитудами, вам нужно будет решить, колебаться ли между 0
и amplitude
или -amplitude
и +amplitude
.
Частота будет определять, сколько отсчетов создать при каждом значении перед переключением.
Трудно сделать больше без каких-либо подробностей о том, какой выходной формат вы пытаетесь создать и т. Д., Но это может помочь вам начать с. Создайте синусоидальную волну для более приятного тона :)
У меня есть терменвокс, который работает через Java:
http://www.adonax.com/blog/?p=187 http: //www.hexara.com/VSL/JTheremin.htm
Поскольку я использую волновую таблицу для генерации данных, высота звука определяется скоростью, с которой курсор перемещается по таблице. Я использую линейную интерполяцию, когда курсор оказывается между элементами таблицы. Таким образом, если таблица из 1024 элементов описывает одну синусоидальную волну, прохождение через нее по одному элементу за раз - одна скорость, прохождение через нее 1,2 элемента за время (с линейной интерполяцией для получения промежуточных значений) немного быстрее и выше. подача.