old demo that i want to try in mbed studio

Dependencies:   mbed SDFileSystem_Copy_of_mbed_version I2S

Files at this revision

API Documentation at this revision

Comitter:
roryhand
Date:
Sun Sep 08 20:53:06 2019 +0000
Parent:
47:9334a8f54997
Child:
49:ce6b36eb0d88
Commit message:
WIP - beginning to add in extra code to make Transitions between notches work. Haven't figured out how to get passing in the names to work, but this will come later. Need to check that opening and closing dynamically wont stop it sounding good!!

Changed in this revision

NotchingDemo.cpp Show annotated file Show diff for this revision Revisions of this file
--- 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*************************************************/