CCMapperをchuckで実装する

CCMapperをchuckで実装する

2022/11/23
初版

概要

コンピュータ音楽向けのプログラム言語として、chuckがあるが、CCMapperを実装する。
windows版chuckはオーディオとしてDirectSoundを前提にしているが、windowsのソフト音源が遅延を最小化するために、ASIO4ALLを使用している。この状況で、chuck起動するとエラーになり使用できない。ソフト音源をDirectSoundに切り替えるとエラーが出ずに使用できるが、遅延が増えてウィンド・コントローラとしては実用性が低い。
したがって、実用的にはMacのみと思われる。

参照:
ChucK : Strongly-timed, Concurrent, and On-the-fly Music Programming Language

インストール

ChucK : Release version:1.4.1.1 (numchucks)
上のリンクからOS(MacOS,Linux,Windows)に応じたインストールプログラムをダウンロードしてインストールする。
miniAudicleといわれるIDEも同時にインストールされるが、本記事では、プログラミング言語chuckのみを使用する。

Mac用CCMapper.ck

CCMapper.ck


// CCMapper for Mac
// 2022/11/23

// disp device status
//chuck --probe

// the message
MidiMsg msg;

//create object
MidiOut mout;
MidiIn min;

//connect to port loopMIDI
mout.open(0);
//connect to port Elefue/re.corder
min.open(1);

while(true){
  // Use the MIDI Event from MidiIn
  min => now;
  while( min.recv(msg) ){
    <<<msg.data1,msg.data2,msg.data3,"MIDI Message">>>;
    if (msg.data1 == 176) {
      // for Aria
      2 => msg.data2;
      mout.send(msg);
      7 => msg.data2;
      mout.send(msg);
      26 => msg.data2;
      mout.send(msg);
    } else {
        // will NOT send NoteOn/NoteOff at Mac Env.
        if (!(msg.data1 == 128 || msg.data1 == 144)) {
            mout.send(msg);
        }
    }
  }
}

以下のデバイス番号は実行環境に依存するので、自分の環境に合わせること。

//connect to port loopMIDI
mout.open(0);
//connect to port Elefue/re.corder
min.open(1);

自分の環境を確認する場合は
以下のコマンドを実行するとデバイス状況を表示する:

chuck --probe

出力例(MIDI/HIDデバイスのみ):

[chuck]: ------( chuck -- 2 MIDI inputs )------
[chuck]:     [0] : "loopMIDI bus1"
[chuck]:     [1] : "Elefue Bluetooth"
[chuck]: 
[chuck]: ------( chuck -- 2 MIDI outputs )-----
[chuck]:     [0] : "loopMIDI bus1"
[chuck]:     [1] : "Elefue Bluetooth"
[chuck]: 
[chuck]: ------( chuck -- 1 mouse device )------
[chuck]:     [0] : "Apple Internal Keyboard / Trackpad"
[chuck]: 
[chuck]: ------( chuck -- 1 keyboard device )------
[chuck]:     [0] : "Apple Internal Keyboard / Trackpad"
[chuck]: 
osx_version = 4865 
[chuck]: ------( chuck -- 1 multitouch device )------
[chuck]:     [0] : "MultiTouch Device"
[chuck]: 

関連情報

CCMapper関連:
CCMapper改良版(openFrameworks)
CCMapper(C#版/RtMidi)
processingでCCMapperを実装する
python版CCMapper - re.corder/ElefueをCCMapper経由で外部音源(Aria/Windows)と接続する(WIDI_Bud_Pro使用)

openframework関連:
openFrameworksを使用して独自のMIDI生成のリアルタイムビジュアルを作成します。
Novation LauchpadとopenFrameworksを使ってResolumeのVJコントローラを作る : コーディング編
プロジェクトにアドオンを追加する方法
新規プロジェクトの作成
Listen to events
変数の値を見る
ofLog
openFrameworks-コンソール表示する
oF:Windowsのopenframeworksでコンソールウインドウを出さない方法
openFrameworks-Log vol.1/環境設定と導入
openFramewoks – OSC (Open Sound Control) を利用したネットワーク連携

pygame.midi関連:
PythonでMIDI
pygame.midi

loopMIDI関連:
loopMIDI
loopMIDIでつなぐ

WIDI_Bud_Pro関連:
WIDI Bud Pro
WIDI Bud Pro 技術情報

re.corder関連:
owner’s manual re.corder
re.corder Downloads
re.corder Frequently Asked Questions

MIDI関連:
現時点、最強のBluetooth MIDIかも!? 各種BLE-MIDI機器と自動でペアリングしてくれるWIDI Masterがスゴイ!
Midi View

ASIO関連:
asio4all - ASIOドライバーのないオーディオインターフェイスをASIO対応にできるソフト

Aria関連:
EWI MASTER BOOK CD付教則完全ガイド【改訂版】のp100-p119の音色の設定方法がある

以上

Go to Toplevel