« 【FFO】真龍 (BC99) | トップページ | 久しぶりにMML »

2005/12/23

FantomXR の エクスクルーシブ

みじんこさんが、昔苦労していたのって、これだったのか・・・

インスツルメンツのLFOが気に入らなくて、編集しようとしたが、マニュアルと2~3時間格闘していました。(汗

-----------------------


Int idRoland = $41 //Roland メーカコード
Int idDevice = $10 //Device ID
Int id1_RolandFantomXR = $00 //Rolanmd FantomXR
Int id2_RolandFantomXR = $6B //Rolanmd FantomXR

Int ptPerformanceMode = $11000000
Int szPerformanceMode = $00200000
Int ptPatchTone = $002000
Int azPatchTone = $000200
Int ptLFO1_Waveform = $006D //0-15
Int ptLFO1_Rate = $006E //0-255
Int ptLFO1_DelayTime = $0072 //0-15
Int ptLFO1_FadeTime = $0075 //0-255
Int ptLFO1_PitchDepth = $0077 //0-255

//==============================================================================
// 音色(GS音源の、定義されてない音色がピアノ化する対策)
//------------------------------------------------------------------------------
// bRate レート (-64~63)
// bLevel レベル (-64~63)
// bDacay ディケイ (-64~63)
//------------------------------------------------------------------------------
Function VoiceEx(bVoice,bMsb,bLsb){
Time = (Time - 32);
Voice(bVoice,bMsb,bLsb);
Time = (Time + 32);

};
//==============================================================================
// Exclusive
//------------------------------------------------------------------------------
// iAddress 4 Byte アドレス
// iData 0~15 (0~127) データ
//------------------------------------------------------------------------------
Function Fantom_SysEX1(iAddress, iData){

Int add1 = (iAddress/(256*256*256));
Int add2 = (iAddress/(256*256))-add1*256;
Int add3 = (iAddress/(256))-add1*256*256-add2*256
Int add4 = (iAddress/(1))-add1*256*256*256-add2*256*256-add3*256;

Int data1 = iData;

SysEx=$F0,idRoland,idDevice,id1_RolandFantomXR,id2_RolandFantomXR,$12,{add1,add2,add3,add4,data1},$F7

};
//==============================================================================
// Exclusive
//------------------------------------------------------------------------------
// iAddress 4 Byte アドレス
// iData 0~255 データ
//------------------------------------------------------------------------------
Function Fantom_SysEX2(iAddress, iData){

Int add1 = (iAddress/(256*256*256));
Int add2 = (iAddress/(256*256))-add1*256;
Int add3 = (iAddress/(256))-add1*256*256-add2*256
Int add4 = (iAddress/(1))-add1*256*256*256-add2*256*256-add3*256;

Int data1 = (iData/(16));
Int data2 = (iData/(1))-data1*16

SysEx=$F0,idRoland,idDevice,id1_RolandFantomXR,id2_RolandFantomXR,$12,{add1,add2,add3,add4,data1,data2},$F7

};
//==============================================================================
// Exclusive
//------------------------------------------------------------------------------
// iAddress 4 Byte アドレス
// iData 0~65535 データ
//------------------------------------------------------------------------------
Function Fantom_SysEX4(iAddress, iData){

Int add1 = (iAddress/(256*256*256));
Int add2 = (iAddress/(256*256))-add1*256;
Int add3 = (iAddress/(256))-add1*256*256-add2*256
Int add4 = (iAddress/(1))-add1*256*256*256-add2*256*256-add3*256;

Int data1 = (iData/(16*16*16));
Int data2 = (iData/(16*16))-data1*16;
Int data3 = (iData/(16))-data1*16*16-data2*16
Int data4 = (iData/(1))-data1*16*16*16-data2*16*16-data3*16;

SysEx=$F0,idRoland,idDevice,id1_RolandFantomXR,id2_RolandFantomXR,$12,{add1,add2,add3,add4,data1,data2,data3,data4},$F7

};
//==============================================================================
// LFO (1~4全てのLFO1を設定する。)
//------------------------------------------------------------------------------
// ch チャンネル 1~16
// form 波形 0~15
// Rate 周期 0~255
// Dacay 開始までの時間 0~127
// fade 開始からDepthに達するまでの時間 0~127
// Depth ピッチの振幅量 0~127
//------------------------------------------------------------------------------
Function Fantom_LFO1(ch,form,rate,delay,fade,depth){

//4チャンネル毎にアドレスが飛ぶので、その計算。
Int iCh = (ch-1)-((ch-1)/4)*4 + ((ch-1)/4)*8

//4つの発振器全てに適用する。
For(Int i=1;i<4;i++){

//アドレスの計算
Int ptAddress = ptPerformanceMode + szPerformanceMode*(iCh) + ptPatchTone + szPatchTone*(i-1);

//Fantom-XRへ送信
Fantom_SysEX1(ptAddress + ptLFO1_Waveform ,form);
Fantom_SysEX2(ptAddress + ptLFO1_Rate ,rate);
Fantom_SysEX1(ptAddress + ptLFO1_DelayTime ,delay);
Fantom_SysEX1(ptAddress + ptLFO1_FadeTime ,fade);
Fantom_SysEX1(ptAddress + ptLFO1_PitchDepth ,depth);
};

};
//==============================================================================

|

« 【FFO】真龍 (BC99) | トップページ | 久しぶりにMML »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/36969/7794298

この記事へのトラックバック一覧です: FantomXR の エクスクルーシブ:

« 【FFO】真龍 (BC99) | トップページ | 久しぶりにMML »