Scripting将来的にたくさんのMIDIコントローラーのサポートを受けるため、Mixxxは(v1.7.0から)MIDIスクリプティングを提案しました。ライブラリファイルに備えられた機能に自由に一つ一つMIDIマッピングを有効にするアイデアです。LEDの複雑な表示シーケンス、テキスト表示の信号をコントローラーのディスプレイに送信したり、4デッキコントローラーを2デッキコントローラーで切り替えたりできます。Mappingsページのコーディングガイドラインをご覧ください。JavaScriptは複雑な機能をWebページにプログラミングするのに不可欠です。理解するにはHTMLも理解しておかなければなりません。その言語はWebページを書くのに使われています。HTMLはかなりシンプルで簡単に学習でき、基本です。formatとして使われています。付加的な例の項の下の方は、少々、またはプログラミングに詳しくない人を対象にしています。この例は一般的な使用法で構成とメンテナンスされているMIDIスクリプティングの一番最初の助けです。これが作れると簡単にあなたや他の人のコードをすぐに編集できるようになります。あなたがいくらかのプログラミングの経験があるのなら、あなたは多分JavaScriptの基本はすぐに簡単に学べるでしょう。NetworkはJavaScriptプログラミングの有用なリソースがあり、JavaScriptそれ自身がWebを成してると考えてるからです。いえ、その考えはプログラマ経験者の人々にはとても浅はかな考えです。Referenceこのページの一番下にある最後の例、JavaScriptの主要な機能をふんだんに使います。Referenceへのリンクのついたコメントを所持しています。これは経験のあるプログラマなら高速で言語の基本を把握することができるでしょう。GuideもしMIDIについて知りたいのであればMIDIクラッシュコースを見てください。Mixxxマッピングが各メーカーのコントローラーやあなたのコントローラー向けに作られていたら、例のマッピングを見ていただけると幸いです。コントローラーは類似したタイプの信号を送ることが好まれます(しかしそれらは多分難しい)。あなたのスクリプトをテストしたいときは、Mixxxxを再起動しないでください。いつもあなたがファイルを保存するとき、Mixxxは再読み込みしています。これで開発とテストを高速に切り替えられます。XMLマッピングファイルと同梱することを望みます。あなたのOSのコントローラーマッピングファイルの場所を確認して、マッピングファイルを配置します。スクリプトは明示的に読み込みます。タグの直下に以下の句を追記します。メソッドがMixxxの起動時と終了時に呼び出されます。(例によってユーザーはMixxxを起動と終了します)。タグはいくつも追加することができますが、functionprefix’属性は一つに統一して指定しなければいけません。全てが読み込まれるとコントローラーが有効になります。呼ばれ、常時呼び出され、全てのコントローラーの一般的な機能を呼び出します。利用できる一般関数にこれらの機能の情報が見れます。スクリプトファイルヘッダースクリプトにあなたのコントローラーのオブジェクトを宣言します。XMLファイルの’functionprefix’に入力した値であれば何でも交換できます。この新しく宣言したJavaScriptの値を再びコントローラーに送ります。呼びます)そして空のオブジェクトが割り当てられます。このオブジェクトのプロパティが”init”や”shutdown”を定義し構成した機能を呼び出すでしょう。(JavaScriptではメソッドオブジェクトはプロパティで、この値は関数です)。これら空っぽですが、文鎮になってるコントローラーに状態やLEDのライティングの制御をするプログラムを書いてやれば、役に立たつことができます。大体のコントローラーはMIDI信号を送り、それをコントローラーに送り返すこともできます。Mixxxが起動した際にinit関数で信号を送ってMixxxの状態とコントローラーの状態をマッチングする助けになります。sysexメッセージを送ることができます。それぞれのコントローラーの詳細をプリントすることができます。パラメーターをコマンドラインで指定すると’true’になります。衝突を起こさないでしょう。<options>ブロックの中に<Scritpt-Binding/>と入れます。</options></control><group>の値は困ったことに、スクリプトの関数では使えませんが、静かに確実にXMLパーサーがエラーを必要とします。これはエクストラパラメーター機能が大体解決します(v1.8から)(これはマルチデッキコントローラーで役に立ちます。タグやオプションがない場合は、熟考のうえでほかのそれらの上に表示されます。あなたはこれらから解放されます。デバイスコントロールが制御するときは、名前を付けられたスクリプト関数が呼び出されます。取ればいいかMIDI信号を送り、Mixxxのコントロールに変換し、MIDI信号をコントローラーのLEDに送り返すか、と同時にデバックメッセージを出力します。<key>要素の値がJavaScriptの断片だった場合、JavaScriptのコードとして評価します。関数とコントローラのXMLファイルのリンクが通ったら、以下が順序付けられます。これらはJavaScriptで、オブジェクトです。変更可能で、別の関数をいつでも割り当て直すことができ、MIDI信号を受け取った時でも変更可能です。パラメーターを切ることも可能で、必要のないパラメーターを除くことが可能ですが、パラメーターの順番は変わりません。要らない場合は、このようにハンドラーを書くことができます。使ってMixxxの各コントロールを呼び出します。呼び出せるリストはこちらにあります。指定し、新しい値を設定します。0から1までの値で働きます。ページに表でまとめられています。エフェクトのパラメーターで絶対に使うべきで、なぜなら、別のエフェクトはそれぞれ別の幅を持っているためです。関数を使うことで簡略化できます。length);ついでに、これらは仮想的な全てのMIDI信号を送ることができます。関数を以下と呼び出します。使えるバイトも限定されています。関数を以下の様に使います。プロパティを使います)。影響を与えるのに使えるバイトも限定されています。他のコントローラーで巧みに操作することができます。コントローラーメーカーによるものです。載っていることが好ましいです。それらはドキュメントと離れていたら、マニュアルの最後の方にあるでしょう。mappings.Mixxxの自動応答この章のポイントは、スクリプトの関数はコントローラーの返答を巧みに扱うことに限定しています。コントローラーも同期するようにしたいでしょう。Mixxxコントロールシグナルとスクリプトの関数を繋げます。つけると、Mixxxのコントロールシグナルとスクリプトの関数を切断します。trueが返されると、切断が成功したことを意味します。スクリプトの関数名は文字列で引用してください。簡単にMixxxのシグナルが発火した場合にスクリプトの関数を呼び出し、値を更新します。変更できなければ、LEDの状態を強制的に変更します。できればengine.trigger()はJavaScriptの関数のトリガーに限定し、XMLのリフレッシュ出力には使わないでください。接続された関数は3つのパラメーターを送ります:新しいMixxxコントロール、グループ、Mixxxコントロール名です。3つのパラメーターを提供したくない場合は、無名関数を使います。"sync_enabled");もしLEDの同期を変更したい場合は(例えばスイッチングモード)、Mixxxから”sync_enabled”を切断します。"MyController.syncLED",true);ハードウェアコントロールからスクリーンのパラメーターを大きく反映する場合は,soft-takeoverを使いましょう。and、いつもの制御ができます。ソフトウェアに影響を与えず、有効・無効はMixxxControlが独立して制御します。有効にするとそれらから解放されます。これらの機能はスクリプト内にengine.setValue()を巧みに使っている時に動作します。XMLファイル内では動作しません。あなたはsoft-takeoverの状態をあなたのタイミングでリセットしたいでしょう。プレイバック)し、ターンテーブルのようになります。Mixxxでは簡単にスクラッチとジョグホイールの情報を(+1/-1で)送れます。係数(スリップマット効果のイメージと一緒です)アルファ値フィルタ(初めの1/8(0.125)とターンの初め)ベータ値フィルタ(初めのアルファ値/32とターンの初め)Mixxxに求めるランプデッキスピードダウンか即座に止めるか。仮想デッキと呼び、スクラッチを終え、Mixxxに求める通常再生へのランプデッキスピードアップか、即座に再生を行います。(通常はスピンバックした勢いからのランプです)ここに一般的な例を載せます。’scratchnigExample.js’タブをクリックすると、このファイルをあなたのエディタで見ることができます。ボタン・タッチセンサーとホイールのスクリプト関数をここで書いているようマップに割り当てれば、様々なトラックで行うことができます。時間動作コントローラーかMixxxを定期的に操作したい時があるでしょう。20マイクロ秒計ってくれます。trueであれば)指定したミリ秒(1/1000秒)実行します。返し、この値はもしリピーティングタイマーを停止したいときにすぐに停止できます。この関数は必ずクォート(’)で囲んでください。指定されたタイマーを停止します。あなたはタイマーの生成とストップがいくつも作れますが、オペレーションシステムの限界に依存します。実行したタイマーはすぐに止めましょう。ループは問題ないですが、遅延します。timersのページを見ると、タイマーの他の概要や良い例がわかるでしょう。スピンバックとブレイクエフェクト前進もしくは後退ブレイク効果を有効・無効にするには2つの関数を使って行えます。engine.spinback()を呼ぶのが標準的な設定のスピンバックです。どれだけのスピードでデッキを停止させるかです。最初の値は1でそこから値を落としていきます。最初のデッキの再生スピードです。”1”が通常のスピードで、”-10”が10倍速逆再生です。文字列をアスキーバイト配列に変換します。なにもない(なにも制御していない)空の関数です。エラーの代替として使えます。フォーマットで返す関数です。バイナリ操作の状態をトグルする関数です。値をプリントする関数です。あなたの関数のどこでも呼びだされ、MIDIの値を関数に取り込みます。あなたのXMLの<key/>タグにコレを入れると、動作します。意図して他のスクリプトから呼び出すと、MIDIピッチコントロールと対応するMixxxのピッチスライダーの値(”rate”コントロール)が返って来ます。これらの値をコントロールしたい場合は、1行で呼び出すことが可能です。クロスフェーダーのカーブベースの相対的コントロールの値を設定します。合わせたlowのhighの間で線形比例したのデッキボリュームもしくはLFO深度を返します。返された値はMixxxのコントロールに代入することができます。上記とは逆の関数です。MIDIの値をコントローラーに送り返す時に役に立ちます。非線形でlowとmidとhighを通る相対的な値が返されます。Mixxxコントロールではイコライザー(EQ)やマスターボリュームで使われます。返された値はMixxxのコントロールに代入することができます。上記とは逆の関数です。MIDIの値をコントローラーに送り返す時に役に立ちます。タップボタンを押した時にいつでも呼び出すことができます。ピッチレンジを大きく反応させます。(この機能はトラックがBPM値を持っていないと使えません。)もし2回目の動作が行われたら、前の記録は消されます。システムエクスクルーシブメッセージ受信時の関数SysEx信号を受信する関数があります。配列の長さ関数は以下の様に使います。...}関数を移譲するときは、XMLマップの<controls>部を設定します。</options></control>バイトをコントローラーが受信しどのような振る舞いをするかはユーザーマニュアルかメーカーに問い合わせてください。コントローラーが別のSysEx信号を送信してきた場合は、関数を一つ作り、受信し通信する動作をさせましょう。いくつかのコントローラーはMIDI標準を破った情報を送ります。最高ビット数を無視した状態バイト(0xF9とか)などです。Linuxでは最近のバージョンのALSA(2012年12月以降の)はそれらのようなバイトを自動的に標準的な2ニブル分解し、2バイトに送信しています。0xF7*と変換しています。詳しくはALSAのドキュメントをご覧ください。付加的な例この章ではいくつかの例を上げてあなたの後押しをします。最初はシンプルに、次第に複雑な物になっていきます。ボタンを押した時MIDIボタンは通常押した時は0x7F(127)を送信し、離した時は0x0(0)を送信します。したがって、JavaScript関数でボタンが押されたら実行されるようにするには、この関数を書き、ボタンが押された時の処理を書き、関数で囲みます。状態の値を確認する関数を書くとしたらこうです。関数の中で変数を宣言するときは必ず”var”を最初に付けましょう。変数はグローバルになり、容赦なく他の別の名前の変数やスクリプトファイルの変数にも影響を与えます。使うMIDIコードをJavaScriptオブジェクトに備えるよく使うコードはJavaScriptオブジェクトを作っておきましょう。あなたのコードは読みやすくなり編集しやすくなります。JavaScriptオブジェクトは色んな型の変数の固まりです(関数や他のオブジェクトも含みます)。このケースでは他言語のハッシュテーブルに似ています。オブジェクトのプロパティを見たい場合も簡単です。このようにすると簡単に書け、簡単に読むことができます。コードを見返して思い出す時の助けになります。他の人がコードを改良するときの助けにもなります。トラックを再生すると自動的に反応して変更する関数はこのように書けます。}}この2つの例は同じ事を行っていますが、最初の方は直感的で、なぜなら、コードの見通しがよく、簡素に書かれています。オブジェクトは後のコードと比べると番号を参照するのを助けてくれました。MIDIコードを別のものに編集したい時も、オブジェクトの1行を変えるだけなので、編集も簡単です。あなたのコントローラーがどのようなMIDI信号を送っているか確認するには、コントローラーのメーカー次第です。あなたのコントローラーのドキュメントやプロダクトページやメーカーのWebサイトに載っていることが好ましいです。マニュアルの最後の方に書いていることがあります。変更(シフト)ボタンとレイヤーマッピング多くのコントローラがシフトボタンを一緒に押すと別のMIDI信号を送ります。このケースではJavaScriptは必要なく、XMLで事足ります。このケースに該当しない場合、シフトボタンを押した時か同時押しが有効の時、JavaScriptが必要となります。この章は高難易度です。状態遷移を値で記録する一つのアプローチとしてはブーリアン(true/false)変数を宣言し、トラックごとボタンの変更を補完する方法です。XMLファイルでは変化するボタンの関数のトグルし、変数に状態を確認し、代入します。}}このアプローチは簡単な例です。2つ以上のモードがあるコントロールであれば、トラックを常に管理するのは難しく、常に問題が起きます。MIDIインプットを割り当て直す別のアプローチとして、別のレイヤーを関数ごとに分ける方法があります。関数をシフトボタンが押された場合の動作を割り当て直すことができるからです。それはMIDI入力ハンドリング関数グループで一つのオブジェクトにまとめると良いでしょう。}}4デッキコントローラーを2デッキコントローラーで切り替える魔法のようなMIDIスクリプティングです。2デッキのコントローラーで4デッキコントローラーのセッティングに対応する例です。新しいプログラミングなら、上記の例に挑戦して理解して取り組むことをオススメします。フォーラムで問い合わせてください。これらはたくさんの問題が凝縮した一つの例です。Mycontroller.deck[group]’とします。[Channel2]の場合はデッキ2と4とします。デッキの切り替え1と3、2と4の切り替えボタンの関数はdeckToggleButton関数とします。‘deckToggleExample.js’ラベルタブをクリックすると、ファイルをダウンロードし、ファイルをあなたのテキストエディタで開きます。International。