@ -155,10 +155,9 @@ elapsedMillis cpu_mem_millis;
# endif
# endif
//uint32_t overload = 0;
//uint32_t overload = 0;
uint32_t peak = 0 ;
uint32_t peak = 0 ;
config_t configuration ;
bool eeprom_update_flag = false ;
bool eeprom_update_flag = false ;
config_t configuration ;
uint8_t selected_dexed_instance = 0 ;
// Allocate the delay lines for chorus
// Allocate the delay lines for chorus
short delayline [ MOD_DELAY_SAMPLE_BUFFER ] ;
short delayline [ MOD_DELAY_SAMPLE_BUFFER ] ;
@ -284,13 +283,13 @@ void setup()
// read all bank names
// read all bank names
max_loaded_banks = get_bank_names ( ) ;
max_loaded_banks = get_bank_names ( ) ;
strip_extension ( bank_names [ configuration . bank ] , bank_name ) ;
strip_extension ( bank_names [ configuration . bank [ 0 ] ] , bank_name ) ;
// read all voice name for actual bank
// read all voice name for actual bank
get_voice_names_from_bank ( configuration . bank ) ;
get_voice_names_from_bank ( configuration . bank [ 0 ] ) ;
# ifdef DEBUG
# ifdef DEBUG
Serial . print ( F ( " Bank [ " ) ) ;
Serial . print ( F ( " Bank [ " ) ) ;
Serial . print ( bank_names [ configuration . bank ] ) ;
Serial . print ( bank_names [ configuration . bank [ 0 ] ] ) ;
Serial . print ( F ( " / " ) ) ;
Serial . print ( F ( " / " ) ) ;
Serial . print ( bank_name ) ;
Serial . print ( bank_name ) ;
Serial . println ( F ( " ] " ) ) ;
Serial . println ( F ( " ] " ) ) ;
@ -307,7 +306,7 @@ void setup()
# endif
# endif
// load default SYSEX data
// load default SYSEX data
load_sysex ( configuration . bank , configuration . voice ) ;
load_sysex ( configuration . bank [ 0 ] , configuration . voice [ 0 ] ) ;
}
}
# ifdef DISPLAY_LCD_SPI
# ifdef DISPLAY_LCD_SPI
change_disp_sd ( true ) ;
change_disp_sd ( true ) ;
@ -330,8 +329,8 @@ void setup()
// INIT REVERB
// INIT REVERB
freeverbs1 . roomsize ( mapfloat ( configuration . reverb_roomsize , REVERB_ROOMSIZE_MIN , REVERB_ROOMSIZE_MAX , 0.0 , 1.0 ) ) ;
freeverbs1 . roomsize ( mapfloat ( configuration . reverb_roomsize , REVERB_ROOMSIZE_MIN , REVERB_ROOMSIZE_MAX , 0.0 , 1.0 ) ) ;
freeverbs1 . damping ( mapfloat ( configuration . reverb_damping , REVERB_DAMPING_MIN , REVERB_DAMPING_MAX , 0.0 , 1.0 ) ) ;
freeverbs1 . damping ( mapfloat ( configuration . reverb_damping , REVERB_DAMPING_MIN , REVERB_DAMPING_MAX , 0.0 , 1.0 ) ) ;
master_mixer_r . gain ( 1 , mapfloat ( configuration . reverb_level , REVERB_LEVEL_MIN , REVERB_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_r . gain ( 1 , mapfloat ( configuration . reverb_level [ 0 ] , REVERB_LEVEL_MIN , REVERB_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( 1 , mapfloat ( configuration . reverb_level , REVERB_LEVEL_MIN , REVERB_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( 1 , mapfloat ( configuration . reverb_level [ 0 ] , REVERB_LEVEL_MIN , REVERB_LEVEL_MAX , 0.0 , 1.0 ) ) ;
# endif
# endif
// INIT DELAY
// INIT DELAY
@ -340,8 +339,8 @@ void setup()
//delay_fb_mixer.gain(0, 1.0 - (mapfloat(configuration.delay_feedback, DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 0.0, 1.0))); // original signal
//delay_fb_mixer.gain(0, 1.0 - (mapfloat(configuration.delay_feedback, DELAY_FEEDBACK_MIN, DELAY_FEEDBACK_MAX, 0.0, 1.0))); // original signal
delay_fb_mixer . gain ( 0 , 1.0 ) ; // original signal
delay_fb_mixer . gain ( 0 , 1.0 ) ; // original signal
delay_fb_mixer . gain ( 1 , mapfloat ( configuration . delay_feedback , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ; // amount of feedback
delay_fb_mixer . gain ( 1 , mapfloat ( configuration . delay_feedback , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ; // amount of feedback
master_mixer_r . gain ( 2 , mapfloat ( configuration . delay_level , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_r . gain ( 2 , mapfloat ( configuration . delay_level [ 0 ] , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( 2 , mapfloat ( configuration . delay_level , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( 2 , mapfloat ( configuration . delay_level [ 0 ] , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
// INIT CHORUS
// INIT CHORUS
switch ( configuration . chorus_waveform )
switch ( configuration . chorus_waveform )
@ -372,20 +371,20 @@ void setup()
modchorus_inverter . gain ( - 1.0 ) ; // stereo mode
modchorus_inverter . gain ( - 1.0 ) ; // stereo mode
else
else
modchorus_inverter . gain ( 1.0 ) ; // mono mode
modchorus_inverter . gain ( 1.0 ) ; // mono mode
master_mixer_r . gain ( 3 , mapfloat ( configuration . chorus_level , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_r . gain ( 3 , mapfloat ( configuration . chorus_level [ 0 ] , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( 3 , mapfloat ( configuration . chorus_level , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( 3 , mapfloat ( configuration . chorus_level [ 0 ] , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX , 0.0 , 1.0 ) ) ;
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
{
{
soften_filter_res [ i ] . init ( configuration . filter_resonance ) ;
soften_filter_res [ i ] . init ( configuration . filter_resonance [ i ] ) ;
soften_filter_cut [ i ] . init ( configuration . filter_cutoff ) ;
soften_filter_cut [ i ] . init ( configuration . filter_cutoff [ i ] ) ;
MicroDexed [ i ] - > fx . Gain = mapfloat ( configuration . loudness , LOUDNESS_MIN , LOUDNESS_MAX , 0.0 , 1.0 ) ;
MicroDexed [ i ] - > fx . Gain = mapfloat ( configuration . loudness [ i ] , LOUDNESS_MIN , LOUDNESS_MAX , 0.0 , 1.0 ) ;
MicroDexed [ i ] - > fx . Reso = mapfloat ( configuration . filter_resonance , FILTER_RESONANCE_MIN , FILTER_RESONANCE_MAX , 0.0 , 1.0 ) ;
MicroDexed [ i ] - > fx . Reso = mapfloat ( configuration . filter_resonance [ i ] , FILTER_RESONANCE_MIN , FILTER_RESONANCE_MAX , 0.0 , 1.0 ) ;
MicroDexed [ i ] - > fx . Cutoff = mapfloat ( configuration . filter_cutoff , FILTER_CUTOFF_MIN , FILTER_CUTOFF_MAX , 0.0 , 1.0 ) ;
MicroDexed [ i ] - > fx . Cutoff = mapfloat ( configuration . filter_cutoff [ i ] , FILTER_CUTOFF_MIN , FILTER_CUTOFF_MAX , 0.0 , 1.0 ) ;
}
}
// set initial volume and pan (read from EEPROM)
// set initial volume and pan (read from EEPROM)
set_volume ( configuration . vol , configuration . pan , configuration . mono ) ;
set_volume ( configuration . vol , configuration . pan [ 0 ] , configuration . mono ) ;
soften_volume . init ( configuration . vol ) ;
soften_volume . init ( configuration . vol ) ;
# if defined (DEBUG) && defined (SHOW_CPU_LOAD_MSEC)
# if defined (DEBUG) && defined (SHOW_CPU_LOAD_MSEC)
@ -396,9 +395,9 @@ void setup()
# ifdef DEBUG
# ifdef DEBUG
Serial . print ( F ( " Bank/Voice from EEPROM [ " ) ) ;
Serial . print ( F ( " Bank/Voice from EEPROM [ " ) ) ;
Serial . print ( configuration . bank , DEC ) ;
Serial . print ( configuration . bank [ 0 ] , DEC ) ;
Serial . print ( F ( " / " ) ) ;
Serial . print ( F ( " / " ) ) ;
Serial . print ( configuration . voice , DEC ) ;
Serial . print ( configuration . voice [ 0 ] , DEC ) ;
Serial . println ( F ( " ] " ) ) ;
Serial . println ( F ( " ] " ) ) ;
show_patch ( ) ;
show_patch ( ) ;
# endif
# endif
@ -519,7 +518,7 @@ void loop()
}
}
if ( soften_volume . running ( ) )
if ( soften_volume . running ( ) )
{
{
set_volume ( soften_volume . value ( ) , configuration . pan , configuration . mono ) ;
set_volume ( soften_volume . value ( ) , configuration . pan [ 0 ] , configuration . mono ) ;
# ifdef DEBUG
# ifdef DEBUG
Serial . print ( F ( " Volume: " ) ) ;
Serial . print ( F ( " Volume: " ) ) ;
Serial . print ( configuration . vol , DEC ) ;
Serial . print ( configuration . vol , DEC ) ;
@ -580,7 +579,7 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
case 0 :
case 0 :
if ( inValue < MAX_BANKS )
if ( inValue < MAX_BANKS )
{
{
configuration . bank = inValue ;
configuration . bank [ 0 ] = inValue ;
}
}
break ;
break ;
case 1 :
case 1 :
@ -609,11 +608,11 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
soften_volume . update ( configuration . vol , SOFTEN_VALUE_CHANGE_STEPS ) ;
soften_volume . update ( configuration . vol , SOFTEN_VALUE_CHANGE_STEPS ) ;
break ;
break ;
case 10 : // Pan
case 10 : // Pan
configuration . pan = map ( inValue , 0 , 0x7f , PANORAMA_MIN , PANORAMA_MAX ) ;
configuration . pan [ 0 ] = map ( inValue , 0 , 0x7f , PANORAMA_MIN , PANORAMA_MAX ) ;
set_volume ( configuration . vol , configuration . pan , configuration . mono ) ;
set_volume ( configuration . vol , configuration . pan [ 0 ] , configuration . mono ) ;
break ;
break ;
case 32 : // BankSelect LSB
case 32 : // BankSelect LSB
configuration . bank = inValue ;
configuration . bank [ 0 ] = inValue ;
break ;
break ;
case 64 :
case 64 :
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
@ -630,17 +629,17 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
}
}
break ;
break ;
case 103 : // CC 103: filter resonance
case 103 : // CC 103: filter resonance
configuration . filter_resonance = map ( inValue , 0 , 0x7f , FILTER_RESONANCE_MIN , FILTER_RESONANCE_MAX ) ;
configuration . filter_resonance [ 0 ] = map ( inValue , 0 , 0x7f , FILTER_RESONANCE_MIN , FILTER_RESONANCE_MAX ) ;
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
{
{
MicroDexed [ i ] - > fx . Reso = configuration . filter_resonance / 100.0 ;
MicroDexed [ i ] - > fx . Reso = configuration . filter_resonance [ i ] / 100.0 ;
}
}
break ;
break ;
case 104 : // CC 104: filter cutoff
case 104 : // CC 104: filter cutoff
configuration . filter_cutoff = map ( inValue , 0 , 0x7f , FILTER_CUTOFF_MIN , FILTER_CUTOFF_MAX ) ;
configuration . filter_cutoff [ 0 ] = map ( inValue , 0 , 0x7f , FILTER_CUTOFF_MIN , FILTER_CUTOFF_MAX ) ;
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
{
{
MicroDexed [ i ] - > fx . Cutoff = configuration . filter_cutoff / 100.0 ;
MicroDexed [ i ] - > fx . Cutoff = configuration . filter_cutoff [ i ] / 100.0 ;
}
}
break ;
break ;
case 105 : // CC 105: delay time
case 105 : // CC 105: delay time
@ -652,9 +651,9 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
delay_fb_mixer . gain ( 0 , 1.0 - configuration . delay_feedback / 100.0 ) ; // original signalbreak;
delay_fb_mixer . gain ( 0 , 1.0 - configuration . delay_feedback / 100.0 ) ; // original signalbreak;
break ;
break ;
case 107 : // CC 107: delay volume
case 107 : // CC 107: delay volume
configuration . delay_level = map ( inValue , 0 , 0x7f , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX ) ;
configuration . delay_level [ 0 ] = map ( inValue , 0 , 0x7f , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX ) ;
master_mixer_r . gain ( 2 , configuration . delay_level / 100.0 ) ;
master_mixer_r . gain ( 2 , configuration . delay_level [ 0 ] / 100.0 ) ;
master_mixer_l . gain ( 2 , configuration . delay_level / 100.0 ) ;
master_mixer_l . gain ( 2 , configuration . delay_level [ 0 ] / 100.0 ) ;
break ;
break ;
case 120 :
case 120 :
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
@ -714,7 +713,7 @@ void handleProgramChange(byte inChannel, byte inProgram)
# ifdef DISPLAY_LCD_SPI
# ifdef DISPLAY_LCD_SPI
change_disp_sd ( false ) ;
change_disp_sd ( false ) ;
# endif
# endif
load_sysex ( configuration . bank , inProgram ) ;
load_sysex ( configuration . bank [ 0 ] , inProgram ) ;
# ifdef DISPLAY_LCD_SPI
# ifdef DISPLAY_LCD_SPI
change_disp_sd ( true ) ;
change_disp_sd ( true ) ;
# endif
# endif
@ -978,17 +977,17 @@ void handleSystemReset(void)
bool checkMidiChannel ( byte inChannel )
bool checkMidiChannel ( byte inChannel )
{
{
// check for MIDI channel
// check for MIDI channel
if ( configuration . midi_channel = = MIDI_CHANNEL_OMNI )
if ( configuration . midi_channel [ 0 ] = = MIDI_CHANNEL_OMNI )
{
{
return ( true ) ;
return ( true ) ;
}
}
else if ( inChannel ! = configuration . midi_channel )
else if ( inChannel ! = configuration . midi_channel [ 0 ] )
{
{
# ifdef DEBUG
# ifdef DEBUG
Serial . print ( F ( " Ignoring MIDI data on channel " ) ) ;
Serial . print ( F ( " Ignoring MIDI data on channel " ) ) ;
Serial . print ( inChannel ) ;
Serial . print ( inChannel ) ;
Serial . print ( F ( " (listening on " ) ) ;
Serial . print ( F ( " (listening on " ) ) ;
Serial . print ( configuration . midi_channel ) ;
Serial . print ( configuration . midi_channel [ 0 ] ) ;
Serial . println ( F ( " ) " ) ) ;
Serial . println ( F ( " ) " ) ) ;
# endif
# endif
return ( false ) ;
return ( false ) ;
@ -1003,11 +1002,11 @@ bool checkMidiChannel(byte inChannel)
void set_volume ( uint8_t v , int8_t p , uint8_t m )
void set_volume ( uint8_t v , int8_t p , uint8_t m )
{
{
configuration . vol = v ;
configuration . vol = v ;
configuration . pan = p ;
configuration . pan [ 0 ] = p ;
configuration . mono = m ;
configuration . mono = m ;
uint16_t tmp = v / 100.0 * 1023.0 + 0.5 ;
uint16_t tmp = v / 100.0 * 1023.0 + 0.5 ;
float tmp2 = mapfloat ( configuration . pan , PANORAMA_MIN , PANORAMA_MAX , 0.0 , 1.0 ) ;
float tmp2 = mapfloat ( configuration . pan [ 0 ] , PANORAMA_MIN , PANORAMA_MAX , 0.0 , 1.0 ) ;
float tmp3 = ( float ) ( tmp * ( tmp + 2 ) ) / ( float ) ( 1 < < 20 ) ;
float tmp3 = ( float ) ( tmp * ( tmp + 2 ) ) / ( float ) ( 1 < < 20 ) ;
# ifdef DEBUG
# ifdef DEBUG
@ -1038,19 +1037,19 @@ void set_volume(uint8_t v, int8_t p, uint8_t m)
break ;
break ;
case 1 : // mono both
case 1 : // mono both
stereomono1 . stereo ( false ) ;
stereomono1 . stereo ( false ) ;
configuration . pan = 0.5 ;
configuration . pan [ 0 ] = 0.5 ;
modchorus_inverter . gain ( 1.0 ) ; // stereo mode
modchorus_inverter . gain ( 1.0 ) ; // stereo mode
break ;
break ;
case 2 : // mono right
case 2 : // mono right
volume_l . gain ( 0.0 ) ;
volume_l . gain ( 0.0 ) ;
stereomono1 . stereo ( false ) ;
stereomono1 . stereo ( false ) ;
configuration . pan = 0.5 ;
configuration . pan [ 0 ] = 0.5 ;
modchorus_inverter . gain ( 1.0 ) ; // stereo mode
modchorus_inverter . gain ( 1.0 ) ; // stereo mode
break ;
break ;
case 3 : // mono left
case 3 : // mono left
volume_r . gain ( 0.0 ) ;
volume_r . gain ( 0.0 ) ;
stereomono1 . stereo ( false ) ;
stereomono1 . stereo ( false ) ;
configuration . pan = 0.5 ;
configuration . pan [ 0 ] = 0.5 ;
modchorus_inverter . gain ( 1.0 ) ; // stereo mode
modchorus_inverter . gain ( 1.0 ) ; // stereo mode
break ;
break ;
}
}
@ -1087,27 +1086,27 @@ void initial_values_from_eeprom(void)
Serial . print ( F ( " - mismatch -> initializing EEPROM! " ) ) ;
Serial . print ( F ( " - mismatch -> initializing EEPROM! " ) ) ;
# endif
# endif
configuration . checksum = 0xffff ;
configuration . checksum = 0xffff ;
configuration . bank = SYSEXBANK_DEFAULT ;
configuration . bank [ 0 ] = SYSEXBANK_DEFAULT ;
configuration . voice = SYSEXSOUND_DEFAULT ;
configuration . voice [ 0 ] = SYSEXSOUND_DEFAULT ;
configuration . vol = VOLUME_DEFAULT ;
configuration . vol = VOLUME_DEFAULT ;
configuration . pan = PANORAMA_DEFAULT ;
configuration . pan [ 0 ] = PANORAMA_DEFAULT ;
configuration . mono = MONO_DEFAULT ;
configuration . mono = MONO_DEFAULT ;
configuration . midi_channel = DEFAULT_MIDI_CHANNEL ;
configuration . midi_channel [ 0 ] = DEFAULT_MIDI_CHANNEL ;
configuration . reverb_roomsize = REVERB_ROOMSIZE_DEFAULT ;
configuration . reverb_roomsize = REVERB_ROOMSIZE_DEFAULT ;
configuration . reverb_damping = REVERB_DAMPING_DEFAULT ;
configuration . reverb_damping = REVERB_DAMPING_DEFAULT ;
configuration . reverb_level = REVERB_LEVEL_DEFAULT ;
configuration . reverb_level [ 0 ] = REVERB_LEVEL_DEFAULT ;
configuration . chorus_frequency = CHORUS_FREQUENCY_DEFAULT ;
configuration . chorus_frequency = CHORUS_FREQUENCY_DEFAULT ;
configuration . chorus_waveform = CHORUS_WAVEFORM_DEFAULT ;
configuration . chorus_waveform = CHORUS_WAVEFORM_DEFAULT ;
configuration . chorus_depth = CHORUS_DEPTH_DEFAULT ;
configuration . chorus_depth = CHORUS_DEPTH_DEFAULT ;
configuration . chorus_level = CHORUS_LEVEL_DEFAULT ;
configuration . chorus_level [ 0 ] = CHORUS_LEVEL_DEFAULT ;
configuration . delay_time = DELAY_TIME_DEFAULT ;
configuration . delay_time = DELAY_TIME_DEFAULT ;
configuration . delay_feedback = DELAY_FEEDBACK_DEFAULT ;
configuration . delay_feedback = DELAY_FEEDBACK_DEFAULT ;
configuration . delay_level = DELAY_LEVEL_DEFAULT ;
configuration . delay_level [ 0 ] = DELAY_LEVEL_DEFAULT ;
configuration . filter_cutoff = FILTER_CUTOFF_DEFAULT ;
configuration . filter_cutoff [ 0 ] = FILTER_CUTOFF_DEFAULT ;
configuration . filter_resonance = FILTER_RESONANCE_DEFAULT ;
configuration . filter_resonance [ 0 ] = FILTER_RESONANCE_DEFAULT ;
configuration . loudness = LOUDNESS_DEFAULT ;
configuration . loudness [ 0 ] = LOUDNESS_DEFAULT ;
configuration . polyphony = POLYPHONY_DEFAULT ;
configuration . polyphony [ 0 ] = POLYPHONY_DEFAULT ;
configuration . engine = ENGINE_DEFAULT ;
configuration . engine [ 0 ] = ENGINE_DEFAULT ;
eeprom_update ( ) ;
eeprom_update ( ) ;
}
}
else
else
@ -1199,27 +1198,27 @@ void show_configuration(void)
Serial . println ( ) ;
Serial . println ( ) ;
Serial . println ( F ( " CONFIGURATION: " ) ) ;
Serial . println ( F ( " CONFIGURATION: " ) ) ;
Serial . print ( F ( " Checksum 0x " ) ) ; Serial . println ( configuration . checksum , HEX ) ;
Serial . print ( F ( " Checksum 0x " ) ) ; Serial . println ( configuration . checksum , HEX ) ;
Serial . print ( F ( " Bank " ) ) ; Serial . println ( configuration . bank , DEC ) ;
Serial . print ( F ( " Bank " ) ) ; Serial . println ( configuration . bank [ 0 ] , DEC ) ;
Serial . print ( F ( " Voice " ) ) ; Serial . println ( configuration . voice , DEC ) ;
Serial . print ( F ( " Voice " ) ) ; Serial . println ( configuration . voice [ 0 ] , DEC ) ;
Serial . print ( F ( " Volume " ) ) ; Serial . println ( configuration . vol , DEC ) ;
Serial . print ( F ( " Volume " ) ) ; Serial . println ( configuration . vol , DEC ) ;
Serial . print ( F ( " Panorama " ) ) ; Serial . println ( configuration . pan , DEC ) ;
Serial . print ( F ( " Panorama " ) ) ; Serial . println ( configuration . pan [ 0 ] , DEC ) ;
Serial . print ( F ( " Mono " ) ) ; Serial . println ( configuration . mono , DEC ) ;
Serial . print ( F ( " Mono " ) ) ; Serial . println ( configuration . mono , DEC ) ;
Serial . print ( F ( " MIDI-Channel " ) ) ; Serial . println ( configuration . midi_channel , DEC ) ;
Serial . print ( F ( " MIDI-Channel " ) ) ; Serial . println ( configuration . midi_channel [ 0 ] , DEC ) ;
Serial . print ( F ( " Reverb Roomsize " ) ) ; Serial . println ( configuration . reverb_roomsize , DEC ) ;
Serial . print ( F ( " Reverb Roomsize " ) ) ; Serial . println ( configuration . reverb_roomsize , DEC ) ;
Serial . print ( F ( " Reverb Damping " ) ) ; Serial . println ( configuration . reverb_damping , DEC ) ;
Serial . print ( F ( " Reverb Damping " ) ) ; Serial . println ( configuration . reverb_damping , DEC ) ;
Serial . print ( F ( " Reverb Level " ) ) ; Serial . println ( configuration . reverb_level , DEC ) ;
Serial . print ( F ( " Reverb Level " ) ) ; Serial . println ( configuration . reverb_level [ 0 ] , DEC ) ;
Serial . print ( F ( " Chorus Frequency " ) ) ; Serial . println ( configuration . chorus_frequency , DEC ) ;
Serial . print ( F ( " Chorus Frequency " ) ) ; Serial . println ( configuration . chorus_frequency , DEC ) ;
Serial . print ( F ( " Chorus Waveform " ) ) ; Serial . println ( configuration . chorus_waveform , DEC ) ;
Serial . print ( F ( " Chorus Waveform " ) ) ; Serial . println ( configuration . chorus_waveform , DEC ) ;
Serial . print ( F ( " Chorus Depth " ) ) ; Serial . println ( configuration . chorus_depth , DEC ) ;
Serial . print ( F ( " Chorus Depth " ) ) ; Serial . println ( configuration . chorus_depth , DEC ) ;
Serial . print ( F ( " Chorus Level " ) ) ; Serial . println ( configuration . chorus_level , DEC ) ;
Serial . print ( F ( " Chorus Level " ) ) ; Serial . println ( configuration . chorus_level [ 0 ] , DEC ) ;
Serial . print ( F ( " Delay Time " ) ) ; Serial . println ( configuration . delay_time , DEC ) ;
Serial . print ( F ( " Delay Time " ) ) ; Serial . println ( configuration . delay_time , DEC ) ;
Serial . print ( F ( " Delay Feedback " ) ) ; Serial . println ( configuration . delay_feedback , DEC ) ;
Serial . print ( F ( " Delay Feedback " ) ) ; Serial . println ( configuration . delay_feedback , DEC ) ;
Serial . print ( F ( " Delay Level " ) ) ; Serial . println ( configuration . delay_level , DEC ) ;
Serial . print ( F ( " Delay Level " ) ) ; Serial . println ( configuration . delay_level [ 0 ] , DEC ) ;
Serial . print ( F ( " Filter Cutoff " ) ) ; Serial . println ( configuration . filter_cutoff , DEC ) ;
Serial . print ( F ( " Filter Cutoff " ) ) ; Serial . println ( configuration . filter_cutoff [ 0 ] , DEC ) ;
Serial . print ( F ( " Filter Resonance " ) ) ; Serial . println ( configuration . filter_resonance , DEC ) ;
Serial . print ( F ( " Filter Resonance " ) ) ; Serial . println ( configuration . filter_resonance [ 0 ] , DEC ) ;
Serial . print ( F ( " Loudness " ) ) ; Serial . println ( configuration . loudness , DEC ) ;
Serial . print ( F ( " Loudness " ) ) ; Serial . println ( configuration . loudness [ 0 ] , DEC ) ;
Serial . print ( F ( " Polyphony " ) ) ; Serial . println ( configuration . polyphony , DEC ) ;
Serial . print ( F ( " Polyphony " ) ) ; Serial . println ( configuration . polyphony [ 0 ] , DEC ) ;
Serial . print ( F ( " Engine " ) ) ; Serial . println ( configuration . engine , DEC ) ;
Serial . print ( F ( " Engine " ) ) ; Serial . println ( configuration . engine [ 0 ] , DEC ) ;
Serial . println ( ) ;
Serial . println ( ) ;
}
}