Skip to content

Commit

Permalink
Merge pull request #89 from 3hhh/mps750x
Browse files Browse the repository at this point in the history
MPS 750x
  • Loading branch information
corrados authored Nov 16, 2023
2 parents 2d88e18 + edd68f3 commit 6634d25
Show file tree
Hide file tree
Showing 21 changed files with 139 additions and 3 deletions.
Binary file added algorithm/signals/lehhs12c.wav
Binary file not shown.
Binary file added algorithm/signals/lehhs12c_all.wav
Binary file not shown.
Binary file added algorithm/signals/lehhs12c_rim.wav
Binary file not shown.
Binary file added algorithm/signals/lehhs12c_stomps.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_crash.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_crash_all.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_crash_rim.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_hihat.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_kick.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_ride.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_ride_all.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_ride_bell.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_ride_rim.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_snare.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_snare_rim.wav
Binary file not shown.
Binary file added algorithm/signals/mps750x_tom.wav
Binary file not shown.
32 changes: 32 additions & 0 deletions algorithm/signalsandsettings.m
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,13 @@
%x = audioread("signals/tp80.wav");padtype='tp80';
%x = audioread("signals/vh12.wav");padtype='vh12';%x = x(900000:end, :);%x = x(376000:420000, :);%x = x(1:140000, :);
%x = audioread("signals/drumtec_diabolo12.wav");x=x(:,1);padtype='diabolo12';
%x = audioread("signals/mps750x_tom.wav");padtype='mps750x_tom';x = x(156000:end, :); %until press rolls: 1:156000, press rolls: 156000:end
%x = audioread("signals/mps750x_snare.wav");padtype='mps750x_tom';x = x(1:172000, :); %until press rolls: 1:172000, press rolls: 172000:end
%x = audioread("signals/mps750x_snare_rim.wav");padtype='mps750x_tom';
%x = audioread("signals/mps750x_kick.wav");padtype='mps750x_kick';
%x = audioread("signals/mps750x_ride_all.wav");padtype='mps750x_cymbal';
%x = audioread("signals/mps750x_crash_all.wav");padtype='mps750x_cymbal';
%x = audioread("signals/lehhs12c_all.wav");padtype='lehhs12c';


% scale to the ESP32 input range to match the signal level of the ESP32
Expand Down Expand Up @@ -108,6 +115,31 @@
case 'pd120'
% note: the PRESET settings are from the PD120 pad
pad.hot_spot_attenuation_db = 3;
case 'lehhs12c'
pad.scan_time_ms = 4;
pad.decay_fact_db = 5;
pad.decay_len_ms2 = 600;
pad.decay_grad_fact2 = 100;
case 'mps750x_tom'
pad.scan_time_ms = 6;
pad.pre_scan_time_ms = 3.5;
pad.decay_grad_fact2 = 150;
pad.decay_len_ms2 = 450;
pad.rim_use_low_freq_bp = false;
case 'mps750x_kick'
pad.first_peak_diff_thresh_db = 3;
pad.scan_time_ms = 6;
pad.pre_scan_time_ms = 3.5;
pad.decay_grad_fact2 = 150;
pad.decay_len_ms2 = 450;
pad.threshold_db = 30;
case 'mps750x_cymbal'
pad.scan_time_ms = 3;
pad.decay_est_delay_ms = 1;
pad.decay_grad_fact2 = 150;
pad.decay_len_ms2 = 450;
pad.threshold_db = 30;
pad.rim_use_low_freq_bp = false;
case 'pda120ls'
pad.decay_grad_fact2 = 250;
pad.decay_fact_db = 5;
Expand Down
11 changes: 11 additions & 0 deletions doc/manual.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,14 @@ Example:
- To get it fully working, the new type has to be added at multiple places, e.g. in the GUI python script, too.
4. Test the parameters in practice. Modify the available real-time parameters for hopefully better results. Possibly go back to previous steps.

## Hardware-specific comments

### Millenium MPS-750X

- recommended circuit: [Rs=10k, Rp=10k, Cp=0](https://github.com/corrados/edrumulus/discussions/98)
- TRS pins:
- toms: hit piezo = T, rim piezo = R, GND = S
- cymbals incl. hi-hat: bow piezo = S, rim switch = R (none for hi-hat), GND = T
- ride and crash cymbals draw some current
- the ride rim switch differs from the ride bell switch by a 5k resistor
- set all MPS750X potis to maximum output with a screw driver (sometimes the direction appears to be indicated incorrectly)
9 changes: 8 additions & 1 deletion edrumulus.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,14 @@ class Edrumulus
PD5 = 17,
PDA120LS = 18,
PDX100 = 19,
KT10 = 20
KT10 = 20,
MPS750X_TOM = 21,
MPS750X_SNARE = 22,
MPS750X_KICK = 23,
MPS750X_RIDE = 24,
MPS750X_CRASH = 25,
LEHHS12C = 26,
LEHHS12C_CTRL = 27
};

enum Ecurvetype // note that the enums need assigned integers for MIDI settings transfer
Expand Down
84 changes: 84 additions & 0 deletions edrumulus_parameters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,90 @@ void Edrumulus::Pad::apply_preset_pad_settings()

