Max for Live Production Guidelinesを読む。(非公式)
Max For Live 開発ガイドラインを読みました。全部翻訳はDeepLの方が得意だと思うので、OTANIBOTは、適宜はしょりながら、読んだ内容理解して書いてきます。
はじめに結論を書きますと、他人にパッチを共有する時に気をつけようってことが網羅的に描かれつつ、ちょっとわかりにくい箇所もありましたが、
比較的すぐに読めました。
初心者向けではないので、これから始めるって方は、読まなくていい感じで
した。
元の文章はこちらです。
すでにMax For Liveで開発を始められていて配布などされている方は、
元文章を読んだ方が正確かなと思います。
じゃあ、誰向けの文章なんだっていうと自分がすぐ忘れちゃうので自分向けのメモ用です。
https://github.com/Ableton/maxdevtools/tree/main
はじめに
このガイドを読んでいる人は、Maxがどのように動作するかについて、すでに理解しているはずです。初心者向けの情報は付録B - リソースのリストを見よう!
Freezing and Dependencies
Max for Liveデバイスを開発しおえたら、最後にフリーズせよ。
共有または配布する前にデバイスをフリーズさせないと、ファイル参照が壊れてデバイスが誤動作することがよくありがち。
Max デバイスのフリーズすることで参照ファイルなどを集めてセーブします。
凍結されたデバイスが他のユーザのコンピュータにロードされる時は、ファイルを参照し直すためフリーズして渡すことを忘れないように。
参照ファイルには、オーディオファイル、イメージファイル、Javascript コードやサードパーティの Max エクスターナルファイルなどなどがある。
デバイスのすべての依存関係のリストを得るために、Max の File メニューには List Externals and Subpatcher Files というオプションがあるので、確認してみるのがおすすめ。
デバイスをフリーズするには、デバイスツールバーのスノーフレークアイコンをクリックし、デバイスを保存します。(OTの心の声:: スノーフレークアイコンっていうんだね!)
Inspector
インスペクターウィンドウから、Open in Presentation modeをオンにしましょう!プレゼンテーションビューにUIを並べて使用するのが基本。
Project Window
ツールバーの[Show Containing Project]をクリックすると、デバイスの依存関係を専用のファイル・マネージャー・ウィンドウで表示できる!
Local and Global Naming
Maxの「名前空間」はグローバルです。
[send]、[receive]、[coll]、または[buffer‾]のような名前が関連付けられたオブジェクトがある場合、Max for Liveデバイス間でデータを共有ができますよ!(OTの心の声:へぇ〜そうだったんかぁ。)
シグナル処理スペースは独立している。 それぞれの Max for Live デバイスはオーディオデータを個別に処理される。
Parameters
パラメータ名について
デバイスのパラメータ名設定にはいくつか種類がある。
Short Name:UIオブジェクトのラベル用。
Long Name:オートメーションとMIDIマッピング用。
Scripting Name(オプション):[pattr] プリセットオブジェクトやスクリプトで使用される。
Max のオブジェクトインスペクタで 'Long Name' と 'Short Name' を設定しないといけない。
Short Name は、ラベルが切り捨てられるのを避けるために十分に短く。Long Name は、より説明的で完全な単語を使うことができます。
例えばこんな感じ、
'Env'と'Envelope'、'Freq'と'Frequency'などなど!
Long NameとScripting Nameは重複しないように要注意。
重複する場合、Max は自動的に Long Name に [1] のような整数を付加してくるので注意しよう。
Parameters Windowについて
Max で、View > Parameters と進むと、全てのパラメータのアトリビュートを一度に編集できるウィンドウが開ける。
Automationについて
オブジェクト・インスペクタのParameterセクションで、Parameter VisibilityをAutomatedとStoredに設定すると、Liveでパラメータをオートメーションできる。
オブジェクトの 'Parameter Visibility' を 'Automated and Stored' に設定して、Live でのオートメーションに利用できるようにできる。
デフォルトでは、live.numbox[1] または live.dial[3] みたいに設定されちゃうので、できれば意味のある名前に変更した方が良さげ。
Parameter Type and Unit Style
[live.*] UIパラメータの3つのタイプについて
Int: Int: 0 - 255の範囲の整数値
Float: 浮動小数点値(範囲制限なし)
Enum: 項目の列挙リスト
Saving Parameters
通常のLIVEユーザーは、すべてのデバイスのパラメータが Live Set または Live プリセットに正しく保存され、呼び出されることを期待しています。
パラメータがライブ・セットと共に保存されない場合、以下の2つの問題の可能性がある。
UIオブジェクトが[live.*]UIオブジェクトではない。
Liveのマッピング機能とシームレスに動作するように設計されており、Liveで自動化でき、デバイスがインスタンス化されたときに初期値を保存できる(オブジェクトInspectorのInitial Enable/Initial Value)ので、代わりに指定されたLive UIオブジェクトを使用してみてください。
Parameter Visibility が Hidden に設定されている。
Automated and Stored または Stored Only のいずれかに設定されていることを確認。この設定項目は、UI オブジェクトのインスペクタ・ウィンドウの Parameter セクションにある。
ヒント:Maxで、View > Parameters と進むと、全てのパラメータのアトリビュートを一度に編集できるウィンドウが開きます。
Presets
出来上がったデバイスは、開発者であるあなたには明白に思えるかもですが、ユーザーが機能をすぐに理解できない場合もあるのでより明確に示すことは有益。プリセットを用意するのはかなり有益な手法。
デフォルトのパラメータ値は、オブジェクトインスペクタのParameterセクションで、Initial Enableオプションを使い、Initial Valueを設定することで設定できます。
Info Text
パラメータにマウスカーソルを合わせると、テキストを表示することができます。オブジェクト・インスペクタの [Description] セクションで UI オブジェクトに追加できます。
MIDI Mapping
パラメーターをMIDIマッピング可能にすることで、ユーザーは任意のMIDIコントローラーでパラメーターをコントロールできるようになります。
パラメータがマッピング可能でない場合、[live.*]オブジェクトを使用していない可能性があります。
Push Support
デバイスパラメーターは、[live.banks]システムを使ってPushにマッピングすることができます。詳しくは[live.banks]ヘルプパッチャーまたはリファレンスを参照してください。
Live Color Themes
デフォルトでは、[live.*] UI オブジェクトの色はLive 11でMaxに導入された機能であるダイナミックカラーになってる。
ダイナミック・カラーはLiveのカラーテーマに従う。リファレンスを参照。
[live.scope~]や[live.meter~]のようなパラメータ・オブジェクトではない場合、現在、非アクティブカラーはオブジェクト自体のactiveアトリビュートが0に設定されている時だけ表示されることに注意して下さい。
このようなオブジェクトをデバイスが有効な状態に従うようにするには、[live.thisdevice]の2番目のアウトレットでそのactiveアトリビュートをコントロールすることができる。
Liveテーマに従わないことを選択した場合、可読性が損なわれる場合があるという事実に留意。
例えば、以下のスクリーンショットでは、暗いテーマを使用すると、黒いテキストが白いテキストに変わることに注意。
デバイスの色は、[live.colors] オブジェクトを使って Live のテーマに合わせることもできる。詳しくは[live.colors]ヘルプパッチャーまたはリファレンスを参照。
デバイスをロードし、LiveのPreferencesでLook/Feelタブを開き、カラーテーマの選択を循環させることで、これが正しく実装されていることを確認できます。
Fonts
Ableton SansはMaxの標準フォントとして含まれています。このフォントは、[comment]や[live.dial]ラベルなど、テキストを表示するオブジェクトのInspectorから選択できるので、この書体の使用をおすすめ。
Device Width
Liveのデバイスビューは高さが固定されているため、横スクロールの不便さ
が出てくる。各デバイスの幅をできるだけ小さくすることで対応できます。
例えば、あなたのMax for Liveデバイスは、多くの機能やパラメータを搭載したシンセですか?もしそうなら、Creative Extensions PackのPoliのように大きなデバイス幅を持つことができます。あなたのデバイスはどちらかというとユーティリティですか?それなら、Liveの内蔵LFOのように幅が狭い方が理にかなっているかもしれません。複雑なオーディオ・エフェクトを使用する場合は、Convolution Reverb PackのConvolution Reverb Proの幅を参考にしてください。
デバイスが横幅を取りすぎてお好みに合わない場合は、横幅を小さくする方法がいくつかあります:
折りたたみ表示、タブ表示、オーバーレイ表示があります。
Surround Panner Pack、Convolution Reverb Pro、Live内蔵のLFOなどMax for Live Editorを開いて、これがどのように実装されるか見てみてくださいとのこと。
[live.*] Objects
Liveオブジェクトの配置のピクセルズレがないように気をつけましょう!
位置座標が、‘4’ ではなく‘4.3562635'とかにならないように注意。
Arrange メニューから Apply Grid 機能を選択すると、すべてのオブジェクトを 1x1 ピクセルのグリッドにスナップできる。
[Live.text]のoutput modeでは、ライブ演奏で使用想定するような場合、正確に出力されるようにするため、Mouse Downオプションを使用することをおすすめ。
Pop-out Windows
ポップアウト・ウィンドウは常にフローティング・モードに設定することをお勧めします。
Robustness
OS互換性について
Mac、PC、Push 3 Standaloneの両方で動作チェックが理想。
ノート:Max外部オブジェクトは、開発者によってMac、PC、Push 3 Linuxプラットフォーム用に個別にコンパイルが必要だったりする。
Max コンソール
Max Console ウィンドウへの出力はできるだけ小さくすることをお勧めします。
Undo History
[live.dial]などのLiveパラメータオブジェクトのParameter Visibilityアトリビュートが、Automated and Stored(デフォルト)またはStored Onlyに設定されている場合、厄介なパターンがあります。
live.dialをAutomated and StoredまたはStored Onlyに設定すると、パッチの中からコントロールしたときにアンドゥ履歴が増えすぎる。
デバイスは、同じUndoアクションの一定のストリームをLiveに送ることになり、あなたがプログラム内で実行した他のアクションは、この一定のUndoアクションのストリームによって即座に「埋もれて」しまうので、取り消しが不可能になる。パラメータ可視性設定をHiddenに変更すると解決はする。
CPU LOAD
パラメータの自動化によって CPU 負荷が高くなる場合は、オブジェクトインスペクタで自動化出力を 延期(Defer Automation Output)を有効にするか、更新制限(Update Limit)を高めに設定してみる。
Testing
配布する前に、デバイス開発者ではない 1 人以上の人にデバイスのテストを依頼することをお勧めします。 デバイスを開発するとき、特定の機能チェックに盲点があることがよくあります。
バージョン管理
バージョン更新を前提とする場合は、フリーズバージョンではなく、元の凍結されていないバージョンを使用することがおすすめ。
編集を続けるためにプラグインを解凍すると、プラグインに含まれる依存関係の新しいコピーがディスク上の新しいフォルダー (~/Documents/Max/Max for Live Devices/ 内) に作成されます。 これにより、作業している依存関係のバージョンについて混乱が生じる可能性があります。
プラグインを配布した後は、プラグインの凍結バージョンをシステムから常に削除することをお勧めします。
git などで 書式変更ツール maxdiff を使用してのバージョン管理がおすすめ。
ただし、git の使用には慎重な検討が必要であることに注意。
Max は、カプセル化、オブジェクトの色付け、命名、パッチ適用とプレゼンテーション モード、セグメント化されたパッチ コード、ローカルの命名付きの [送信]/[受信] ペア、インレット/アウトレットの説明、コメントなど、パッチを理解しやすくするためのさまざまなツールを提供します。 概要については、Max Reference Documentation の「Organizing Your Patch」の章を参照してください。the patch code guidelines that Ableton uses
Final Checklist
General
・エラーメッセージがないか
・Undo履歴:新規追加した時に、Undoが1つだけ
・Freezing:フリーズされ依存ファイルが含まれているか
・プリセット:デバイスにはプリセットコレクションが付属している
Audio と MIDI
・クリックノイズが含まれていないか
・サンプルレートが一貫しているか?
・フリーズ時も全てが正しく動作し同じように聞こえているか?
・MPEサポートがされているか?
・デバイスはライブセットと同期してレイテンシーがないか?
・MIDIマッピングができるか?
UI
・ライブテーマに準拠するか
・無効化:デバイスが無効時の色は正しいか?
・配置:プレゼンテーションモードの左端と右端の要素が同じくらいの範囲で設定されているか?
・デフォルト初期化が正しくされているか?
・フォントに一貫性があるか?
・デバイス幅が横長すぎないか?
Parameter
・すべてのタイトルとフィールドが入力されているか?
・ロングネームとショートネームが正しく名前付けされているか?
・オートメーションパラメータが意図した通りに表示されるか?
・パラメータの単位やタンプが正しいか?
・Enumラベルのオートメーションのユニットラベルにデフォルト値がないか?
・モジュレーションパラメータが正しく動作しているか?
・デフォルト値が正しいか?
・保存が正しくされ、リコールされるか?
・Pushで正しく動くか?
Robustness
・CPUが予想外に高くなったりしないか?
・バージョンサポートされているか?
・MacOS、Windows、push3でタサ引く動くか?
・デバイスを複数インスタンス化しても問題が生じないか?
・開発者以外の1名以上によってテストされたか?
For new versions of existing devices(既存デバイスをアップデートする場合)
・パラメータ名は古いバージョンと同じになっているか?
・古いバージョンのデバイスで保存されたパラメータ値はすべてリコールされるか?
・古いバージョンのデバイスでライブ セットに保存されているAPI IDが適切にリコールされるか?
ーーーーー
以上です!
引用:
TAITO OTANI