Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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);
}
Ejemplo n.º 3
0
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;
  }
	   */
    }
}