Hello everyone,
My situation is bad.
I'm working with the Nay-Seven's patch called "APC GrooveBox XL".
This patch is a mixe with the "Matrix Groove" by Usine and the "ArGrid" patch by Drakh.
Apc Groove XL : https://vimeo.com/232225617
ArGrid : https://www.youtube.com/watch?v=jD-Hj73pbCQ
You can find it in the Adons.
To do the ArGrid, Drakh used a Script method, and the APC-Mini Hardware by Akai.
And to do the APC GrooveBox XL Nay Seven used the script of Drakh and made impressive modifications because the patch is very stable and easy to use.
In my patch conception level (rookie style), and for my personal used , i've made modifications on the Nay-Seven's patch (Pitch LFO controllers and Buses from the samplers to Pano Patchs): http://www.sensomusic.org/forums/upload ... uencer.pat
And again the patch is very stable and confortable to use.
My problem:
I'm working right know with two APC-mini.
And here we go in my problems.
I don't know how to use this patch in an other midi channel than the Channel 1.
My configuration is for the first APC: Device=Cha2; Midi Learn=cha2. And for the second one : Device=cha3; Midi learn=Cha3
Very simple, but after hours i'm working in the dark. And i don't understand how to do it.
Have you ever been front of kine of problems ?
Please fly to me angels of patches !
I'm locked in my workspace with two APC-mini and the APC Groove XL
try using midi transform module and modify the channel of the midi flow to desired one.
join Hollyhock Usine Discord server: https://discord.gg/EdJarnE
-
thomaschamotte
- Member
- Posts: 172
- Location: Toronto
- Contact:
//////////////////////////
//
/////////////////////////
// parameters declaration
var midi_in:tParameter;
var midi_out:tParameter;
// initialisation : create parameters
procedure init;
begin
midi_in := CreateParam('midi in', ptMidi);
SetIsOutput(midi_in,false);
midi_out := CreateParam('midi out', ptMidi);
SetIsInput(midi_out,false);
end;
// Callback procedure
Procedure Callback(N:integer);
begin
end;
// Global variables
//////////////////////////////
// main proc
//////////////////////////////
Procedure Process;
var i:integer;
var l:integer;
var arr_l:integer;
var tmp_midi:tMidi;
var out_midi:tMidi;
var a:integer;
var b:integer;
var n:integer;
var l_n:integer;
begin
arr_l:=0;
l:=GetLength(midi_in);
if(l>0) then
begin
out_midi.channel:=2;
for i:=0 to l-1 do
begin
GetMidiArrayValue(midi_in,i,tmp_midi);
if(tmp_midi.msg=144) then
begin
out_midi.msg:=144;
out_midi.data2:=0;
case tmp_midi.data2 of
1:out_midi.data2:=60;
3:out_midi.data2:=15;
5:out_midi.data2:=62;
end;
l_n:=tmp_midi.data1;
a:=l_n mod 8;
b:=l_n div 8;
if(l_n>=0) and (l_n<=63) then
begin
n:=(7-b)*16+a;
out_midi.data1:=n;
SetMidiArrayValue(midi_out,arr_l,out_midi);
arr_l:=arr_l+1;
end;
if(l_n>=82) and (l_n<=89) then
begin
out_midi.data1:=8+(16*(l_n-82));
if(tmp_midi.data2>0) then
begin
out_midi.data2:=60;
end;
SetMidiArrayValue(midi_out,arr_l,out_midi);
arr_l:=arr_l+1;
end;
if(l_n>=64) and (l_n<=70) then
begin
out_midi.msg:=176;
out_midi.data1:=104+(l_n-64);
if(tmp_midi.data2>0) then
begin
out_midi.data2:=15;
end;
SetMidiArrayValue(midi_out,arr_l,out_midi);
arr_l:=arr_l+1;
end;
//if ((tmp_midi.msg=144) or (tmp_midi.msg=128)) then
//begin
//if(a=8) then
//begin
// n:=89-(7-b);
//end;
//end;
//if tmp_midi.msg=176 then
//begin
// out_midi.msg:=144;
//out_midi.data2:=tmp_midi.data2;
//l_n:=tmp_midi.data1-104;
//n:=64+l_n;
//if(l_n=7) then
//begin
//n:=98;
//end;
//if(tmp_midi.data2=0) then
//begin
//out_midi.msg:=128;
//end;
//out_midi.data1:=n;
//SetMidiArrayValue(midi_out,arr_l,out_midi);
//arr_l:=arr_l+1;
//end;
end;
end;
end;
SetLength(midi_out,arr_l);
end;
//
/////////////////////////
// parameters declaration
var midi_in:tParameter;
var midi_out:tParameter;
// initialisation : create parameters
procedure init;
begin
midi_in := CreateParam('midi in', ptMidi);
SetIsOutput(midi_in,false);
midi_out := CreateParam('midi out', ptMidi);
SetIsInput(midi_out,false);
end;
// Callback procedure
Procedure Callback(N:integer);
begin
end;
// Global variables
//////////////////////////////
// main proc
//////////////////////////////
Procedure Process;
var i:integer;
var l:integer;
var arr_l:integer;
var tmp_midi:tMidi;
var out_midi:tMidi;
var a:integer;
var b:integer;
var n:integer;
var l_n:integer;
begin
arr_l:=0;
l:=GetLength(midi_in);
if(l>0) then
begin
out_midi.channel:=2;
for i:=0 to l-1 do
begin
GetMidiArrayValue(midi_in,i,tmp_midi);
if(tmp_midi.msg=144) then
begin
out_midi.msg:=144;
out_midi.data2:=0;
case tmp_midi.data2 of
1:out_midi.data2:=60;
3:out_midi.data2:=15;
5:out_midi.data2:=62;
end;
l_n:=tmp_midi.data1;
a:=l_n mod 8;
b:=l_n div 8;
if(l_n>=0) and (l_n<=63) then
begin
n:=(7-b)*16+a;
out_midi.data1:=n;
SetMidiArrayValue(midi_out,arr_l,out_midi);
arr_l:=arr_l+1;
end;
if(l_n>=82) and (l_n<=89) then
begin
out_midi.data1:=8+(16*(l_n-82));
if(tmp_midi.data2>0) then
begin
out_midi.data2:=60;
end;
SetMidiArrayValue(midi_out,arr_l,out_midi);
arr_l:=arr_l+1;
end;
if(l_n>=64) and (l_n<=70) then
begin
out_midi.msg:=176;
out_midi.data1:=104+(l_n-64);
if(tmp_midi.data2>0) then
begin
out_midi.data2:=15;
end;
SetMidiArrayValue(midi_out,arr_l,out_midi);
arr_l:=arr_l+1;
end;
//if ((tmp_midi.msg=144) or (tmp_midi.msg=128)) then
//begin
//if(a=8) then
//begin
// n:=89-(7-b);
//end;
//end;
//if tmp_midi.msg=176 then
//begin
// out_midi.msg:=144;
//out_midi.data2:=tmp_midi.data2;
//l_n:=tmp_midi.data1-104;
//n:=64+l_n;
//if(l_n=7) then
//begin
//n:=98;
//end;
//if(tmp_midi.data2=0) then
//begin
//out_midi.msg:=128;
//end;
//out_midi.data1:=n;
//SetMidiArrayValue(midi_out,arr_l,out_midi);
//arr_l:=arr_l+1;
//end;
end;
end;
end;
SetLength(midi_out,arr_l);
end;
-
thomaschamotte
- Member
- Posts: 172
- Location: Toronto
- Contact:
This code transform the Midi Note of the APC to others Midi Notes.
In the Matrix the Notes
"CTRL CHANGE 56" of the APC take the control of the Notes "NOTE OFF/ON 56 to 63; 48 to 55; 40 to 47; 32 to 39".
The Scripte change those notes into "NOTE OFF/ON 0 to 7; 16 to 23; 40 to 47; 48 to 39".
The Modulation of the "CTRL Change 56" Appears in the matrix as a "Cells Val" and change the value of the note locked 0 to 7; 16 to 23; 40 to 47; 48 to 39.
I know my problem is :
When i move the Midi device in Channel 2, I loose the control of the "CTRL Change 56".
And i don't know why !
Maybe it's in the scritpe but i don't know well to read it. For exemple i don't know what is l, i, tmp_midi:tMidi...
I can't move now ...
In the Matrix the Notes
"CTRL CHANGE 56" of the APC take the control of the Notes "NOTE OFF/ON 56 to 63; 48 to 55; 40 to 47; 32 to 39".
The Scripte change those notes into "NOTE OFF/ON 0 to 7; 16 to 23; 40 to 47; 48 to 39".
The Modulation of the "CTRL Change 56" Appears in the matrix as a "Cells Val" and change the value of the note locked 0 to 7; 16 to 23; 40 to 47; 48 to 39.
I know my problem is :
When i move the Midi device in Channel 2, I loose the control of the "CTRL Change 56".
And i don't know why !
Maybe it's in the scritpe but i don't know well to read it. For exemple i don't know what is l, i, tmp_midi:tMidi...
I can't move now ...
Who is online
Users browsing this forum: No registered users and 19 guests
