Есть ли что-то вроде стерео (отдельного левого и правого канала) генератора тона для Linux? Где вы можете установить громкость и тон / высоту звука для каждого канала, а также, предпочтительно, установить форму волны (синус, квадрат, пилообразная, ...) и инвертировать один канал (в отличие от другого).
Если нет, какие-нибудь идеи для хороших мест, чтобы начать делать один? Я предполагаю, что самым простым было бы адаптировать существующие программы, такие как синтезаторы ... Но если это плохо работает, есть ли какие-либо библиотеки (например, SDL?), Которые можно использовать в качестве основы для такой программы?
Ответы:
Похоже, вы ищете Audacity, который является кроссплатформенным редактором аудио с открытым исходным кодом. Одной из его функций является возможность генерировать тоны. Это многодорожечный аудиоредактор, так что вы можете легко создать стерео тон.
В
Generate
меню вы можете создавать сигналы синусоидальной, пилообразной и прямоугольной формы с произвольной частотой, амплитудой и длиной без необходимости записи или дополнительных входных файлов.источник
Вы можете посмотреть на
speaker-test
, что (на машине Arch) я нахожу в пакете alsa-utils.speaker-test -c2 -t sine
при запуске от xterm, мне давали синусоидальные волны 440 Гц по 6 секунд каждый, чередуя левый и правый динамики. В xterm он дал некоторую информацию о том, какой динамик, по его мнению, он использует.Согласно справочной странице, он может создавать синусоидальные волны произвольной частоты и розовый шум.
источник
speaker-test -c2 -t sine -f 440
дополню ваш пример, указав параметр частоты. Спасибо.siggen
Программа должна сделать трюк.Имеет два канала с независимыми сигналами и фазу между ними. Каждый канал может делать эти типы сигналов:
Вы можете запустить его в режиме стерео, например так:
Поскольку
/dev/dsp
в большинстве современных дистрибутивов Linux это не рекомендуется, вам, вероятно, потребуется установить библиотеку совместимости. В дистрибутивах на основе Debian установитеalsa-oss
пакет и запустите его так:Вы также можете попробовать это с PulseAudio OSS Wrapper:
источник
FFmpeg
ffmpeg может сделать это, как обычно.
Создайте 5-секундный синусоидальный
out.wav
звуковой файл 1000 Гц :Стерео вместо:
Файл будет в 2 раза больше, и вместо
ffprobe
него будет указано, что он имеет .2 channels
1 channel
Воспроизведите аудио в течение 5 секунд без создания файла:
Играй вечно, пока не сойдешь с ума
Документация:
В другом разделе источников звука sunder документируются другие полезные алгоритмы генерации звука
sine
, например:anoisesrc
: шумы нескольких цветов, например, белый, розовый, коричневыйaevalsrc
принимает произвольные математические выражения и поэтому должен иметь возможность создавать треугольные сигналы (выражение TODO)Список используемой литературы:
Протестировано в Ubuntu 18.04, ffmpeg 3.4.6.
Пример создания аудио на минимальном С без дополнительных библиотек
Просто для удовольствия: /programming/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894
источник
Программа Saugns также может сделать это. (Это аудио генератор командной строки (в настоящее время), поддерживающий 8 типов волн и методы модуляции FM / PM / AM.)
Чтобы сгенерировать две стерео-разделенные волны 100 Гц, одну синусоидальную, одну треугольную и одну с инвертированной амплитудой, следующий скрипт можно вставить в файл и запустить через программу (как в
./saugns filename
):В
t
s указать время, в секундах.В
P
ы предназначены для голоса за панорамирование (0.0 = влево, 1.0 = право). Это может быть изменено на что-то другое, чемP
в будущих версиях; файл README описывает текущий синтаксис.Редактировать: я действительно разработчик программы.
Кроме того, альтернативный способ переключения амплитуды (для некоторых типов волн, например,
sin
но неsaw
), состоит в установке фазы с использованием строчных буквp
. Добавлениеp0.5
устанавливает фазу до 50% волнового цикла (отрицательная половина). Кроме того, поскольку нет названного типа косинуса,p0.25
есть способ превратить синус в косинус (илиp0.75
для отрицательного косинуса).источник
Возможно, вы ищете Гнаурал .
источник
Вы можете легко синтезировать тоны с SoX. Были некоторые камни преткновения, но я в конце концов смог разобраться.
У меня были проблемы с сопряжением SoX с PulseAudio, поэтому я просто передаю
sox
необработанные данныеpaplay
.Конвейер утомителен, поэтому я создал скрипт:
например
remix
Эффект используется только для отправки результата на определенный канал. Он намного мощнее, но здесь мы используем только основные функции. В этом примере у нас есть шестиканальное устройство, и мы посылаем тональный сигнал на третий канал.Первоначально я создал устройство ALSA, обертывающее устройство PulseAudio, но затем обнаружил, что невозможно управлять сопоставлением каналов с помощью ALSA, и поэтому случайные каналы смешивались вместе в зависимости от того, как моя пользовательская карта каналов отличалась от стандартной ALSA. Вот почему у меня
--no-remix --no-remap
вpaplay
выше; Я просто хочу упорядочить необработанный канал для команды sox.Я хотел бы, чтобы аудио материал в Linux имел лучшую документацию и отчеты об ошибках.
Возможно, вас заинтересует ответ, который я недавно опубликовал и который показывает, как настроить эквалайзер PulseAudio из командной строки .
источник