Last active
January 7, 2023 09:29
-
-
Save ashitani/7de63d5f77f0e7f67c8cd2925cfac82e to your computer and use it in GitHub Desktop.
Logic Pro X MIDI script to change iRig PADS key layout. / iRig PADSのレイアウトを変更するための Logic Pro X のMIDIスクリプト。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Logic Pro X MIDI scripter script to change iRig PADS key layout. | |
*/ | |
// functions | |
var notetable={"C":0,"C#":1,"Db":1,"D":2,"D#":3,"Eb":3,"E":4,"F":5,"F#":6,"Gb":6,"G":7,"G#":8,"Ab":8,"A":9,"A#":10,"Bb":10,"B":11}; | |
function notename(name){let n = notetable[name.slice(0, name.length-1)];let o = name.slice(-1); return o*12+24+n;}; | |
// ------------------------------------ | |
// Device keymaps | |
// ------------------------------------ | |
// this example is iRig PAD SCENE 2(chromatic) | |
let button=[35, 36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]; | |
// ------------------------------------ | |
// Target plugin keymaps: | |
// ------------------------------------ | |
// this example is Addictive Drums2 GM Map | |
var ad2gm ={"Kick":36,"Snare Open Hit":38, "Snare RimShot":40,"Tom4 Open Hit":41,"HH Closed1 Tip":42, "HH Open B":46, "Tom3 Open Hit":43, "Tom3 Open Hit":43, "Tom2 Open Hit":47, "Tom1 Open Hit":50, "Ride1 Shaft":52, "Cymbal 2":57, "Cymbal 3":55, "Sticks": notename("G0"), "Snare SideStick":37}; | |
// this example is Spekan(@fingerdrumer)'s defenitions | |
var fd = {"BD": ad2gm["Kick"], "SN":ad2gm["Snare Open Hit"], "RM":ad2gm["Snare RimShot"],"CH":ad2gm["HH Closed1 Tip"], "OH":ad2gm["HH Open B"], "HT":ad2gm["Tom3 Open Hit"], "LT":ad2gm["Tom2 Open Hit"], "FT":ad2gm["Tom1 Open Hit"], "RC": ad2gm["Ride1 Shaft"], "LC":ad2gm["Cymbal 2"], "HC":ad2gm["Cymbal 3"]}; | |
// ------------------------------------ | |
// Keymap: | |
// ------------------------------------ | |
// each element means: | |
// [ORIGINAL_NOTE, MODIFIED_NOTE, OFFSET_OF_VELOCITY] | |
// NOTE can be described as | |
// button[BUTTON_NUMBER] | |
// notenumber | |
// notename["NOTENAME_STRING"] | |
// ad2gm["ADDICTIVE_DRUMS_2_STRING"] | |
// fd["FINGERDRUMMER_STRING"] | |
// this example is Spekan(@fingerdrumer) simplest 16pad layout + my options | |
let keymap =[ | |
[button[2], fd["BD"], 0], | |
[button[3], fd["BD"], 0], | |
[button[6], fd["SN"], 0], | |
[button[7], fd["RM"], 0], | |
[button[9], fd["CH"], 0], | |
[button[12], fd["CH"], 0], | |
[button[11], fd["OH"], 0], | |
[button[5], fd["RC"], 0], | |
[button[8], fd["RC"], 0], | |
[button[13], fd["LC"], 0], | |
[button[16], fd["HC"], 0], | |
[button[10], fd["HT"], 0], | |
[button[14], fd["LT"], 0], | |
[button[15], fd["FT"], 0], | |
// my options | |
[button[1], ad2gm["Snare SideStick"], 0], | |
[button[4], ad2gm["Sticks"], 0], | |
]; | |
function HandleMIDI(event) | |
{ | |
if (event instanceof Note) { | |
var p = event.pitch; | |
for (const element of keymap){ | |
if(p==element[0]){ | |
event.pitch = element[1]; | |
if (event instanceof NoteOn) { | |
var v = event.velocity; | |
event.velocity = Math.min(Math.max(v+element[2],0), 127); | |
} | |
} | |
} | |
} | |
// event.trace(); // for debugging | |
event.send(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
iRig PADSのキーマップを変更するLogic Pro X用のMIDIスクリプト。 iRig PADSのマップエディターが最近のOSXでは動かないので苦肉の策として作成しました。
iRig PADSのほうはクロマティックスケール(SCENE2)で出力しておいて、MIDIフィルタで例えばAddictive Drums2のキーマップに割り当てることで、iRig PADSそのもののレイアウト変更を行わずにキーマップ変更することができます。また、ベロシティにオフセットを加えることができるようにしたので、ゴーストノート専用のスネア用ボタンなどを作ることができます。
この例ではスペカン氏の一番基本のレイアウトを参考にマッピングしてあります。
結果として、Logicのプロジェクト側にキーマップを持つことになるので、曲ごとにキーマップを変えたりバリエーションをつけるようなことがやりやすくなりますが、逆にすべての入力やLogicに録音されるMIDIイベントはクロマティックスケールに習うことになるので、細かい編集には慣れが必要かもしれません。