switch ( pad_settings.pad_type )
{
case LEHHS12C: // dual trigger
pad_settings.is_rim_switch = true;
pad_settings.scan_time_ms = 4.0f;
pad_settings.decay_fact_db = 5.0f;
pad_settings.decay_len2_ms = 600.0f;
pad_settings.decay_grad_fact2 = 100.0f;
pad_settings.rim_shot_is_used = true;
pad_settings.rim_shot_threshold = 25;
pad_settings.rim_shot_boost = 0;
pad_settings.velocity_threshold = 18;
pad_settings.velocity_sensitivity = 6;
break;

case LEHHS12C_CTRL: // 0-35k poti
pad_settings.is_control = true;
pad_settings.pos_threshold = 6;
pad_settings.pos_sensitivity = 23;
pad_settings.velocity_threshold = 0;
pad_settings.velocity_sensitivity = 22;
break;

case MPS750X_TOM: // dual trigger
pad_settings.scan_time_ms = 6.0f;
pad_settings.pre_scan_time_ms = 3.5f;
pad_settings.decay_grad_fact2 = 150.0f;
pad_settings.decay_len2_ms = 450.0f;
pad_settings.rim_shot_is_used = false;
pad_settings.velocity_threshold = 2;
pad_settings.velocity_sensitivity = 3;
break;

case MPS750X_SNARE: // dual trigger
pad_settings.scan_time_ms = 6.0f;
pad_settings.pre_scan_time_ms = 3.5f;
pad_settings.decay_grad_fact2 = 150.0f;
pad_settings.decay_len2_ms = 450.0f;
pad_settings.rim_use_low_freq_bp = false;
pad_settings.rim_shot_is_used = true;
pad_settings.rim_shot_threshold = 12;
pad_settings.velocity_threshold = 2;
pad_settings.velocity_sensitivity = 6;
pad_settings.pos_sense_is_used = true;
pad_settings.pos_sensitivity = 3;
break;

case MPS750X_KICK: // single trigger
pad_settings.first_peak_diff_thresh_db = 3.0f;
pad_settings.scan_time_ms = 6.0f;
pad_settings.pre_scan_time_ms = 3.5f;
pad_settings.decay_grad_fact2 = 150.0f;
pad_settings.decay_len2_ms = 450.0f;
pad_settings.velocity_threshold = 10;
pad_settings.velocity_sensitivity = 10;
pad_settings.curve_type = LOG2;
break;

case MPS750X_RIDE: // 3-zone
pad_settings.is_rim_switch = true;
pad_settings.scan_time_ms = 3.0f;
pad_settings.decay_est_delay_ms = 1.0f;
pad_settings.decay_grad_fact2 = 150.0f;
pad_settings.decay_len2_ms = 450.0f;
pad_settings.rim_use_low_freq_bp = false;
pad_settings.rim_shot_is_used = true;
pad_settings.rim_shot_threshold = 18;
pad_settings.rim_shot_boost = 0;
pad_settings.velocity_threshold = 12;
pad_settings.velocity_sensitivity = 6;
break;

case MPS750X_CRASH: // 2-zone
pad_settings.is_rim_switch = true;
pad_settings.scan_time_ms = 3.0f;
pad_settings.decay_est_delay_ms = 1.0f;
pad_settings.decay_grad_fact2 = 150.0f;
pad_settings.decay_len2_ms = 450.0f;
pad_settings.rim_use_low_freq_bp = false;
pad_settings.rim_shot_is_used = true;
pad_settings.rim_shot_threshold = 20;
pad_settings.rim_shot_boost = 0;
pad_settings.velocity_threshold = 12;
pad_settings.velocity_sensitivity = 6;
break;

case PD120: // dual trigger
pad_settings.velocity_threshold = 6;
pad_settings.velocity_sensitivity = 6;
Expand Down
6 changes: 4 additions & 2 deletions tools/edrumulus_gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,14 @@
# tables
pad_types_dict = {"PDA120LS Roland Mesh Pad":18, "PDX100 Roland Mesh Pad":19, "PD120 Roland Mesh Pad":0, \
"PD85 Roland Mesh Pad":1, "PDX8 Roland Mesh Pad":15, "DIABOLO12 drum-tec Mesh Pad":10, \
"MPS-750X Millenium Mesh Tom":21, "MPS-750X Millenium Mesh Snare":22, \
"PD8 Roland Rubber Pad":2, "PD6 Roland Rubber Pad":13, "PD5 Roland Rubber Pad":17, \
"HD1TOM Roland Rubber Pad":12, "TP80 Yamaha Rubber Pad":7, \
"CY8 Roland Cymbal":9, "CY6 Roland Cymbal":8, "CY5 Roland Cymbal":11, "VH12 Roland Cymbal":4, \
"MPS-750X Millenium Ride":24, "MPS-750X Millenium Crash":25, "LEHHS12C Lemon Hi-Hat Cymbal":26, \
"KD120 Roland Mesh Kick Pad":16, "KD8 Roland Kick Pad":14, \
"KD7 Roland Kick Pad":6, "KT10 Roland Kick Pedal":20, \
"FD8 Roland Hi-Hat Pedal":3, "VH12CTRL Roland Hi-Hat Pedal":5}
"KD7 Roland Kick Pad":6, "KT10 Roland Kick Pedal":20, "MPS-750X Millenium Kick Pad":23, \
"FD8 Roland Hi-Hat Pedal":3, "VH12CTRL Roland Hi-Hat Pedal":5, "LEHHS12CCTRL Lemon Hi-Hat Pedal":27}
pad_names = ["snare", "kick", "hi-hat", "ctrl", "crash", "tom1", "ride", "tom2", "tom3"]
curve_types = ["LINEAR", "EXP1", "EXP2", "LOG1", "LOG2"]
cmd_names = [ "type", "thresh", "sens", "pos thres", "pos sens", "rim thres", "mask", "curve"]
Expand Down

0 comments on commit 6634d25

Please sign in to comment.