サウンドデータを作成して変換し、WAV形式で保存しようとしています。ほぼ全部来ました。しかし、生成された音を聞きたいです。しかし、「録画」中です。
このコマンドはデータを生成して再生します。
perl -e 'for ($c=0; $c<4*44100; $c++) {
$k=1*sin((1500+$c/16e1)*$c*22e-6); print pack "f", $k;
} ' |
aplay -t raw -c 1 -r 44100 -f FLOAT_LE
(サウンドの再生が停止した後、Ctrl-Cを押すとaplay
セグフォルトが発生することがあります。)
sox
とを使用するとうまくmplayer
録音できますが、同時に音は聞こえません。
perl -e 'for ($c=0; $c<4*44100; $c++) {
$k=1*sin((1500+$c/16e1)*$c*22e-6); print pack "f", $k;
} ' |
sox -V -r 44100 -c 1 -b 32 -e floating-point -t raw - \
-c 2 -b 16 -t wav - trim 0 3 gain -1 dither |
mplayer - -cache 8092 -endpos 3 -vo null -ao pcm:waveheader:file=test.wav
play test.wav
(s以外のパッケージplay
の場所)はファイルの「Duration:00:00:03.00」を宣言します。また、プロセスがリアルタイムより速く実行されるようです。つまり(明らかに)3秒以内に完了します。sox
alsa
aplay
test.wav
以下を使用してストリームをディスクにキャプチャし、不正tee
行為を行います。
perl -e 'for ($c=0; $c<4*44100; $c++) {
$k=1*sin((1500+$c/16e1)*$c*22e-6); print pack "f", $k;
} ' |
sox -V -r 44100 -c 1 -b 32 -e floating-point -t raw - \
-c 2 -b 16 -t wav - trim 0 3 gain -1 dither |
tee test.wav |
aplay
明らかに、ここで生成された音が聞こえ、音も再生test.wav
されますが、play test.wav
「期間:不明」が報告されます。
だから尋ねたいです。上記の「one-liner」コマンドと同様の操作を実行して、サウンドを作成、再生、および録音できますか?同時に- しかし、いいえインストールする必要がありますかjack
?
PS:いくつかの関連リンク:
答え1
たとえば、tee(1) を使用してストリームを再利用できます。
perl -e 'for ($c=0; $c<4*44100; $c++) {
$k=1*sin((1500+$c/16e1)*$c*22e-6); print pack "f", $k;
}' | tee >(sox -c1 -r44100 -t f32 - test.wav) \
>(sox -c1 -r44100 -t f32 - -d) > /dev/null
ほとんどのトーンとスイープを生成できるRed Sox Synth Effectsにも興味があるかもしれません。
sox -n -r 44100 test.wav synth 4 sine 100:1000