MAX8でRNBOを使う
RNBOとは
RNBO (Rnbo, pronounced "rainbow") は、Cycling '74 によって開発された Max/MSP の拡張ライブラリです。RNBOは、リアルタイムサウンドの処理や生成を行うためのモジュールで、特に以下のような特徴を持っています:
-
クロスプラットフォーム対応: RNBOは、Max/MSPパッチをオーディオプラグインやエンベデッドデバイス用のコードに変換することができます。これにより、Maxで作成したパッチをスタンドアロンのアプリケーションや他のプラットフォームで実行することが可能になります。
-
高パフォーマンス: RNBOは、パフォーマンスに優れたリアルタイムオーディオ処理を提供します。最適化されたコード生成により、複雑なオーディオ処理でもスムーズに動作します。
-
簡単なコード生成: RNBOは、Max/MSPのパッチを直接C++コードやWebAssembly(WASM)に変換できます。これにより、オーディオエンジンとして使えるスタンドアロンアプリケーションを簡単に作成できます。
-
統合環境: Max/MSPのグラフィカルプログラミング環境内でRNBOを使用することで、オーディオ処理のパッチを視覚的にデザインし、そのまま他のプラットフォームにエクスポートすることができます。
-
データタイプの制限: RNBOでは整数しか使えず、メッセージ内のシンボルもサポートされていません。基本的にオーディオとMIDIのデータ処理に特化しています。
RNBOを使うことで、Max/MSPのパッチをより広範な用途やデバイスで利用できるようになり、サウンドデザインやメディアアートのプロジェクトに新たな可能性をもたらします。
エクスポート
RNBOを使用することで、Max/MSPのパッチを様々な出力プラットフォームにエクスポートすることができます。
以下は、RNBOが対応する主な出力プラットフォームの説明です:
-
オーディオプラグイン(VST/AUなど):
- RNBOは、Max/MSPで作成したオーディオプロセッシングパッチをVSTやAUなどの形式のオーディオプラグインとしてエクスポートできます。これにより、パッチをDAW(デジタルオーディオワークステーション)で使用することが可能になります。
-
スタンドアロンアプリケーション:
- RNBOを使って、Max/MSPパッチをスタンドアロンのデスクトップアプリケーションとしてエクスポートできます。これにより、特定のオーディオツールやインタラクティブなメディアアート作品を独立したアプリケーションとして配布できます。
-
エンベデッドデバイス:
- RNBOは、マイクロコントローラーやシングルボードコンピュータ(例えばRaspberry Piなど)のようなエンベデッドデバイス向けにパッチをエクスポートできます。これにより、ハードウェアデバイスで直接Max/MSPのオーディオプロセッシングを実行することができます。
-
WebAssembly(WASM):
- RNBOは、Max/MSPパッチをWebAssembly形式にエクスポートできます。これにより、パッチをウェブブラウザ上で実行可能なインタラクティブなウェブアプリケーションとしてデプロイすることが可能になります。
-
C++コード:
- RNBOは、Max/MSPパッチをC++コードとしてエクスポートできます。このコードは、任意のC++プロジェクトに統合できるため、カスタムのオーディオアプリケーションやゲームなどでMax/MSPの機能を活用できます。
これらの出力プラットフォームにより、RNBOはMax/MSPのパッチを多様な環境で利用可能にし、サウンドデザインやメディアアートのプロジェクトをより広範な形で展開することが可能です。具体的なエクスポート方法や設定についてさらに詳しく知りたい場合はお知らせください。
イントロダクション
RNBOのイントロパッチを開く手順は以下の通りです:
-
RNBOのイントロパッチを開きます。
-
3番のmbo~パッチをダブルクリックして開きます。
-
ExportSliderを開きます。
-
表示されるターゲットリストから、エクスポートしたいプラットフォームを選択します(例:オーディオプラグイン、スタンドアロンアプリケーション、エンベデッドデバイスなど)。
-
選択したプラットフォームに応じた細かい設定を行います(例:ファイル形式の選択、サンプリングレートの設定など)。
-
右下の出力ボタンを押して、エクスポートプロセスを開始します。
これにより、Max/MSPのパッチを選択したプラットフォーム用にエクスポートできます。
RNBOで使えるオブジェクト
in
in
オブジェクトは、RNBOパッチ内におけるオーディオ入力を定義します。複数の入力を定義することができ、これにより、外部からのオーディオ信号をRNBOパッチ内で処理することが可能です。
input
input
オブジェクトは、制御信号や非オーディオデータの入力を定義します。例えば、UIからのパラメータ変更や外部センサーからのデータ入力など、様々な制御データを受け取るために使用します。
midiin
midiin
オブジェクトは、MIDI信号をRNBOパッチ内に取り込むためのオブジェクトです。これにより、MIDIキーボードや他のMIDIデバイスからの入力を処理し、オーディオエフェクトやシンセサイザーの制御に利用できます。
out
out
オブジェクトは、RNBOパッチからのオーディオ出力を定義します。複数の出力を設定することができ、これにより、処理されたオーディオ信号を外部のオーディオインターフェースや他のデバイスに送ることができます。
gen~
gen~
オブジェクトは、RNBOパッチ内でジェネレーティブなオーディオ処理を行うためのオブジェクトです。高パフォーマンスのDSP(デジタル信号処理)を実現するための柔軟なプラットフォームで、カスタムオーディオプロセスやエフェクトを作成するのに適しています。
param
param
オブジェクトは、RNBOパッチ内のパラメータを定義します。このパラメータは、ユーザーがリアルタイムで調整可能であり、外部からの制御信号を受け取ることもできます。これにより、動的なオーディオプロセッシングが可能になります。
アトリビュートで動作するもの
param
オブジェクトには、いくつかのアトリビュート(属性)を設定することができます。これにより、パラメータの動作を細かく制御することができます。例えば、最小値、最大値、デフォルト値、スケーリング方法(リニアやログ)などを設定することができます。
インポートとparamの違い
in
とparam
の主な違いは以下の通りです:
-
in
: 主にオーディオ信号の入力を扱います。 -
param
: 主に制御信号やパラメータの入力を扱います。
最小値最大値の違い
param
オブジェクトでは、最小値と最大値を設定することで、パラメータの範囲を制限することができます。これにより、ユーザーがパラメータを調整する際に、適切な範囲内での操作が保証されます。一方、in
オブジェクトは主にオーディオ信号を受け取るため、範囲設定は通常適用されません。
スナップショットの活用
RNBOでは、スナップショット機能を利用して、パッチの特定の状態を保存し、後で再現することができます。これにより、複雑なパッチ設定やリアルタイムパフォーマンスの準備を効率的に行うことができます。スナップショットを活用することで、以下のような利点があります:
- 簡単なセットアップ: パッチの複雑な設定を簡単に再現できます。
- パフォーマンスの一貫性: ライブパフォーマンス中に特定の設定を迅速に呼び出すことができます。
- 作業効率の向上: 異なるプロジェクトやセッション間で設定を共有することができます。
RNBOを使用することで、Max/MSPのパッチをさまざまなプラットフォームにエクスポートし、高パフォーマンスなリアルタイムオーディオ処理を実現できます。各オブジェクトや機能を理解し、適切に活用することで、クリエイティブなプロジェクトを効果的に進めることができます。
GENとRNBOの違い
Max/MSPで使用されるGENとRNBOは、それぞれ異なる用途と機能を持つ拡張ライブラリです。以下にその違いを詳しく説明します。
GEN
-
目的:
- GENは、Max/MSP内での高パフォーマンスなリアルタイムDSP(デジタル信号処理)を実現するためのライブラリです。特に、低レベルのオーディオ処理やカスタムシグナルプロセッシングを行うために使用されます。
-
使用方法:
- GENは、
gen~
オブジェクトを使用してMax/MSP内で直接DSPコードを書くことができます。このコードはC言語風の記述で、非常に効率的なオーディオ処理を行います。
- GENは、
-
主な機能:
- 高速なリアルタイムオーディオ処理。
- カスタムDSPアルゴリズムの設計と実装。
- サンプル単位での信号処理。
-
制限:
- Max/MSP内でのみ動作するため、エクスポート機能は基本的に備えていません。
RNBO
-
目的:
- RNBOは、Max/MSPパッチをさまざまなプラットフォーム用にエクスポートするためのライブラリです。リアルタイムオーディオ処理の他、スタンドアロンアプリケーションやオーディオプラグイン、エンベデッドデバイスなどでの実行を目的としています。
-
使用方法:
- RNBOは、Max/MSP内で作成されたパッチを選択し、エクスポートターゲット(例:VSTプラグイン、WebAssembly、スタンドアロンアプリケーションなど)を選んでエクスポートします。
-
主な機能:
- クロスプラットフォーム対応で、さまざまな形式にエクスポート可能。
- 高パフォーマンスなリアルタイムオーディオ処理。
- コード生成(C++、WebAssemblyなど)。
-
制限:
- RNBOでは整数しか使えず、メッセージ内のシンボルもサポートされていません。基本的にオーディオとMIDIのデータ処理に特化しています。
主な違い
-
用途の違い:
- GENは、Max/MSP内での高パフォーマンスDSPの設計と実装に特化しており、主にリアルタイムオーディオ処理を目的としています。
- RNBOは、Max/MSPパッチをさまざまなプラットフォーム用にエクスポートすることに特化しており、広範な用途での実行を目的としています。
-
エクスポート機能:
- GENはMax/MSP内での使用に限られていますが、RNBOはスタンドアロンアプリケーションやオーディオプラグインなどにエクスポートできます。
-
データタイプの制限:
- RNBOでは整数しか使えず、メッセージ内のシンボルもサポートされていませんが、GENではこれらの制限はありません。
このように、GENとRNBOは異なる目的と機能を持つライブラリであり、ユーザーのニーズに応じて使い分けることが重要です。
書き出し
クロスシンセス(ボコーダー)
サンプルパッチ:49.RNBO(VST).maxpat
矩形波と音声を混ぜ合わせる
Externalobjectに書き出すと速度が稼げる
Discussion