質問
((解答選択された参照編集5に示す。))
私は書く必要がある単純なピンクノイズジェネレータクライアントまで、フルのC#.問題は、思わずオーディオの作業の前にいないわからないかとふれあう音がなくなります。いったいな場所には近づかないでくださいソ心を壊してしまうことを意味しているダウンロードの大SDKでこの小さなプロジェクト.
い問題が
- どんをピンクノイズ?
- どんなストリームのサウンドカード?
編集:I 本当に いピンクノイズジェネレータ...う意識がを解決する方法の根本問題です。=)
編集2:当社のファイアウォールブロックストリーミングオーディオやビデオなんだけ www.simplynoise.com 示唆されるようにコメントです。:(
編集3:私の世代のホワイトノイズ下、送信出力をカードの種類を問わず何にでも合いまを知るにはどのように白色雑音をピンクノイズです。あとにならないようにしたいループ済みのwavファイルが適用された利用プッシュしてもらってでも、小さなちょっとした休憩の間にループは、jarringばかりなのにしようと思ったきっかけにこの方向の場---
編集-4:...だと思いますが、良いモノを多くの人々が飛び込んで非常に明示的に ない 答えは反対の立場をとりました。思頂いており、より良い対応をすれば良かいピンクノイズ...この問題はどのように生成とストリームデータのサウンドカードではどのようなヘッドフォンをします。そのために私は編集中の背景についてはすでに編
編集5:私は選択したポールの答え以下のリンクを提供していただきたいの算式に変換するホワイトノイズが簡単に生成され、乱数ジェネレータ)ピンクノイズです。また、使用した Ianier MunozのCodeProject入力"プログラミングオーディオC#" 方法を変更、出力のサウンドデータの音カードです。きません。=)
解決
もしかしたらできる変換は、C/C++のコードはこちらC#:
http://www.firstpr.com.au/dsp/pink-noise/
最も簡単な方法を音のサウンドカード、wav(吐き出一部のハードコードヘッダとそのサンプルデータ。そして遊ぶことができます。wavファイルです。
他のヒント
ピンクノイズはホワイトノイズをa-3dB/オクターブLPF.形を生成することができますホワイトノイズをrand()(や他の機能を生成する一様乱数).
ストリーミングもに、soundcard合理的に明などのGoogleサービス。を選択の場合は避けるDirectX使用を考慮するPortAudioやASIOのためのインターフェースのsoundcard...はんえいのC++、C
その他にも、なぜ廃棄物のCPU時間発です。ループ躍しWAVファイル!
ビット遅いことかかわる問題と理解の方々が渡ってきたので答えが知られていませんがピンクノイズはホワイトノイズ-3dB/オクターブは-6として、上述することであり、それは、茶ノイズです。
だ不明な点があれば、ここでお答えることができていないだけで聴く音楽であることが理想的ノイズ解除ヘッドホン?
ここでは例とその再生のスレッドようになります。●を使用していDirectSoundをSecondaryBufferのサンプルが書き込まれます。誰でも参加でき、無料で入場でき、非常に簡単で:
/// <summary>
/// Thread in charge of feeding the playback buffer.
/// </summary>
private void playbackThreadFn()
{
// Begin playing the sound buffer.
m_playbackBuffer.Play( 0, BufferPlayFlags.Looping );
// Change playing state.
IsPlaying = true;
// Playback loop.
while( IsPlaying )
{
// Suspend thread until the playback cursor steps into a trap...
m_trapEvent.WaitOne();
// ...read audio from the input stream... (In this case from your pink noise buffer)
Input.Collect( m_target, m_target.Length );
// ...calculate the next writing position...
var writePosition = m_traps[ ((1 & m_pullCounter++) != 0) ? 0 : 1 ].Offset;
// ...and copy audio to the device buffer.
m_playbackBuffer.Write( writePosition, m_deviceBuffer, LockFlag.None );
}
// Stop playback.
m_playbackBuffer.Stop();
}
が必要な場合は、詳細かいにも嬉しいです。
として、迅速や汚れについて教えてください,はいかがでループをピンクノイズwavにオーディオプレーヤー?(あるのは、私の楽しみはなん---。)
います。mp3のサンプルピンクノイズを繰り返?
を使用できる Audacity を生成していピンクノイズとして、その繰り返します。
また掘のソースコードがどのよAudacityには、ピンクノイズ。
ここでも簡単に作成するための方法にピンクノイズ、和の波間隔の対数別に一緒につくりませんか?でもお客様の目的にしたい場合は、音を作成したリアルタイムで最適化を確実にできる。g:より速いコサイン機能)。
の機能出力のdouble配列から値-1が1になります。これは最高のポイントの波形です。
の quality
パラメーターの波の音が出ます。見5000波(約40の間隔で毎semitone)での閾値がん検出が目立った改善がより高い価値が、そうした心配は不要です(オプション)この約10,000波をより高めます。に関するものWikipedia20ヘルツは周りの下限の人間の知覚的に何ができるのか聞いてもこの設定を変更することができすぎます。
注の音が静かに高 quality
値による技術上の理由です(オプション)を変更したいの量の volumeAdjust
パラメータとします。
public double[] createPinkNoise(double seconds, int quality=5000, double lowestFrequency=20, double highestFrequency = 44100, double volumeAdjust=1.0)
{
long samples = (long)(44100 * seconds);
double[] d = new double[samples];
double[] offsets = new double[samples];
double lowestWavelength = highestFrequency / lowestFrequency;
Random r = new Random();
for (int j = 0; j < quality; j++)
{
double wavelength = Math.Pow(lowestWavelength, (j * 1.0) / quality) * 44100 / highestFrequency;
double offset = r.NextDouble() * Math.PI*2; // Important offset is needed, as otherwise all the waves will be almost in phase, and this will ruin the effect!
for (int i = 0; i < samples; i++)
{
d[i] += Math.Cos(i * Math.PI * 2 / wavelength + offset) / quality * volumeAdjust;
}
}
return d;
}
なってクライアントまで、フルのC#で入手できるかもしれませんが、するといくつかの良いノイズキャンセルヘッドフォンをお好きなものはmp3です。
だLinuxを使用できSOXが発表されました!していないの play
を出力します。
play -t sl - synth 3 pinknoise band -n 1200 200 tremolo .1 40 < /dev/zero