2022/10/29++
初版
re.corder/ElefueにWIDI_Bud_Pro経由で外部音源(Aria/Windows)を接続する際、特にElefueは送信するCC#が11に固定されていてブレスによるコントロールが
Aria音源に反映できず表現力に乏しい。
これを解決するためにリアルタイムでCC#を任意のものに変更するCCMapperをpythonで実装した。
re.coderを使用する際もCCMapperを使用しない場合、ブレスコントールできるCCが一つに限定されるが、これを複数のCCに変換できる。
pythonのライブラリが必要となるので
以下を実行してインストールする:
pip install pygame
また、仮想MIDIデバイスとして、loopMIDIがインストールされている必要がある。
MIDI信号の流れとしては以下のようになる:
[wind_controler(re.corder/Elfue)]→[WIDI Bud Pro]→(CCMapper)→[loopMIDI]→ [PC音源]
pythonのスクリプトとしては以下を使用する:
CCMapper.py
# CC# Mapper (2022/10/29)
import pygame.midi as m
m.init()
print('MIDI device list:')
i_num=m.get_count() # number of MIDI device
for i in range(i_num):
print(i,":",m.get_device_info(i)) # MIDI device info.
i = m.Input(2) #'WIDI Bud Pro'
#o = m.Output(4) #'Microsoft GS Wavetable Synth'
o = m.Output(6) #'loopMIDI Port 1'
while True:
if i.poll(): # 1 on received MIDI
midi_events = i.read(4)
for j in range(len(midi_events)):
status=midi_events[j][0][0]
data1 =midi_events[j][0][1]
data2 =midi_events[j][0][2]
if(status==0x80 or status==0x90): # NoteOn or NoteOff
o.write_short(status,data1,data2)
elif (data1==11): # when BC assigned to expression(11)
# for Aria
o.write_short(status,2,data2)
o.write_short(status,7,data2)
o.write_short(status,26,data2)
elif (data1==2): # when BC assigned to breath(2)
# for Aria
o.write_short(status,2,data2)
o.write_short(status,7,data2)
o.write_short(status,26,data2)
elif (data1==7): # when BC assigned to volume(7)
o.write_short(status,data1,data2)
elif (data1==1): # modulation(1)
#print(data1,":",data2)
o.write_short(status,data1,data2)
else:
print(data1,":",data2)
o.write_short(status,data1,data2)
i.close()
以下の部分は実行環境に合わせて変更すること:
i = m.Input(2) #'WIDI Bud Pro'
#o = m.Output(4) #'Microsoft GS Wavetable Synth'
o = m.Output(6) #'loopMIDI Port 1'
上の準備が終われば、re.coder/Elefueの電源を入れてbluetoothをオンにすれば 自動的にWIDI_Bud_Proと接続し、接続するとWIDI_Bud_ProのLEDの色がシアンに変る。
この後、CCMapper.pyをPowerShellで実行する:
python CCMapper.py
#出力例
pygame 2.1.2 (SDL 2.0.18, Python 3.10.1)
Hello from the pygame community. https://www.pygame.org/contribute.html
MIDI device list:
0 : (b'MMSystem', b'Microsoft MIDI Mapper', 0, 1, 0)
1 : (b'MMSystem', b'loopMIDI Port 1', 1, 0, 0)
2 : (b'MMSystem', b'WIDI Bud Pro', 1, 0, 0)
3 : (b'MMSystem', b'CoolSoft MIDIMapper', 0, 1, 0)
4 : (b'MMSystem', b'Microsoft GS Wavetable Synth', 0, 1, 0)
5 : (b'MMSystem', b'VirtualMIDISynth #1', 0, 1, 0)
6 : (b'MMSystem', b'loopMIDI Port 1', 0, 1, 0)
7 : (b'MMSystem', b'WIDI Bud Pro', 0, 1, 0)
なお、上のデバイスリストは実行環境によって異なる。
次に音源を立ち上げて入力MIDIデバイスを「loopMIDI port」に設定する。
ここで、wind_controlerで吹くと音が出る。
なお、Ariaだけでなく、Lyrihorn-2(VST3)、EVI-NER(VST3)、IFW(VST3)も CCMapper経由で、そのまま使用できる。
また、以下のリンクにあるようにpyrhonスクリプトを.exe化して通常のアプリのように実行することもできる。
Pythonスクリプトをexe化する
CCMapperでリアルタイムに変更されるがデフォルトとして以下を設定する:
参考: re.corderのMIDI設定のデフォルト(FAQより)
The following are the DEFAULT SETTINGS you need to restore:
Sensitivity
threshold= standard (try ‘low’ if you feel like you’re blowing too much)
speed= 80
MIDI Ch= 1
Pressure
curves= linear (try ’embedded1′ ’embedded2′ or ’embedded3′ if you feel like you’re blowing too much)
aftertouch= off
MIDIOut= 11
# CC#11はexpressionに対応している。
Incliation(Tilt)
curves= embedded12 (set to none if you want to turn off vibrato)
MIDIOut=1
# CC#1はmodulationに対応しているので、re.corderを傾けるとmodulationが変化する
Rotation
curve= embedded13
MIDIOut= 52
# re.corderを左右に振ると変化する
Z axis
curve= None (OFF)
MIDIOut= 53
使用しているPCによっては、CCMapper.pyの処理でもたつくことがあるので wind_controlerの出力するCC#を、1と2、または、1と11に限定したほうが良いようだ。
現在、マップしたCCの値は同じ値を使っているが、 できればCC#に応じて値(data2)を変更できたほうが 違う表情をつかることができると思われる。
pygame.midi関連:
PythonでMIDI
pygame.midi
Pythonスクリプトをexe化する
loopMIDI関連:
loopMIDI
loopMIDIでつなぐ
WIDI_Bud_Pro関連:
WIDI Bud Pro
WIDI Bud Pro 技術情報
PC音源関連:
Lyrihorn 2(VST3)を使ってみる
EVI-NER(VST3)を使ってみる
re.corder/Elefueに外部音源(Aria/Windows)を接続する(WIDI_Bud_Pro経由)
EWI5000をソフト音源(IFW)と接続する
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の音色の設定方法がある
以上