Just now, macsaif said:
I want to change the channell based on the combination of 3 inputs. The combinations are:
What is DIO-000, DIO-100 etc… ?
Button on a matrix ?
Just now, macsaif said:
I want to change the channell based on the combination of 3 inputs. The combinations are:
What is DIO-000, DIO-100 etc… ?
Button on a matrix ?
I am using the 16 digital inputs mapped to shift register 5 and 6. The transpose and BiM function is working.
DIO 000, 001, 010 …111 represents 3 bits from the 16 inputs.
Just now, FantomXR said:
Or you maybe could do it with a NGR script. I didn’t test it, but this might work.
Set up a button in your NGC like this:
EVENT_BUTTON id=1 type=meta meta=runsection:1 range=0:127 EVENT_KB hw_id=1 id=1 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 EVENT_KB hw_id=1 id=2 type=NoteOn chn=2 key=any use_key_number=1 range=0:127
In NGR you add this:
if ^section == 1 if id(Button):1 127 set_active (id)KB:1 0 set_active (id)KB:2 1 endif if id(Button):1 0 set_active (id)KB:1 1 set_active (id)KB:2 0 endif endif
And you have to add also this. Without this both KBs would be active on startup:
if ^section == 0 set_active (id)KB:1 1 set_active (id)KB:2 0 endif
Can I make 8 software keyboards and switching them based on the combination of 3 input bits?
KB:1 - hardware kb1 to ch1
KB:2 - hardware kb1 to ch4
KB:3 - hardware kb2 to ch1
KB:4 - hardware kb2 to ch2
KB:5 - hardware kb2 to ch4
KB:6 - hardware kb2 lower part up to C2 to ch3
KB:7 - hardware kb2 upper part from C2 to ch1
KB:8 - hardware kb2 upper part from C2 to ch2
What happens when I am deactivating a KB and I have some keys pressed? I want to avoid some hanging notes when switching between configuration!
Just now, macsaif said:
I am using the 16 digital inputs mapped to shift register 5 and 6. The transpose and BiM function is working.
DIO 000, 001, 010 …111 represents 3 bits from the 16 inputs.
Is that 3 bits definition at .NGC ??
DIO define emulated SR, you have direct access with the hooked button and corresponding hw_id
I guess your first DIO button is hw_id=33 and last is hw_id=48 (if SR 5 and 6)
But if I get it right you want to use 3 button to define 8 keyboard states ?
000 is all button off
001 is button n°3 on
011 is button 2 and 3 on
etc…
111 is all button on
can you confirm that is the logic you want to implement ?
Best
Zam
Yes, this is the logic and it works, the problem is somewhere else. I have tried the simple layer and split function and there are the following problems:
Layer: I am assigning the KB1 and KB2 to HW ID 1 , KB1 to CH1 and KB2 to CH4
EVENT_KB id=1 hw_id=1 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
EVENT_KB id=2 hw_id=1 type=NoteOn chn=4 key=any use_key_number=1 range=0:127 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
At the first key press the midi event is sent to CH1 and CH4,then to other key presses are sending only to CH4 however each keypress is sending 2 on and 2 off signals to CH4
The other problem is that the 2 signals have different velocity value, it seems that the second key press event is sending higher velocity value,
Split mode:
EVENT_KB id=6 hw_id=2 type=NoteOn chn=3 key=any use_key_number=1 range=0:67 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
EVENT_KB id=8 hw_id=2 type=NoteOn chn=2 key=any use_key_number=1 range=68:127 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
It is sending only events to CH3 and not only until splitpoint however in whole range.
KB id 1 and 2 are assigned to the uppermanual and KB id 3-8 are assigned to the lower manual(73 key)
The layer:
[13608.608] 90 45 14 Chn# 1 Note On A-3 Vel:20
[13608.608] 93 45 3c Chn# 4 Note On A-3 Vel:60
[13608.681] 93 45 00 Chn# 4 Note Off A-3 (optimized)
[13608.681] 93 45 00 Chn# 4 Note Off A-3 (optimized)
[13613.072] 93 45 14 Chn# 4 Note On A-3 Vel:20
[13613.072] 93 45 3c Chn# 4 Note On A-3 Vel:60
[13613.158] 93 45 00 Chn# 4 Note Off A-3 (optimized)
[13613.158] 93 45 00 Chn# 4 Note Off A-3 (optimized)
The split:
[13895.421] 92 28 5b Chn# 3 Note On E-1 Vel:91
[13895.548] 92 28 00 Chn# 3 Note Off E-1 (optimized)
[13896.752] 92 56 6e Chn# 3 Note On D-5 Vel:110
[13896.881] 92 56 00 Chn# 3 Note Off D-5 (optimized)
The split point is 47(in earlier e-mail it was 67 however now it is changed to 47) C2youcansee that there is only signal to CHN3
Hello
Hard to say without more of your .NGC
I don’t get how you change event status here as you don’t have any bank, radio group, or conditional definition ?
Best
Zam
I have made a separate. NGC without any event changes. The NGC file contains only these 2 KB events. I have checked the layer and split function separately.
As I have said no any switching function applied in this. NGC file.
Frank
Ok, but you should have also a map (you use one map…) and kb srio definition? Is RESET_HW specified ?
Please post the full .NGC so we can have a look …
Best
Zam
Hello,
here is the complete .NGC file for layer configuration:
RESET_HW
SRIO num_sr=4
KEYBOARD n=1 rows=8 dout_sr1=1 dout_sr2=2 din_sr1=1 din_sr2=2 \
din_inverted=0 break_inverted=0 din_key_offset=32 \
scan_velocity=1 scan_optimized=1 make_debounced=1 break_is_make=0 note_offset=36 \
delay_fastest=0 delay_fastest_black_keys=0 delay_slowest=100
KEYBOARD n=2 rows=12 dout_sr1=3 dout_sr2=4 din_sr1=3 din_sr2=4 \
din_inverted=1 break_inverted=0 din_key_offset=32 \
scan_velocity=1 scan_optimized=1 make_debounced=1 break_is_make=0 note_offset=28 \
delay_fastest=1 delay_fastest_black_keys=0 delay_slowest=140
MAP1/BYTEI 0:0 1:20 20:60 60:90 90:110 118:127
EVENT_KB id=1 hw_id=1 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
EVENT_KB id=2 hw_id=1 type=NoteOn chn=4 key=any use_key_number=1 range=0:127 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
and complete configuration for split mode (HW keyboard 2):
RESET_HW
SRIO num_sr=4
KEYBOARD n=1 rows=8 dout_sr1=1 dout_sr2=2 din_sr1=1 din_sr2=2 \
din_inverted=0 break_inverted=0 din_key_offset=32 \
scan_velocity=1 scan_optimized=1 make_debounced=1 break_is_make=0 note_offset=36 \
delay_fastest=0 delay_fastest_black_keys=0 delay_slowest=100
KEYBOARD n=2 rows=12 dout_sr1=3 dout_sr2=4 din_sr1=3 din_sr2=4 \
din_inverted=1 break_inverted=0 din_key_offset=32 \
scan_velocity=1 scan_optimized=1 make_debounced=1 break_is_make=0 note_offset=28 \
delay_fastest=1 delay_fastest_black_keys=0 delay_slowest=140
MAP1/BYTEI 0:0 1:20 20:60 60:90 90:110 118:127
EVENT_KB id=1 hw_id=2 type=NoteOn chn=3 key=any use_key_number=1 range=0:47 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
EVENT_KB id=2 hw_id=2 type=NoteOn chn=2 key=any use_key_number=1 range=48:127 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
19 hours ago, macsaif said:
Hello,
here is the complete .NGC file for layer configuration:
RESET_HW
SRIO num_sr=4
KEYBOARD n=1 rows=8 dout_sr1=1 dout_sr2=2 din_sr1=1 din_sr2=2 \
din_inverted=0 break_inverted=0 din_key_offset=32 \
scan_velocity=1 scan_optimized=1 make_debounced=1 break_is_make=0 note_offset=36 \
delay_fastest=0 delay_fastest_black_keys=0 delay_slowest=100KEYBOARD n=2 rows=12 dout_sr1=3 dout_sr2=4 din_sr1=3 din_sr2=4 \
din_inverted=1 break_inverted=0 din_key_offset=32 \
scan_velocity=1 scan_optimized=1 make_debounced=1 break_is_make=0 note_offset=28 \
delay_fastest=1 delay_fastest_black_keys=0 delay_slowest=140
MAP1/BYTEI 0:0 1:20 20:60 60:90 90:110 118:127EVENT_KB id=1 hw_id=1 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
EVENT_KB id=2 hw_id=1 type=NoteOn chn=4 key=any use_key_number=1 range=0:127 kb_velocity_map=map1 kb_transpose=0 ports=1000110000000000
hello
Your code look ok so far … I’m not used to KB so I can’t say for sure…
can you try something like this instead?
RESET\_HW SRIO num\_sr=4 KEYBOARD n=1 rows=8 dout\_sr1=1 dout\_sr2=2 din\_sr1=1 din\_sr2=2 \ din\_inverted=0 break\_inverted=0 din\_key\_offset=32 \ scan\_velocity=1 scan\_optimized=1 make\_debounced=1 break\_is\_make=0 note\_offset=36 \ delay\_fastest=0 delay\_fastest\_black\_keys=0 delay\_slowest=100 KEYBOARD n=2 rows=12 dout\_sr1=3 dout\_sr2=4 din\_sr1=3 din\_sr2=4 \ din\_inverted=1 break\_inverted=0 din\_key\_offset=32 \ scan\_velocity=1 scan\_optimized=1 make\_debounced=1 break\_is\_make=0 note\_offset=28 \ delay\_fastest=1 delay\_fastest\_black\_keys=0 delay\_slowest=140 MAP1/BYTEI 0:0 1:20 20:60 60:90 90:110 118:127 EVENT\_KB id=1 hw\_id=1 fwd\_id=sender:1 type=NoteOn chn=1 key=any use\_key\_number=1 range=0:127 kb\_velocity\_map=map1 kb\_transpose=0 ports=0000000000000000 EVENT\_SENDER id=10 hw\_id=1 type=NoteOn chn=1 key=any range=0:127 ports=1000110000000000 EVENT\_SENDER id=11 hw\_id=1 type=NoteOn chn=4 key=any range=0:127 ports=1000110000000000
I have triedit…it is closertothe solution howeverthe situation is:
the velocity of the keypress changesthe note,the release(NoteOFF)is alwaysC-2
The key I am pressing is defining the velocity value
For ex. C1 -gives velocity value 48, D1 - 50, E- 51…etc
if I press slowly the key is for example C1 and fastly G5 etc
but now there are the samevalues on both channels…
Any idea?
Solved:
EVENT\_SENDER id=10 hw\_id=1 type=NoteOn chn=1 key=any use\_key\_number=1 range=0:127 ports=1000110000000000
use_key_number=1 was missing
I have tried the split function,it works however the upper part lowest velocity value is 60, probably it has somethig with multiple usingofthe same hwkeyboard. The code for splitting is:
EVENT_KB id=1 hw_id=1 type=NoteOn chn=1 key=any use_key_number=1 range=0:48 kb_velocity_map=map1 kb_transpose=0 ports=0000000000000000 fwd_id=sender:1
EVENT_KB id=2 hw_id=1 type=NoteOn chn=1 key=any use_key_number=1 range=49:127 kb_velocity_map=map1 kb_transpose=0 ports=0000000000000000 fwd_id=sender:2
EVENT_SENDER id=10 hw_id=1 type=NoteOn chn=3 key=any use_key_number=1 range=0:127 ports=1000110000000000
EVENT_SENDER id=11 hw_id=2 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 ports=1000110000000000
You set wrong IDs.
Either you do fwd_id=sender:10 respective 11 and leave the rest as is. Or you change the IDs of the senders to correspond with the fwd_ids.
Like this:
EVENT_KB id=1 hw_id=1 type=NoteOn chn=1 key=any use_key_number=1 range=0:48 kb_velocity_map=map1 kb_transpose=0 ports=0000000000000000 fwd_id=sender:1
EVENT_KB id=2 hw_id=1 type=NoteOn chn=1 key=any use_key_number=1 range=49:127 kb_velocity_map=map1 kb_transpose=0 ports=0000000000000000 fwd_id=sender:2
EVENT_SENDER id=1 hw_id=1 type=NoteOn chn=3 key=any use_key_number=1 range=0:127 ports=1000110000000000
EVENT_SENDER id=2 hw_id=2 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 ports=1000110000000000
Thank you for help. Now it works. Only one think is remaining. When I am changing the midi channel mapping it should send some all keys off signal because if there is some key pressed it keeps hanging (no key off signal is sent). Is there any solution?
If somebody is interested there is the code .NGC:
RESET_HW
SRIO num_sr=6
KEYBOARD n=1 rows=8 dout_sr1=1 dout_sr2=2 din_sr1=1 din_sr2=2 \
din_inverted=0 break_inverted=0 din_key_offset=32 \
scan_velocity=1 scan_optimized=1 make_debounced=1 break_is_make=0 note_offset=36 \
delay_fastest=0 delay_fastest_black_keys=0 delay_slowest=100
KEYBOARD n=2 rows=12 dout_sr1=3 dout_sr2=4 din_sr1=3 din_sr2=4 \
din_inverted=1 break_inverted=0 din_key_offset=32 \
scan_velocity=1 scan_optimized=1 make_debounced=1 break_is_make=0 note_offset=28 \
delay_fastest=1 delay_fastest_black_keys=0 delay_slowest=140
MAP1/BYTEI 0:0 1:20 20:60 60:90 90:110 118:127
EVENT_KB id=1 hw_id=1 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 kb_velocity_map=map1 kb_transpose=0 ports=0000000000000000 fwd_id=sender:1
EVENT_KB id=2 hw_id=2 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 kb_velocity_map=map1 kb_transpose=0 ports=0000000000000000 fwd_id=sender:2
EVENT_KB id=3 hw_id=2 type=NoteOn chn=1 key=any use_key_number=1 range=49:127 kb_velocity_map=map1 kb_transpose=0 ports=0000000000000000 fwd_id=sender:2
EVENT_KB id=4 hw_id=2 type=NoteOn chn=1 key=any use_key_number=1 range=0:49 kb_velocity_map=map1 kb_transpose=0 ports=0000000000000000 fwd_id=sender:3
EVENT_SENDER id=10 hw_id=1 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 ports=1000110000000000
EVENT_SENDER id=11 hw_id=1 type=NoteOn chn=4 key=any use_key_number=1 range=0:127 ports=1000110000000000
EVENT_SENDER id=12 hw_id=2 type=NoteOn chn=4 key=any use_key_number=1 range=0:127 ports=1000110000000000
EVENT_SENDER id=13 hw_id=2 type=NoteOn chn=2 key=any use_key_number=1 range=0:127 ports=1000110000000000
EVENT_SENDER id=14 hw_id=2 type=NoteOn chn=1 key=any use_key_number=1 range=0:127 ports=1000110000000000
EVENT_SENDER id=15 hw_id=3 type=NoteOn chn=3 key=any use_key_number=1 range=0:127 ports=1000110000000000
ain enable_mask=111111
ain pinrange=0:18:3800
ain pinrange=1:18:3800
ain pinrange=2:18:3800
ain pinrange=3:18:3800
ain pinrange=5:18:3800
ain pinrange=4:1500:2500:spread_center
#EVENT_AIN id=1 type=CC chn= 4 cc= 1 range=127:0 ports=1000110000000000
#EVENT_AIN id=5 type=PitchBend chn= 4 range=0:16383 ports=1000110000000000
#EVENT_AIN id=2 type=CC chn= 1 cc= 11 range=0:127 ports=1000110000000000
#EVENT_AIN id=3 type=CC chn= 4 cc= 64 ain_mode=Switch range=0:127 ports=1000110000000000
#EVENT_AIN id=4 type=CC chn= 4 cc= 11 range=0:127 ports=1000110000000000
#EVENT_AIN id=6 type=CC chn= 1 cc= 64 ain_mode=Switch range=0:127 ports=1000110000000000
DIO port=J10A emu_din_sr=5
DIO port=J10B emu_din_sr=6
EVENT_BUTTON id=40 hw_id=40 type=Meta meta=KbBreakIsMake:1
EVENT_BUTTON id=38 hw_id=38 type=Meta meta=KbBreakIsMake:2
EVENT_BUTTON id=39 hw_id=39 type=Meta meta=RunSection:1
EVENT_BUTTON id=37 hw_id=37
EVENT_BUTTON id=35 hw_id=35
EVENT_BUTTON id=36 hw_id=36
EVENT_BUTTON id=33 hw_id=33
EVENT_BUTTON id=42 hw_id=42
EVENT_BUTTON id=34 hw_id=34
EVENT_BUTTON id=48 hw_id=48
EVENT_BUTTON id=46 hw_id=46
EVENT_BUTTON id=41 hw_id=41
EVENT_BUTTON id=43 hw_id=43
And .NGR:
if ^section == 0
set_active (id)KB:1 1
set_active (id)KB:2 1
set_active (id)KB:3 0
set_active (id)KB:4 0
set_active (id)SENDER:10 1
set_active (id)SENDER:11 0
set_active (id)SENDER:12 1
set_active (id)SENDER:13 0
set_active (id)SENDER:14 0
set_active (id)SENDER:15 0
endif
if ^section == 1
if BUTTON:37 < 45
set_kb_transpose KB:1 0
else
if BUTTON:35 < 45
if BUTTON:36 < 45
set_kb_transpose KB:1 12
else
set_kb_transpose KB:1 24
endif
else
if BUTTON:36 < 45
set_kb_transpose KB:1 244
else
set_kb_transpose KB:1 232
endif
endif
endif
if BUTTON:33 < 45
set_kb_transpose KB:2 0
else
if BUTTON:42 < 45
if BUTTON:34 < 45
set_kb_transpose KB:2 12
else
set_kb_transpose KB:2 24
endif
else
if BUTTON:34 < 45
set_kb_transpose KB:2 244
else
set_kb_transpose KB:2 232
endif
endif
endif
if BUTTON:48 < 45
set_kb_velocity_map KB:2 1
else
set_kb_velocity_map KB:2 2
endif
if BUTTON:46 < 45
set_active (id)KB:1 1
set_active (id)KB:2 1
set_active (id)KB:3 0
set_active (id)KB:4 0
set_active (id)SENDER:10 1
set_active (id)SENDER:11 0
set_active (id)SENDER:12 1
set_active (id)SENDER:13 0
set_active (id)SENDER:14 0
set_active (id)SENDER:15 0
else
if BUTTON:41 < 45
if BUTTON:43 < 45
set_active (id)KB:1 1
set_active (id)KB:2 1
set_active (id)KB:3 0
set_active (id)KB:4 0
set_active (id)SENDER:10 1
set_active (id)SENDER:11 0
set_active (id)SENDER:12 0
set_active (id)SENDER:13 1
set_active (id)SENDER:14 0
set_active (id)SENDER:15 0
else
set_active (id)KB:1 1
set_active (id)KB:2 1
set_active (id)KB:3 0
set_active (id)KB:4 0
set_active (id)SENDER:10 1
set_active (id)SENDER:11 0
set_active (id)SENDER:12 1
set_active (id)SENDER:13 0
set_active (id)SENDER:14 1
set_active (id)SENDER:15 0
endif
else
if BUTTON:43 < 45
set_active (id)KB:1 1
set_active (id)KB:2 1
set_active (id)KB:3 0
set_active (id)KB:4 0
set_active (id)SENDER:10 0
set_active (id)SENDER:11 1
set_active (id)SENDER:12 0
set_active (id)SENDER:13 0
set_active (id)SENDER:14 1
set_active (id)SENDER:15 0
else
set_active (id)KB:1 1
set_active (id)KB:2 0
set_active (id)KB:3 1
set_active (id)KB:4 1
set_active (id)SENDER:10 1
set_active (id)SENDER:11 0
set_active (id)SENDER:12 0
set_active (id)SENDER:13 1
set_active (id)SENDER:14 0
set_active (id)SENDER:15 1
endif
endif
endif
endif
exit
I have tried to send CC 123-All notes off event but the Gemini doesnot respond to that. Is there any simple way to send Note off evoent to defined Midi Channel from key 0 to 127? In worst case I will write 4x128 rows sending Note off from CH1-4 for allnotes.
Hi
Not sure “all” command work at NGR but did you try this:
send NoteOn USB1 1 all 0
e.g. for usb1 chn 1, if it work you just have to write few for the 3 port and two channels you use
Best
Zam
unfortunately does not work
Finally all the functions are working. Only one small issue:
It seems that the scanning frequency of Midibox KB under NG is not enough to get a certain amount of different velocity values. I have tried many fast/slow adjustmants however it seems that I can get only 8-10 different velocity walues from 0-127. I am able to tune it with velocity map function however the velocity resolution is notenough for fine playing of Piano and Rhodes sounds. It would need more velocity values scanned, I think 40-60 linear distributed vlues (0-127) should be enough. The most higher resolution is neede in range of values 30-90. From 0-30 and over 90-127 is enough a lower resolution.
Do you have any experience that what is the maximum achievable resolution with Fatar TP8 keybeds(when I am using Midibox KB under Midibox NG)?
The possible solution is that I will use only a simple Midibox KB which is 10x faster (and probably have 10x more higher resolution) however in this case I am loosing a control of functions like Make is Break, Octave switch, Midi mapping.
Any suggestion?
Thank you in advane!
Frank