@ -53,56 +53,62 @@ AudioAmplifier modchorus_inverter;
// FX chain left
AudioMixer4 delay_send_mixer_l ;
AudioMixer4 delay_mixer_l ;
AudioMixer4 delay_fb_mixer_l ;
AudioEffectDelay delay_l ;
AudioConnection patchCord1 ( delay_send_mixer_l , 0 , delay_fb_mixer_l , 0 ) ;
AudioConnection patchCord2 ( delay_fb_mixer_l , delay_l ) ;
AudioConnection patchCord3 ( delay_l , 0 , delay_fb_mixer_l , 1 ) ; // feedback-loop
AudioConnection patchCord4 ( delay_fb_mixer_l , 0 , master_mixer_l , DELAY ) ;
AudioConnection patchCord4 ( delay_l , 0 , delay_mixer_l , 0 ) ;
AudioConnection patchCord5 ( delay_fb_mixer_l , 0 , delay_mixer_l , 1 ) ;
AudioConnection patchCord6 ( delay_mixer_l , 0 , master_mixer_l , DELAY ) ;
AudioMixer4 chorus_send_mixer_l ;
AudioEffectModulatedDelay modchorus_l ;
AudioConnection patchCord5 ( chorus_send_mixer_l , modchorus_l ) ;
AudioConnection patchCord6 ( chorus_modulator , 0 , modchorus_l , 1 ) ;
AudioConnection patchCord7 ( chorus_send_mixer_l , 0 , modchorus_l , 0 ) ;
AudioConnection patchCord8 ( chorus_modulator , 0 , modchorus_l , 1 ) ;
# if MOD_FILTER_OUTPUT != MOD_NO_FILTER_OUTPUT
AudioFilterBiquad modchorus_filter_l ;
AudioConnection patchCord7 ( modchorus_l , modchorus_filter_l ) ;
AudioConnection patchCord8 ( modchorus_filter_l , modchorus_inverter ) ;
AudioConnection patchCord9 ( modchorus_inverter_l , 0 , master_mixer_l , CHORUS ) ;
AudioConnection patchCord9 ( modchorus_l , modchorus_filter_l ) ;
AudioConnection patchCord10 ( modchorus_filter_l , modchorus_inverter ) ;
AudioConnection patchCord11 ( modchorus_inverter_l , 0 , master_mixer_l , CHORUS ) ;
# else
AudioConnection patchCord7 ( modchorus_l , modchorus_inverter ) ;
AudioConnection patchCord8 ( modchorus_inverter , 0 , master_mixer_l , CHORUS ) ;
AudioConnection patchCord9 ( modchorus_l , modchorus_inverter ) ;
AudioConnection patchCord10 ( modchorus_inverter , 0 , master_mixer_l , CHORUS ) ;
# endif
# if defined(USE_REVERB)
AudioMixer4 reverb_send_mixer_l ;
AudioEffectFreeverb freeverb_l ;
AudioConnection patchCord10 ( reverb_send_mixer_l , freeverb_l ) ;
AudioConnection patchCord11 ( freeverb_l , 0 , master_mixer_r , REVERB ) ;
AudioConnection patchCord12 ( reverb_send_mixer_l , freeverb_l ) ;
AudioConnection patchCord13 ( freeverb_l , 0 , master_mixer_r , REVERB ) ;
# endif
// FX chain right
AudioMixer4 delay_send_mixer_r ;
AudioMixer4 delay_mixer_r ;
AudioMixer4 delay_fb_mixer_r ;
AudioEffectDelay delay_r ;
AudioConnection patchCord12 ( delay_send_mixer_r , 0 , delay_fb_mixer_r , 0 ) ;
AudioConnection patchCord13 ( delay_fb_mixer_r , delay_r ) ;
AudioConnection patchCord14 ( delay_r , 0 , delay_fb_mixer_r , 1 ) ; // feedback-loop
AudioConnection patchCord15 ( delay_fb_mixer_r , 0 , master_mixer_r , DELAY ) ;
AudioConnection patchCord14 ( delay_send_mixer_r , 0 , delay_fb_mixer_r , 0 ) ;
AudioConnection patchCord15 ( delay_fb_mixer_r , delay_r ) ;
AudioConnection patchCord16 ( delay_r , 0 , delay_fb_mixer_r , 1 ) ; // feedback-loop
AudioConnection patchCord17 ( delay_r , 0 , delay_mixer_r , 0 ) ;
AudioConnection patchCord18 ( delay_fb_mixer_r , 0 , delay_mixer_r , 1 ) ;
AudioConnection patchCord19 ( delay_mixer_r , 0 , master_mixer_r , DELAY ) ;
AudioMixer4 chorus_send_mixer_r ;
AudioConnection patchCord16 ( chorus_send_mixer_r , modchorus_r ) ;
AudioConnection patchCord20 ( chorus_send_mixer_r , modchorus_r ) ;
AudioEffectModulatedDelay modchorus_r ;
AudioConnection patchCord17 ( chorus_modulator , 0 , modchorus_r , 1 ) ;
AudioConnection patchCord2 1 ( chorus_modulator , 0 , modchorus_r , 1 ) ;
# if MOD_FILTER_OUTPUT != MOD_NO_FILTER_OUTPUT
AudioFilterBiquad modchorus_filter_r ;
AudioConnection patchCord18 ( modchorus_r , modchorus_filter_r ) ;
AudioConnection patchCord19 ( modchorus_filter_r , 0 , master_mixer_r , CHORUS ) ;
AudioConnection patchCord22 ( modchorus_r , modchorus_filter_r ) ;
AudioConnection patchCord23 ( modchorus_filter_r , 0 , master_mixer_r , CHORUS ) ;
# else
AudioConnection patchCord18 ( modchorus_r , 0 , master_mixer_r , CHORUS ) ;
AudioConnection patchCord22 ( modchorus_r , 0 , master_mixer_r , CHORUS ) ;
# endif
# if defined(USE_REVERB)
AudioMixer4 reverb_send_mixer_r ;
AudioEffectFreeverb freeverb_r ;
AudioConnection patchCord20 ( reverb_send_mixer_r , freeverb_r ) ;
AudioConnection patchCord21 ( freeverb_r , 0 , master_mixer_r , REVERB ) ;
AudioConnection patchCord24 ( reverb_send_mixer_r , freeverb_r ) ;
AudioConnection patchCord25 ( freeverb_r , 0 , master_mixer_r , REVERB ) ;
# endif
// FX chain tail
@ -115,50 +121,50 @@ AudioAmplifier volume_l;
AudioEffectStereoMono stereo2mono ;
AudioAnalyzePeak master_peak_r ;
AudioAnalyzePeak master_peak_l ;
AudioConnection patchCord22 ( dexed_mixer_r , 0 , master_mixer_r , DEXED ) ;
AudioConnection patchCord23 ( dexed_mixer_l , 0 , master_mixer_l , DEXED ) ;
AudioConnection patchCord24 ( master_mixer_r , volume_r ) ;
AudioConnection patchCord25 ( master_mixer_l , volume_l ) ;
AudioConnection patchCord26 ( volume_r , 0 , stereo2mono , 0 ) ;
AudioConnection patchCord27 ( volume_l , 0 , stereo2mono , 1 ) ;
AudioConnection patchCord28 ( volume_r , master_peak_r ) ;
AudioConnection patchCord29 ( volume_l , master_peak_l ) ;
AudioConnection patchCord30 ( microdexed_peak_mixer , microdexed_peak ) ;
AudioConnection patchCord26 ( dexed_mixer_r , 0 , master_mixer_r , DEXED ) ;
AudioConnection patchCord27 ( dexed_mixer_l , 0 , master_mixer_l , DEXED ) ;
AudioConnection patchCord28 ( master_mixer_r , volume_r ) ;
AudioConnection patchCord29 ( master_mixer_l , volume_l ) ;
AudioConnection patchCord30 ( volume_r , 0 , stereo2mono , 0 ) ;
AudioConnection patchCord31 ( volume_l , 0 , stereo2mono , 1 ) ;
AudioConnection patchCord3 2 ( volume_r , master_peak_r ) ;
AudioConnection patchCord33 ( volume_l , master_peak_l ) ;
AudioConnection patchCord34 ( microdexed_peak_mixer , microdexed_peak ) ;
// Outputs
# ifdef AUDIO_DEVICE_USB
AudioOutputUSB usb1 ;
AudioConnection patchCord31 ( stereo2mono , 0 , usb1 , 0 ) ;
AudioConnection patchCord32 ( stereo2mono , 1 , usb1 , 1 ) ;
AudioOutputUSB usb1 ;
AudioConnection patchCord35 ( stereo2mono , 0 , usb1 , 0 ) ;
AudioConnection patchCord36 ( stereo2mono , 1 , usb1 , 1 ) ;
# endif
# if defined(TEENSY_AUDIO_BOARD)
AudioOutputI2S i2s1 ;
AudioConnection patchCord33 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord34 ( stereo2mono , 1 , i2s1 , 1 ) ;
AudioConnection patchCord37 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord38 ( stereo2mono , 1 , i2s1 , 1 ) ;
AudioControlSGTL5000 sgtl5000_1 ;
# elif defined (I2S_AUDIO_ONLY)
AudioOutputI2S i2s1 ;
AudioConnection patchCord33 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord34 ( stereo2mono , 1 , i2s1 , 1 ) ;
AudioConnection patchCord37 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord38 ( stereo2mono , 1 , i2s1 , 1 ) ;
# elif defined(TGA_AUDIO_BOARD)
AudioOutputI2S i2s1 ;
AudioConnection patchCord33 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord34 ( stereo2mono , 1 , i2s1 , 1 ) ;
AudioConnection patchCord37 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord38 ( stereo2mono , 1 , i2s1 , 1 ) ;
AudioControlWM8731master wm8731_1 ;
# elif defined(PT8211_AUDIO)
AudioOutputPT8211 pt8211_1 ;
AudioConnection patchCord33 ( stereo2mono , 0 , pt8211_1 , 0 ) ;
AudioConnection patchCord34 ( stereo2mono , 1 , pt8211_1 , 1 ) ;
AudioConnection patchCord37 ( stereo2mono , 0 , pt8211_1 , 0 ) ;
AudioConnection patchCord38 ( stereo2mono , 1 , pt8211_1 , 1 ) ;
# elif defined(TEENSY_DAC_SYMMETRIC)
AudioOutputAnalogStereo dacOut ;
AudioMixer4 invMixer ;
AudioConnection patchCord33 ( stereo2mono , 0 , dacOut , 0 ) ;
AudioConnection patchCord34 ( stereo2mono , 1 , invMixer , 0 ) ;
AudioConnection patchCord35 ( invMixer , 0 , dacOut , 1 ) ;
AudioConnection patchCord37 ( stereo2mono , 0 , dacOut , 0 ) ;
AudioConnection patchCord38 ( stereo2mono , 1 , invMixer , 0 ) ;
AudioConnection patchCord39 ( invMixer , 0 , dacOut , 1 ) ;
# else
AudioOutputAnalogStereo dacOut ;
AudioConnection patchCord33 ( stereo2mono , 0 , dacOut , 0 ) ;
AudioConnection patchCord34 ( stereo2mono , 1 , dacOut , 1 ) ;
AudioConnection patchCord37 ( stereo2mono , 0 , dacOut , 0 ) ;
AudioConnection patchCord38 ( stereo2mono , 1 , dacOut , 1 ) ;
# endif
//
@ -172,18 +178,26 @@ AudioConnection * dynamicConnections[NUM_DEXED * 9];
# endif
void create_audio_connections ( AudioSourceMicroDexed & dexed , AudioEffectMonoStereo & mono2stereo , AudioSynthWaveformDc & pan , uint8_t instance_id )
{
Serial . print ( F ( " Connecting Dexed " ) ) ;
Serial . print ( instance_id , DEC ) ;
Serial . println ( F ( " -> " ) ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( dexed , 0 , microdexed_peak_mixer , instance_id ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( dexed , 0 , mono2stereo , 0 ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( pan , 0 , mono2stereo , 1 ) ;
Serial . println ( F ( " Peakmeter " ) ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 0 , dexed_mixer_r , instance_id ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 0 , dexed_mixer_l , instance_id ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 1 , dexed_mixer_l , instance_id ) ;
Serial . println ( F ( " Dexed mixer " ) ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 0 , chorus_send_mixer_r , instance_id ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 0 , chorus_send_mixer_l , instance_id ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 1 , chorus_send_mixer_l , instance_id ) ;
Serial . println ( F ( " Chorus send " ) ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 0 , delay_send_mixer_r , instance_id ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 0 , delay_send_mixer_l , instance_id ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 1 , delay_send_mixer_l , instance_id ) ;
Serial . println ( F ( " Delay send " ) ) ;
# if defined(USE_REVERB)
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 0 , reverb_send_mixer_r , instance_id ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 0 , reverb_send_mixer_l , instance_id ) ;
dynamicConnections [ nDynamic + + ] = new AudioConnection ( mono2stereo , 1 , reverb_send_mixer_l , instance_id ) ;
Serial . println ( F ( " Reverb send " ) ) ;
# endif
}
@ -275,12 +289,11 @@ void setup()
if ( instance_id < MAX_DEXED )
{
Serial . print ( F ( " Creating MicroDexed instance " ) ) ;
Serial . print ( instance_id , DEC ) ;
Serial . println ( instance_id , DEC ) ;
MicroDexed [ instance_id ] = new AudioSourceMicroDexed ( SAMPLE_RATE ) ;
mono2stereo [ instance_id ] = new AudioEffectMonoStereo ( ) ;
pan [ instance_id ] = new AudioSynthWaveformDc ( ) ;
create_audio_connections ( * MicroDexed [ instance_id ] , * mono2stereo [ instance_id ] , * pan [ instance_id ] , instance_id ) ;
Serial . println ( F ( " ... created " ) ) ;
}
else
{
@ -426,7 +439,16 @@ void setup()
Serial . println ( F ( " samples " ) ) ;
# endif
set_master_mixer_gain ( DEXED , 1.0 ) ;
master_mixer_r . gain ( DEXED , 1.0 ) ;
master_mixer_l . gain ( DEXED , 1.0 ) ;
master_mixer_r . gain ( CHORUS , mapfloat ( configuration . chorus_level , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( CHORUS , mapfloat ( configuration . chorus_level , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_r . gain ( DELAY , mapfloat ( configuration . delay_level , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( DELAY , mapfloat ( configuration . delay_level , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
# if defined(USE_REVERB)
master_mixer_r . gain ( REVERB , mapfloat ( configuration . reverb_level , REVERB_LEVEL_MIN , REVERB_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( REVERB , mapfloat ( configuration . reverb_level , REVERB_LEVEL_MIN , REVERB_LEVEL_MAX , 0.0 , 1.0 ) ) ;
# endif
for ( uint8_t instance_id = 0 ; instance_id < NUM_DEXED ; instance_id + + )
{
@ -462,15 +484,19 @@ void setup()
}
// DELAY
set_master_mixer_gain ( DELAY , configuration . delay_level / 100.0 ) ;
delay_r . delay ( 0 , mapfloat ( configuration . delay_time * 10 , DELAY_TIME_MIN , DELAY_TIME_MAX , 0.0 , float ( DELAY_TIME_MAX ) ) ) ;
delay_l . delay ( 0 , mapfloat ( configuration . delay_time * 10 , DELAY_TIME_MIN , DELAY_TIME_MAX , 0.0 , float ( DELAY_TIME_MAX ) ) ) ;
// delay_fb_mixer is the feedback-adding mixer
delay_fb_mixer_r . gain ( 0 , 1.0 ) ; // original signal
delay_fb_mixer_r . gain ( 1 , mapfloat ( configuration . delay_feedback , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ; // amount of feedback
delay_fb_mixer_l . gain ( 0 , 1.0 ) ; // original signal
delay_fb_mixer_l . gain ( 1 , mapfloat ( configuration . delay_feedback , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ; // amount of feedback
delay_mixer_r . gain ( 0 , 1.0 ) ;
delay_mixer_l . gain ( 0 , 1.0 ) ;
delay_mixer_r . gain ( 1 , 1.0 ) ;
delay_mixer_l . gain ( 1 , 1.0 ) ;
// CHORUS
set_master_mixer_gain ( CHORUS , configuration . chorus_level / 100.0 ) ;
switch ( configuration . chorus_waveform )
{
case 0 :
@ -504,7 +530,6 @@ void setup()
# if defined(USE_REVERB)
// REVERB
set_master_mixer_gain ( REVERB , configuration . reverb_level / 100.0 ) ;
freeverb_r . roomsize ( mapfloat ( configuration . reverb_roomsize , REVERB_ROOMSIZE_MIN , REVERB_ROOMSIZE_MAX , 0.0 , 1.0 ) ) ;
freeverb_r . damping ( mapfloat ( configuration . reverb_damping , REVERB_DAMPING_MIN , REVERB_DAMPING_MAX , 0.0 , 1.0 ) ) ;
freeverb_l . roomsize ( mapfloat ( configuration . reverb_roomsize , REVERB_ROOMSIZE_MIN , REVERB_ROOMSIZE_MAX , 0.0 , 1.0 ) ) ;
@ -555,39 +580,6 @@ void setup()
void loop ( )
{
# ifdef OLD
int16_t * audio_buffer ; // pointer to AUDIO_BLOCK_SAMPLES * int16_t
const uint16_t audio_block_time_us = 1000000 / ( SAMPLE_RATE / AUDIO_BLOCK_SAMPLES ) ;
# endif
//while (42 == 42)
//{
# ifdef OLD
// Main sound calculation
if ( queue1 . available ( ) & & fill_audio_buffer > audio_block_time_us - 10 )
{
fill_audio_buffer = 0 ;
audio_buffer = queue1 . getBuffer ( ) ;
elapsedMicros t1 ;
for ( uint8_t i = 0 ; i < NUM_DEXED ; i + + )
{
MicroDexed [ i ] - > getSamples ( AUDIO_BLOCK_SAMPLES , audio_buffer ) ;
}
if ( t1 > audio_block_time_us ) // everything greater 2.9ms is a buffer underrun!
xrun + + ;
if ( t1 > render_time_max )
render_time_max = t1 ;
if ( peak1 . available ( ) )
{
if ( peak1 . read ( ) > 0.99 )
peak + + ;
}
queue1 . playBuffer ( ) ;
}
# endif
// MIDI input handling
check_midi_devices ( ) ;
@ -779,15 +771,16 @@ void handleControlChange(byte inChannel, byte inCtrl, byte inValue)
eeprom_write ( ) ;
case 106 : // CC 106: delay feedback
configuration . delay_feedback = map ( inValue , 0 , 0x7f , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX ) ;
delay_fb_mixer_r . gain ( 1 , configuration . delay_feedback / 200.0 ) ; // amount of feedback
delay_fb_mixer_r . gain ( 0 , 1.0 - configuration . delay_feedback / 200.0 ) ; // original signalbreak;
delay_fb_mixer_l . gain ( 1 , configuration . delay_feedback / 200.0 ) ; // amount of feedback
delay_fb_mixer_l . gain ( 0 , 1.0 - configuration . delay_feedback / 200.0 ) ; // original signalbreak;
//delay_fb_mixer_r.gain(0, 1.0); // original signal
delay_fb_mixer_r . gain ( 1 , mapfloat ( configuration . delay_feedback , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ; // amount of feedback
//delay_fb_mixer_l.gain(0, 1.0); // original signal
delay_fb_mixer_l . gain ( 1 , mapfloat ( configuration . delay_feedback , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ; // amount of feedback
eeprom_write ( ) ;
break ;
case 107 : // CC 107: delay volume
configuration . dexed [ instance_id ] . delay_send = map ( inValue , 0 , 0x7f , DELAY_SEND_MIN , DELAY_SEND_MAX ) ;
set_master_mixer_gain ( DELAY , configuration . delay_level / 100.0 ) ;
master_mixer_r . gain ( DELAY , mapfloat ( configuration . delay_level , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( DELAY , mapfloat ( configuration . delay_level , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
eeprom_write ( ) ;
break ;
case 120 :
@ -1293,8 +1286,10 @@ void initial_values_from_eeprom(bool init)
chorus_send_mixer_r . gain ( instance_id , configuration . dexed [ instance_id ] . chorus_send / 200.0 ) ;
chorus_send_mixer_l . gain ( instance_id , configuration . dexed [ instance_id ] . chorus_send / 200.0 ) ;
delay_send_mixer_r . gain ( instance_id , configuration . dexed [ instance_id ] . delay_send / 200.0 ) ;
delay_send_mixer_l . gain ( instance_id , configuration . dexed [ instance_id ] . delay_send / 200.0 ) ;
delay_fb_mixer_r . gain ( 0 , 1.0 ) ; // original signal
delay_fb_mixer_r . gain ( 1 , mapfloat ( configuration . delay_feedback , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ; // amount of feedback
delay_fb_mixer_l . gain ( 0 , 1.0 ) ; // original signal
delay_fb_mixer_l . gain ( 1 , mapfloat ( configuration . delay_feedback , DELAY_FEEDBACK_MIN , DELAY_FEEDBACK_MAX , 0.0 , 1.0 ) ) ; // amount of feedback
# if defined(USE_REVERB)
reverb_send_mixer_r . gain ( instance_id , configuration . dexed [ instance_id ] . reverb_send / 200.0 ) ;
reverb_send_mixer_l . gain ( instance_id , configuration . dexed [ instance_id ] . reverb_send / 200.0 ) ;
@ -1309,12 +1304,16 @@ void initial_values_from_eeprom(bool init)
}
Serial . println ( F ( " OK, loaded! " ) ) ;
set_master_mixer_gain ( CHORUS , configuration . chorus_level / 100.0 ) ;
set_master_mixer_gain ( DELAY , configuration . delay_level / 100.0 ) ;
master_mixer_r . gain ( DEXED , 1.0 ) ;
master_mixer_l . gain ( DEXED , 1.0 ) ;
master_mixer_r . gain ( CHORUS , mapfloat ( configuration . chorus_level , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( CHORUS , mapfloat ( configuration . chorus_level , CHORUS_LEVEL_MIN , CHORUS_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_r . gain ( DELAY , mapfloat ( configuration . delay_level , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( DELAY , mapfloat ( configuration . delay_level , DELAY_LEVEL_MIN , DELAY_LEVEL_MAX , 0.0 , 1.0 ) ) ;
# if defined(USE_REVERB)
set_master_mixer_gain ( REVERB , configuration . reverb_level / 100.0 ) ;
master_mixer_r . gain ( REVERB , mapfloat ( configuration . reverb_level , REVERB_LEVEL_MIN , REVERB_LEVEL_MAX , 0.0 , 1.0 ) ) ;
master_mixer_l . gain ( REVERB , mapfloat ( configuration . reverb_level , REVERB_LEVEL_MIN , REVERB_LEVEL_MAX , 0.0 , 1.0 ) ) ;
# endif
set_master_mixer_gain ( DEXED , 1.0 ) ;
set_volume ( configuration . vol , configuration . mono ) ;
}
@ -1469,39 +1468,40 @@ uint32_t crc32(byte * calc_start, uint16_t calc_bytes) // base code from https:/
return ( crc ) ;
}
void set_master_mixer_gain ( uint8_t type , float level )
{
/*
void set_master_mixer_gain ( uint8_t type , float level )
{
master_mixer_level [ type ] = constrain ( level , 0.0 , 1.0 ) ;
# if defined(USE_REVERB)
# if defined(USE_REVERB)
const uint8_t num_fx = 4 ;
# else
# else
const uint8_t num_fx = 3 ;
# endif
# endif
float new_level [ num_fx ] ;
new_level [ CHORUS ] = master_mixer_level [ CHORUS ] / float ( num_fx ) ;
new_level [ DELAY ] = master_mixer_level [ DELAY ] / float ( num_fx ) ;
# if defined(USE_REVERB)
# if defined(USE_REVERB)
new_level [ REVERB ] = master_mixer_level [ REVERB ] / float ( num_fx ) ;
new_level [ DEXED ] = 1.0 - new_level [ CHORUS ] - new_level [ DELAY ] - new_level [ REVERB ] ;
# else
# else
new_level [ DEXED ] = 1.0 - new_level [ CHORUS ] - new_level [ DELAY ] ;
# endif
master_mixer_r . gain ( DEXED , new_level [ DEXED ] ) ;
master_mixer_l . gain ( DEXED , new_level [ DEXED ] ) ;
master_mixer_r . gain ( CHORUS , new_level [ CHORUS ] ) ;
master_mixer_l . gain ( CHORUS , new_level [ CHORUS ] ) ;
master_mixer_r . gain ( DELAY , new_level [ DELAY ] ) ;
master_mixer_l . gain ( DELAY , new_level [ DELAY ] ) ;
# if defined(USE_REVERB)
master_mixer_r . gain ( REVERB , new_level [ REVERB ] ) ;
master_mixer_l . gain ( REVERB , new_level [ REVERB ] ) ;
# endif
# ifdef DEBUG
# endif
master_mixer_r . gain ( DEXED , new_level [ DEXED ] ) ;
master_mixer_l . gain ( DEXED , new_level [ DEXED ] ) ;
master_mixer_r . gain ( CHORUS , new_level [ CHORUS ] ) ;
master_mixer_l . gain ( CHORUS , new_level [ CHORUS ] ) ;
master_mixer_r . gain ( DELAY , new_level [ DELAY ] ) ;
master_mixer_l . gain ( DELAY , new_level [ DELAY ] ) ;
# if defined(USE_REVERB)
master_mixer_r . gain ( REVERB , new_level [ REVERB ] ) ;
master_mixer_l . gain ( REVERB , new_level [ REVERB ] ) ;
# endif
# ifdef DEBUG
Serial . print ( F ( " Volumes for master_mixer(type= " ) ) ;
Serial . print ( type , DEC ) ;
Serial . print ( F ( " ,level= " ) ) ;
@ -1512,14 +1512,15 @@ void set_master_mixer_gain(uint8_t type, float level)
Serial . print ( new_level [ CHORUS ] , 2 ) ;
Serial . print ( F ( " DELAY= " ) ) ;
Serial . print ( new_level [ DELAY ] , 2 ) ;
# if defined(USE_REVERB)
# if defined(USE_REVERB)
Serial . print ( F ( " REVERB= " ) ) ;
Serial . print ( new_level [ REVERB ] , 2 ) ;
# endif
# endif
Serial . println ( ) ;
# endif
}
# endif
}
*/
/******************************************************************************
DEBUG HELPER