Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <wavTrigger.h>
- unsigned long time;
- uint8_t matrice = B11111111 ;
- uint8_t previous_matrice = B11111111;
- uint8_t previous_vmatrice = B11111111;
- volatile int Delay=4;
- volatile int gain=5;
- byte number = 0;
- wavTrigger wTrig; // Our WAV Trigger object
- int lastmusic=0;
- int playhistorique[13];
- int canal=0;
- int nouv = 0;
- void setup() {
- //init des entrées :
- DDRA=B00000000;
- //pullup sur les entrées
- PORTA=B11111111;
- //setup wav trigger
- delay(100); //attente boot wav trigger
- wTrig.start();
- delay(10);
- // Send a stop-all command and reset the sample-rate offset, in case we have
- // reset while the WAV Trigger was already playing.
- wTrig.stopAllTracks();
- wTrig.samplerateOffset(0);
- // Enable track reporting from the WAV Trigger
- wTrig.setReporting(false);
- // Allow time for the WAV Trigger to read sd card
- delay(100);
- wTrig.setAmpPwr(1);
- wTrig.masterGain(gain);
- }
- void PlayWavMatrice(uint8_t sequence)
- {
- switch (sequence) {
- case 0:
- wTrig.stopAllTracks();
- Serial1.println("sigal 0 recu : stopAllTracks");
- break;
- case 119:
- wTrig.trackFade(lastmusic, -50, 5000, 1);
- Serial1.println("sigal 119 recu : fading last music");
- break;
- case 255:
- break;
- default:
- if ( (sequence<=15) || ((sequence>=32) && (sequence<=38)) )
- {
- if (sequence != lastmusic)
- {
- wTrig.trackStop(lastmusic);
- lastmusic=sequence;
- wTrig.trackPlayPoly(sequence);
- wTrig.trackLoop(sequence, 1);
- }
- }
- else
- {
- playhistorique[canal%12]=sequence;
- wTrig.trackStop(playhistorique[canal%12]);
- canal++;
- wTrig.trackPlayPoly(sequence);
- }
- break;
- }
- }
- void loop() {
- matrice = PINA; //on lit la séquence de bit
- //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é.
- // du coup on note le temps lors de la première apparition et on attend que le delay soit atteint.
- if ( matrice != previous_matrice ) //si la séquence est nouvelle
- {
- time=millis();
- nouv=1;
- }
- else
- {
- 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 ...
- {
- time=millis();
- PlayWavMatrice(matrice);
- nouv=0;
- previous_vmatrice=matrice;
- }
- }
- previous_matrice=matrice;
- }
Add Comment
Please, Sign In to add comment