質問

これが非常に広範なトピックであることは承知していますが、デモや独自のテストで苦労しており、問題に正しく対処できているかどうかはわかりません。したがって、どこから始めるべきかについてのヒントをいただければ幸いです。

目標は、ユーザーの設定に従ってアプリに合成サウンドを生成させることです。(これが唯一のアプリ機能ではありません。ここでコルグを再現しているわけではありませんが、シンセはその一部です。) ユーザーは、ウェーブ、リバーブなどの一般的なシンセ設定を設定します。次に、おそらくピッチとベロシティのモディファイアを使用して、ノートをいつ再生するかを選択します。

オーディオユニットとRemoteIOを少しいじってみましたが、何をしているのかほとんど理解していません。あまりにもウサギの穴に落ちてしまう前に、自分が正しい球場にいるかどうかを知りたいと思っています。オーディオ シンセが低レベルになることはわかっていますが、おそらく使用できる高レベルのライブラリがいくつかあるのではないかと期待しています。

どこから始めればよいか、またどの iOS テクノロジーについて詳しく読むべきかについてのヒントがあれば、お知らせください。

ありがとう!

編集:質問をもっとよく要約させてください。

iOS 用にすでに構築されているシンセ ライブラリはありますか?(商用またはオープンソース - 何度検索しても見つかりませんでしたが、見逃している可能性があります。)

バッファの生成を容易にする高レベルの API はありますか?

すでにバッファを生成できると仮定すると、それらのバッファを iOS オーディオ デバイスに送信するための RemoteIO Audio Unit よりも優れた/より簡単な方法はありますか?

役に立ちましたか?

解決

これは本当に良い質問です。私は時々同じことを自問し、私はいつも Momu Toolkit スタンフォードの男たちから。このライブラリは、audiounits/audiotoolboxに接続する素晴らしいコールバック関数を提供します(わからない)。そのため、サンプリングレート、バッファサイズ、オーディオサンプルのビット深度を設定することだけで、簡単に合成/合成/簡単に合成できます。コールバック関数内で好きなものを処理します。

私もお勧めします iOS用の合成ツールキット(STK) また、スタンフォードのGe Wangによってリリースされました。オーディオを合成 /処理するための本当にクールなもの。

Appleが新しいiOSバージョンをリリースするたびに、新しいドキュメントをチェックして、オーディオを合成するためのより良い(またはよりシンプルな)方法を見つけますが、常に運はありません。

編集:オーディオグラフソースコードにリンクを追加したい: https://github.com/tkzic/audiograph これは、Tom Zicarelliが作成したAudiounitsの可能性を示すための非常に興味深いアプリです。コードは本当に簡単に従うことができ、これについて学ぶのに最適な方法です - 何も言うでしょう - 複雑な iOSで低レベルのオーディオを扱うプロセス。

他のヒント

Swift&Objective c

Objective-CとSwiftの両方のビデオとチュートリアルで十分に文書化された優れたオープンソースプロジェクトがあります。

audiokit.io

バッファーをサウンドカードに届ける最低レベルの方法は、Audiounit API、特にRemoteio Audiounitを使用することです。これはたくさんの意味を持っていますが、ウェブの周りに散らばっている例がいくつかあります。 http://atastypixel.com/blog/using-remotio-audio-unit/ 1であります。

Avfoundationフレームワークを使用して、バッファを埋める他の方法があると思いますが、私はそれらを行ったことがありません。

それを行うもう1つの方法は、すべてのオーディオのものにOpenFrameWorksを使用することですが、それはまた、OpenGLで絵を描きたいと思っています。ただし、Audiounitの実装を引き裂くことは、別の方法で絵を描きたいなら、それほど問題はあまり問題ではないはずです。この特定の実装は、すべてを-1..1フロートにキャストして、満たすために素晴らしいです。

最後に、OpenFrameWorksオーディオシステム(または-1..1フロートの配列を使用するシステム)にフックできるオシレーター /フィルター /遅延線のジャンプを開始する場合は、チェックアウトすることができます。 http://www.maximilian.strangeloop.co.uk.

