old demo that i want to try in mbed studio

Dependencies:   mbed SDFileSystem_Copy_of_mbed_version I2S

Revision:
48:01490448a05a
Parent:
47:9334a8f54997
Child:
49:ce6b36eb0d88
--- a/NotchingDemo.cpp	Sun Sep 08 20:33:59 2019 +0000
+++ b/NotchingDemo.cpp	Sun Sep 08 20:53:06 2019 +0000
@@ -33,6 +33,8 @@
 Timer NotchTimer;
 Timer timer_open;
 
+int BlockFlag = 0;
+
 Serial pc(USBTX, USBRX); // tx, rx //FOR DEBUGGING PROGRAM USING GNU SCREEN
 DigitalOut cs(p8);
 I2S i2s(I2S_TRANSMIT, p5, p6, p7);
@@ -315,9 +317,39 @@
 
 void FadeOutIsr()
 {
+    if (BlockFlag == 0) {
+        BlockFlag = 1;
+        fseek(wavfile2,44,SEEK_SET);
+        fseek(wavfile3,44,SEEK_SET);
+
+    } else if(BlockFlag == 1) {
+        BlockFlag = 2;
+        fclose(wavfile1);
+        fclose(wavfile2);
+        wavfile1 =   fopen("/sd/mydir/SoundDecoder_second/03.wav","rb");
+        if(wavfile1 == NULL) {
+            printf("Cannot Open wavfile1\n\r");
+        }
+        wavfile2 = fopen("/sd/mydir/SoundDecoder_second/10.wav","rb");
+        if(wavfile2 == NULL) {
+            printf("Cannot Open wavfile2\n\r");
+        }
+
+    } else {
+
+        BlockFlag = 1;
+        fclose(wavfile2);
+        fclose(wavfile3);
+        wavfile2 =   fopen("/sd/mydir/SoundDecoder_second/09.wav","rb");
+        if(wavfile2 == NULL) {
+            printf("Cannot Open wavfile2\n\r");
+        }
+        wavfile3 = fopen("/sd/mydir/SoundDecoder_second/02.wav","rb");
+        if(wavfile3 == NULL) {
+            printf("Cannot Open wavfile3\n\r");
+        }
+    }
     FadeFlag = 1;
-    fseek(wavfile2,44,SEEK_SET);
-    fseek(wavfile3,44,SEEK_SET);
     //printf("We are inside the FadeOut interrupt routine\n\r");
 
 }
@@ -406,31 +438,31 @@
     timer_open.reset();
     timer_open.start();
     wavfile1 = fopen("/sd/mydir/SoundDecoder_second/01.wav","rb");
