Linuxでステレオ「トーンジェネレータ」?

Linuxでステレオ「トーンジェネレータ」?

Linuxにステレオ(左右チャンネル別)オーディオジェネレータのようなものはありますか?ここでは、各チャンネルの音量とピッチ/トーンを設定することができ、好ましくは波形(サイン、正方形、鋸歯…)を設定し、1つのチャンネルを反転(他のチャンネルとは反対)することもできます。

そうでなければ、作り始めるのに良い場所がありますか?最も簡単な方法は、シンセサイザーなどの既存のプログラムを適用することです。しかし、これがうまくいかない場合、そのようなプログラムの基礎として使用できるライブラリ(SDLのような?)はありますか?

答え1

探しているようですね。勇敢なこれはクロスプラットフォームのオープンソースオーディオエディタです。その機能の1つは、トーンを生成できることです。マルチトラックオーディオエディタなので、ステレオトーンを簡単に作成できます。

メニューから追加のGenerate入力ファイルを録音または要求することなく、任意の周波数、振幅、および長さの正弦波、鋸歯状波、および方形波トーンを生成できます。

答え2

ffmpeg

いつものようにffmpegで行うことができます。

2秒モノラル1000Hzサインout.wavサウンドファイルを作成します。

sudo apt-get install ffmpeg
ffmpeg -f lavfi -i "sine=f=1000:d=2" out.wav

ステレオが次に変更されました-ac 2

ffmpeg -f lavfi -i "sine=f=1000:d=2" -ac 2 out.wav

ファイルは2倍ffprobe大きくなります2 channels1 channel

左側は2秒間500Hzを生成し、右側は1000Hzを生成します。https://stackoverflow.com/questions/59551013/how-to-generate-stereo-sine-wave-using-ffmpeg

ffmpeg -filter_complex '
sine=f=500[0];
sine=f=1000[1];
[0][1]amerge,atrim=end=2
' out.wav

ファイルを生成せずに2秒間1000Hz再生:

ffplay -autoexit -nodisp -f lavfi -i 'sine=f=1000:d=2'

狂ってしまうまで永遠に1000Hzを再生してください。

ffplay -nodisp -f lavfi -i "sine=f=1000"

両方のチャンネルで500Hzと1000Hzの2秒のミックス/オーバーレイを生成するhttps://stackoverflow.com/questions/14498539/how-to-overlay-downmix-two-audio-files-using-ffmpeg

ffplay -nodisp -autoexit -f lavfi -i '
sine=f=500[0];
sine=f=1000[1];
[0][1]amix=inputs=2, atrim=end=2
'

2秒間500Hzの周波数を生成し、次に2秒間1000Hzの周波数を生成します。

ffplay -nodisp -autoexit -f lavfi -i '
sine=f=500:d=2[0];
sine=f=1000:d=2[1];
[0][1]concat=n=2:v=0:a=1
'

250Hz + 500Hzで2秒、1000Hz + 2000Hzで2秒:

ffplay -nodisp -autoexit -f lavfi -i '
sine=f=250[0];
sine=f=500[1];
sine=f=1000[2];
sine=f=2000[3];
[0][1]amix=inputs=2, atrim=end=2[01];
[2][3]amix=inputs=2, atrim=end=2[23];
[01][23]concat=n=2:v=0:a=1[out];
'

10秒以内に0〜20kHzの周波数掃引、主な質問:https://superuser.com/questions/1156429/how-to-generate-a-time-dependent-Frequency-wave/1156468#1156468

ffplay -autoexit -f lavfi -i "aevalsrc='sin(2000*t*2*PI*t)':d=10" 

文書:

他の部分は彫刻破れましたオーディオソースまた、次sineのような他の便利なサウンド生成アルゴリズムも文書化されています。

  • anoisesrc:白、ピンク、ブラウンなど様々な色のノイズ
  • aevalsrcすべての数学的表現をとるので、三角形の波形を生成できるはずです(TODO表現)。

サージ:

ffmpeg 6.0、Ubuntu 23.10でテストされました。

追加ライブラリなしで最小Cオーディオを生成する例

楽しみとして:https://stackoverflow.com/questions/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894

答え3

speaker-testalsa-utilsパッケージ(Archシステム)で私が見つけたものを見ることができます。

speaker-test -c2 -t sinextermで実行すると、それぞれ約6秒の440Hz正弦波が左右のスピーカーを交互に出ます。 xtermは、使用していると思われるスピーカーに関するいくつかの情報を提供します。

マニュアルページによれば、任意周波数の正弦波とピンクノイズを生成できます。

答え4

これとげプログラムもそうすることができます。 (サポートするコマンドラインオーディオジェネレータです。言語集中型FM / PMおよびAM / RM変調技術を含む、より多くの種類のオーディオ生成が含まれています。 )

2つのステレオで分離された100Hzの波(サイン1個、三角形1個、逆振幅1個)を生成するには、次のスクリプトをファイルに貼り付けてプログラムを実行できます./saugns filename

Wsin f100 a0.5 t2 cL
Wtri f100 a(-0.5) t2 cR

これは、1行のコードで直接実行できるほど短いです。

./saugns -e "Wsin f100 a0.5 t2 cL Wtri f100 a(-0.5) t2 cR"

s はt時間を秒単位で指定します。

scは基本チャンネルのミックスを変更するために使用されます(C =中央)(L =左端、R =右端)。 「(-1.0)」から「1.0」までの数字も使用できます。そのような価値

前の編集:私は実際にこのプログラムの開発者です。

また、振幅を反転する別の方法(一部の波型の場合sinsawは、小文字を使用して位相を設定することですp。 Addedはp0.5位相を波動周期の50%(負の半分)に設定します。また、名前付きコサインタイプがないため、p0.25サインをコサイン(または負のコサイン)に変換する方法は次のとおりです。p0.75

関連情報