問題タブ [sound-synthesis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
signal-processing - FFT ピッチ検出 - メロディ抽出
フレームのFFTから得られたパワースペクトルから基本周波数を抽出するピッチ検出プログラムを作成しています。これは私がこれまでに持っているものです:
- 入力オーディオ信号をフレームに分割します。
- フレームにハミング ウィンドウを掛ける
- フレームの FFT と大きさを計算します sqrt(real^2 + img^2)
- 高調波積スペクトルから基本周波数 (ピーク) を見つける
- ピークの周波数 (ビン周波数) をメモに変換します (例: ~440 Hz は A4 です)。
これで、プログラムは各フレームに対して 0 から 87 までの値を持つ整数を生成します。ここで見つけた式に従って、各整数はピアノの音符に対応します。私は現在、計算された音符に基づいて音を合成することにより、入力信号のメロディーを模倣しようとしています。基本周波数に対応する大きさと周波数を持つ正弦波を単純に生成しようとしましたが、結果は元の音のようには聞こえませんでした (ほとんどランダムなビープ音のように聞こえました)。
私は音楽をよく理解していないので、私が持っているものに基づいて、基本周波数から取得した情報に基づいて、入力 (楽器、声、楽器 + 声) に似たメロディーの音を生成できますか? そうでない場合は、現在持っているコードを使用して他にどのようなアイデアを試すことができますか?
ありがとう!
c# - オーディオ合成アプリケーションでノートを適切にベンドする方法は?
問題
私はこれをしばらく無駄に理解しようとしています.2つの周波数間で音のピッチを連続的に変更する方法です。
私はこれに似た関数でオーディオ信号を生成しています:
私はこの関数の外で手動で時間を管理していますが、次のようにします:
また、必要な量のサンプルに対してパラメーターを線形補間するという明らかな解決策はfrequency
、期待どおりに機能しません。これを行うと、音波がポンとクリックでいっぱいになります。
代わりにこれをどのように実装する必要がありますか?
ソリューション (編集)
geofftnzless のおかげで、これは驚くほど簡単に解決できました。私は今、このジェネレーターの使用に切り替えました:
time
内部でインクリメントを処理します。
このジェネレーターの補間を使用するfrequency
と、スムーズに動作し、可聴の問題は発生しません。ありがとう!
audio - 周波数変調 (FM) コード スニペット
オーディオ信号の周波数変調用に次のコードを作成しました。オーディオ自体の長さは 1 秒で、8000 Hz でサンプリングされています。周波数 50 Hz (サンプリング周波数の分数として表される) の正弦波を使用して、このオーディオ信号に FM を適用したいと考えています。変調信号の変調指数は 0.25 で、1 組の側波帯のみが作成されます。
audio - Arduinoピエゾノックセンサーの再生音
いくつかのピエゾをarduinoに接続して、それらがアクティブになると、各ピエゾが別々のトーンを再生/トリガーするようにします。たとえば、5つのピエゾをarduinoに接続します。それぞれに圧力を加えると、コンピューターのソフトウェアインターフェイスを介して、またはピエゾ自体から、別々の音を再生します。基本的に、ピエゾをキーとして使用するArduinoシンセ。
これをどうやってやるのかよくわかりません。私はそれが可能であると確信していますが、正しい方向にプッシュする必要があります。何か案は?ありがとう!
c++ - 合成ツールキット: MIDI ノートの周波数は楽器によって異なります
オーディオ プロジェクトに Synthesis ツールキットを使用して実験を行っています。以下に、MIDI ノート 49 で 1 秒の WAV ファイルを生成する簡単なプログラムを書きました。実際、このプログラムは 2 つのファイルを生成します。奇妙なことに、生成された 2 つの WAV ファイルを再生すると、周波数が一致しません。Bowed 楽器では、同じ MIDI ノートの主周波数は 440 HZ のようです。PrecFlut 装置の場合、支配的な周波数は約 210 Hz のようです。
私は何を間違っていますか?どんな助けでも大歓迎です。
ありがとう、ここに私のコードがあります:
java - Java で、特定の周波数のトーンを合成する方法はありますか?
私はバイノーラルビートでいくつかの作業を行っており、わずかに異なる周波数で2つのサウンドを再生できるJavaアプリケーションを構築しようとしています...約25〜30Hzの違いです。
完璧な世界では、Java に 2 つの整数入力、たとえば 440 と 410 を与え、Java に 440Hz トーンと 410Hz トーンを再生させたいと考えています。
私がjavax.sound.*
クラスで見たことを考えると、Java はピアノの音と同等のものしかサポートしていないようです... A4 @ 440Hz、次に A-sharp-4 @ 466.164Hz、そして反対方向では G-sharp-4 @ 415.305Hz。「隣接」は通常、バイノーラル ビートを生成する範囲内ですが、トーンの周波数をより細かく制御しようとしています。
単純なオーディオ合成は周波数、強度、および時間の長さにすぎないため、 Java に「A4」を再生するように指示すると、クラスの腸のどこかに、ある種のルックアップがあるように見えjavax.sound.*
ます。 440Hz。問題は、そのテーブルをハックして、「A4.1」が 449Hz に相当すると言う方法があるかどうかです。
私は をいじっていますjavax.sound.midi
が、まだ調査しjavax.sound.sampled
ていません。sampled
クラスを使用するには、トーンをサンプリングする必要があるようです。私は合成するほうが好きです。私が間違っている場合は、私を正しく操縦してください。
私が見たサードパーティのインターフェイスのほとんどは、特に音楽の制作と操作を目的としており、微分音を扱う能力が限られています。ソリューションの経験や推奨事項はありますか?
objective-c - AUGraph の 2 つのバスで 2 つの異なるサウンドを再生するにはどうすればよいですか?
Hey Folks 助けてくれませんか、AUGraph で 2 つの異なるバスの 2 つの異なるサウンドを別々に再生するにはどうすればよいですか?助けていただければ幸いです。ありがとうございました
c++ - 仮想関数に関するSTKコールバックオシレーターの問題
サインオシレーターコールバックを使用して、STKプログラムの1つに取り組んでいます。ToneGenクラスを抽象化するGeneratorクラスの仮想関数が原因で、Generatorクラスから継承するToneGenクラスからオブジェクトを作成するときに問題が発生します。ポインタを試しましたが、データを適切な方法で取得する際に問題が発生しているようです。ポインタを使用すると、ToneGen.hファイルのコードが壊れます
そうでなければ、ポインタなしでこのエラーが発生します
これがジェネレータクラスの仮想関数です
これを回避する方法はありますか?他の投稿で他のいくつかのテクニックを試しましたが、まだ運がありません。
私が変更しているコードはここにあります
私はこれをVisualStudio2010Windows732ビットで行っています
midi - サウンド カードの選択は、timidity のパフォーマンスに影響しますか?
私はtimidity ++を使用してmidiファイルをwavファイルに変換するWebアプリケーションに取り組んでいます。サウンド カードがないと動作しないことはわかっているので、サーバーにはサウンド カードが必要です。私の質問は: 使用するサウンド カードは、wav ファイルの生成速度に影響しますか? 私の質問に対する答えが「はい」の場合、サウンド カードを購入する際に何に注意すればよいでしょうか。おすすめのサウンドカードは?