31

これは非常に幅広いトピックであることは知っていますが、デモや自分のテストに悩まされており、問題を正しく攻撃しているかどうかはわかりません。ですから、私がどこから始めるべきかについてのリードをいただければ幸いです。

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

私はオーディオユニットとRemoteIOで少し遊んだことがありますが、私が何をしているのかほとんど理解していません。そのうさぎの穴をはるかに下る前に、私が正しい球場にいるかどうかを知りたいと思います。オーディオシンセが低レベルになることはわかっていますが、使用できる高レベルのライブラリがいくつかあることを期待しています。

どこから始めればよいのか、そしてどのiOSテクノロジーについてもっと読むべきかについての指針があれば、私に知らせてください。

ありがとう!

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

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

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

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

4

10 に答える 10

10

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

また、スタンフォード大学のGeWangからもリリースされたiOS用のSynthesisToolKit(STK)をお勧めします。オーディオを合成/処理するための本当にクールなもの。

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

編集:AudioGraphソースコードへのリンクを追加したい:https ://github.com/tkzic/audiographこれは、TomZicarelliによって作成されたAudioUnitsの可能性を示す非常に興味深いアプリです。コードは非常に簡単に理解でき、iOSで低レベルのオーディオを処理する複雑なプロセスについて学ぶのに最適な方法です。

于 2012-10-28T23:27:52.670 に答える
6

Swift&Objective C

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

AudioKit.io

于 2015-07-08T21:35:30.673 に答える
4

サウンドカードへのバッファを取得するための最低レベルの方法は、audiounit api、特にremoteIOaudiounitを使用することです。これは一連のぎこちないものですが、Webのあちこちにいくつかの例が散在しています。http://atastypixel.com/blog/using-remoteio-audio-unit/はその1つです。

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

もう1つの方法は、すべてのオーディオにopenframeworksを使用することですが、これは、openGLで描画を行うことも前提としています。ただし、別の方法で描画を行いたい場合は、audiounitの実装を切り離すことはそれほど問題にはなりません。この特定の実装は、すべてを-1..1フロートにキャストして埋めるために優れています。

最後に、openframeworksオーディオシステム(または-1..1フロートの配列を使用するシステム)に接続できるオシレーター/フィルター/ディレイラインの束でジャンプスタートが必要な場合は、 http:をチェックしてください。 //www.maximilian.strangeloop.co.uk

于 2011-02-01T18:17:39.537 に答える
3

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

于 2010-12-29T15:33:15.380 に答える
3

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

于 2011-08-31T00:53:24.937 に答える
3

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

ただし、地平線には銀色の線があります。iOS6はWebAudioAPIをサポートしています。私はJavaScriptでほんの数行の素晴らしいポリフォンシンセをうまく手に入れることができました。少なくとも、箱から出して利用できるオシレーターのような基本的なものがあります。

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

および(多くの中から1つの例を選択するためだけに)

于 2013-06-09T17:33:37.400 に答える
3

これが古い投稿であることは知っていますが、The AmazingAudioEngineをチェックしてください。

アメージングオーディオエンジンは、iOSオーディオアプリケーション用の洗練されたフレームワークであり、必要がないように構築されています。操作が非常に簡単になるように設計されており、iOSオーディオのすべての複雑さをユーザーに代わって処理します。

これは、iOS用のAudioBusの開発者から来ました。

于 2013-08-22T09:46:27.760 に答える
2

基本的に、それはオーディオキューとオーディオユニットの間のトスアップになるでしょう。リアルタイムに近づける必要がある場合、たとえばマイク入力を処理する必要がある場合、オーディオユニットは最小のレイテンシーを達成するための方法です。

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

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

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

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

実際、オーディオユニットを使用するだけです。jonbroから提供されたリンクから始めてください。AQは高レベルのフレームワークですが、使用するのはより頭痛の種であり、RemoteIOオーディオユニットはこの仕事に適したツールです。

于 2011-12-11T00:43:23.533 に答える
1

私はiOSシンセアプリケーションで動作するためにオープンフレームワークとスタンフォードstk合成ライブラリからのオーディオ出力の例を使用しています。

于 2012-05-26T04:10:45.807 に答える
0

TonicAudioシンセライブラリを試しています。macOSとiOSの例をコンパイルする準備ができているクリーンで理解しやすいコード。

ある時点で、正弦波ジェネレーター、ADSR、遅延などの基本的な処理を行うために、単純なCコードを使用して独自のバッファーを最初から生成し始めました。これは、実験するのに非常に満足のいくものでした。

Tonicの対応するNovocaineを使用して、フロートアレイをスピーカーにプッシュしました。

たとえば、256kは、生成するすべての音楽にこれらを使用します。

つい最近、 AVAudioUnitSamplerを見つけました。これは、サンプルベースのオーディオをさまざまなピッチで低レイテンシーで再生する非常に簡単な方法です。

于 2017-08-21T12:15:15.550 に答える