|
88 | 88 | 'position', [0.7, 0.75, 0.3, 0.1], ...
|
89 | 89 | 'callback', @checkbox_callback);
|
90 | 90 |
|
| 91 | +% auto pad select checkbox |
| 92 | +GUI.autopad = false; |
| 93 | +GUI.autopad_chbx = uicontrol(figure_handle, ... |
| 94 | + 'style', 'checkbox', ... |
| 95 | + 'value', 0, ... |
| 96 | + 'string', 'Auto Pad Select', ... |
| 97 | + 'units', 'normalized', ... |
| 98 | + 'position', [0.7, 0.65, 0.3, 0.1], ... |
| 99 | + 'callback', @checkbox_callback); |
| 100 | + |
91 | 101 | % settings panel
|
92 | 102 | GUI.set_panel = uipanel(figure_handle, ...
|
93 | 103 | 'Title', 'Edrumulus settings', ...
|
|
320 | 330 | end
|
321 | 331 |
|
322 | 332 | end
|
| 333 | + |
| 334 | + % auto pad selection |
| 335 | + if GUI.autopad |
| 336 | + |
| 337 | + if ~isempty(midi_message) && (midi_message.type == midimsgtype.NoteOn) && ... |
| 338 | + (midi_message.channel == 10) |
| 339 | + |
| 340 | + update_pad_selection(midi_message, 38, 40, 0) % snare |
| 341 | + update_pad_selection(midi_message, 36, 36, 1) % kick |
| 342 | + update_pad_selection(midi_message, 22, 26, 2) % hi-hat |
| 343 | + update_pad_selection(midi_message, 49, 55, 4) % crash |
| 344 | + update_pad_selection(midi_message, 48, 50, 5) % tom1 |
| 345 | + |
| 346 | + end |
| 347 | + |
| 348 | + end |
| 349 | + |
323 | 350 | pause(0.01); % do not block the CPU all the time
|
324 | 351 | end
|
325 | 352 |
|
326 | 353 | end
|
327 | 354 |
|
328 | 355 |
|
| 356 | +function update_pad_selection(midi_message, midi_note1, midi_note2, pad_index) |
| 357 | + |
| 358 | +global GUI; |
| 359 | +if ((midi_message.note == midi_note1) || (midi_message.note == midi_note2)) && ... |
| 360 | + (round(get(GUI.slider1, 'value')) ~= pad_index) |
| 361 | + |
| 362 | + set(GUI.slider1, 'value', pad_index); |
| 363 | + set_slieder_value(GUI.slider1, pad_index, true) |
| 364 | + |
| 365 | +end |
| 366 | + |
| 367 | +end |
| 368 | + |
329 | 369 | function midi_out_sel_callback(hObject)
|
330 | 370 |
|
331 | 371 | global GUI;
|
@@ -533,9 +573,15 @@ function button_callback(hObject)
|
533 | 573 | function checkbox_callback(hObject)
|
534 | 574 |
|
535 | 575 | global GUI;
|
| 576 | +switch hObject |
| 577 | + case GUI.spike_chbx |
| 578 | + % spike cancellation checkbox |
| 579 | + midisend(GUI.midi_out_dev, midimsg("controlchange", 10, 110, get(hObject, 'value'))); |
536 | 580 |
|
537 |
| -% spike cancellation checkbox |
538 |
| -midisend(GUI.midi_out_dev, midimsg("controlchange", 10, 110, get(hObject, 'value'))); |
| 581 | + case GUI.autopad_chbx |
| 582 | + % auto pad select |
| 583 | + GUI.autopad = get(hObject, 'value'); |
| 584 | +end |
539 | 585 |
|
540 | 586 | end
|
541 | 587 |
|
|
0 commit comments