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


13

Linux用のステレオ(左右の独立したチャンネル)トーンジェネレーターのようなものはありますか?各チャンネルの音量とトーン/ピッチを設定し、できれば波形(正弦波、方形波、のこぎり波など)を設定し、1つのチャンネルを反転できます(他のチャンネルとは対照的に)。

そうでない場合、良い場所を作るためのアイデアはありますか?シンセのような既存のプログラムを適応させるのが最も簡単だと思います...しかし、それがうまく機能しない場合、そのようなプログラムのベースとして使用できるライブラリ(SDLなど)はありますか?


soxでそれを成し遂げられるかもしれません。
レナン

回答:


15

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

下のGenerateメニュー、あなたしている記録や追加の入力ファイルを必要を必要とせずに任意の周波数、振幅、および長さのサイン、ノコギリ波、スクエア波形トーンを作成することができます。


しかし、「ゼロから」トーンを生成できますか?そして、私は何かを記録したり再生したりするつもりはなく、「永遠に」わずかに異なる2つのトーン(各チャンネルに1つ)を生成するだけです。
バールド

1
@BaardKopperudはい、明確にするために回答を更新しました。
j883376

8

あなたは、で見えるかもしれませんspeaker-test私はALSA-utilsのパッケージで見つけた(アーチ・マシン上)、。

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

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


1
speaker-test -c2 -t sine -f 440周波数パラメーターを指定することにより、例を補完します。ありがとう。
クリスチャン

4

siggenプログラムは、トリックを行う必要があります。

siggenのスクリーンショット

独立した信号とその間の位相を持つ2つのチャネルがあります。各チャネルは、次の信号タイプを実行できます。

  • 正弦
  • 余弦
  • 平方
  • 三角形
  • のこぎり
  • 脈拍
  • ノイズ

次のようにステレオモードで実行できます。

$ siggen -2

以来/dev/dsp最も近代的なLinuxディストリビューションで廃止され、あなたはおそらく互換ライブラリをインストールする必要があります。Debianベースのディストリビューションでは、alsa-ossパッケージをインストールして次のように実行します。

$ aoss siggen -2

PulseAudio OSS Wrapperで試すこともできます:

$ padsp siggen -2

私が取得:[SIGGEN]入力/出力エラー:は/ dev / DSP
オーレ丹下

ふむ PulseAudio OSSラッパーはまったく役に立ちますか?
ナサニエルM.ビーバー

うん。動いた。
オレ丹下

1

saugnsのプログラムもそれを行うことができます。(これは、現在8つのウェーブタイプとFM / PM / AM変調技術をサポートしているコマンドラインオーディオジェネレーターです。)

2つのステレオ分離された100 Hzの波、1つは正弦波、もう1つは三角波、もう1つは振幅が反転した波を生成するには、次のスクリプトをファイルに貼り付けてプログラムを実行します(のように./saugns filename)。

Osin f100 a0.5 t2 P0
Otri f100 a(-0.5) t2 P1

tsが秒単位で時間を指定します。

PSは、(0.0 = 1.0 =右、左)ごとの音声パニングのためのものです。これは次のもの以外に変更される場合がありますP、将来のバージョンます。READMEファイルには、現在の構文が記述されています。

編集:私は確かにプログラムの開発者です。

また、振幅を反転する別の方法(たとえばsin、そうsawではない一部の波形タイプ)は、小文字を使用して位相を設定することpです。追加p0.5すると、位相が波のサイクルの50%(負の半分)に設定されます。さらに、名前付きのコサインタイプがないので、p0.25サインをコサインに変換する方法(またはp0.75負のコサインの場合)です。


こんにちはジョエル。Unix&Linuxへようこそ。それは素晴らしい最初の投稿なので、あなたの答えを支持しました。あなたがプロジェクトのメンテナーまたは開発者であれば、この情報を開示するのが標準的な慣行であると言及したいと思いました。GPLソフトウェアのではない、本当に問題が、それの価値が認識されunix.stackexchange.com/help/promotion便利なフリー/リブレソフトウェアの場合、私はあなたがするだろうことを想像するより多くのユーザーが知っていれば、このサイト上のupvotedを取得する可能性が高いですあなたはプロジェクトの背後にいる開発者の一人です。
アンソニーG-モニカの正義

1

ffmpeg

通常どおり、ffmpegで実行できます。

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

sudo apt-get install ffmpeg
ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" out.wav

代わりにステレオ:

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -ac 2 out.wav

ファイルには、大きなとして2倍になり、ffprobeそれが持っていると言うだろう2 channelsの代わりに、1 channelます。

ファイルを作成せずに5秒間オーディオを再生します。

ffplay -f lavfi -i "sine=frequency=1000:duration=5" -autoexit -nodisp

発狂するまで永遠にプレイ:

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

ドキュメンテーション:

他のセクションsunder Audio sourcessineでは、に加えて他の便利なサウンド生成アルゴリズムを文書化しています:

  • anoisesrc:いくつかの色のノイズ(白、ピンク、茶色など)
  • aevalsrc 任意の数式を使用するため、三角波形を生成できる必要があります(TODO式)

書誌:

Ubuntu 18.04、ffmpeg 3.4.6でテスト済み。

追加のライブラリを使用しない最小限のCオーディオ生成の例

楽しみのために:https : //stackoverflow.com/questions/732699/how-is-audio-represented-with-numbers-in-computers/36510894#36510894



0

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チャンネルのデバイスがあり、3番目のチャンネルにトーンを送信しています。

PulseAudioデバイスをラップするALSAデバイスを最初に作成しましたが、ALSAを使用してチャネルマッピングを制御することは不可能であることがわかりました。そのため、カスタムチャネルマップがALSAのデフォルトとどのように異なるかに応じて、ランダムチャネルが混在していました。私が持っている理由はここにある--no-remix --no-remap中でpaplay、上記; soxコマンドの生のチャンネルの順序が必要です。

Linuxのオーディオには、より良いドキュメントとエラー報告があればいいと思います。

コマンドラインからPulseAudio Equalizer設定する方法を示した最近投稿した回答に興味があるかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.