static void teensyAudioOutput() { #if (USE_AUDIO_INPUT==true) adc_count = 0; startSecondAudioADC(); #endif analogWrite(AUDIO_CHANNEL_1_PIN, (int)output_buffer.read()); }
static void pwmAudioOutput() { #if (USE_AUDIO_INPUT==true) adc_count = 0; startSecondAudioADC(); #endif #if (AUDIO_MODE == HIFI) int out = output_buffer.read(); pwmWrite(AUDIO_CHANNEL_1_PIN, out & ((1 << AUDIO_BITS_PER_CHANNEL) - 1)); pwmWrite(AUDIO_CHANNEL_1_PIN_HIGH, out >> AUDIO_BITS_PER_CHANNEL); #else pwmWrite(AUDIO_CHANNEL_1_PIN, (int)output_buffer.read()); #endif }
void dummy_function(void) #endif { #if (USE_AUDIO_INPUT==true) adc_count = 0; startSecondAudioADC(); #endif // read about dual pwm at http://www.openmusiclabs.com/learning/digital/pwm-dac/dual-pwm-circuits/ // sketches at http://wiki.openmusiclabs.com/wiki/PWMDAC, http://wiki.openmusiclabs.com/wiki/MiniArDSP //if (!output_buffer.isEmpty()){ unsigned int out = output_buffer.read(); // 14 bit, 7 bits on each pin AUDIO_CHANNEL_1_HIGHUINT8_T_REGISTER = out >> 7; // B11111110000000 becomes B1111111 AUDIO_CHANNEL_1_lowByte_REGISTER = out & 127; // B01111111 //} }
ISR(TIMER1_OVF_vect, ISR_BLOCK) { #if (AUDIO_MODE == STANDARD_PLUS) && (AUDIO_RATE == 16384) // only update every second ISR, if lower audio rate static boolean alternate; alternate = !alternate; if(alternate) { #endif #if (USE_AUDIO_INPUT==true) adc_count = 0; startSecondAudioADC(); #endif //if (!output_buffer.isEmpty()) { /* output = output_buffer.read(); AUDIO_CHANNEL_1_OUTPUT_REGISTER = output; AUDIO_CHANNEL_2_OUTPUT_REGISTER = 0; */ AUDIO_CHANNEL_1_OUTPUT_REGISTER = output_buffer.read(); #if (STEREO_HACK == true) AUDIO_CHANNEL_2_OUTPUT_REGISTER = output_buffer2.read(); #endif //} // flip signal polarity - instead of signal going to 0 (both pins 0), it goes to pseudo-negative of its current value. // this would set non-inverted when setting sample value, and then inverted when top is reached (in an interrupt) // non-invert //TCCR1A |= _BV(COM1A1); // invert //TCCR1A |= ~_BV(COM1A1) #if (AUDIO_MODE == STANDARD_PLUS) && (AUDIO_RATE==16384) // all this conditional compilation is so clutsy! } #endif }
void dummy_function(void) #endif { #if (USE_AUDIO_INPUT==true) adc_count = 0; startSecondAudioADC(); #endif // read about dual pwm at http://www.openmusiclabs.com/learning/digital/pwm-dac/dual-pwm-circuits/ // sketches at http://wiki.openmusiclabs.com/wiki/PWMDAC, http://wiki.openmusiclabs.com/wiki/MiniArDSP //if (!output_buffer.isEmpty()){ unsigned int out = output_buffer.read(); // 14 bit, 7 bits on each pin //AUDIO_CHANNEL_1_highByte_REGISTER = out >> 7; // B00111111 10000000 becomes B1111111 // try to avoid looping over 7 shifts - need to check timing or disassemble to see what really happens unsigned int out_high = out<<1; // B00111111 10000000 becomes B01111111 00000000 AUDIO_CHANNEL_1_highByte_REGISTER = out_high >> 8; // B01111111 00000000 produces B01111111 // AUDIO_CHANNEL_1_lowByte_REGISTER = out & 127; //} }
ISR(TIMER1_OVF_vect, ISR_BLOCK) { #if (AUDIO_MODE == STANDARD_PLUS) && (AUDIO_RATE == 16384) // only update every second ISR, if lower audio rate static boolean alternate; alternate = !alternate; if(alternate) { #endif #if (USE_AUDIO_INPUT==true) adc_count = 0; startSecondAudioADC(); #endif //if (!output_buffer.isEmpty()) { AUDIO_CHANNEL_1_OUTPUT_REGISTER = output_buffer.read(); //} #if (AUDIO_MODE == STANDARD_PLUS) && (AUDIO_RATE==16384) // all this conditional compilation is so clutsy! } #endif }