Ви можете легко синтезувати тони за допомогою SoX. Були якісь камені спотикання, але я врешті-решт міг це зрозуміти.
У мене виникли проблеми з взаємодією SoX з PulseAudio, тому я просто sox
передавав необроблені дані paplay
.
Трубопровід нудний, тому я створив сценарій:
$ cat sox-paplay
#!/bin/bash
: ${HZ:=44100}
: ${NCHAN:=6}
: ${SINK:=mysink}
sox -c $NCHAN -n -t raw -r $HZ -L -b 16 - "$@" | paplay --no-remix --no-remap --raw -v -p --rate $HZ -d $SINK --channels $NCHAN
напр
sox-paplay synth sine 1000 gain -5 remix -m 0 0 1 0 0 0
remix
Ефект використовується тільки для відправки результату на певний канал. Це набагато потужніше, але тут ми використовуємо лише основний функціонал. У цьому прикладі у нас є шестиканальний пристрій і ми надсилаємо сигнал третьому каналу.
Спочатку я створив пристрій ALSA, що обертає пристрій PulseAudio, але потім я виявив, що неможливо керувати відображенням каналів за допомогою ALSA, і тому випадкові канали змішуються разом відповідно до того, як моя власна карта каналів відрізнялася від стандартної ALSA. Ось чому у мене --no-remix --no-remap
в paplay
вище; Я просто хочу впорядкувати впорядкований канал для команди sox.
Я хотів би, щоб звукові матеріали в Linux мали кращу документацію та повідомлення про помилки.
Можливо, вас зацікавить відповідь, яку я нещодавно опублікував, де показано, як встановити PulseAudio Equalizer з командного рядка .