2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

openFrameworksでAPC40 MKIIのモードを変更する

Posted at

APC40 MKIIのモードについて

APC40 MKIIには次の3つのモードがある。参照

  • Generic Mode : 完全にAPC40上で操作できるモード
  • Ableton Live Mode(LED Ring Remote Controled) : LEDのつまみはAPC40で制御し、それ以外はPC上で制御
  • Alternate Ableton Live Mode : 全てPC上で制御

openFrameworksでMidiコンを扱う場合は、ofxMidiというAddonを使うが、下のように単純に接続するだけではGenericモードで制御することになる。

ofApp.h
ofxMidiIn midiIn;
ofxMidiOut midiOut;
ofApp.cpp

midiIn.listInPorts();
midiIn.openPort("APC40 mkII 0");//マシンによって違うかも
midiIn.ignoreTypes(false, false, false);
midiIn.addListener(this);
midiIn.setVerbose(false);

midiOut.listOutPorts();
midiOut.openPort("APC40 mkII 1");//マシンによって違うかも

Genericモードでは、APC40 MKII上の操作で、値の上書きがされる。
例えば、Padを押した際に、oFからsendNoteOnでPadの色を光らせても、離した際に勝手に光が消えてしまう(SendNoteOffがAPC40上で発生)。また、LEDリングもつまみを回すと値が上書きされる。

APC40 MKIIの値を、コントローラーとしてPCから完全に制御したい場合は、Alternate Ableton Live Modeが良い。このモードにすれば、Midiコン操作時の処理をPCで書かない限り、値は絶対に変化しない。したがって一度SendNoteOnで光らせれば、oFから処理を行わない限り、押しても離しても光が消えることはない。もちろんSendNoteOffを送れば消せる。

モード変更方法

APC40 MKIIのモード変更は、SysExメッセージを送ることで変更可能。先ほどのofApp.cppの後に、次のコードを追加する。7つ目の0x42となっている箇所の値を変えることでモードが変えられる。

  • 0x40 : Generic Mode
  • 0x41 : Ableton Live Mode (LED Ring Remote Controled)
  • 0x42 : Alternate Ableton Live Mode
////akai apc40 mkii
vector<unsigned char> sysexMsg;
sysexMsg.push_back(MIDI_SYSEX);

sysexMsg.push_back(0x47);
sysexMsg.push_back(0x7F);
sysexMsg.push_back(0x29);
sysexMsg.push_back(0x60);
sysexMsg.push_back(0x00);
sysexMsg.push_back(0x04);
//---change mode
///0x40 Generic (Startup Default) Track select Radio- Channel Toggle
///0x41 Ableton Live(LED Ring Remote Controlled) Momentary All
///0x42 Alternate Ableton Live Momentary All
sysexMsg.push_back(0x42);
//---
sysexMsg.push_back(0x09);
sysexMsg.push_back(0x07);
sysexMsg.push_back(0x01);
sysexMsg.push_back(MIDI_SYSEX_END);
midiOut.sendMidiBytes(sysexMsg);

または、下のコードでも動く。

midiOut << StartMidi() << MIDI_SYSEX
<< 0x47 << 0x7F << 0x29 << 0x60 << 0x00 << 0x04 << 0x42
<< 0x09 << 0x07 << 0x01 
<< MIDI_SYSEX_END << FinishMidi();
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?