これには2つの部分があります。まず、合成されたオーディオのバッファーを生成する必要があります。これはほとんどプラットフォームに依存していないため、このパートを書くにはオーディオ合成をよく理解する必要があります。 2番目の部分は、これらのバッファーを適切なOS固有のAPIに渡して、実際に音が再生されるようにすることです。オーディオ再生用のほとんどのAPIは、現在のバッファーを再生中に将来のバッファを合成できるように、ダブルバッファリングまたは複数のバッファーをサポートします。どのiOS APIを使用するかについては、それはおそらくあなたがあなたのアプリにどのような全体的なアーキテクチャを持っているかによって異なりますが、これは本当に簡単な部分です。合成部分は、ほとんどの作業を行う必要がある場所です。

私はこれが少し古いことを知っていますが、これは私にとって間違ったアプローチのように思えます - おそらくあなたがすべきことは、あなたがやりたい種類の変更をモデル化するオーディオユニットシンセサイザーを見つけることです。それらの多くがあり、それらのいくつかはオープンソース、他はおそらくライセンスがあり、コードからオーディオユニットをホストしています。上記のメカニズムは正常に動作するように見えますが、iOSプラットフォームには実際には最適化されません。

私はこのトピックが古いことを知っています、そして、私はiOSの状況が音声に関してまだ改善されていないことに驚いています。

ただし、地平線には銀色のラインがあります。iOS6はWebAudio APIをサポートしています。 JavaScriptにはほとんど数行で、素敵なPolyphoneシンセができたことに成功しました。少なくとも、オシレーターのような基本的なものが箱から出ています。

https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html

そして(多くの人から1つの例を選ぶだけです)

私はこれが古い投稿であることを知っていますが、チェックしてください 素晴らしいオーディオエンジン.

Amazing Audio Engineは、IOSオーディオアプリケーションの洗練されたフレームワークであり、必要ではないように構築されています。それは非常に簡単に作業できるように設計されており、IOSオーディオのすべての複雑さを担当するように設計されています。

これは、iOS用のAudiobusの開発者になりました。

基本的には、オーディオ キューとオーディオ ユニットの間での切り替えになります。リアルタイムに近づける必要がある場合、たとえばマイク入力を処理する必要がある場合、オーディオ ユニットを使用すると遅延を最小限に抑えることができます。

ただし、レンダリング コールバック内で実行できる処理量には制限があります。つまり、データのチャンクは超高優先度のシステム スレッドに到着します。このスレッドでやりすぎると、OS 全体が混乱することになります。

したがって、このコールバック内でスマートにコーディングする必要があります。NSLog を使用したり、非アトミックなしで宣言された別のオブジェクトのプロパティにアクセスしたりする (つまり、暗黙的にロックが作成される) ような落とし穴はほとんどありません。

これが、Apple がこの低レベルの厄介なビジネスを排除するために高レベルのフレームワーク (AQ) を構築した主な理由です。AQ を使用すると、遅延が発生しても問題にならないスレッド上でプロセスを受信し、オーディオ バッファを吐き出すことができます。

ただし、特に加速フレームワークを使用して数学的操作を高速化している場合は、多くの処理を省略できます。

実際、オーディオ ユニットを使用するだけです。まず、jonbro が提供したリンクから始めてください。AQ は高レベルのフレームワークではありますが、使用するのは面倒です。RemoteIO オーディオ ユニットはこの作業に最適なツールです。

Open FrameworksとStanford STK Synthesis Libraryのオーディオ出力の例を使用して、iOS Synthアプリケーションに取り組んでいます。

私はの実験をしています トニックオーディオシンセライブラリ. 。 MacOSおよびiOSの例をコンパイルする準備ができている清潔で理解しやすいコード。

ある時点で、Sineジェネレーター、ADSR、遅延などの基本的なことをするために、ゼロから単純なCコードで自分のバッファーを生成し始めました。

トニックのカウンターパートを使用して、フロートアレイをスピーカーに押しました。 ノボカイン.

例えば 256K これらを生成するすべての音楽にこれらを使用してください。

つい最近私は見つけました avaudiounitsampler, 、遅延が低い異なるピッチでサンプルベースのオーディオを再生する非常に簡単な方法。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top