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
효과는 결과를 특정 채널로 보내는 데 사용됩니다. 훨씬 강력하지만 여기서는 기본 기능 만 사용합니다. 이 예에서는 6 채널 장치가 있으며 세 번째 채널로 신호음을 보내고 있습니다.
원래 PulseAudio 장치를 래핑하는 ALSA 장치를 만들었지 만 ALSA를 사용하여 채널 매핑을 제어하는 것이 불가능하므로 임의의 채널이 내 사용자 지정 채널 맵이 ALSA 기본값과 어떻게 다른지에 따라 혼합되었습니다. 내가 가지고있는 이유입니다 --no-remix --no-remap
에 paplay
위; sox 명령에 대한 원시 채널 순서를 원합니다.
나는 리눅스의 오디오가 더 나은 문서화와 오류보고를 갖기를 바란다.
커맨드 라인에서 PulseAudio Equalizer 를 설정하는 방법을 최근에 게시 한 답변에 관심이있을 수 있습니다 .