Mac用Logic Proユーザガイド
- ようこそ
-
- アレンジの概要
-
- リージョンの概要
- リージョンを選択する
- リージョンの一部を選択する
- リージョンをカット、コピー、およびペーストする
- リージョンを移動する
- ギャップを追加する/取り除く
- リージョンの再生をディレイする
- リージョンをループさせる
- リージョンを繰り返す
- リージョンのサイズを変更する
- リージョンをミュートする/ソロにする
- リージョンをタイムストレッチする
- オーディオリージョンを逆方向にする
- リージョンを分割する
- MIDIリージョンをデミックスする
- リージョンを結合する
- トラック領域でリージョンを作成する
- トラック領域でオーディオリージョンのゲインを変更する
- トラック領域でオーディオリージョンをノーマライズする
- MIDIリージョンのエイリアスを作成する
- 繰り返しのMIDIリージョンをループに変換する
- リージョンの色を変更する
- Mac用Logic ProでMIDIリージョンをパターンリージョンに変換する
- Mac用Logic ProでMIDIリージョンをSession Playerリージョンで置き換える
- オーディオリージョンをサンプラー音源のサンプルに変換する
- リージョン名を変更する
- リージョンを削除する
- Stem Splitterを使ってボーカルや楽器のステムを抽出する
- グルーブテンプレートを作成する
-
- Smart Controlの概要
- マスターエフェクトのSmart Controlを表示する
- Smart Controlのレイアウトを選択する
- MIDIコントローラの自動割り当て
- スクリーンコントロールを自動的にマップする
- スクリーンコントロールをマップする
- マッピングパラメータを編集する
- パラメータマッピンググラフを使用する
- スクリーンコントロールのプラグインウインドウを開く
- スクリーンコントロールの名前を変更する
- アーティキュレーションIDを使ってアーティキュレーションを変更する
- ハードウェアコントロールをスクリーンコントロールにアサインする
- Smart Controlの編集内容と保存されている設定を比較する
- アルペジエータを使う
- スクリーンコントロールの動きを自動化する
-
- 概要
- ノートを追加する
- スコアエディタでオートメーションを使う
-
- 譜表スタイルの概要
- トラックに譜表スタイルを割り当てる
- 譜表スタイルウインドウ
- 譜表スタイルを作成する/複製する
- 譜表スタイルを編集する
- 譜表と声部を編集する/パラメータを割り当てる
- Mac用Logic Proの譜表スタイルウインドウで譜表または声部を追加する/削除する
- Mac用Logic Proの譜表スタイルウインドウで譜表または声部をコピーする
- プロジェクト間で譜表スタイルをコピーする
- 譜表スタイルを削除する
- 声部と譜表に音符を割り当てる
- 多声部のパートを別々の譜表に表示する
- スコア記号の割り当てを変更する
- 譜表をまたいで音符を連桁にする
- ドラム記譜用にマッピングされた譜表スタイルを使う
- 定義済みの譜表スタイル
- スコアを共有する
-
-
- キーコマンドの概要
- キーコマンドをブラウズする/読み込む/保存する
- キーコマンドを割り当てる
- キーコマンドをコピーする/プリントする
-
- グローバルコマンド
- グローバルコントロールサーフェスコマンド
- さまざまなウインドウ
- オーディオファイルを表示しているウインドウ
- メインウインドウのトラックとさまざまなエディタ
- さまざまなエディタ
- タイムルーラのある表示
- オートメーションのある表示
- メインウインドウのトラック
- Live Loopsグリッド
- ミキサー
- MIDIエンバイロメント
- ピアノロール
- スコアエディタ
- イベントエディタ
- ステップエディタ
- ステップシーケンサー
- プロジェクトオーディオ
- オーディオファイルエディタ
- スマートテンポエディタ
- ライブラリ
- Sampler
- Drum Machine Designer
- ステップインプットキーボード
- Smart Control
- ツールメニュー
- コントロールサーフェスのインストールウインドウ
- Touch Barのショートカット
-
-
- Studio Piano
- 用語集
- 著作権
Mac用Logic ProのJavaScript Eventオブジェクトを使う
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): ターゲットの値を設定します。
対応するチュートリアル設定を読み込んで、スクリプトエディタにスクリプトを表示してください。コードおよびコメントの構文構造とレイアウトの理解に役立ちます。スクリプトエディタを使うを参照してください。
チュートリアルスクリプト8: イベントの作成
Logic Proで、この例では、受信した各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 */
}
チュートリアルスクリプト9: イベントの変更
Logic Proで、この例では、受信した各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で、ユーザによる定義が可能な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();
};
};