Java Synth: создание тестового сигнала

Я смотрел на синтезатор Java людей, но не могу понять, как создать простую версию их программы. Моя цель - создать простой тестовый тон в java, который пользователь сможет изменять, нажимая определенные клавиши. Например, нажатие «r» увеличит амплитуду, или «f» увеличит частоту. Я просто хотел бы знать: с чего начать создание этого?


person Fred V    schedule 03.12.2012    source источник


Ответы (3)


Что ж, это было бы неприятно, но самый простой подход - создать прямоугольную волну.

В зависимости от того, создаете ли вы файл со знаковыми или беззнаковыми амплитудами, вам нужно будет решить, колебаться ли между 0 и amplitude или -amplitude и +amplitude.

Частота будет определять, сколько отсчетов создать при каждом значении перед переключением.

Трудно сделать больше без каких-либо подробностей о том, какой выходной формат вы пытаетесь создать и т. Д., Но это может помочь вам начать с. Создайте синусоидальную волну для более приятного тона :)

person Jon Skeet    schedule 03.12.2012
comment
спасибо, это было полезно. я начну писать код сомме и вернусь! :) - person Fred V; 03.12.2012
comment
Я собирался предложить System.out.println (beeeeeeeeep);, но решил, что это не совсем правильный ответ. - person Chris Gerken; 04.12.2012

См. Beeper для примера создания тонального сигнала.

person Andrew Thompson    schedule 04.12.2012

У меня есть терменвокс, который работает через Java:

http://www.adonax.com/blog/?p=187 http: //www.hexara.com/VSL/JTheremin.htm

Поскольку я использую волновую таблицу для генерации данных, высота звука определяется скоростью, с которой курсор перемещается по таблице. Я использую линейную интерполяцию, когда курсор оказывается между элементами таблицы. Таким образом, если таблица из 1024 элементов описывает одну синусоидальную волну, прохождение через нее по одному элементу за раз - одна скорость, прохождение через нее 1,2 элемента за время (с линейной интерполяцией для получения промежуточных значений) немного быстрее и выше. подача.

person Phil Freihofner    schedule 04.12.2012