2009-08-10 4 views
7

私はネットを検索しましたが、興味深いものは見つかりませんでした。たぶん私は間違ったことをしているのかもしれないC/C++/Objective-Cのサウンド合成フレームワーク?

C、C++、Objective-Cで書かれたサウンド合成APIを探しています。さまざまな種類の波を合成でき、エフェクトはオプションです。ここで

答えて

9

は、FM(周波数変調)を合成するための完全なライブラリ/ツールキットです:

link1 link2

あなたは時間に余裕を持っている場合...最初から、単純な音声合成を作成することは、実際に楽しい試みです。いずれかのサインを表す256の16ビットサンプルの小さなバッファを作成する場合。ノコギリ波、ブロック、またはパルスの場合は、これらを連続してループするライブバッファ(たとえば、小さなバッファ(16kbなど))にコピーできます。プレイポジションより前にいて、常に新しい値でバッファーを埋めることで、サウンド出力を作成することができます。 小さなバッファを使って興味深い方法で組み合わせることができます(最も単純なのは単なる加算(加算合成)です)。

トーンの周波数は、小さなバッファーを使用してより大きいか小さいサンプリングステップを使用して操作することができます。振幅は、サンプルを出力バッファに入れる前にスケーリングすることで操作できます。

これを試してみると楽しいです!

あなたは、このステップが釘​​付け持っている場合は、あなたが追加することができ、フィルタ(ローパス、ハイパス、など)やエフェクト(リバーブ、エコーなど)

R

-1

のような、より洗練された効果は、あなたが見てきましたCSound?これは信じられないほど柔軟なオーディオ生成プラットフォームであり、簡単な波形生成からFM合成まで、あらゆる種類のフィルタを処理できます。また、MIDIサポートも提供しています。また、カスタムオペコードを記述することで拡張することもできます。 full C APIといくつかのC++ APIもあります。

2

C/obj-Cで音声合成アルゴリズムを書くことは、私の意見では非常に困難です。 PureDataを使用して信号処理アルゴリズムを記述してから、ZenGardenまたはlibpdを使用して、アプリケーションにpdパッチを埋め込んで解釈することをお勧めします。

4

合成ツールキット(STK)を見ましたか?それはC++です(私はObjCがオーディオ合成のための適切な言語ではないと考えています、実際にはオーディオユニット、アップル独自のオーディオ処理の方法、ジェネレータ/フィルタ/エフェクトを含む)はC++です。

STKはMac OS Xで動作し、iOSは問題ありません(CoreAudioはサポートされています).RtAudioを使用してLinuxとWindows(DirectサウンドとASIO)でも動作します。それは本当にうまくやって軽量、これらの人はそれについて考えて多くの時間を費やしてきたと確信して大きな頭のスタートを与えるでしょう。これは、さまざまなオーディオファイルフォーマット+ミディ(とうまくいけば、すぐにOSC ...)の負荷を処理することができます。

Createもあり、CLAMは巨大です。これらには、GUIコンポーネントやその他たくさんのものがあります。サウンド合成だけに興味があるのなら、STKをお勧めします。

+0

raw WAVデータ/サンプルで動作するtick()を持つインストゥルメントを作成する方法はありますか? – paulm

+1

@paulm私はこれが完全な吹き飛ばされた問題だと思う、STKはwavファイルリーダーを持っていると思うhttps://ccrma.stanford.edu/software/stk/classstk_1_1FileRead.html – jbat100

+0

ありがとう、生のオーディオデータからのSTKフレーム:) – paulm

4

PortAudioは、オーディオプログラミングコースで前回の学期に使用した素晴らしいC APIです。それは、オーディオコールバックを提供しています...もっと何が必要なのですか?

私はObjective-Cに何かを組み込んでみることはありませんでしたが、私はそのときに報告します。

1

別のC++ライブラリがnsoundれる:

http://nsound.sourceforge.net

一方はジェネレータクラスを使用して、または提供正弦クラスを使用して変調された信号の任意の種類を生成することができます。各時間ステップは、それ自身の瞬時周波数および位相オフセットを有することができる。

また、Pythonモジュールを試してアルゴリズムを素早く試作し、C++で実装することもできます。 PythonやC++からのmatplotlibプロットを生成することができます!

関連する問題