void CodecController::init(ApplicationSettings& settings){ // void CodecController::init(uint32_t frequency, I2SProtocol protocol, I2SFormat format, bool master){ // setPin(GPIOA, GPIO_Pin_6); // DEBUG // settings.audio_samplingrate = frequency; // settings.audio_protocol = protocol; // settings.audio_format = format; // settings.audio_codec_master = master; /* configure codec */ setCodecMaster(settings.audio_codec_master); setCodecProtocol(settings.audio_codec_protocol); setCodecFormat(settings.audio_codec_format); /* Configure the I2S peripheral */ if(Codec_AudioInterface_Init(settings.audio_samplingrate, settings.audio_codec_master, settings.audio_codec_protocol, settings.audio_codec_format) != 0) assert_param(false); setInputGainLeft(settings.inputGainLeft); setInputGainRight(settings.inputGainRight); setOutputGainLeft(settings.outputGainLeft); setOutputGainRight(settings.outputGainRight); I2S_Block_Init(); // clearPin(GPIOA, GPIO_Pin_6); // DEBUG }
/******************************************************************************* * Function Name : main * Description : Main program. * Input : None * Output : None * Return : None *******************************************************************************/ int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); //FSMC config GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_ResetBits(GPIOD , GPIO_Pin_7); //CS=0; LCD_Initializtion(); NVIC_Configuration();/* Interrupt Config (SD/usart) */ USART_Configuration(); GET_SYSclock(); //Prepare for audio processing (nothing special) Audio_Init(); //SETUP I2S2/I2S3 TX/RX GPIO pins and configure i2s2/i2s3 Codec_Init(48000); //setup codec settings via i2c to the uda1380 chip UDA1380_Configuration(); //Setup the DMA/interrupts for I2s2 and I2s3 I2S_Block_Init(); //begin audio processing/playback I2S_Block_PlayRec((uint32_t)&tx_buffer, (uint32_t)&rx_buffer, BUFF_LEN); while (1) {} }
void CodecController::init(ApplicationSettings& settings){ // setPin(GPIOA, GPIO_Pin_6); // DEBUG /* configure codec */ setCodecMaster(settings.audio_codec_master); setCodecProtocol(settings.audio_codec_protocol); setCodecFormat(settings.audio_codec_format); /* Configure the I2S peripheral */ if(Codec_AudioInterface_Init(settings.audio_samplingrate, settings.audio_codec_master, settings.audio_codec_protocol, settings.audio_codec_format) != 0) assert_param(false); setInputGainLeft(settings.inputGainLeft); setInputGainRight(settings.inputGainRight); setOutputGainLeft(settings.outputGainLeft); setOutputGainRight(settings.outputGainRight); I2S_Block_Init(tx_buffer, rx_buffer, settings.audio_blocksize); setBlocksize(settings.audio_blocksize); // clearPin(GPIOA, GPIO_Pin_6); // DEBUG }
void main(void) { int32_t t_spread; uint32_t i; NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8000); LED_ON(LED_RING_OE); //actually turns the LED ring off LEDDriver_Init(5); for (i=0;i<26;i++) LEDDriver_setRGBLED(i,0); LED_OFF(LED_RING_OE); //actually turns the LED ring on flag_update_LED_ring=1; init_inouts(); init_rotary(); init_envout_pwm(); ADC1_Init((uint16_t *)adc_buffer); ADC3_Init((uint16_t *)potadc_buffer); Codec_Init(SAMPLERATE); delay(); set_default_param_values(); set_default_color_scheme(); set_default_user_scalebank(); //overwrite default parameters if a startup bank exists cur_param_bank = load_startup_params(); if (cur_param_bank == 0xFF){ factory_reset(); cur_param_bank=0; } I2S_Block_Init(); TIM6_Config(); DAC_Ch1_NoiseConfig(); spread=(adc_buffer[SPREAD_ADC] >> 8) + 1; I2S_Block_PlayRec(); //update_spread(1); while(1){ check_errors(); param_read_switches(); update_ENVOUT_PWM(); update_LED_ring(); update_lock_leds(); t_spread=read_spread(); if (t_spread!=-1) update_spread(t_spread); process_lock_jacks(); process_lock_buttons(); param_read_q(); param_read_freq_nudge(); param_read_channel_level(); process_rotary_button(); process_rotary_rotation(); if (ui_mode==PLAY) check_rotary_pressed_repeatedly(); if (ui_mode==EDIT_SCALES) handle_edit_scale(); if (ui_mode==EDIT_COLORS) handle_edit_colors(); if (ui_mode==SELECT_PARAMS){ handle_freqpot_changing_filtermode(); handle_slider_changing_clipmode(); } if (do_ROTUP){ do_ROTUP=0; rotate_up(); } if (do_ROTDOWN){ do_ROTDOWN=0; rotate_down(); } process_rotateCV(); process_scaleCV(); } //end main loop } //end main()
void main(void) { int16_t x; // all generator inits LPCAnalyzer_init(); init_synth(); // which one? --> klatt rsynth !!!! RENAME! sp0256_init(); lpc_init(); simpleklatt_init(); sam_init(); sam_newsay(); // TEST! tms5200_init(); tms5200_newsay(); channelv_init(); tube_init(); // tube_newsay(); BANDS_Init_(); Vocoder_Init(32000.0f); digitalk_init(); digitalk_newsay(0); nvp_init(); sample_rate_init(); initbraidworm(); // re_name initvoicform(); formy=malloc(sizeof(Formlet)); formanty=malloc(sizeof(Formant)); blipper=malloc(sizeof(Blip)); RLPFer=malloc(sizeof(RLPF)); Formlet_init(formy); Formant_init(formanty); Blip_init(blipper); RLPF_init(RLPFer); NTube_init(&tuber); // wavetable_init(&wavtable, crowtable_slower, 283); // now last arg as length of table=less than 512 wavetable_init(&wavtable, plaguetable_simplesir, 328); // now last arg as length of table=less than 512 // wavetable_init(&wavtable, table_kahrs000, 160); // now last arg as length of table=less than 512 // addwormsans(&myworm, 10.0f,10.0f,200.0f, 200.0f, wanderworm); // RavenTube_init(); // newBB=BiQuad_new(LPF, 1.0, 1500, 32000, 0.68); // TEST? //////// ADC1_Init((uint16_t *)adc_buffer); Codec_Init(32000); I2S_Block_Init(); I2S_Block_PlayRec((uint32_t)&tx_buffer, (uint32_t)&rx_buffer, BUFF_LEN); // Audio_Init(); not needed // tube_init(); // tube_newsay(); // initializeSynthesizer(); // synthesize(); // lpc_newsay(1); // SAMINIT(); // test audio fill /* for (x=0;x<32768;x++){ audio_buffer[x]=tube_get_sample(); }*/ // int writepos=run_holmes(writepos); /* for (x=0;x<32767;x++){ audio_buffer[x]=tube_get_sample(); } */ while(1) { // testing changing test_elm // u8 axis=adc_buffer[SELX]>>8; // 16*3=48 // change element, change length? leave stress as is 0 // test_elm[axis*3]=phoneme_prob_remap[adc_buffer[SELY]>>6]; // how many phonemes?=64 // test_elm[(axis*3)+1]=(adc_buffer[SELZ]>>7)+1; // length say max 32 // oldmode=mode; // mode=adc_buffer[MODE]>>7; // 12 bits to say 32 modes (5 bits) // mode=10; // TESTING // if(lpc_busy() == 0) lpc_newsay(adc_buffer[SELX]>>6); // if(lpc_busy() != 0) lpc_running(); // so just writes once otherwise gets messy... // if there is a change in mode do something? // if (oldmode!=mode){ // maintrigger=1; // } /* if (maintrigger==1) {writepos=0;trigger=1;} // STRIP_OUT switch(mode){ case 0:// rsynth/klatt-single phoneme if (trigger==1){ trigger=0; u8 phonemm=phoneme_prob_remap[(adc_buffer[SELX]>>6)]; // 7bits=128 %69//6=64 pair xx=klatt_phoneme(writepos,phonemm); generated=xx.generated; writepos=xx.writepos; } break; case 1: // rsynth/klatt-chain of phonemes writepos=run_holmes(writepos); break; case 2: // vosim free running writepos=runVOSIM_SC(writepos); break; case 3: // VOSIMondemand if (trigger==1){ trigger=0; float freqwency = (float)((adc_buffer[SELX])+100);//1500.0f; float cycles = (float)((adc_buffer[SELY]>>4)+2); float decay = ((float)(adc_buffer[SELZ])/4096.0f); // TODO as SELZ! pair xx=demandVOSIM_SC(writepos,freqwency,cycles,decay); generated=xx.generated; writepos=xx.writepos; } break; case 9: // SAM full. no writepos though and just a simple proof here if (trigger==0){ SAMMain(); trigger=1; } break; case 10: if(lpc_busy() == 0) lpc_newsay(adc_buffer[SELX]>>6); if(lpc_busy() != 0) lpc_running(); // so just writes once otherwise gets messy... break; case 19: // parwave/simpleklatt dosimpleklatt(); break; } // cases // now readpos is back to one now that we have written something if (maintrigger==1) { readpos=0; maintrigger=0; } */ } }