Logic Pro Xユーザガイド
- ようこそ
-
- 概要
-
- リージョンの概要
- リージョンを選択する
- リージョンの一部を選択する
- リージョンをカット、コピー、およびペーストする
- リージョンを移動する
- ギャップを追加する/取り除く
- リージョンの再生をディレイする
- リージョンをループさせる
- リージョンを繰り返す
- リージョンのサイズを変更する
- リージョンをミュートする/ソロにする
- リージョンをタイムストレッチする
- リージョンを分割する
- MIDIリージョンをデミックスする
- リージョンを結合する
- トラック領域でリージョンを作成する
- トラック領域でオーディオリージョンをノーマライズする
- MIDIリージョンのエイリアスを作成する
- オーディオリージョンのクローンを作成する
- リージョンの色を変更する
- オーディオリージョンをサンプラーのサンプルゾーンに変換する
- リージョン名を変更する
- リージョンを削除する
-
- Smart Controlの概要
- マスターエフェクトのSmart Controlを表示する
- Smart Controlのレイアウトを選択する
- MIDIコントローラの自動割り当て
- スクリーンコントロールを自動的にマップする
- スクリーンコントロールをマップする
- マッピングパラメータを編集する
- パラメータ・マッピング・グラフを使用する
- スクリーンコントロールのプラグインウインドウを開く
- スクリーンコントロールの名前を変更する
- アーティキュレーションIDを使ってアーティキュレーションを変更する
- ハードウェアコントロールをスクリーンコントロールにアサインする
- Logic ProでSmart Controlの編集内容と保存されている設定を比較する
- アルペジエータを使う
- スクリーンコントロールの動きを自動化する
-
- 概要
- ノートを追加する
- スコアエディタでオートメーションを使う
-
- 譜表スタイルの概要
- トラックに譜表スタイルを割り当てる
- 譜表スタイルウインドウ
- 譜表スタイルを作成する/複製する
- 譜表スタイルを編集する
- 譜表と声部を編集する/パラメータを割り当てる
- Logic Proの譜表スタイルウインドウで譜表または声部を追加する/削除する
- Logic Proの譜表スタイルウインドウで譜表または声部をコピーする
- プロジェクト間で譜表スタイルをコピーする
- 譜表スタイルを削除する
- 声部と譜表に音符を割り当てる
- 多声部のパートを別々の譜表に表示する
- スコア記号の割り当てを変更する
- 譜表をまたいで音符を連桁にする
- ドラム記譜用にマッピングされた譜表スタイルを使う
- 定義済みの譜表スタイル
- スコアを共有する
- Touch Barのショートカット
-
- エフェクトについての説明
-
- MIDIプラグインを使う
- Modifier MIDIプラグインのコントロール
- Note Repeater MIDIプラグインのコントロール
- Randomizer MIDIプラグインのコントロール
-
- Scripter MIDIプラグインを使う
- スクリプトエディタを使う
- Scripter APIの概要
- MIDI処理関数の概要
- HandleMIDI関数
- ProcessMIDI関数
- GetParameter関数
- SetParameter関数
- ParameterChanged関数
- Reset関数
- JavaScriptオブジェクトの概要
- JavaScript Eventオブジェクトを使う
- JavaScript TimingInfoオブジェクトを使う
- Traceオブジェクトを使う
- MIDIイベントのbeatPosプロパティを使う
- JavaScript MIDIオブジェクトを使う
- Scripterのコントロールを作成する
- Transposer MIDIプラグインのコントロール
-
- 内蔵の音源についての説明
- 用語集
JavaScript Eventオブジェクトを使う
Scripter MIDIプラグインのHandleMIDI関数が呼び出されると、Eventオブジェクトは1つのMIDIイベントを表し、スクリプト内で呼び出せる複数のメソッドを実装します。
Eventオブジェクトから直接インスタンスが作成されることはなく、Eventオブジェクトはイベントに特有の以下のメソッド、プロパティ、およびタイプのプロトタイプになっています。
ヒント: JavaScriptの「new」キーワードを使用すると、任意のタイプのEventオブジェクトの新しいインスタンスを生成できます。
Eventのメソッド
Event.send(): イベントを送信します。
Event.sendAfterMilliseconds(number ms): 指定の値が経過するとイベントを送信します(整数または浮動小数点数を指定できます)。
Event.sendAtBeat(number beat): ホストのタイムライン上の指定の拍(浮動小数点数)でイベントを送信します。
Event.sendAfterBeats(number beat): 上記と同じですが、拍の値は現在位置からの拍単位のディレイとして使用されます。
Event.trace(): イベントをプラグインのコンソールに表示します。Traceオブジェクトを使うを参照してください。
Event.toString(): イベントを文字列で返します。
イベントのプロパティ
Event.toarticulationID(integer number): 0-254のアーティキュレーションIDを設定します。
Event.channel(number): MIDIチャンネル1-16を設定します。
Event.beatPos: イベントの拍の正確な位置を取得します。
イベントタイプ
Eventオブジェクトは以下のイベントタイプのプロトタイプになっています。すべてのイベントタイプが、上記のメソッドと、チャンネルのプロパティを継承します。
イベントタイプとそのプロパティは以下の通りにHandleMIDIに渡されます:
NoteOn.pitch(integer number): 1-127のピッチ。
NoteOn.velocity(integer number): 0-127のベロシティ。ベロシティ値0は、ノートオンではなくノート・オフ・イベントとして解釈されます。
NoteOff.pitch(integer number): 1-127のピッチ。
NoteOff.velocity(integer number): 0-127のベロシティ。
PolyPressure.pitch(integer number): 1-127のピッチ。
PolyPressure.value(integer number): 0-127のプレッシャー値を定義します。
ControlChange.number(integer number): 0-127のコントローラ番号。
ControlChange.value(integer number): 0-127のコントローラ値。
ProgramChange.number(integer number): 0-127のプログラムチェンジ番号。
ChannelPressure.value(integer number): 0-127のアフタータッチ値。
PitchBend.value(integer number): -8192-8191の14ビットのピッチベンド値。値0は中央です。
TargetEvent.target(string): ユーザによる定義が可能なMIDI CCメッセージを作成します。またはプラグインのパラメータを制御します。
TargetEvent.value(float): ターゲットの値を設定します。
対応するチュートリアル設定を読み込んで、スクリプトエディタにスクリプトを表示してください。コードおよびコメントの構文構造とレイアウトの理解に役立ちます。Logic ProのScripter MIDIプラグインのスクリプトエディタを使うを参照してください。
チュートリアルスクリプト7: イベントの作成
Logic Pro Xで、この例では、受信した各MIDIイベントをモジュレーション・コントロール・チェンジ・メッセージに置き換えます。
「/*」の後ろのテキストは、JavaScriptコードについて説明するコメントを示します。
ヒント: JavaScriptの「new」キーワードを使用すると、任意のタイプのEventオブジェクトの新しいインスタンスを生成できます。
function HandleMIDI() {
var cc = new ControlChange; /* make a new control change message */
cc.number = 1; /* set it to controller 1 (modulation) */
cc.value = 100; /* set the value */
cc.send(); /* send the event */
cc.trace(); /* print the event to the console */
}
チュートリアルスクリプト8: イベントの変更
Logic Pro Xで、この例では、受信した各MIDIイベントをC3ノートのオン/オフに置き換えます。NeedsTimingInfo変数も使用します。JavaScript TimingInfoオブジェクトを使うを参照してください。
「/*」の後ろのテキストは、JavaScriptコードについて説明するコメントを示します。
ヒント: JavaScriptの「new」キーワードを使用すると、任意のタイプのEventオブジェクトの新しいインスタンスを生成できます。
var NeedsTimingInfo = true; /* needed for .sendAfterBeats() to work */
function HandleMIDI() {
var on = new NoteOn; /* make a new note on */
on.pitch = 60; /* set its pitch to C3 */
on.send(); /* send the note */
var off = new NoteOff(on); /* make a note off using the note on to initialize its pitch value (to C3) */
off.sendAfterBeats(1); /* send a note off one beat later */
}
チュートリアルスクリプト15: プラグインの制御
Logic Pro Xで、ユーザによる定義が可能なMIDI CCメッセージを作成したり、プラグインのパラメータを制御したりできます。TargetEventは、メニューから変更されるパラメータを読み取ります。ユーザは割り当て先のMIDI CCを選択できます。または、「Learn Plug-In Parameter」機能を使い、Scripterと同じチャンネルストリップにあってScripterよりも後(下)に挿入されているプラグインのパラメータを割り当てることもできます。選択した割り当て先はプラグインの設定と共に保存されます。
「/*」の後ろのテキストは、JavaScriptコードについて説明するコメントを示します。
ヒント: JavaScriptの「new」キーワードを使用すると、任意のタイプのEventオブジェクトの新しいインスタンスを生成できます。
TargetEvent properties:
TargetEvent.target(string) /* Name of target menu entry */
TargetEvent.value(float) /* Value of set Target from 0.0 to 1.0 */
以下のコードではモジュレーションホイールでプラグインのパラメータを制御します。チュートリアルスクリプト15の機能をテストするには、同じチャンネルにプラグインまたはソフトウェア音源を挿入し、スクリプトを実行します。メニューから「Learn Plug-In Parameter」を選択します。続いて、プラグインの任意のパラメータをクリックし、モジュレーションホイールで制御します。
モジュレーションホイールによる制御対象についてのメニューを作成するには、メニュー項目に名前を付け、この項目を「target」タイプに設定します。
var PluginParameters = [
/* parameter 0 */
{
name:"Modwheel Target",
type:"target"
}];
チュートリアルスクリプト15では、ScripterがMIDIイベントを受信するたびにHandleMIDIを呼び出します。以下のコードでは、メニューで選択されたターゲットにモジュレーションホイールをマップし直します。
function HandleMIDI(incomingEvent)
{
/* remap modulation to target selected in menu and
check for incoming CC event with number 1 (Modwheel) */
if ((incomingEvent instanceof ControlChange) && (incomingEvent.number == 1))
{
var newEvent = new TargetEvent(); /* create new Target event */
newEvent.target = "Modwheel Target"; /* name the menu entry to be used by this event */
newEvent.value = incomingEvent.value / 127; /* rescale from 0..127 to 0.0...1.0 */
newEvent.send(); /* send the event */
} else
{
/* send all other events */
incomingEvent.send();
};
};