int main() { bool timeCfgFirstRun = true, alrmCfgFirstRun = true; uint16_t alrmTmpCnt = 0; /* * (1) Set up all other pins and registers * (2) Set up the SPI module * (3) Enable global interrupts i.e. start operation */ tube_init(); // (1) spi_init(); // (2) sei(); // (3) //hack DDRD |= (1 << PD5); PORTD |= (1 << PD5); //end hack //PORTC |= ALRM; /* * The control loop. */ while (true) { while (PIND & TIME_SET) { if (timeCfgFirstRun) { PRR |= (1 << PRTIM2); // disable time timeCfgFirstRun = false; } hms_set(&time); } if (timeCfgFirstRun == false) { timeCfgFirstRun = true; PRR &= ~(1 << PRTIM2); // reenable time } while (PIND & ALRM_SET) { //code to handle alarm setting here if (alrmCfgFirstRun) { alrmCfgFirstRun = false; disp = &alarm; } hms_set(&alarm); } if (alrmCfgFirstRun == false) { alrmCfgFirstRun = true; disp = &time; } if (PINC & ALRM_BTN) { alrmTmpCnt++; } if (alrmTmpCnt == DEBOUNCE_MAX) { alrmTmpCnt = 0; alarmOn = !alarmOn; } } return 0; }
static void init(void) { bitmaps_init(); mqueue_init(); tube_init(); bus_init(); train_init(); settings_restore(); win_main_menu_create(); win_main_menu_show(true); analytics_track_event("app.start", " "); time_started = time(NULL); }
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; } */ } }