-        if(wavfile1 == NULL) {
+    if(wavfile1 == NULL) {
         printf("Cannot Open wavfile1\n\r");
     }
-    
+
     timer_open.reset();
     printf("It took %d useconds to open file\n\r",timer_open.read_us());
-    
-    
+
+
     timer_open.start();
     wavfile2 = fopen("/sd/mydir/SoundDecoder_second/09.wav","rb");
-        if(wavfile2 == NULL) {
+    if(wavfile2 == NULL) {
         printf("Cannot Open wavfile2\n\r");
     }
     timer_open.reset();
     printf("It took %d useconds to open file\n\r",timer_open.read_us());
-    
+
     timer_open.start();
     wavfile3 = fopen("/sd/mydir/SoundDecoder_second/02.wav","rb");
-        if(wavfile3 == NULL) {
+    if(wavfile3 == NULL) {
         printf("Cannot Open wavfile3\n\r");
     }
     timer_open.reset();
     printf("It took %d useconds to open file\n\r",timer_open.read_us());
-    
-    
+
+
     Sound1 = ReadFileInfo(Sound1,wavfile1);
     Sound2 = ReadFileInfo(Sound2,wavfile2);
     Sound3 = ReadFileInfo(Sound3,wavfile3);
@@ -449,29 +481,29 @@
     Play_WaveFileLoop(Sound1,Sound2,Sound3,wavfile1,wavfile2,wavfile3);
     //Play_WaveFileDual(StartupWav,WavInfo_Startup);
     printf("finished playing Wav file\n\r");
-    
-    
+
+
     timer_open.reset();
     timer_open.start();
     fclose(wavfile1);
     timer_open.stop();
     printf("It took %d useconds to close file\n\r",timer_open.read_us());
-    
+
     timer_open.reset();
-    timer_open.start();    
+    timer_open.start();
     fclose(wavfile2);
     timer_open.stop();
-    printf("It took %d useconds to close file\n\r",timer_open.read_us());    
-    
-    
+    printf("It took %d useconds to close file\n\r",timer_open.read_us());
+
+
     timer_open.reset();
-    timer_open.start();     
+    timer_open.start();
     fclose(wavfile3);
     timer_open.stop();
     printf("It took %d useconds to close file\n\r",timer_open.read_us());
-    
-    
-    
+
+
+
     /************************************PLAY WAV FILE LOOP*******************/
     //Play_WaveFileLoop(Sound, NotchingSet);
     /************************************END OF PLAY WAV FILE LOOP*************/
@@ -676,91 +708,95 @@
 
 
 
-            /*Block1*/
-            /*Read in data for current sound files.  We only have 3 active engine noises at a time.
-            When it becomes time to transition up again, we then flip to the opposite block, and perform
-            the opposite operation.*/
+        /*Block1*/
+        /*Read in data for current sound files.  We only have 3 active engine noises at a time.
+        When it becomes time to transition up again, we then flip to the opposite block, and perform
+        the opposite operation.*/
+
+
 //Sound1=======================================================================================
-            if( slice1 == (Sound1.FileInfo.num_slices-1) ) {
-                slice1 = 0;
-                fseek(wavfile1,44,SEEK_SET);
-            }
-            if(feof(wavfile1)) {
-                fseek(wavfile1,44,SEEK_SET);
-            }
-            fread(Sound1.FileInfo.slice_buf,Sound1.FileInfo.FileFormat.block_align,1,wavfile1);
-            Sound1.data_sptr=(short *)Sound1.FileInfo.slice_buf;     // 16 bit samples
+        if( slice1 == (Sound1.FileInfo.num_slices-1) ) {
+            slice1 = 0;
+            fseek(wavfile1,44,SEEK_SET);
+        }
+        if(feof(wavfile1)) {
+            fseek(wavfile1,44,SEEK_SET);
+        }
+        fread(Sound1.FileInfo.slice_buf,Sound1.FileInfo.FileFormat.block_align,1,wavfile1);
+        Sound1.data_sptr=(short *)Sound1.FileInfo.slice_buf;     // 16 bit samples
 //=============================================================================================
 
 
 //Sound2=======================================================================================
-            fread(Sound2.FileInfo.slice_buf,Sound2.FileInfo.FileFormat.block_align,1,wavfile2);
-            Sound2.data_sptr=(short *)Sound2.FileInfo.slice_buf;     // 16 bit samples
+        fread(Sound2.FileInfo.slice_buf,Sound2.FileInfo.FileFormat.block_align,1,wavfile2);
+        Sound2.data_sptr=(short *)Sound2.FileInfo.slice_buf;     // 16 bit samples
 //=============================================================================================
 
 
 
 //Sound3=======================================================================================
-            fread(Sound3.FileInfo.slice_buf,Sound3.FileInfo.FileFormat.block_align,1,wavfile3);
-            Sound3.data_sptr=(short *)Sound3.FileInfo.slice_buf;     // 16 bit samples
+        fread(Sound3.FileInfo.slice_buf,Sound3.FileInfo.FileFormat.block_align,1,wavfile3);
+        Sound3.data_sptr=(short *)Sound3.FileInfo.slice_buf;     // 16 bit samples
 //=============================================================================================
 
 
 
-            /*Block2*/
+        /*Block2*/
 
-            //Read in data for current (i.e. now the previous notch, according to the index!!)
-            //We might not need this code here...as its probably done somewhere else??
-            //fread(Sounds[NotchingSet.Notch-1].FileInfo.slice_buf,Sounds[NotchingSet.Notch-1].FileInfo.FileFormat.block_align,1,Sounds[NotchingSet.Notch-1].FileInfo.WavFile);
-            //Sounds[NotchingSet.Notch-1].data_sptr = (short *)Sounds[NotchingSet.Notch-1].FileInfo.slice_buf;
-            //We are now performing this section above.
+        //Read in data for current (i.e. now the previous notch, according to the index!!)
+        //We might not need this code here...as its probably done somewhere else??
+        //fread(Sounds[NotchingSet.Notch-1].FileInfo.slice_buf,Sounds[NotchingSet.Notch-1].FileInfo.FileFormat.block_align,1,Sounds[NotchingSet.Notch-1].FileInfo.WavFile);
+        //Sounds[NotchingSet.Notch-1].data_sptr = (short *)Sounds[NotchingSet.Notch-1].FileInfo.slice_buf;
+        //We are now performing this section above.
 
 
         if(FadeFlag) {
-            if(feof(wavfile1)) {
-                fseek(wavfile1,44,SEEK_SET);
-            }
+            if(BlockFlag == 1) {
+                if(feof(wavfile1)) {
+                    fseek(wavfile1,44,SEEK_SET);
+                }
 
 
-            //require this to get the fadeout coefficient for Sound1.
-            NotchFadeOut.FadeCoeff = NotchFadeOut.FadeOut();//compute new FadeOut Coeff value
+                //require this to get the fadeout coefficient for Sound1.
+                NotchFadeOut.FadeCoeff = NotchFadeOut.FadeOut();//compute new FadeOut Coeff value
 
 
 
-            if( ((Sound2.FileInfo.FileData.subchunk2_size) - NotchFadeIn.Length - 2*11025) <= (ftell(wavfile2) + 44))
-            {
+                if( ((Sound2.FileInfo.FileData.subchunk2_size) - NotchFadeIn.Length - 2*11025) <= (ftell(wavfile2) + 44)) {
 
 
-                //required for calculating the fade In coefficient for Sound3
-                NotchFadeIn.FadeCoeff = NotchFadeIn.FadeIn();
+                    //required for calculating the fade In coefficient for Sound3
+                    NotchFadeIn.FadeCoeff = NotchFadeIn.FadeIn();
 
-                //Read In the next Notch
+                    //Read In the next Notch
 
-                /*
-                fread(Sounds[NotchingSet.Notch].FileInfo.slice_buf,Sounds[NotchingSet.Notch].FileInfo.FileFormat.block_align,1,Sounds[NotchingSet.Notch].FileInfo.WavFile);
-                Sounds[NotchingSet.Notch].data_sptr = (short *)Sounds[NotchingSet.Notch].FileInfo.slice_buf;
-                */
-                //no longer require the above section as we are reading in data for Sound3 (above, at beginning of function).
+                    /*
+                    fread(Sounds[NotchingSet.Notch].FileInfo.slice_buf,Sounds[NotchingSet.Notch].FileInfo.FileFormat.block_align,1,Sounds[NotchingSet.Notch].FileInfo.WavFile);
+                    Sounds[NotchingSet.Notch].data_sptr = (short *)Sounds[NotchingSet.Notch].FileInfo.slice_buf;
+                    */
+                    //no longer require the above section as we are reading in data for Sound3 (above, at beginning of function).
+
+                    if( (ftell(wavfile2) + 44) >= Sound2.FileInfo.FileData.subchunk2_size ) {
 
-                if( (ftell(wavfile2) + 44) >= Sound2.FileInfo.FileData.subchunk2_size ) {
+                        //need to explicitly test if this notation/syntax works for pointers....
+                        /*Was this ever tested?? no idea...
+                        If not then we need to pass in the 3 different "data_sptr" variables in separately, and not tied to a specific class
+                        or structure.*/  /*Confirmed 8/9/2019 this works!*/
 
-                    //need to explicitly test if this notation/syntax works for pointers....
-                    /*Was this ever tested?? no idea...
-                    If not then we need to pass in the 3 different "data_sptr" variables in separately, and not tied to a specific class
-                    or structure.*/
-                    *Sound1.data_sptr = *Sound3.data_sptr*NotchFadeIn.FadeCoeff;//Sound 3 by itself.
+                        *Sound1.data_sptr = *Sound3.data_sptr*NotchFadeIn.FadeCoeff;//Sound 3 by itself.
+                    } else {
+
+                        *Sound1.data_sptr = *Sound1.data_sptr*NotchFadeOut.FadeCoeff + *Sound2.data_sptr + *Sound3.data_sptr*NotchFadeIn.FadeCoeff;//Sounds 1, 2 and 3 Cross-fade.
+                        //probably later on redesign this to work with flags - that way it may be a little easier to debug any issues.
+                    }
+
                 } else {
-                    *Sound1.data_sptr = *Sound1.data_sptr*NotchFadeOut.FadeCoeff + *Sound2.data_sptr + *Sound3.data_sptr*NotchFadeIn.FadeCoeff;//Sounds 1, 2 and 3 Cross-fade.
-                    //probably later on redesign this to work with flags - that way it may be a little easier to debug any issues.
+                    *Sound1.data_sptr = *Sound1.data_sptr*NotchFadeOut.FadeCoeff + *Sound2.data_sptr;//Sound1 and Sound 2 cross fade
                 }
 
-            } else {
-                *Sound1.data_sptr = *Sound1.data_sptr*NotchFadeOut.FadeCoeff + *Sound2.data_sptr;//Sound1 and Sound 2 cross fade
             }
 
         }
-
-
         /********************END OF DATA ASSIGNMENT SECTION*************************************************/