Rory Hand / Mbed 2 deprecated NotchingDemo

Dependencies:   mbed SDFileSystem_Copy_of_mbed_version I2S

Committer:
roryhand
Date:
Sun Mar 17 22:26:33 2019 +0000
Revision:
15:74ddace1b118
Parent:
14:cc555d14e3f8
Child:
16:5e3420d0509b
mbed is crap and is broken, can instroduce one more file info being read in and it hangs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
roryhand 1:aac37edee302 1
roryhand 0:e89d7a0bfa3b 2 // 24/03/2018 update - I appear to be able to address the device and write something, as I am getting an ACK returned from the i2c write() function.
roryhand 0:e89d7a0bfa3b 3 //however if i use the write function with 4 arguments (as opposed to just 1 argument) then it doesnt work
roryhand 0:e89d7a0bfa3b 4 //only works with the 1 argument version!!!
roryhand 0:e89d7a0bfa3b 5
roryhand 0:e89d7a0bfa3b 6
roryhand 0:e89d7a0bfa3b 7 //THIS VERSION WORKED, CHANGED SOME THINGS, THEN CHANGED THEM BACK. NOW IT NO LONGER WORKS!!!!
roryhand 0:e89d7a0bfa3b 8 #include "mbed.h"
roryhand 0:e89d7a0bfa3b 9 #include "math.h"
roryhand 1:aac37edee302 10 #include "I2S.h"
roryhand 1:aac37edee302 11 #include "SDFileSystem.h"
roryhand 0:e89d7a0bfa3b 12 #include "wm8731_Config_setup.h"
roryhand 0:e89d7a0bfa3b 13 #include "WOLFSON_config_consts.h"
roryhand 0:e89d7a0bfa3b 14 #include <stdlib.h>
roryhand 0:e89d7a0bfa3b 15 #include <vector>
roryhand 0:e89d7a0bfa3b 16 #include <string>
roryhand 0:e89d7a0bfa3b 17 #define sample_freq 11025
roryhand 1:aac37edee302 18 #pragma import __use_two_region_memory
roryhand 0:e89d7a0bfa3b 19 DigitalOut myled(LED1);
roryhand 0:e89d7a0bfa3b 20 DigitalOut led2(LED2);
roryhand 0:e89d7a0bfa3b 21 DigitalOut led3(LED3);
roryhand 0:e89d7a0bfa3b 22 DigitalIn NotchUp(p16);
roryhand 0:e89d7a0bfa3b 23 InterruptIn Horn(p16);
roryhand 0:e89d7a0bfa3b 24 Ticker sampletick;
roryhand 0:e89d7a0bfa3b 25 Ticker BellTick;
roryhand 0:e89d7a0bfa3b 26 Ticker EdTick;
roryhand 0:e89d7a0bfa3b 27 Ticker TickFadeOut;
roryhand 3:6169aeeaeeb4 28 Ticker TestTick;
roryhand 0:e89d7a0bfa3b 29 Timer t;
roryhand 0:e89d7a0bfa3b 30 Timer t2;
roryhand 3:6169aeeaeeb4 31 Timer NotchTimer;
roryhand 0:e89d7a0bfa3b 32
roryhand 0:e89d7a0bfa3b 33 Serial pc(USBTX, USBRX); // tx, rx //FOR DEBUGGING PROGRAM USING GNU SCREEN
roryhand 0:e89d7a0bfa3b 34 DigitalOut cs(p8);
roryhand 0:e89d7a0bfa3b 35 I2S i2s(I2S_TRANSMIT, p5, p6, p7);
roryhand 0:e89d7a0bfa3b 36 SDFileSystem sd(p11, p12, p13, p8, "sd"); // the new pinout that i am using
roryhand 0:e89d7a0bfa3b 37
roryhand 0:e89d7a0bfa3b 38
roryhand 0:e89d7a0bfa3b 39 /*struct A {
roryhand 0:e89d7a0bfa3b 40 int data;
roryhand 0:e89d7a0bfa3b 41 B b;
roryhand 0:e89d7a0bfa3b 42 };*/
roryhand 0:e89d7a0bfa3b 43
roryhand 0:e89d7a0bfa3b 44
roryhand 0:e89d7a0bfa3b 45
roryhand 0:e89d7a0bfa3b 46
roryhand 0:e89d7a0bfa3b 47 class classFade
roryhand 0:e89d7a0bfa3b 48 {
roryhand 1:aac37edee302 49 public:
roryhand 1:aac37edee302 50
roryhand 0:e89d7a0bfa3b 51 float powerval;
roryhand 0:e89d7a0bfa3b 52 float FadeIteration;
roryhand 0:e89d7a0bfa3b 53 float DecayFactor;
roryhand 0:e89d7a0bfa3b 54 float Denom;
roryhand 0:e89d7a0bfa3b 55 float FadeCoeff;
roryhand 0:e89d7a0bfa3b 56 float Natural_Exp;
roryhand 0:e89d7a0bfa3b 57 int LengthSecs;
roryhand 0:e89d7a0bfa3b 58 int Length;
roryhand 1:aac37edee302 59
roryhand 0:e89d7a0bfa3b 60 //member Functions
roryhand 0:e89d7a0bfa3b 61 float FadeOut(void)
roryhand 0:e89d7a0bfa3b 62 {
roryhand 0:e89d7a0bfa3b 63 powerval = -FadeIteration/Denom;
roryhand 1:aac37edee302 64 if (FadeIteration >=Length) {
roryhand 1:aac37edee302 65 FadeCoeff = 0;
roryhand 1:aac37edee302 66
roryhand 1:aac37edee302 67 } else {
roryhand 0:e89d7a0bfa3b 68 FadeCoeff = (Length - FadeIteration)/Length;
roryhand 0:e89d7a0bfa3b 69 }
roryhand 1:aac37edee302 70 FadeIteration = FadeIteration + 1;
roryhand 1:aac37edee302 71 return FadeCoeff;
roryhand 1:aac37edee302 72
roryhand 1:aac37edee302 73 }
roryhand 1:aac37edee302 74 float FadeIn(void)
roryhand 0:e89d7a0bfa3b 75 {
roryhand 0:e89d7a0bfa3b 76 powerval = FadeIteration/Denom;
roryhand 1:aac37edee302 77 if (FadeIteration >=Length) {
roryhand 1:aac37edee302 78 FadeCoeff = 1;
roryhand 1:aac37edee302 79
roryhand 1:aac37edee302 80 } else {
roryhand 0:e89d7a0bfa3b 81 FadeCoeff = FadeIteration/Length;
roryhand 0:e89d7a0bfa3b 82 }
roryhand 0:e89d7a0bfa3b 83
roryhand 1:aac37edee302 84 FadeIteration = FadeIteration + 1;
roryhand 1:aac37edee302 85 return FadeCoeff;
roryhand 1:aac37edee302 86
roryhand 1:aac37edee302 87 }
roryhand 0:e89d7a0bfa3b 88 };
roryhand 0:e89d7a0bfa3b 89
roryhand 0:e89d7a0bfa3b 90 classFade IdleFadeOut;
roryhand 0:e89d7a0bfa3b 91 classFade N2FadeIn;
roryhand 0:e89d7a0bfa3b 92
roryhand 2:957d3b2afff4 93 classFade NotchFadeOut;
roryhand 2:957d3b2afff4 94 classFade NotchFadeIn;
roryhand 2:957d3b2afff4 95
roryhand 0:e89d7a0bfa3b 96
roryhand 0:e89d7a0bfa3b 97
roryhand 0:e89d7a0bfa3b 98
roryhand 0:e89d7a0bfa3b 99
roryhand 1:aac37edee302 100 typedef struct uFMT_STRUCT {
roryhand 1:aac37edee302 101 short comp_code;
roryhand 1:aac37edee302 102 short num_channels;
roryhand 1:aac37edee302 103 unsigned sample_rate;
roryhand 1:aac37edee302 104 unsigned avg_Bps;
roryhand 1:aac37edee302 105 short block_align;
roryhand 1:aac37edee302 106 short sig_bps;
roryhand 0:e89d7a0bfa3b 107 } FMT_STRUCT;
roryhand 0:e89d7a0bfa3b 108
roryhand 1:aac37edee302 109 typedef struct uNotch_STRUCT {
roryhand 1:aac37edee302 110 short Notch;
roryhand 1:aac37edee302 111 short NotchTransUp;
roryhand 1:aac37edee302 112 short NotchTransDown;
roryhand 1:aac37edee302 113 short NotchDirection;
roryhand 1:aac37edee302 114 } Notch_STRUCT;
roryhand 1:aac37edee302 115
roryhand 0:e89d7a0bfa3b 116 typedef struct uDATA_STRUCT {
roryhand 1:aac37edee302 117 unsigned subchunk2_ID;
roryhand 1:aac37edee302 118 unsigned subchunk2_size;
roryhand 1:aac37edee302 119 char * data_buf;
roryhand 1:aac37edee302 120 } DATA_STRUCT;
roryhand 0:e89d7a0bfa3b 121
roryhand 1:aac37edee302 122 typedef struct uWAV_FILE_STRUCT {
roryhand 1:aac37edee302 123 FILE *WavFile;
roryhand 1:aac37edee302 124 int id_number;
roryhand 1:aac37edee302 125 char *slice_buf;
roryhand 1:aac37edee302 126 int num_slices;
roryhand 1:aac37edee302 127 FMT_STRUCT FileFormat;
roryhand 1:aac37edee302 128 DATA_STRUCT FileData;
roryhand 0:e89d7a0bfa3b 129 } WAV_FILE_STRUCT;
roryhand 0:e89d7a0bfa3b 130
roryhand 0:e89d7a0bfa3b 131 /*typedef struct uWAV_FILE_STRUCT{
roryhand 1:aac37edee302 132 FILE* WavFile;
roryhand 1:aac37edee302 133
roryhand 1:aac37edee302 134
roryhand 0:e89d7a0bfa3b 135 }WAV_FILE_STRUCT;*/
roryhand 0:e89d7a0bfa3b 136 class classSoundFile
roryhand 0:e89d7a0bfa3b 137 {
roryhand 1:aac37edee302 138 public:
roryhand 1:aac37edee302 139
roryhand 1:aac37edee302 140 //add a class constructor
roryhand 1:aac37edee302 141 WAV_FILE_STRUCT FileInfo;
roryhand 2:957d3b2afff4 142 short * data_sptr;
roryhand 1:aac37edee302 143 //classSoundFile(string filename);//this is the constructor
roryhand 1:aac37edee302 144 //string filename;
roryhand 0:e89d7a0bfa3b 145 };
roryhand 0:e89d7a0bfa3b 146
roryhand 1:aac37edee302 147 //class constructor;
roryhand 1:aac37edee302 148 /*classSoundFile::classSoundFile(string filename)
roryhand 1:aac37edee302 149 {
roryhand 1:aac37edee302 150 //Declare RootFolder and the directory for the appropriate file.
roryhand 1:aac37edee302 151 //How we index into filename[] from the outside of this class is another
roryhand 1:aac37edee302 152 //issue...
roryhand 1:aac37edee302 153 FileInfo.WavFile = fopen("/sd/mydir/645Engine/Startup.wav","rb");
roryhand 1:aac37edee302 154 fseek(FileInfo.WavFile,20,SEEK_SET);
roryhand 1:aac37edee302 155 fread(&FileInfo.FileFormat,sizeof(FileInfo.FileFormat),1,FileInfo.WavFile);
roryhand 1:aac37edee302 156 printf("wav_format.sample_rate: %d\n\r",FileInfo.FileFormat.sample_rate);
roryhand 1:aac37edee302 157 fread(&FileInfo.FileData,sizeof(FileInfo.FileData),1,FileInfo.WavFile);
roryhand 1:aac37edee302 158 printf("wav_data.subchunk2_size: %d\n\r",FileInfo.FileData.subchunk2_size);
roryhand 1:aac37edee302 159 FileInfo.slice_buf = ( char *)malloc(FileInfo.FileFormat.block_align);
roryhand 1:aac37edee302 160 fread(FileInfo.slice_buf,FileInfo.FileFormat.block_align,1,FileInfo.WavFile); //This isnt actually required, its just a test
roryhand 1:aac37edee302 161 FileInfo.num_slices = FileInfo.FileData.subchunk2_size/FileInfo.FileFormat.block_align;
roryhand 1:aac37edee302 162 }*/
roryhand 1:aac37edee302 163
roryhand 0:e89d7a0bfa3b 164
roryhand 0:e89d7a0bfa3b 165 int i = 0;
roryhand 0:e89d7a0bfa3b 166 int h = 0;
roryhand 0:e89d7a0bfa3b 167 short bufflen = 1;
roryhand 0:e89d7a0bfa3b 168 int buffer[1];
roryhand 1:aac37edee302 169 int AudioFormat, NumChannels, SampleRate, BitsPerSample ;
roryhand 0:e89d7a0bfa3b 170 char *slice_buf;
roryhand 0:e89d7a0bfa3b 171 short *data_sptr;
roryhand 0:e89d7a0bfa3b 172 short *data_sptr_horn;
roryhand 0:e89d7a0bfa3b 173 short *data_sptr_IdleN2;
roryhand 0:e89d7a0bfa3b 174 short * data_sptr_bell;
roryhand 0:e89d7a0bfa3b 175 short * data_sptr_N2;
roryhand 0:e89d7a0bfa3b 176 short * data_sptr_Flange;
roryhand 0:e89d7a0bfa3b 177 unsigned char *data_bptr;
roryhand 0:e89d7a0bfa3b 178 int *data_wptr;
roryhand 0:e89d7a0bfa3b 179 unsigned channel;
roryhand 0:e89d7a0bfa3b 180 long slice, num_slices;
roryhand 0:e89d7a0bfa3b 181 int verbosity = 0;
roryhand 0:e89d7a0bfa3b 182 int verbosity2 = 0;
roryhand 0:e89d7a0bfa3b 183 int verbosity3 = 0;
roryhand 0:e89d7a0bfa3b 184 int verbosity4 = 0;
roryhand 0:e89d7a0bfa3b 185 int verbosity5 = 0;
roryhand 0:e89d7a0bfa3b 186 int interrupt_condition = 1;
roryhand 0:e89d7a0bfa3b 187 int sampling_freq = 11025;
roryhand 0:e89d7a0bfa3b 188 const int BufferLen = 2000;
roryhand 0:e89d7a0bfa3b 189 short Buffer1[BufferLen];
roryhand 0:e89d7a0bfa3b 190 short Buffer2[BufferLen];
roryhand 0:e89d7a0bfa3b 191 short place_hold1 = 0;
roryhand 0:e89d7a0bfa3b 192 short place_hold2 = 0;
roryhand 0:e89d7a0bfa3b 193
roryhand 3:6169aeeaeeb4 194
roryhand 3:6169aeeaeeb4 195 string FOLDER;
roryhand 3:6169aeeaeeb4 196 string RootFolder = "/sd/mydir/SoundDecoder/";
roryhand 3:6169aeeaeeb4 197 string filename[25];
roryhand 3:6169aeeaeeb4 198 classSoundFile Sound[22];
roryhand 3:6169aeeaeeb4 199
roryhand 0:e89d7a0bfa3b 200 volatile int flag1 = 1;
roryhand 0:e89d7a0bfa3b 201 volatile int flag2 = 0;
roryhand 0:e89d7a0bfa3b 202 volatile int flag3 = 1;
roryhand 0:e89d7a0bfa3b 203 volatile int flag4 = 0;
roryhand 0:e89d7a0bfa3b 204 int FLAGBUFF1 = 0;
roryhand 0:e89d7a0bfa3b 205 int FLAGBUFF2 = 0;
roryhand 0:e89d7a0bfa3b 206 int BellFlag = 0;
roryhand 0:e89d7a0bfa3b 207 int BellFlag2 = 0;
roryhand 0:e89d7a0bfa3b 208 int FadeFlag = 0;
roryhand 0:e89d7a0bfa3b 209 int DualEngineFlag = 0;
roryhand 0:e89d7a0bfa3b 210
roryhand 0:e89d7a0bfa3b 211
roryhand 0:e89d7a0bfa3b 212 short value[1];
roryhand 0:e89d7a0bfa3b 213 FILE *HornWav;
roryhand 0:e89d7a0bfa3b 214 FILE *edsheeran_wav;
roryhand 0:e89d7a0bfa3b 215 FILE *Startup_wav;
roryhand 0:e89d7a0bfa3b 216 FILE *IdleN2Wav;
roryhand 0:e89d7a0bfa3b 217 FILE *N2Wav;
roryhand 0:e89d7a0bfa3b 218 FILE *BellWav;
roryhand 0:e89d7a0bfa3b 219 FILE *FlangeWav;
roryhand 0:e89d7a0bfa3b 220 //long long slice_value;
roryhand 0:e89d7a0bfa3b 221 int slice_value[1];
roryhand 0:e89d7a0bfa3b 222
roryhand 0:e89d7a0bfa3b 223
roryhand 0:e89d7a0bfa3b 224 WAV_FILE_STRUCT WavInfo_Horn;
roryhand 0:e89d7a0bfa3b 225 WAV_FILE_STRUCT WavInfo_IdleN2;
roryhand 0:e89d7a0bfa3b 226 WAV_FILE_STRUCT WavInfo_N2;
roryhand 0:e89d7a0bfa3b 227 WAV_FILE_STRUCT WavInfo_Bell;
roryhand 0:e89d7a0bfa3b 228 WAV_FILE_STRUCT WavInfo_Flange;
roryhand 0:e89d7a0bfa3b 229 Ticker flipper;
roryhand 0:e89d7a0bfa3b 230 char * slice_buf_bell;
roryhand 0:e89d7a0bfa3b 231 char * slice_buf_ed;
roryhand 0:e89d7a0bfa3b 232 char * slice_buf_startup;
roryhand 0:e89d7a0bfa3b 233 char * slice_buf_N2;
roryhand 1:aac37edee302 234 Notch_STRUCT NotchingSet;
roryhand 0:e89d7a0bfa3b 235 //test
roryhand 0:e89d7a0bfa3b 236 //short *data_sptr_bell = 0;
roryhand 0:e89d7a0bfa3b 237 short *data_sptr_ed = 0;
roryhand 0:e89d7a0bfa3b 238 short *data_sptr_startup = 0;
roryhand 1:aac37edee302 239 void flip()
roryhand 1:aac37edee302 240 {
roryhand 0:e89d7a0bfa3b 241 led2 = !led2;
roryhand 0:e89d7a0bfa3b 242 }
roryhand 0:e89d7a0bfa3b 243
roryhand 0:e89d7a0bfa3b 244
roryhand 0:e89d7a0bfa3b 245 void isr()
roryhand 0:e89d7a0bfa3b 246 {
roryhand 1:aac37edee302 247 if(flag1 == 0) {
roryhand 0:e89d7a0bfa3b 248 value[0] = Buffer1[place_hold1]>>4;
roryhand 0:e89d7a0bfa3b 249 i2s.write(value,1);//Send next PWM value to amp
roryhand 0:e89d7a0bfa3b 250 place_hold1 = place_hold1 + 1;
roryhand 1:aac37edee302 251 if( (place_hold1 >= BufferLen)) {
roryhand 0:e89d7a0bfa3b 252 led2 = !led2;
roryhand 0:e89d7a0bfa3b 253 place_hold1 = 0;
roryhand 0:e89d7a0bfa3b 254 place_hold2 = 0;
roryhand 0:e89d7a0bfa3b 255 flag1 = 1;
roryhand 0:e89d7a0bfa3b 256 flag2 = 0;
roryhand 1:aac37edee302 257 }
roryhand 1:aac37edee302 258 } else if(flag2 == 0) {
roryhand 0:e89d7a0bfa3b 259 value[0] = Buffer2[place_hold2]>>4;
roryhand 0:e89d7a0bfa3b 260 i2s.write(value,1);//Send next PWM value to amp
roryhand 0:e89d7a0bfa3b 261 place_hold2 = place_hold2 + 1;
roryhand 1:aac37edee302 262 if( (place_hold2 >= BufferLen) ) {
roryhand 0:e89d7a0bfa3b 263 led2 = !led2;
roryhand 0:e89d7a0bfa3b 264 place_hold1 = 0;
roryhand 0:e89d7a0bfa3b 265 place_hold2 = 0;
roryhand 0:e89d7a0bfa3b 266 flag1 = 0;
roryhand 1:aac37edee302 267 flag2 = 1;
roryhand 0:e89d7a0bfa3b 268 FLAGBUFF2 = 0;
roryhand 1:aac37edee302 269 }
roryhand 0:e89d7a0bfa3b 270 }
roryhand 0:e89d7a0bfa3b 271 }
roryhand 1:aac37edee302 272
roryhand 0:e89d7a0bfa3b 273 void horn_sound()
roryhand 0:e89d7a0bfa3b 274 {
roryhand 0:e89d7a0bfa3b 275 BellFlag = 1;
roryhand 0:e89d7a0bfa3b 276 fseek(HornWav,44,SEEK_SET);
roryhand 0:e89d7a0bfa3b 277 fseek(BellWav,44,SEEK_SET);
roryhand 0:e89d7a0bfa3b 278 fseek(FlangeWav,44,SEEK_SET);
roryhand 0:e89d7a0bfa3b 279 fseek(N2Wav,44,SEEK_SET);
roryhand 0:e89d7a0bfa3b 280 }
roryhand 0:e89d7a0bfa3b 281
roryhand 0:e89d7a0bfa3b 282
roryhand 0:e89d7a0bfa3b 283 void N2SoundIsr()
roryhand 0:e89d7a0bfa3b 284 {
roryhand 0:e89d7a0bfa3b 285 DualEngineFlag = 1;
roryhand 0:e89d7a0bfa3b 286 fseek(N2Wav,44,SEEK_SET);
roryhand 0:e89d7a0bfa3b 287 fseek(HornWav,44,SEEK_SET);
roryhand 0:e89d7a0bfa3b 288 //TickFadeOut.detach(&N2SoundIsr);//,5.0);
roryhand 0:e89d7a0bfa3b 289 }
roryhand 0:e89d7a0bfa3b 290
roryhand 0:e89d7a0bfa3b 291
roryhand 0:e89d7a0bfa3b 292 void FadeOutIsr()
roryhand 0:e89d7a0bfa3b 293 {
roryhand 1:aac37edee302 294 FadeFlag = 1;
roryhand 1:aac37edee302 295 fseek(IdleN2Wav,44,SEEK_SET);
roryhand 1:aac37edee302 296 fseek(N2Wav,44,SEEK_SET);
roryhand 1:aac37edee302 297 fseek(HornWav,44,SEEK_SET);
roryhand 0:e89d7a0bfa3b 298 fseek(FlangeWav,44,SEEK_SET);
roryhand 1:aac37edee302 299
roryhand 0:e89d7a0bfa3b 300 }
roryhand 0:e89d7a0bfa3b 301
roryhand 3:6169aeeaeeb4 302 classFade FadeDataInitialise(classFade FadeData);
roryhand 3:6169aeeaeeb4 303
roryhand 3:6169aeeaeeb4 304
roryhand 3:6169aeeaeeb4 305
roryhand 3:6169aeeaeeb4 306
roryhand 3:6169aeeaeeb4 307
roryhand 3:6169aeeaeeb4 308 //function prototypes
roryhand 3:6169aeeaeeb4 309 WAV_FILE_STRUCT ReadFileInfo(WAV_FILE_STRUCT FileInfo, FILE * wav_file);
roryhand 3:6169aeeaeeb4 310 classSoundFile LoadFileStream(classSoundFile FileInfo, string filename);
roryhand 3:6169aeeaeeb4 311
roryhand 3:6169aeeaeeb4 312 float FadeOut(void);
roryhand 3:6169aeeaeeb4 313 void Play_WaveFile(FILE * my_wav, WAV_FILE_STRUCT FileInfo);
roryhand 3:6169aeeaeeb4 314 //void Play_WaveFileLoop(FILE * my_wav, WAV_FILE_STRUCT FileInfo);
roryhand 3:6169aeeaeeb4 315 //*********************INTERRUPT ROUTINE FOR NOTCHING***************************
roryhand 0:e89d7a0bfa3b 316
roryhand 1:aac37edee302 317 void NotchUpIsr()
roryhand 0:e89d7a0bfa3b 318 {
roryhand 1:aac37edee302 319 if(1 <= NotchingSet.Notch < 8) {
roryhand 1:aac37edee302 320
roryhand 1:aac37edee302 321 NotchingSet.Notch = NotchingSet.Notch + 1;
roryhand 1:aac37edee302 322 NotchingSet.NotchTransUp = NotchingSet.Notch + 7;
roryhand 1:aac37edee302 323 NotchingSet.NotchDirection = 1;
roryhand 3:6169aeeaeeb4 324 FadeDataInitialise(NotchFadeIn);
roryhand 3:6169aeeaeeb4 325 FadeDataInitialise(NotchFadeOut);
roryhand 1:aac37edee302 326 }
roryhand 0:e89d7a0bfa3b 327 }
roryhand 0:e89d7a0bfa3b 328
roryhand 0:e89d7a0bfa3b 329 void NotchDownIsr()
roryhand 0:e89d7a0bfa3b 330 {
roryhand 1:aac37edee302 331 if(1 < NotchingSet.Notch <= 8) {
roryhand 1:aac37edee302 332 NotchingSet.Notch = NotchingSet.Notch - 1;
roryhand 1:aac37edee302 333 NotchingSet.NotchTransDown = NotchingSet.Notch + 15;;
roryhand 1:aac37edee302 334 NotchingSet.NotchDirection = 0;
roryhand 3:6169aeeaeeb4 335 FadeDataInitialise(NotchFadeIn);
roryhand 3:6169aeeaeeb4 336 FadeDataInitialise(NotchFadeOut);
roryhand 1:aac37edee302 337 }
roryhand 1:aac37edee302 338 }
roryhand 0:e89d7a0bfa3b 339
roryhand 0:e89d7a0bfa3b 340
roryhand 3:6169aeeaeeb4 341 /**********************END OF INTERRUPT ROUTINE FOR NOTCHING*******************/
roryhand 3:6169aeeaeeb4 342
roryhand 3:6169aeeaeeb4 343
roryhand 1:aac37edee302 344
roryhand 0:e89d7a0bfa3b 345
roryhand 3:6169aeeaeeb4 346
roryhand 3:6169aeeaeeb4 347
roryhand 9:dd9cae06b202 348 void Play_WaveFileLoop(classSoundFile Sounds[], Notch_STRUCT NotchingSet);
roryhand 1:aac37edee302 349 int main()
roryhand 1:aac37edee302 350 {
roryhand 0:e89d7a0bfa3b 351 //LocalFileSystem local("local");
roryhand 0:e89d7a0bfa3b 352 NotchUp.mode(PullUp);
roryhand 0:e89d7a0bfa3b 353
roryhand 0:e89d7a0bfa3b 354
roryhand 0:e89d7a0bfa3b 355 //classSoundFile Sounds[4];
roryhand 1:aac37edee302 356 /* for(int iii = 0; iii < 3; iii ++)
roryhand 1:aac37edee302 357 {
roryhand 1:aac37edee302 358 Sounds[iii].setX(iii);
roryhand 1:aac37edee302 359 }*/
roryhand 0:e89d7a0bfa3b 360 WAV_FILE_STRUCT WavInfo_Startup;
roryhand 0:e89d7a0bfa3b 361 WAV_FILE_STRUCT WavInfo_Idle;
roryhand 0:e89d7a0bfa3b 362
roryhand 0:e89d7a0bfa3b 363 pc.printf("Beginning of program\n");
roryhand 0:e89d7a0bfa3b 364 FILE *StartupWav;
roryhand 0:e89d7a0bfa3b 365 FILE *IdleWav;
roryhand 1:aac37edee302 366
roryhand 3:6169aeeaeeb4 367
roryhand 0:e89d7a0bfa3b 368 DIR *dir;
roryhand 0:e89d7a0bfa3b 369 dirent *ent;
roryhand 0:e89d7a0bfa3b 370 int iterator = 0;
roryhand 13:8e93396a27c5 371
roryhand 13:8e93396a27c5 372
roryhand 13:8e93396a27c5 373
roryhand 13:8e93396a27c5 374
roryhand 3:6169aeeaeeb4 375 printf("Directory is about to be opened? Still dont really Get this concept\n\r");
roryhand 3:6169aeeaeeb4 376 //if i try to open folder SoundDecoder2, it gets stuck after file 13... WHY
roryhand 3:6169aeeaeeb4 377 if ((dir = opendir ("/sd/mydir/SoundDecoder_second")) != NULL) {
roryhand 1:aac37edee302 378
roryhand 0:e89d7a0bfa3b 379 // print all the files and directories within directory
roryhand 1:aac37edee302 380 while ((ent = readdir (dir)) != NULL) {
roryhand 3:6169aeeaeeb4 381 //printf("%s\r\n",string(ent->d_name));
roryhand 3:6169aeeaeeb4 382 filename[iterator] = (ent->d_name);
roryhand 3:6169aeeaeeb4 383 printf("Filename: %s\n\r",filename[iterator]);
roryhand 0:e89d7a0bfa3b 384 //printf("%s\r\n",filename[iterator]);
roryhand 0:e89d7a0bfa3b 385 iterator = iterator + 1;
roryhand 0:e89d7a0bfa3b 386 //printf("%s\r\n", ent->d_name);
roryhand 1:aac37edee302 387 //filenames.push_back(string(dirp->d_name));
roryhand 0:e89d7a0bfa3b 388 }
roryhand 0:e89d7a0bfa3b 389 closedir (dir);
roryhand 1:aac37edee302 390 }
roryhand 4:55fbbb049bae 391 /*
roryhand 3:6169aeeaeeb4 392 printf("Now printing all the files");
roryhand 3:6169aeeaeeb4 393 for(iterator = 0; iterator < 21; iterator ++) {
roryhand 1:aac37edee302 394 printf("All the Files: %s\r\n",filename[iterator]);
roryhand 1:aac37edee302 395 //printf("All the Files: %s\r\n",ent[iterator]);
roryhand 1:aac37edee302 396 }
roryhand 4:55fbbb049bae 397 */
roryhand 13:8e93396a27c5 398
roryhand 1:aac37edee302 399 //strcat(RootFolder,qdfilename[0]);
roryhand 3:6169aeeaeeb4 400 //string folder = RootFolder + filename[9];
roryhand 3:6169aeeaeeb4 401 //printf("Folder: %s\n\r",folder);
roryhand 1:aac37edee302 402
roryhand 1:aac37edee302 403
roryhand 0:e89d7a0bfa3b 404 //printf("Files and Folders contained here: %d\n\r",readdir(dp));
roryhand 1:aac37edee302 405
roryhand 1:aac37edee302 406
roryhand 9:dd9cae06b202 407 StartupWav = fopen("/sd/mydir/Startup.wav","rb");
roryhand 3:6169aeeaeeb4 408 //const char* folder2 = folder.c_str();
roryhand 1:aac37edee302 409
roryhand 1:aac37edee302 410
roryhand 1:aac37edee302 411 string FileName;
roryhand 1:aac37edee302 412 //vector <classSoundFile> Sound (27);
roryhand 3:6169aeeaeeb4 413 const char* FOLDER;
roryhand 13:8e93396a27c5 414
roryhand 13:8e93396a27c5 415 /*
roryhand 13:8e93396a27c5 416 WAV_FILE_STRUCT MyNewWav;
roryhand 13:8e93396a27c5 417
roryhand 13:8e93396a27c5 418 string folder;
roryhand 9:dd9cae06b202 419
roryhand 13:8e93396a27c5 420 for(int aaa = 0;aaa < 21; aaa ++ )
roryhand 13:8e93396a27c5 421 {
roryhand 13:8e93396a27c5 422 folder = RootFolder + filename[aaa];
roryhand 13:8e93396a27c5 423 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 424 Sound[aaa].FileInfo.WavFile = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 425 //MyNewWav.WavFile = fopen("/sd/mydir/Startup.wav","rb");
roryhand 13:8e93396a27c5 426 printf("we opened This file %d\n\r",aaa);
roryhand 9:dd9cae06b202 427
roryhand 13:8e93396a27c5 428 /*
roryhand 13:8e93396a27c5 429 printf("Size of FILE* %d\n\r ",sizeof(Sound[aaa].FileInfo.WavFile));
roryhand 13:8e93396a27c5 430 fseek(Sound[aaa].FileInfo.WavFile,20,SEEK_SET);
roryhand 13:8e93396a27c5 431 fread(&Sound[aaa].FileInfo.FileFormat,sizeof(Sound[aaa].FileInfo.FileFormat),1,Sound[aaa].FileInfo.WavFile);
roryhand 13:8e93396a27c5 432 fread(&Sound[aaa].FileInfo.FileData,sizeof(Sound[aaa].FileInfo.FileData),1,Sound[aaa].FileInfo.WavFile);
roryhand 13:8e93396a27c5 433 */
roryhand 13:8e93396a27c5 434
roryhand 13:8e93396a27c5 435
roryhand 9:dd9cae06b202 436 //fseek(Sound[aaa].FileInfo.WavFile,20,SEEK_SET);
roryhand 9:dd9cae06b202 437
roryhand 9:dd9cae06b202 438 //fseek(MyNewWav.WavFile,20,SEEK_SET);
roryhand 9:dd9cae06b202 439 //fread(&WavInfo_Horn.FileFormat,sizeof(WavInfo_Horn.FileFormat),1,MyNewWav.WavFile);
roryhand 13:8e93396a27c5 440 /*
roryhand 13:8e93396a27c5 441 fread(&Sound[aaa].FileInfo.FileData,sizeof(Sound[aaa].FileInfo.FileData),1,Sound[aaa].FileInfo.WavFile);
roryhand 9:dd9cae06b202 442
roryhand 7:131ac4231c46 443 Sound[aaa].FileInfo.slice_buf = ( char *)malloc(Sound[aaa].FileInfo.FileFormat.block_align);
roryhand 7:131ac4231c46 444 fread(Sound[aaa].FileInfo.slice_buf,Sound[aaa].FileInfo.FileFormat.block_align,1,Sound[aaa].FileInfo.WavFile); //This isnt actually required, its just a test
roryhand 7:131ac4231c46 445 Sound[aaa].FileInfo.num_slices = Sound[aaa].FileInfo.FileData.subchunk2_size/Sound[aaa].FileInfo.FileFormat.block_align;
roryhand 13:8e93396a27c5 446 */
roryhand 8:c2faf06e7240 447
roryhand 13:8e93396a27c5 448 /*
roryhand 13:8e93396a27c5 449 Sound[aaa].FileInfo.slice_buf = ( char *)malloc(Sound[aaa].FileInfo.FileFormat.block_align);
roryhand 13:8e93396a27c5 450 fread(Sound[aaa].FileInfo.slice_buf,Sound[aaa].FileInfo.FileFormat.block_align,1,Sound[aaa].FileInfo.WavFile); //This isnt actually required, its just a test
roryhand 13:8e93396a27c5 451 Sound[aaa].FileInfo.num_slices = Sound[aaa].FileInfo.FileData.subchunk2_size/Sound[aaa].FileInfo.FileFormat.block_align;
roryhand 13:8e93396a27c5 452
roryhand 13:8e93396a27c5 453
roryhand 13:8e93396a27c5 454 }
roryhand 13:8e93396a27c5 455 */
roryhand 13:8e93396a27c5 456
roryhand 10:ce38f2e9e80e 457 int aaa = 0;
roryhand 10:ce38f2e9e80e 458 string folder = RootFolder + filename[0];
roryhand 10:ce38f2e9e80e 459 FOLDER = folder.c_str();
roryhand 12:e386150cefd3 460 WAV_FILE_STRUCT WavStruct0;
roryhand 12:e386150cefd3 461 WAV_FILE_STRUCT WavStruct1;
roryhand 12:e386150cefd3 462 WAV_FILE_STRUCT WavStruct2;
roryhand 12:e386150cefd3 463 WAV_FILE_STRUCT WavStruct3;
roryhand 12:e386150cefd3 464 WAV_FILE_STRUCT WavStruct4;
roryhand 12:e386150cefd3 465 WAV_FILE_STRUCT WavStruct5;
roryhand 12:e386150cefd3 466 WAV_FILE_STRUCT WavStruct6;
roryhand 12:e386150cefd3 467 WAV_FILE_STRUCT WavStruct7;
roryhand 12:e386150cefd3 468 WAV_FILE_STRUCT WavStruct8;
roryhand 12:e386150cefd3 469 WAV_FILE_STRUCT WavStruct9;
roryhand 12:e386150cefd3 470 WAV_FILE_STRUCT WavStruct10;
roryhand 12:e386150cefd3 471 WAV_FILE_STRUCT WavStruct11;
roryhand 12:e386150cefd3 472 WAV_FILE_STRUCT WavStruct12;
roryhand 12:e386150cefd3 473 WAV_FILE_STRUCT WavStruct13;
roryhand 12:e386150cefd3 474 WAV_FILE_STRUCT WavStruct14;
roryhand 12:e386150cefd3 475 WAV_FILE_STRUCT WavStruct15;
roryhand 12:e386150cefd3 476 WAV_FILE_STRUCT WavStruct16;
roryhand 12:e386150cefd3 477 WAV_FILE_STRUCT WavStruct17;
roryhand 12:e386150cefd3 478 WAV_FILE_STRUCT WavStruct18;
roryhand 12:e386150cefd3 479 WAV_FILE_STRUCT WavStruct19;
roryhand 12:e386150cefd3 480 WAV_FILE_STRUCT WavStruct20;
roryhand 12:e386150cefd3 481 WAV_FILE_STRUCT WavStruct21;
roryhand 12:e386150cefd3 482 WAV_FILE_STRUCT WavStruct22;
roryhand 12:e386150cefd3 483 //WavStruct0.WavFile = fopen(FOLDER,"rb");
roryhand 12:e386150cefd3 484 FILE* mywav0 = fopen(FOLDER,"rb");
roryhand 10:ce38f2e9e80e 485 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 486
roryhand 10:ce38f2e9e80e 487 aaa = aaa+1;
roryhand 13:8e93396a27c5 488
roryhand 13:8e93396a27c5 489
roryhand 10:ce38f2e9e80e 490 folder = RootFolder + filename[1];
roryhand 10:ce38f2e9e80e 491 FOLDER = folder.c_str();
roryhand 12:e386150cefd3 492 FILE* mywav1 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 493
roryhand 10:ce38f2e9e80e 494 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 495
roryhand 13:8e93396a27c5 496 printf("Size of WavStruct1: %d\n\r",sizeof(WavStruct1));
roryhand 13:8e93396a27c5 497 aaa = aaa+1;
roryhand 13:8e93396a27c5 498
roryhand 10:ce38f2e9e80e 499 folder = RootFolder + filename[2];
roryhand 13:8e93396a27c5 500 FOLDER = folder.c_str();
roryhand 12:e386150cefd3 501 FILE* mywav2 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 502
roryhand 13:8e93396a27c5 503
roryhand 10:ce38f2e9e80e 504 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 505
roryhand 13:8e93396a27c5 506
roryhand 13:8e93396a27c5 507
roryhand 13:8e93396a27c5 508
roryhand 13:8e93396a27c5 509
roryhand 13:8e93396a27c5 510 aaa = aaa+1;
roryhand 13:8e93396a27c5 511
roryhand 13:8e93396a27c5 512 folder = RootFolder + filename[3];
roryhand 13:8e93396a27c5 513 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 514 FILE* mywav3 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 515
roryhand 13:8e93396a27c5 516
roryhand 13:8e93396a27c5 517 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 518
roryhand 13:8e93396a27c5 519
roryhand 12:e386150cefd3 520
roryhand 12:e386150cefd3 521
roryhand 12:e386150cefd3 522
roryhand 10:ce38f2e9e80e 523 aaa = aaa+1;
roryhand 13:8e93396a27c5 524
roryhand 13:8e93396a27c5 525 folder = RootFolder + filename[4];
roryhand 13:8e93396a27c5 526 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 527 FILE* mywav4 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 528
roryhand 13:8e93396a27c5 529
roryhand 10:ce38f2e9e80e 530 printf("we opened This file %d\n\r",aaa);
roryhand 11:34136ff82179 531
roryhand 13:8e93396a27c5 532
roryhand 13:8e93396a27c5 533
roryhand 13:8e93396a27c5 534
roryhand 13:8e93396a27c5 535
roryhand 13:8e93396a27c5 536 aaa = aaa+1;
roryhand 12:e386150cefd3 537
roryhand 13:8e93396a27c5 538 folder = RootFolder + filename[5];
roryhand 13:8e93396a27c5 539 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 540
roryhand 13:8e93396a27c5 541 FILE* mywav5 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 542
roryhand 10:ce38f2e9e80e 543 printf("we opened This file %d\n\r",aaa);
roryhand 12:e386150cefd3 544
roryhand 12:e386150cefd3 545
roryhand 11:34136ff82179 546
roryhand 10:ce38f2e9e80e 547 aaa = aaa+1;
roryhand 13:8e93396a27c5 548
roryhand 10:ce38f2e9e80e 549 folder = RootFolder + filename[6];
roryhand 13:8e93396a27c5 550 FOLDER = folder.c_str();
roryhand 12:e386150cefd3 551 FILE* mywav6 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 552
roryhand 10:ce38f2e9e80e 553 printf("we opened This file %d\n\r",aaa);
roryhand 12:e386150cefd3 554
roryhand 13:8e93396a27c5 555 aaa = aaa+1;
roryhand 13:8e93396a27c5 556
roryhand 13:8e93396a27c5 557 folder = RootFolder + filename[7];
roryhand 13:8e93396a27c5 558 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 559 FILE* mywav7 = fopen(FOLDER,"rb");
roryhand 12:e386150cefd3 560
roryhand 13:8e93396a27c5 561 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 562
roryhand 13:8e93396a27c5 563
roryhand 13:8e93396a27c5 564
roryhand 13:8e93396a27c5 565
roryhand 10:ce38f2e9e80e 566 aaa = aaa+1;
roryhand 13:8e93396a27c5 567
roryhand 10:ce38f2e9e80e 568 folder = RootFolder + filename[8];
roryhand 13:8e93396a27c5 569 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 570 FILE* mywav8 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 571
roryhand 10:ce38f2e9e80e 572 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 573
roryhand 12:e386150cefd3 574
roryhand 11:34136ff82179 575
roryhand 10:ce38f2e9e80e 576 aaa = aaa+1;
roryhand 13:8e93396a27c5 577
roryhand 10:ce38f2e9e80e 578 folder = RootFolder + filename[9];
roryhand 13:8e93396a27c5 579 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 580 FILE* mywav9 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 581
roryhand 10:ce38f2e9e80e 582 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 583
roryhand 13:8e93396a27c5 584
roryhand 10:ce38f2e9e80e 585 aaa = aaa+1;
roryhand 13:8e93396a27c5 586
roryhand 10:ce38f2e9e80e 587 folder = RootFolder + filename[10];
roryhand 13:8e93396a27c5 588 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 589 FILE* mywav10 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 590
roryhand 10:ce38f2e9e80e 591 printf("we opened This file %d\n\r",aaa);
roryhand 11:34136ff82179 592
roryhand 13:8e93396a27c5 593
roryhand 11:34136ff82179 594
roryhand 10:ce38f2e9e80e 595 aaa = aaa+1;
roryhand 13:8e93396a27c5 596
roryhand 10:ce38f2e9e80e 597 folder = RootFolder + filename[11];
roryhand 10:ce38f2e9e80e 598 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 599 FILE* mywav11 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 600
roryhand 10:ce38f2e9e80e 601 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 602
roryhand 13:8e93396a27c5 603
roryhand 10:ce38f2e9e80e 604 aaa = aaa+1;
roryhand 13:8e93396a27c5 605
roryhand 10:ce38f2e9e80e 606 folder = RootFolder + filename[12];
roryhand 10:ce38f2e9e80e 607 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 608 FILE* mywav12 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 609
roryhand 10:ce38f2e9e80e 610 printf("we opened This file %d\n\r",aaa);
roryhand 11:34136ff82179 611
roryhand 13:8e93396a27c5 612
roryhand 13:8e93396a27c5 613
roryhand 13:8e93396a27c5 614 aaa = aaa+1;
roryhand 13:8e93396a27c5 615
roryhand 13:8e93396a27c5 616 folder = RootFolder + filename[13];
roryhand 13:8e93396a27c5 617 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 618 FILE* mywav13 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 619
roryhand 13:8e93396a27c5 620 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 621
roryhand 13:8e93396a27c5 622
roryhand 11:34136ff82179 623
roryhand 10:ce38f2e9e80e 624 aaa = aaa+1;
roryhand 13:8e93396a27c5 625
roryhand 10:ce38f2e9e80e 626 folder = RootFolder + filename[14];
roryhand 13:8e93396a27c5 627 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 628 FILE* mywav14 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 629
roryhand 10:ce38f2e9e80e 630 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 631
roryhand 13:8e93396a27c5 632
roryhand 13:8e93396a27c5 633
roryhand 10:ce38f2e9e80e 634 aaa = aaa+1;
roryhand 13:8e93396a27c5 635
roryhand 10:ce38f2e9e80e 636 folder = RootFolder + filename[15];
roryhand 13:8e93396a27c5 637 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 638 FILE* mywav15 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 639
roryhand 10:ce38f2e9e80e 640 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 641
roryhand 13:8e93396a27c5 642
roryhand 13:8e93396a27c5 643
roryhand 10:ce38f2e9e80e 644 aaa = aaa+1;
roryhand 13:8e93396a27c5 645
roryhand 10:ce38f2e9e80e 646 folder = RootFolder + filename[16];
roryhand 13:8e93396a27c5 647 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 648 FILE* mywav16 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 649
roryhand 10:ce38f2e9e80e 650 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 651
roryhand 13:8e93396a27c5 652
roryhand 13:8e93396a27c5 653
roryhand 10:ce38f2e9e80e 654 aaa = aaa+1;
roryhand 13:8e93396a27c5 655
roryhand 10:ce38f2e9e80e 656 folder = RootFolder + filename[17];
roryhand 13:8e93396a27c5 657 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 658 FILE* mywav17 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 659
roryhand 10:ce38f2e9e80e 660 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 661
roryhand 13:8e93396a27c5 662
roryhand 13:8e93396a27c5 663
roryhand 10:ce38f2e9e80e 664 aaa = aaa+1;
roryhand 13:8e93396a27c5 665
roryhand 10:ce38f2e9e80e 666 folder = RootFolder + filename[18];
roryhand 13:8e93396a27c5 667 FOLDER = folder.c_str();
roryhand 13:8e93396a27c5 668 FILE* mywav18 = fopen(FOLDER,"rb");
roryhand 13:8e93396a27c5 669
roryhand 10:ce38f2e9e80e 670 printf("we opened This file %d\n\r",aaa);
roryhand 13:8e93396a27c5 671
roryhand 13:8e93396a27c5 672
roryhand 13:8e93396a27c5 673
roryhand 13:8e93396a27c5 674 printf("We performed all ReadFileInfo Operations!\n\r");
roryhand 10:ce38f2e9e80e 675 aaa = aaa+1;
roryhand 13:8e93396a27c5 676
roryhand 1:aac37edee302 677
roryhand 1:aac37edee302 678 printf("DO WE GET PAST THE ALLOCATION POINT\n\r");
roryhand 1:aac37edee302 679
roryhand 1:aac37edee302 680
roryhand 1:aac37edee302 681
roryhand 1:aac37edee302 682
roryhand 1:aac37edee302 683
roryhand 13:8e93396a27c5 684 /*
roryhand 1:aac37edee302 685 StartupWav = fopen("/sd/mydir/645Engine/Startup.wav","rb");
roryhand 0:e89d7a0bfa3b 686 IdleWav = fopen("/sd/mydir/645Engine/N2_11k_minus10dB.wav","rb");
roryhand 0:e89d7a0bfa3b 687 IdleN2Wav = fopen("/sd/mydir/645Engine/N2N3_11k_minus10dB.wav","rb");
roryhand 0:e89d7a0bfa3b 688 HornWav = fopen("/sd/mydir/645Engine/K3H_1_A_short_quiet.wav","rb");
roryhand 0:e89d7a0bfa3b 689 N2Wav = fopen("/sd/mydir/645Engine/N3_11k_minus11dB.wav","rb");
roryhand 0:e89d7a0bfa3b 690 BellWav = fopen("/sd/mydir/645Engine/EMD_BRONZE_BELL_1_11k_minus10dB.wav","rb");
roryhand 0:e89d7a0bfa3b 691 FlangeWav = fopen("/sd/mydir/645Engine/EX_FlangeJoint1_11k_minus12dB.wav","rb");
roryhand 13:8e93396a27c5 692
roryhand 13:8e93396a27c5 693
roryhand 13:8e93396a27c5 694
roryhand 1:aac37edee302 695
roryhand 0:e89d7a0bfa3b 696 WavInfo_Startup = ReadFileInfo(WavInfo_Startup, StartupWav);
roryhand 1:aac37edee302 697 printf("WavInfo_Startup Size: %d\n\r",sizeof(WavInfo_Startup));
roryhand 0:e89d7a0bfa3b 698 WavInfo_Idle = ReadFileInfo(WavInfo_Idle, IdleWav);
roryhand 0:e89d7a0bfa3b 699 WavInfo_Horn = ReadFileInfo(WavInfo_Horn, HornWav);
roryhand 0:e89d7a0bfa3b 700 WavInfo_IdleN2 = ReadFileInfo(WavInfo_IdleN2, IdleN2Wav);
roryhand 0:e89d7a0bfa3b 701 WavInfo_N2 = ReadFileInfo(WavInfo_N2, N2Wav);
roryhand 0:e89d7a0bfa3b 702 WavInfo_Bell = ReadFileInfo(WavInfo_Bell, BellWav);
roryhand 0:e89d7a0bfa3b 703 WavInfo_Flange = ReadFileInfo(WavInfo_Flange, FlangeWav);
roryhand 13:8e93396a27c5 704 */
roryhand 13:8e93396a27c5 705
roryhand 13:8e93396a27c5 706 printf("About to Start ReadFileInfo Operations\n\r");
roryhand 13:8e93396a27c5 707
roryhand 14:cc555d14e3f8 708
roryhand 13:8e93396a27c5 709 StartupWav = fopen("/sd/mydir/645Engine/Startup.wav","rb");
roryhand 13:8e93396a27c5 710 IdleWav = fopen("/sd/mydir/645Engine/N2_11k_minus10dB.wav","rb");
roryhand 13:8e93396a27c5 711 IdleN2Wav = fopen("/sd/mydir/645Engine/N2N3_11k_minus10dB.wav","rb");
roryhand 13:8e93396a27c5 712 HornWav = fopen("/sd/mydir/645Engine/K3H_1_A_short_quiet.wav","rb");
roryhand 13:8e93396a27c5 713 N2Wav = fopen("/sd/mydir/645Engine/N3_11k_minus11dB.wav","rb");
roryhand 13:8e93396a27c5 714 BellWav = fopen("/sd/mydir/645Engine/EMD_BRONZE_BELL_1_11k_minus10dB.wav","rb");
roryhand 13:8e93396a27c5 715 FlangeWav = fopen("/sd/mydir/645Engine/EX_FlangeJoint1_11k_minus12dB.wav","rb");
roryhand 13:8e93396a27c5 716
roryhand 13:8e93396a27c5 717
roryhand 13:8e93396a27c5 718
roryhand 13:8e93396a27c5 719
roryhand 13:8e93396a27c5 720 WavInfo_Startup = ReadFileInfo(WavInfo_Startup, StartupWav);
roryhand 13:8e93396a27c5 721 printf("WavInfo_Startup Size: %d\n\r",sizeof(WavInfo_Startup));
roryhand 13:8e93396a27c5 722 WavInfo_Idle = ReadFileInfo(WavInfo_Idle, IdleWav);
roryhand 13:8e93396a27c5 723 WavInfo_Horn = ReadFileInfo(WavInfo_Horn, HornWav);
roryhand 13:8e93396a27c5 724 WavInfo_IdleN2 = ReadFileInfo(WavInfo_IdleN2, IdleN2Wav);
roryhand 13:8e93396a27c5 725 WavInfo_N2 = ReadFileInfo(WavInfo_N2, N2Wav);
roryhand 13:8e93396a27c5 726 WavInfo_Bell = ReadFileInfo(WavInfo_Bell, BellWav);
roryhand 13:8e93396a27c5 727 WavInfo_Flange = ReadFileInfo(WavInfo_Flange, FlangeWav);
roryhand 13:8e93396a27c5 728
roryhand 15:74ddace1b118 729 WAV_FILE_STRUCT WavInfo_Frustration;
roryhand 15:74ddace1b118 730 FILE* FrustrationWav = fopen("/sd/mydir/645Engine/EX_FlangeJoint1_11k_minus12dB.wav","rb");
roryhand 15:74ddace1b118 731 WavInfo_Frustration = ReadFileInfo(WavInfo_Frustration,FrustrationWav);
roryhand 15:74ddace1b118 732 printf("Frustration\n\r");
roryhand 15:74ddace1b118 733
roryhand 14:cc555d14e3f8 734
roryhand 14:cc555d14e3f8 735
roryhand 13:8e93396a27c5 736 /*
roryhand 13:8e93396a27c5 737 printf("Just read our test set");
roryhand 13:8e93396a27c5 738 for(int h = 0; h<30; h++) {
roryhand 13:8e93396a27c5 739 WavStruct5 = ReadFileInfo(WavStruct5, mywav5);
roryhand 13:8e93396a27c5 740 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 741 aaa = aaa + 1;
roryhand 13:8e93396a27c5 742 }
roryhand 13:8e93396a27c5 743 WavStruct6 = ReadFileInfo(WavStruct6, mywav6);
roryhand 13:8e93396a27c5 744 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 745 aaa = aaa + 1;
roryhand 13:8e93396a27c5 746 WavStruct7 = ReadFileInfo(WavStruct7, mywav7);
roryhand 13:8e93396a27c5 747 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 748 aaa = aaa + 1;
roryhand 13:8e93396a27c5 749 WavStruct8 = ReadFileInfo(WavStruct8, mywav8);
roryhand 13:8e93396a27c5 750 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 751 aaa = aaa + 1;
roryhand 13:8e93396a27c5 752 WavStruct9 = ReadFileInfo(WavStruct9, mywav9);
roryhand 13:8e93396a27c5 753 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 754 aaa = aaa + 1;
roryhand 13:8e93396a27c5 755 WavStruct10 = ReadFileInfo(WavStruct10, mywav10);
roryhand 13:8e93396a27c5 756 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 757 aaa = aaa + 1;
roryhand 13:8e93396a27c5 758 WavStruct11 = ReadFileInfo(WavStruct11, mywav11);
roryhand 13:8e93396a27c5 759 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 760 aaa = aaa + 1;
roryhand 13:8e93396a27c5 761 WavStruct12 = ReadFileInfo(WavStruct12, mywav12);
roryhand 13:8e93396a27c5 762 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 763 aaa = aaa + 1;
roryhand 13:8e93396a27c5 764 WavStruct13 = ReadFileInfo(WavStruct13, mywav13);
roryhand 13:8e93396a27c5 765 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 766 aaa = aaa + 1;
roryhand 13:8e93396a27c5 767 WavStruct14 = ReadFileInfo(WavStruct14, mywav14);
roryhand 13:8e93396a27c5 768 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 769 aaa = aaa + 1;
roryhand 13:8e93396a27c5 770 WavStruct15 = ReadFileInfo(WavStruct15, mywav15);
roryhand 13:8e93396a27c5 771 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 772 aaa = aaa + 1;
roryhand 13:8e93396a27c5 773 WavStruct16 = ReadFileInfo(WavStruct16, mywav16);
roryhand 13:8e93396a27c5 774 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 775 aaa = aaa + 1;
roryhand 13:8e93396a27c5 776 WavStruct17 = ReadFileInfo(WavStruct17, mywav17);
roryhand 13:8e93396a27c5 777 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 778 aaa = aaa + 1;
roryhand 13:8e93396a27c5 779 WavStruct18 = ReadFileInfo(WavStruct18, mywav18);
roryhand 13:8e93396a27c5 780 printf("ReadFileInfo Operation %d\n\r",aaa);
roryhand 13:8e93396a27c5 781 aaa = aaa + 1;
roryhand 13:8e93396a27c5 782 */
roryhand 13:8e93396a27c5 783
roryhand 13:8e93396a27c5 784
roryhand 4:55fbbb049bae 785
roryhand 14:cc555d14e3f8 786 printf("Do we even get to this stupid bloody point\n\r");
roryhand 0:e89d7a0bfa3b 787 //Populate our class instances with some data (is there an implicit way to do this?)
roryhand 0:e89d7a0bfa3b 788 N2FadeIn.LengthSecs = 4;
roryhand 0:e89d7a0bfa3b 789 IdleFadeOut.LengthSecs = 2;
roryhand 0:e89d7a0bfa3b 790 N2FadeIn = FadeDataInitialise(N2FadeIn);
roryhand 0:e89d7a0bfa3b 791 IdleFadeOut = FadeDataInitialise(IdleFadeOut);
roryhand 1:aac37edee302 792
roryhand 3:6169aeeaeeb4 793 printf("hello\n\r");
roryhand 0:e89d7a0bfa3b 794 //Set up the wolfson Audio Codec board
roryhand 0:e89d7a0bfa3b 795 wm8731_Config_setup();
roryhand 0:e89d7a0bfa3b 796 //i2s audio data transfer code??
roryhand 0:e89d7a0bfa3b 797 i2s.stereomono(I2S_STEREO);
roryhand 0:e89d7a0bfa3b 798 i2s.masterslave(I2S_MASTER);
roryhand 0:e89d7a0bfa3b 799 led3 = 1;
roryhand 0:e89d7a0bfa3b 800 led2 = 1;
roryhand 13:8e93396a27c5 801
roryhand 0:e89d7a0bfa3b 802 sampletick.attach(&isr,1.0/sampling_freq); //1/16000
roryhand 0:e89d7a0bfa3b 803 //TickFadeOut.attach(&FadeOutIsr,10.0);
roryhand 3:6169aeeaeeb4 804 printf("SamplingFreq: %d\n\r",sampling_freq);
roryhand 0:e89d7a0bfa3b 805 i2s.start();
roryhand 3:6169aeeaeeb4 806 printf("Hello i2s has starrted!!");
roryhand 0:e89d7a0bfa3b 807 Horn.rise(&FadeOutIsr);
roryhand 0:e89d7a0bfa3b 808 slice = 0;
roryhand 0:e89d7a0bfa3b 809 fseek(IdleN2Wav,44,SEEK_SET);
roryhand 0:e89d7a0bfa3b 810 //Play_WaveFile(IdleN2Wav,WavInfo_IdleN2);
roryhand 0:e89d7a0bfa3b 811 //Play_WaveFile(N2Wav,WavInfo_N2);
roryhand 0:e89d7a0bfa3b 812 t.reset();
roryhand 0:e89d7a0bfa3b 813 t.start();
roryhand 0:e89d7a0bfa3b 814 N2FadeIn.FadeCoeff = N2FadeIn.FadeOut();
roryhand 0:e89d7a0bfa3b 815 t.stop();
roryhand 0:e89d7a0bfa3b 816 printf("Time to Calcualte Fade Coeff: %d\n\r",t.read_us());
roryhand 0:e89d7a0bfa3b 817 t.reset();
roryhand 1:aac37edee302 818
roryhand 0:e89d7a0bfa3b 819 fseek(IdleN2Wav,44,SEEK_SET);
roryhand 0:e89d7a0bfa3b 820 t.start();
roryhand 1:aac37edee302 821 fread(WavInfo_IdleN2.slice_buf,WavInfo_IdleN2.FileFormat.block_align,1,IdleN2Wav);
roryhand 0:e89d7a0bfa3b 822 data_sptr_IdleN2 = (short *)WavInfo_IdleN2.slice_buf;
roryhand 0:e89d7a0bfa3b 823 t.stop();
roryhand 0:e89d7a0bfa3b 824 printf("Time to Read in a slice: %dus\n\r",t.read_us());
roryhand 0:e89d7a0bfa3b 825 t.reset();
roryhand 1:aac37edee302 826
roryhand 0:e89d7a0bfa3b 827 printf("point to start sound: %d\n\r",((WavInfo_IdleN2.FileData.subchunk2_size) - N2FadeIn.Length));
roryhand 0:e89d7a0bfa3b 828 printf("Size of Data: %d\n\r",WavInfo_IdleN2.FileData.subchunk2_size);
roryhand 1:aac37edee302 829
roryhand 0:e89d7a0bfa3b 830 fseek(FlangeWav,44,SEEK_SET);
roryhand 13:8e93396a27c5 831
roryhand 0:e89d7a0bfa3b 832 Play_WaveFile(StartupWav,WavInfo_Startup);
roryhand 9:dd9cae06b202 833 /************************************PLAY WAV FILE LOOP*******************/
roryhand 9:dd9cae06b202 834 Play_WaveFileLoop(Sound, NotchingSet);
roryhand 9:dd9cae06b202 835 /************************************END OF PLAY WAV FILE LOOP*************/
roryhand 13:8e93396a27c5 836
roryhand 13:8e93396a27c5 837
roryhand 13:8e93396a27c5 838
roryhand 9:dd9cae06b202 839
roryhand 3:6169aeeaeeb4 840
roryhand 0:e89d7a0bfa3b 841 fseek(IdleN2Wav,44,SEEK_SET);//reset for use in the Loop code
roryhand 0:e89d7a0bfa3b 842 slice = 0;
roryhand 0:e89d7a0bfa3b 843 fseek(IdleWav,44,SEEK_SET);
roryhand 3:6169aeeaeeb4 844 NotchingSet.Notch = 1;
roryhand 1:aac37edee302 845 //Play_WaveFileLoop(IdleWav, WavInfo_Idle);
roryhand 1:aac37edee302 846
roryhand 1:aac37edee302 847 i2s.stop();
roryhand 0:e89d7a0bfa3b 848
roryhand 0:e89d7a0bfa3b 849 }
roryhand 0:e89d7a0bfa3b 850
roryhand 0:e89d7a0bfa3b 851
roryhand 3:6169aeeaeeb4 852
roryhand 3:6169aeeaeeb4 853
roryhand 3:6169aeeaeeb4 854
roryhand 3:6169aeeaeeb4 855
roryhand 0:e89d7a0bfa3b 856 WAV_FILE_STRUCT ReadFileInfo(WAV_FILE_STRUCT FileInfo, FILE * wav_file)
roryhand 0:e89d7a0bfa3b 857 {
roryhand 0:e89d7a0bfa3b 858 fseek(wav_file,20,SEEK_SET);
roryhand 0:e89d7a0bfa3b 859 fread(&FileInfo.FileFormat,sizeof(FileInfo.FileFormat),1,wav_file);
roryhand 1:aac37edee302 860 //printf("wav_format.sample_rate: %d\n\r",FileInfo.FileFormat.sample_rate);
roryhand 1:aac37edee302 861
roryhand 0:e89d7a0bfa3b 862 fread(&FileInfo.FileData,sizeof(FileInfo.FileData),1,wav_file);
roryhand 1:aac37edee302 863 //printf("wav_data.subchunk2_size: %d\n\r",FileInfo.FileData.subchunk2_size);
roryhand 0:e89d7a0bfa3b 864 FileInfo.slice_buf = ( char *)malloc(FileInfo.FileFormat.block_align);
roryhand 0:e89d7a0bfa3b 865 fread(FileInfo.slice_buf,FileInfo.FileFormat.block_align,1,wav_file); //This isnt actually required, its just a test
roryhand 1:aac37edee302 866 FileInfo.num_slices = FileInfo.FileData.subchunk2_size/FileInfo.FileFormat.block_align;
roryhand 1:aac37edee302 867 //printf("Number of Slices: %d\n\r",FileInfo.num_slices);
roryhand 1:aac37edee302 868 return FileInfo;
roryhand 0:e89d7a0bfa3b 869 }
roryhand 1:aac37edee302 870
roryhand 1:aac37edee302 871 classSoundFile LoadFileStream(classSoundFile Sound, string filename)
roryhand 1:aac37edee302 872 {
roryhand 1:aac37edee302 873 //Declare RootFolder and the directory for the appropriate file.
roryhand 1:aac37edee302 874 //How we index into filename[] from the outside of this class is another
roryhand 1:aac37edee302 875 //issue...
roryhand 1:aac37edee302 876 //printf("FileName: %s\n\r",filename);
roryhand 1:aac37edee302 877 //string RootFolder = "/sd/mydir/SoundDecoder/";
roryhand 1:aac37edee302 878 //string Directory = RootFolder + "01.wav";// + filename[0];
roryhand 1:aac37edee302 879 //printf("%s\n\r",Directory);
roryhand 1:aac37edee302 880 //const char* DirectoryChar = Directory.c_str();
roryhand 1:aac37edee302 881 //Sound.FileInfo.WavFile = fopen(DirectoryChar,"rb");
roryhand 1:aac37edee302 882 Sound.FileInfo.WavFile = fopen("/sd/mydir/645Engine/Startup.wav","rb");
roryhand 1:aac37edee302 883 fseek(Sound.FileInfo.WavFile,20,SEEK_SET);
roryhand 1:aac37edee302 884 fread(&Sound.FileInfo.FileFormat,sizeof(Sound.FileInfo.FileFormat),1,Sound.FileInfo.WavFile);
roryhand 1:aac37edee302 885 printf("wav_format.sample_rate: %d\n\r",Sound.FileInfo.FileFormat.sample_rate);
roryhand 1:aac37edee302 886 fread(&Sound.FileInfo.FileData,sizeof(Sound.FileInfo.FileData),1,Sound.FileInfo.WavFile);
roryhand 1:aac37edee302 887 printf("wav_data.subchunk2_size: %d\n\r",Sound.FileInfo.FileData.subchunk2_size);
roryhand 1:aac37edee302 888 Sound.FileInfo.slice_buf = ( char *)malloc(Sound.FileInfo.FileFormat.block_align);
roryhand 1:aac37edee302 889 fread(Sound.FileInfo.slice_buf,Sound.FileInfo.FileFormat.block_align,1,Sound.FileInfo.WavFile); //This isnt actually required, its just a test
roryhand 1:aac37edee302 890 Sound.FileInfo.num_slices = Sound.FileInfo.FileData.subchunk2_size/Sound.FileInfo.FileFormat.block_align;
roryhand 1:aac37edee302 891 printf("Number of Slices: %d\n\r",Sound.FileInfo.num_slices);
roryhand 1:aac37edee302 892 return Sound;
roryhand 1:aac37edee302 893 }
roryhand 1:aac37edee302 894
roryhand 1:aac37edee302 895
roryhand 0:e89d7a0bfa3b 896 classFade FadeDataInitialise(classFade FadeData)
roryhand 0:e89d7a0bfa3b 897 {
roryhand 1:aac37edee302 898 FadeData.DecayFactor = 1.3;
roryhand 0:e89d7a0bfa3b 899 FadeData.FadeIteration = 1;
roryhand 0:e89d7a0bfa3b 900 //FadeData.Denom = 11025*FadeData.DecayFactor;
roryhand 0:e89d7a0bfa3b 901 FadeData.Denom = 11025*FadeData.DecayFactor;
roryhand 0:e89d7a0bfa3b 902 FadeData.Natural_Exp = 2.7183;
roryhand 0:e89d7a0bfa3b 903 FadeData.Length = 11025*FadeData.LengthSecs;
roryhand 0:e89d7a0bfa3b 904 //FadeData.Natural_Exp = 2.7;
roryhand 0:e89d7a0bfa3b 905 return FadeData;
roryhand 0:e89d7a0bfa3b 906 }
roryhand 0:e89d7a0bfa3b 907
roryhand 0:e89d7a0bfa3b 908 //Playing Files Code
roryhand 0:e89d7a0bfa3b 909 /*float FadeIn(void)
roryhand 0:e89d7a0bfa3b 910 {
roryhand 0:e89d7a0bfa3b 911 powervalFadeIn = FadeIterationIn/denom;
roryhand 0:e89d7a0bfa3b 912 FadeCoeffFadeIn
roryhand 1:aac37edee302 913
roryhand 1:aac37edee302 914
roryhand 0:e89d7a0bfa3b 915 }*/
roryhand 0:e89d7a0bfa3b 916 /*float FadeOut(void)
roryhand 0:e89d7a0bfa3b 917 {
roryhand 0:e89d7a0bfa3b 918 powerval = -FadeIteration/denom;
roryhand 0:e89d7a0bfa3b 919 FadeCoeff = pow(natural_exp,powerval);
roryhand 1:aac37edee302 920 FadeIteration = FadeIteration + 1;
roryhand 1:aac37edee302 921 return FadeCoeff;
roryhand 1:aac37edee302 922
roryhand 0:e89d7a0bfa3b 923 }*/
roryhand 0:e89d7a0bfa3b 924
roryhand 0:e89d7a0bfa3b 925
roryhand 0:e89d7a0bfa3b 926 void Play_WaveFile(FILE * my_wav, WAV_FILE_STRUCT FileInfo)
roryhand 0:e89d7a0bfa3b 927 {
roryhand 1:aac37edee302 928 while(slice<FileInfo.num_slices) {
roryhand 1:aac37edee302 929 fread(FileInfo.slice_buf,FileInfo.FileFormat.block_align,1,my_wav);
roryhand 1:aac37edee302 930 data_sptr=(short *)FileInfo.slice_buf; // 16 bit samples
roryhand 1:aac37edee302 931 for (channel=0; channel<FileInfo.FileFormat.num_channels; channel++) {
roryhand 1:aac37edee302 932 if(flag1 == 1) {
roryhand 1:aac37edee302 933 Buffer1[place_hold1] = data_sptr[channel];
roryhand 1:aac37edee302 934 place_hold1 = place_hold1 + 1;
roryhand 1:aac37edee302 935 if(place_hold1 >= BufferLen) {
roryhand 1:aac37edee302 936 while(1) {
roryhand 1:aac37edee302 937 if(flag1 == 0) {
roryhand 0:e89d7a0bfa3b 938
roryhand 1:aac37edee302 939 break;
roryhand 0:e89d7a0bfa3b 940 }
roryhand 1:aac37edee302 941
roryhand 0:e89d7a0bfa3b 942 }
roryhand 1:aac37edee302 943 }
roryhand 1:aac37edee302 944
roryhand 1:aac37edee302 945 } else if(flag2 == 1) {
roryhand 1:aac37edee302 946 Buffer2[place_hold2] = data_sptr[channel];
roryhand 1:aac37edee302 947 place_hold2 = place_hold2 + 1;
roryhand 1:aac37edee302 948 if(place_hold2 >= BufferLen) {
roryhand 1:aac37edee302 949
roryhand 1:aac37edee302 950 while(1) {
roryhand 1:aac37edee302 951 if(flag2 == 0) {
roryhand 1:aac37edee302 952
roryhand 1:aac37edee302 953 break;
roryhand 1:aac37edee302 954 }
roryhand 0:e89d7a0bfa3b 955 }
roryhand 1:aac37edee302 956 }
roryhand 0:e89d7a0bfa3b 957 }
roryhand 1:aac37edee302 958
roryhand 1:aac37edee302 959 }
roryhand 1:aac37edee302 960 slice = slice + 1;
roryhand 0:e89d7a0bfa3b 961 }
roryhand 0:e89d7a0bfa3b 962 }
roryhand 0:e89d7a0bfa3b 963
roryhand 0:e89d7a0bfa3b 964
roryhand 0:e89d7a0bfa3b 965
roryhand 0:e89d7a0bfa3b 966
roryhand 0:e89d7a0bfa3b 967
roryhand 0:e89d7a0bfa3b 968
roryhand 2:957d3b2afff4 969 //void Play_WaveFileLoop(FILE * my_wav, WAV_FILE_STRUCT FileInfo)//(classSoundFile Sounds)
roryhand 9:dd9cae06b202 970
roryhand 9:dd9cae06b202 971 void Play_WaveFileLoop(classSoundFile Sounds[], Notch_STRUCT NotchingSet)
roryhand 0:e89d7a0bfa3b 972 {
roryhand 1:aac37edee302 973 while(1) { //might have to change this to a while(1) loop?
roryhand 1:aac37edee302 974 //New format!! This should be (roughly) the way that this is done, with the new structures and classes
roryhand 1:aac37edee302 975 ////fread(Sound[Notch].FileData.slice_buf,Sound[Notch].FileFormat.block_align,1,Sound[notch].WavFile);
roryhand 1:aac37edee302 976 //data_sptr=(short *)Sound[Notch].FileInfo.slice_buf;
roryhand 1:aac37edee302 977
roryhand 0:e89d7a0bfa3b 978
roryhand 2:957d3b2afff4 979 if( slice == (Sounds[NotchingSet.Notch].FileInfo.num_slices-1) ) {
roryhand 1:aac37edee302 980 slice = 0;
roryhand 2:957d3b2afff4 981 fseek(Sounds[NotchingSet.Notch].FileInfo.WavFile,44,SEEK_SET);
roryhand 1:aac37edee302 982 }
roryhand 1:aac37edee302 983
roryhand 2:957d3b2afff4 984 //fread(FileInfo.slice_buf,FileInfo.FileFormat.block_align,1,my_wav);
roryhand 2:957d3b2afff4 985 data_sptr=(short *)Sounds[NotchingSet.Notch].FileInfo.slice_buf; // 16 bit samples
roryhand 2:957d3b2afff4 986 //make sure we are reading in the correct "notch" here
roryhand 2:957d3b2afff4 987
roryhand 2:957d3b2afff4 988 if(FadeFlag) {
roryhand 2:957d3b2afff4 989 if(feof(Sounds[NotchingSet.Notch].FileInfo.WavFile)) {
roryhand 2:957d3b2afff4 990 fseek(Sounds[NotchingSet.Notch].FileInfo.WavFile,44,SEEK_SET);
roryhand 2:957d3b2afff4 991 }
roryhand 3:6169aeeaeeb4 992
roryhand 2:957d3b2afff4 993 //Read in data for current (i.e. now the previous notch, according to the index!!)
roryhand 2:957d3b2afff4 994 //We might not need this code here...as its probably done somewhere else??
roryhand 2:957d3b2afff4 995 fread(Sounds[NotchingSet.Notch-1].FileInfo.slice_buf,Sounds[NotchingSet.Notch-1].FileInfo.FileFormat.block_align,1,Sounds[NotchingSet.Notch-1].FileInfo.WavFile);
roryhand 2:957d3b2afff4 996 Sounds[NotchingSet.Notch-1].data_sptr = (short *)Sounds[NotchingSet.Notch-1].FileInfo.slice_buf;
roryhand 3:6169aeeaeeb4 997
roryhand 2:957d3b2afff4 998 NotchFadeOut.FadeCoeff = NotchFadeOut.FadeOut();//compute new FadeOut Coeff value
roryhand 2:957d3b2afff4 999
roryhand 2:957d3b2afff4 1000 //Read in the notch transition file for transitioning up
roryhand 2:957d3b2afff4 1001 fread(Sounds[NotchingSet.NotchTransUp].FileInfo.slice_buf,Sounds[NotchingSet.NotchTransUp].FileInfo.FileFormat.block_align,1,Sounds[NotchingSet.NotchTransUp].FileInfo.WavFile);
roryhand 2:957d3b2afff4 1002 Sounds[NotchingSet.NotchTransUp].data_sptr = (short*)Sounds[NotchingSet.NotchTransUp].FileInfo.slice_buf;
roryhand 3:6169aeeaeeb4 1003
roryhand 2:957d3b2afff4 1004 if( ((Sounds[NotchingSet.NotchTransUp].FileInfo.FileData.subchunk2_size) - NotchFadeIn.Length - 2*11025) <= (ftell(Sounds[NotchingSet.NotchTransUp].FileInfo.WavFile) + 44))
roryhand 2:957d3b2afff4 1005 //if( (WavInfo_IdleN2.FileData.subchunk2_size)/8 <=ftell(IdleN2Wav) )
roryhand 2:957d3b2afff4 1006 {
roryhand 2:957d3b2afff4 1007
roryhand 2:957d3b2afff4 1008 NotchFadeIn.FadeCoeff = NotchFadeIn.FadeIn();
roryhand 3:6169aeeaeeb4 1009
roryhand 2:957d3b2afff4 1010 //Read In the next Notch
roryhand 2:957d3b2afff4 1011 fread(Sounds[NotchingSet.Notch].FileInfo.slice_buf,Sounds[NotchingSet.Notch].FileInfo.FileFormat.block_align,1,Sounds[NotchingSet.Notch].FileInfo.WavFile);
roryhand 2:957d3b2afff4 1012 Sounds[NotchingSet.Notch].data_sptr = (short *)Sounds[NotchingSet.Notch].FileInfo.slice_buf;
roryhand 2:957d3b2afff4 1013
roryhand 2:957d3b2afff4 1014 if( (ftell(Sounds[NotchingSet.NotchTransUp].FileInfo.WavFile) + 44) >= Sounds[NotchingSet.NotchTransUp].FileInfo.FileData.subchunk2_size ) {
roryhand 3:6169aeeaeeb4 1015
roryhand 2:957d3b2afff4 1016 //need to explicitly test if this notation/syntax works for pointers....
roryhand 2:957d3b2afff4 1017 *Sounds[NotchingSet.Notch].data_sptr = *Sounds[NotchingSet.Notch].data_sptr*NotchFadeIn.FadeCoeff;
roryhand 2:957d3b2afff4 1018 } else {
roryhand 2:957d3b2afff4 1019 *Sounds[NotchingSet.Notch-1].data_sptr = *Sounds[NotchingSet.Notch - 1].data_sptr*NotchFadeOut.FadeCoeff + *Sounds[NotchingSet.NotchTransUp].data_sptr + *Sounds[NotchingSet.Notch].data_sptr*NotchFadeIn.FadeCoeff;// + *data_sptr_N2;
roryhand 2:957d3b2afff4 1020 }
roryhand 2:957d3b2afff4 1021
roryhand 2:957d3b2afff4 1022 } else {
roryhand 2:957d3b2afff4 1023 *Sounds[NotchingSet.Notch-1].data_sptr = *Sounds[NotchingSet.Notch-1].data_sptr*NotchFadeOut.FadeCoeff + *Sounds[NotchingSet.NotchTransUp].data_sptr;
roryhand 2:957d3b2afff4 1024 }
roryhand 2:957d3b2afff4 1025
roryhand 1:aac37edee302 1026 }
roryhand 1:aac37edee302 1027
roryhand 1:aac37edee302 1028
roryhand 3:6169aeeaeeb4 1029 /********************END OF DATA ASSIGNMENT SECTION*************************************************/
roryhand 9:dd9cae06b202 1030
roryhand 2:957d3b2afff4 1031 for (channel=0; channel<Sounds[NotchingSet.Notch].FileInfo.FileFormat.num_channels; channel++) {
roryhand 2:957d3b2afff4 1032 switch (Sounds[NotchingSet.Notch].FileInfo.FileFormat.sig_bps) {
roryhand 0:e89d7a0bfa3b 1033 case 16:
roryhand 1:aac37edee302 1034 if(flag1 == 1) {
roryhand 2:957d3b2afff4 1035 Buffer1[place_hold1] = Sounds[NotchingSet.Notch].data_sptr[channel];
roryhand 1:aac37edee302 1036 place_hold1 = place_hold1 + 1;
roryhand 1:aac37edee302 1037 if(place_hold1 >= BufferLen) {
roryhand 1:aac37edee302 1038 while(1) {
roryhand 1:aac37edee302 1039 if(flag1 == 0) {
roryhand 1:aac37edee302 1040 break;
roryhand 1:aac37edee302 1041 }//if(flag1 == 0)
roryhand 1:aac37edee302 1042
roryhand 1:aac37edee302 1043
roryhand 1:aac37edee302 1044 }//while(1)
roryhand 1:aac37edee302 1045 }//if(place_hold1 > = BufferLen)
roryhand 0:e89d7a0bfa3b 1046
roryhand 1:aac37edee302 1047 } else if(flag2 == 1) {
roryhand 2:957d3b2afff4 1048 Buffer2[place_hold2] = Sounds[NotchingSet.Notch].data_sptr[channel];
roryhand 1:aac37edee302 1049 place_hold2 = place_hold2 + 1;
roryhand 1:aac37edee302 1050 if(place_hold2 >= BufferLen) {
roryhand 1:aac37edee302 1051 while(1) {
roryhand 1:aac37edee302 1052
roryhand 1:aac37edee302 1053 if(flag2 == 0) {
roryhand 1:aac37edee302 1054 break;
roryhand 1:aac37edee302 1055 }
roryhand 1:aac37edee302 1056 }
roryhand 0:e89d7a0bfa3b 1057 }
roryhand 1:aac37edee302 1058
roryhand 1:aac37edee302 1059 }
roryhand 0:e89d7a0bfa3b 1060 }
roryhand 0:e89d7a0bfa3b 1061 }
roryhand 0:e89d7a0bfa3b 1062 slice = slice + 1;
roryhand 0:e89d7a0bfa3b 1063 }
roryhand 0:e89d7a0bfa3b 1064 }
roryhand 0:e89d7a0bfa3b 1065
roryhand 0:e89d7a0bfa3b 1066
roryhand 0:e89d7a0bfa3b 1067
roryhand 0:e89d7a0bfa3b 1068
roryhand 0:e89d7a0bfa3b 1069
roryhand 0:e89d7a0bfa3b 1070
roryhand 0:e89d7a0bfa3b 1071
roryhand 9:dd9cae06b202 1072