titi2097

flipwave_minimal_v1

Nov 6th, 2019
73
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <wavTrigger.h>
  2.  
  3.  
  4. unsigned long time;
  5. uint8_t matrice = B11111111 ;
  6. uint8_t previous_matrice = B11111111;
  7. uint8_t previous_vmatrice = B11111111;
  8. volatile int Delay=4;
  9. volatile int gain=5;
  10. byte number = 0;
  11. wavTrigger wTrig;             // Our WAV Trigger object
  12. int lastmusic=0;
  13. int playhistorique[13];
  14. int canal=0;
  15. int  nouv = 0;
  16.  
  17.  
  18.  
  19. void setup() {        
  20.   //init des entrées :
  21.   DDRA=B00000000;
  22.   //pullup sur les entrées
  23.   PORTA=B11111111;
  24.  //setup wav trigger
  25.   delay(100); //attente boot wav trigger
  26.   wTrig.start();
  27.   delay(10);        
  28.   // Send a stop-all command and reset the sample-rate offset, in case we have
  29.   //  reset while the WAV Trigger was already playing.
  30.   wTrig.stopAllTracks();
  31.   wTrig.samplerateOffset(0);
  32.     // Enable track reporting from the WAV Trigger
  33.    wTrig.setReporting(false);
  34.   // Allow time for the WAV Trigger to read sd card
  35.   delay(100);
  36.   wTrig.setAmpPwr(1);
  37.   wTrig.masterGain(gain);
  38. }
  39.  
  40.  
  41. void PlayWavMatrice(uint8_t sequence)
  42. {  
  43.   switch (sequence) {
  44.   case 0:
  45.     wTrig.stopAllTracks();
  46.     Serial1.println("sigal 0 recu : stopAllTracks");
  47.     break;
  48.   case 119:
  49.     wTrig.trackFade(lastmusic, -50, 5000, 1);    
  50.     Serial1.println("sigal 119 recu : fading last music");
  51.     break;
  52.   case 255:
  53.     break;
  54.   default:
  55.           if ( (sequence<=15) || ((sequence>=32) && (sequence<=38)) )
  56.           {
  57.             if (sequence != lastmusic)
  58.              {
  59.                 wTrig.trackStop(lastmusic);
  60.                 lastmusic=sequence;
  61.                 wTrig.trackPlayPoly(sequence);
  62.                 wTrig.trackLoop(sequence, 1);
  63.              }            
  64.           }
  65.           else
  66.           {
  67.               playhistorique[canal%12]=sequence;
  68.               wTrig.trackStop(playhistorique[canal%12]);
  69.               canal++;
  70.               wTrig.trackPlayPoly(sequence);
  71.           }                    
  72.     break;
  73.  }
  74. }
  75.  
  76.  
  77. void loop() {  
  78.            matrice = PINA;  //on lit la séquence de bit
  79.  
  80.  
  81.           //la séquence est traitée si elle est 'stable' plus de x ms. celui pour éviter le prrndre en compte les passages de 0 & 1 non instantanné.
  82.           // du coup on note le temps lors de la première apparition et on attend que le delay soit atteint.
  83.            
  84.           if ( matrice !=  previous_matrice ) //si la séquence est nouvelle
  85.           {  
  86.                                 time=millis();
  87.                                 nouv=1;            
  88.           }
  89.           else
  90.           {
  91.                       if ((millis()- time >Delay ) &&  (nouv==1) && ( matrice !=  previous_vmatrice )) //si la sequence est stable depuis plus de "Delay" ms et qu'elle n'a pas été lu précédement alors ...
  92.                       {      
  93.                                       time=millis();
  94.                                       PlayWavMatrice(matrice);
  95.                                       nouv=0;
  96.                                       previous_vmatrice=matrice;
  97.                        }
  98.             }
  99.           previous_matrice=matrice;
  100.   }
RAW Paste Data