@ -73,6 +73,10 @@ AudioAmplifier volume_l;
AudioEffectStereoMono stereo2mono ;
AudioAnalyzePeak master_peak_r ;
AudioAnalyzePeak master_peak_l ;
# if defined(ANTIALIAS_FRQ)
AudioFilterBiquad antialias_r ;
AudioFilterBiquad antialias_l ;
# endif
# if defined(TEENSY_AUDIO_BOARD) && defined(SGTL5000_AUDIO_THRU)
AudioMixer4 audio_thru_mixer_r ;
AudioMixer4 audio_thru_mixer_l ;
@ -92,59 +96,66 @@ AudioConnection patchCord2(freeverb_r, 0, master_mixer_r, 3);
AudioConnection patchCord3 ( freeverb_l , 0 , master_mixer_l , 3 ) ;
# endif
# endif
# if defined(ANTIALIAS_FRQ)
AudioConnection patchCord6 ( master_mixer_r , antialias_r ) ;
AudioConnection patchCord7 ( master_mixer_l , antialias_l ) ;
AudioConnection patchCord8 ( antialias_r , volume_r ) ;
AudioConnection patchCord9 ( antialias_l , volume_l ) ;
# else
AudioConnection patchCord6 ( master_mixer_r , volume_r ) ;
AudioConnection patchCord7 ( master_mixer_l , volume_l ) ;
AudioConnection patchCord8 ( volume_r , 0 , stereo2mono , 0 ) ;
AudioConnection patchCord9 ( volume_l , 0 , stereo2mono , 1 ) ;
AudioConnection patchCord10 ( stereo2mono , 0 , master_peak_r , 0 ) ;
AudioConnection patchCord11 ( stereo2mono , 0 , master_peak_l , 0 ) ;
# endif
AudioConnection patchCord10 ( volume_r , 0 , stereo2mono , 0 ) ;
AudioConnection patchCord11 ( volume_l , 0 , stereo2mono , 1 ) ;
AudioConnection patchCord12 ( stereo2mono , 0 , master_peak_r , 0 ) ;
AudioConnection patchCord13 ( stereo2mono , 0 , master_peak_l , 0 ) ;
// Outputs
# if defined(TEENSY_AUDIO_BOARD)
AudioOutputI2S i2s1 ;
# ifndef SGTL5000_AUDIO_THRU
AudioConnection patchCord12 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord13 ( stereo2mono , 1 , i2s1 , 1 ) ;
AudioConnection patchCord14 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord15 ( stereo2mono , 1 , i2s1 , 1 ) ;
# endif
AudioControlSGTL5000 sgtl5000_1 ;
# elif defined (I2S_AUDIO_ONLY)
AudioOutputI2S i2s1 ;
AudioConnection patchCord12 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord13 ( stereo2mono , 1 , i2s1 , 1 ) ;
AudioConnection patchCord14 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord15 ( stereo2mono , 1 , i2s1 , 1 ) ;
# elif defined(TGA_AUDIO_BOARD)
AudioOutputI2S i2s1 ;
AudioConnection patchCord12 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord13 ( stereo2mono , 1 , i2s1 , 1 ) ;
AudioConnection patchCord14 ( stereo2mono , 0 , i2s1 , 0 ) ;
AudioConnection patchCord15 ( stereo2mono , 1 , i2s1 , 1 ) ;
AudioControlWM8731master wm8731_1 ;
# elif defined(PT8211_AUDIO)
AudioOutputPT8211 pt8211_1 ;
AudioConnection patchCord12 ( stereo2mono , 0 , pt8211_1 , 0 ) ;
AudioConnection patchCord13 ( stereo2mono , 1 , pt8211_1 , 1 ) ;
AudioConnection patchCord14 ( stereo2mono , 0 , pt8211_1 , 0 ) ;
AudioConnection patchCord15 ( stereo2mono , 1 , pt8211_1 , 1 ) ;
# elif defined(TEENSY_DAC_SYMMETRIC)
AudioOutputAnalogStereo dacOut ;
AudioMixer4 invMixer ;
AudioConnection patchCord12 ( stereo2mono , 0 , dacOut , 0 ) ;
AudioConnection patchCord13 ( stereo2mono , 1 , invMixer , 0 ) ;
AudioConnection patchCord14 ( invMixer , 0 , dacOut , 1 ) ;
AudioConnection patchCord14 ( stereo2mono , 0 , dacOut , 0 ) ;
AudioConnection patchCord15 ( stereo2mono , 1 , invMixer , 0 ) ;
AudioConnection patchCord16 ( invMixer , 0 , dacOut , 1 ) ;
# elif defined(TEENSY_DAC)
AudioOutputAnalogStereo dacOut ;
AudioConnection patchCord12 ( stereo2mono , 0 , dacOut , 0 ) ;
AudioConnection patchCord13 ( stereo2mono , 1 , dacOut , 1 ) ;
AudioConnection patchCord14 ( stereo2mono , 0 , dacOut , 0 ) ;
AudioConnection patchCord15 ( stereo2mono , 1 , dacOut , 1 ) ;
# endif
# ifdef AUDIO_DEVICE_USB
AudioOutputUSB usb1 ;
AudioConnection patchCord15 ( stereo2mono , 0 , usb1 , 0 ) ;
AudioConnection patchCord16 ( stereo2mono , 1 , usb1 , 1 ) ;
AudioConnection patchCord17 ( stereo2mono , 0 , usb1 , 0 ) ;
AudioConnection patchCord18 ( stereo2mono , 1 , usb1 , 1 ) ;
# endif
# if defined(TEENSY_AUDIO_BOARD) && defined(SGTL5000_AUDIO_THRU)
AudioInputI2S i2s1in ;
AudioConnection patchCord17 ( stereo2mono , 0 , audio_thru_mixer_r , 0 ) ;
AudioConnection patchCord18 ( stereo2mono , 1 , audio_thru_mixer_l , 0 ) ;
AudioConnection patchCord19 ( i2s1in , 0 , audio_thru_mixer_r , 1 ) ;
AudioConnection patchCord20 ( i2s1in , 1 , audio_thru_mixer_l , 1 ) ;
AudioConnection patchCord21 ( audio_thru_mixer_r , 0 , i2s1 , 0 ) ;
AudioConnection patchCord22 ( audio_thru_mixer_l , 0 , i2s1 , 1 ) ;
AudioConnection patchCord19 ( stereo2mono , 0 , audio_thru_mixer_r , 0 ) ;
AudioConnection patchCord20 ( stereo2mono , 1 , audio_thru_mixer_l , 0 ) ;
AudioConnection patchCord2 1 ( i2s1in , 0 , audio_thru_mixer_r , 1 ) ;
AudioConnection patchCord22 ( i2s1in , 1 , audio_thru_mixer_l , 1 ) ;
AudioConnection patchCord23 ( audio_thru_mixer_r , 0 , i2s1 , 0 ) ;
AudioConnection patchCord24 ( audio_thru_mixer_l , 0 , i2s1 , 1 ) ;
# endif
//
@ -309,34 +320,24 @@ void setup()
sgtl5000_1 . unmuteHeadphone ( ) ;
sgtl5000_1 . unmuteLineout ( ) ;
sgtl5000_1 . volume ( SGTL5000_HEADPHONE_VOLUME , SGTL5000_HEADPHONE_VOLUME ) ; // Headphone volume
sgtl5000_1 . audioProcessorDisable ( ) ;
sgtl5000_1 . audioPostProcessorEnable ( ) ;
# ifdef SGTL5000_AUDIO_THRU
sgtl5000_1 . audioPreProcessorEnable ( ) ;
//sgtl5000_1.audioPreProcessorEnable();
sgtl5000_1 . inputSelect ( AUDIO_INPUT_LINEIN ) ;
sgtl5000_1 . lineInLevel ( 5 ) ;
sgtl5000_1 . adcHighPassFilterEnable ( ) ;
//sgtl5000_1.adcHighPassFilterEnable();
# endif
# ifdef SGTL5000_AUDIO_ENHANCE
sgtl5000_1 . audioPostProcessorEnable ( ) ;
sgtl5000_1 . enhanceBassEnable ( ) ;
sgtl5000_1 . enhanceBass ( 1.0 , 1.5 ) ; // enhanceBass(1.0, 1.0, 1, 2); // Configures the bass enhancement by setting the levels of the original stereo signal and the bass-enhanced mono level which will be mixed together. The high-pass filter may be enabled (0) or bypassed (1).
sgtl5000_1 . enhanceBass ( 1.0 , 1.5 , 0 , 5 ) ; // enhanceBass(1.0, 1.0, 1, 2); // Configures the bass enhancement by setting the levels of the original stereo signal and the bass-enhanced mono level which will be mixed together. The high-pass filter may be enabled (0) or bypassed (1).
sgtl5000_1 . surroundSoundEnable ( ) ;
sgtl5000_1 . surroundSound ( 7 , 3 ) ; // Configures virtual surround width from 0 (mono) to 7 (widest). select may be set to 1 (disable), 2 (mono input) or 3 (stereo input).
sgtl5000_1 . autoVolumeEnable ( ) ;
sgtl5000_1 . autoVolumeControl ( 1 , 1 , 1 , 0.9 , 0.01 , 0.05 ) ;
/* The cutoff frequency is specified as follows:
value frequency
0 80 Hz
1 100 Hz
2 125 Hz
3 150 Hz
4 175 Hz
5 200 Hz
6 225 Hz
*/
sgtl5000_1 . eqSelect ( 2 ) ; // Tone Control
sgtl5000_1 . eqBands ( EQ_BASS_DEFAULT , EQ_TREBLE_DEFAULT ) ;
# else
sgtl5000_1 . audioProcessorDisable ( ) ;
sgtl5000_1 . autoVolumeDisable ( ) ;
sgtl5000_1 . surroundSoundDisable ( ) ;
sgtl5000_1 . enhanceBassDisable ( ) ;
@ -412,6 +413,17 @@ void setup()
freeverb_antialias_l . setLowpass ( 3 , REVERB_ANTIALIAS_FRQ , 1.3 ) ;
# endif
# if defined(ANTIALIAS_FRQ)
antialias_r . setLowpass ( 0 , ANTIALIAS_FRQ , 0.54 ) ;
antialias_r . setLowpass ( 1 , ANTIALIAS_FRQ , 1.3 ) ;
antialias_r . setLowpass ( 2 , ANTIALIAS_FRQ , 0.54 ) ;
antialias_r . setLowpass ( 3 , ANTIALIAS_FRQ , 1.3 ) ;
antialias_l . setLowpass ( 0 , ANTIALIAS_FRQ , 0.54 ) ;
antialias_l . setLowpass ( 1 , ANTIALIAS_FRQ , 1.3 ) ;
antialias_l . setLowpass ( 2 , ANTIALIAS_FRQ , 0.54 ) ;
antialias_l . setLowpass ( 3 , ANTIALIAS_FRQ , 1.3 ) ;
# endif
initial_values_from_eeprom ( false ) ;
// start SD card