old demo that i want to try in mbed studio

Dependencies:   mbed SDFileSystem_Copy_of_mbed_version I2S

Committer:
roryhand
Date:
Sun Sep 29 21:07:27 2019 +0000
Branch:
LargeFile_Tests
Revision:
69:df10ee3ad523
Parent:
68:55e26c5e837b
Child:
70:2b144da2c3b8
WIP - have added some of the logic required into the Play_WaveFileLoop Fnc.

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 54:606a83fff291 14 //#include "BlockDevice.h"
roryhand 37:a563899ac0df 15 #include <string>
roryhand 0:e89d7a0bfa3b 16 #include <stdlib.h>
roryhand 27:a378f1f937ee 17 #include <fstream>
roryhand 27:a378f1f937ee 18 #include <iostream>
roryhand 0:e89d7a0bfa3b 19 #include <vector>
roryhand 0:e89d7a0bfa3b 20 #include <string>
roryhand 0:e89d7a0bfa3b 21 #define sample_freq 11025
roryhand 1:aac37edee302 22 #pragma import __use_two_region_memory
roryhand 54:606a83fff291 23 //BlockDevice *bd = BlockDevice::get_default_instance();
roryhand 54:606a83fff291 24 //#include "LittleFileSystem.h"
roryhand 54:606a83fff291 25 //LittleFileSystem fs("fs");
roryhand 54:606a83fff291 26
roryhand 0:e89d7a0bfa3b 27 DigitalOut myled(LED1);
roryhand 0:e89d7a0bfa3b 28 DigitalOut led2(LED2);
roryhand 0:e89d7a0bfa3b 29 DigitalOut led3(LED3);
roryhand 0:e89d7a0bfa3b 30 DigitalIn NotchUp(p16);
roryhand 38:3b4c05af5f36 31 DigitalIn NotchDown(p17);//check the pin!!! Dont know if this will actually work...
roryhand 0:e89d7a0bfa3b 32 InterruptIn Horn(p16);
roryhand 0:e89d7a0bfa3b 33 Ticker sampletick;
roryhand 45:0e8e1f2ec5d2 34
roryhand 0:e89d7a0bfa3b 35 Ticker TickFadeOut;
roryhand 0:e89d7a0bfa3b 36 Timer t;
roryhand 0:e89d7a0bfa3b 37 Timer t2;
roryhand 3:6169aeeaeeb4 38 Timer NotchTimer;
roryhand 27:a378f1f937ee 39 Timer timer_open;
roryhand 0:e89d7a0bfa3b 40
roryhand 0:e89d7a0bfa3b 41 Serial pc(USBTX, USBRX); // tx, rx //FOR DEBUGGING PROGRAM USING GNU SCREEN
roryhand 0:e89d7a0bfa3b 42 DigitalOut cs(p8);
roryhand 0:e89d7a0bfa3b 43 I2S i2s(I2S_TRANSMIT, p5, p6, p7);
roryhand 0:e89d7a0bfa3b 44 SDFileSystem sd(p11, p12, p13, p8, "sd"); // the new pinout that i am using
roryhand 0:e89d7a0bfa3b 45
roryhand 65:8b6a4e307941 46 class classFade
roryhand 65:8b6a4e307941 47 {
roryhand 65:8b6a4e307941 48 public:
roryhand 65:8b6a4e307941 49
roryhand 65:8b6a4e307941 50 float powerval;
roryhand 65:8b6a4e307941 51 float FadeIteration;
roryhand 65:8b6a4e307941 52 float DecayFactor;
roryhand 65:8b6a4e307941 53 float Denom;
roryhand 65:8b6a4e307941 54 float FadeCoeff;
roryhand 65:8b6a4e307941 55 float Natural_Exp;
roryhand 65:8b6a4e307941 56 int LengthSecs;
roryhand 65:8b6a4e307941 57 int Length;
roryhand 67:043fe0b81343 58 void FadeDataInitialise()
roryhand 67:043fe0b81343 59 {
roryhand 67:043fe0b81343 60 DecayFactor = 1.3;
roryhand 67:043fe0b81343 61 FadeIteration = 1;
roryhand 67:043fe0b81343 62 //FadeData.Denom = 11025*FadeData.DecayFactor;
roryhand 67:043fe0b81343 63 Denom = 11025*DecayFactor;
roryhand 67:043fe0b81343 64 Natural_Exp = 2.7183;
roryhand 67:043fe0b81343 65 Length = 11025*LengthSecs;
roryhand 67:043fe0b81343 66 //FadeData.Natural_Exp = 2.7;
roryhand 67:043fe0b81343 67 }
roryhand 65:8b6a4e307941 68 //member Functions
roryhand 65:8b6a4e307941 69 float FadeOut(void)
roryhand 65:8b6a4e307941 70 {
roryhand 65:8b6a4e307941 71 powerval = -FadeIteration/Denom;
roryhand 65:8b6a4e307941 72 if (FadeIteration >=Length) {
roryhand 65:8b6a4e307941 73 FadeCoeff = 0;
roryhand 65:8b6a4e307941 74
roryhand 65:8b6a4e307941 75 } else {
roryhand 65:8b6a4e307941 76 FadeCoeff = (Length - FadeIteration)/Length;
roryhand 65:8b6a4e307941 77 }
roryhand 65:8b6a4e307941 78 FadeIteration = FadeIteration + 1;
roryhand 65:8b6a4e307941 79 return FadeCoeff;
roryhand 65:8b6a4e307941 80
roryhand 65:8b6a4e307941 81 }
roryhand 65:8b6a4e307941 82 float FadeIn(void)
roryhand 65:8b6a4e307941 83 {
roryhand 65:8b6a4e307941 84 powerval = FadeIteration/Denom;
roryhand 65:8b6a4e307941 85 if (FadeIteration >=Length) {
roryhand 65:8b6a4e307941 86 FadeCoeff = 1;
roryhand 65:8b6a4e307941 87
roryhand 65:8b6a4e307941 88 } else {
roryhand 65:8b6a4e307941 89 FadeCoeff = FadeIteration/Length;
roryhand 65:8b6a4e307941 90 }
roryhand 65:8b6a4e307941 91
roryhand 65:8b6a4e307941 92 FadeIteration = FadeIteration + 1;
roryhand 65:8b6a4e307941 93 return FadeCoeff;
roryhand 65:8b6a4e307941 94
roryhand 65:8b6a4e307941 95 }
roryhand 65:8b6a4e307941 96 };
roryhand 65:8b6a4e307941 97
roryhand 65:8b6a4e307941 98
roryhand 67:043fe0b81343 99 //Do these variables have to be global?? Find out - may be better (safer) to make them local.
roryhand 67:043fe0b81343 100 classFade NotchFadeIn;
roryhand 67:043fe0b81343 101 classFade NotchFadeOut;
roryhand 67:043fe0b81343 102
roryhand 67:043fe0b81343 103
roryhand 67:043fe0b81343 104 //Dont require the class below. Turns out I had already made a Structure to hold the same information.
roryhand 67:043fe0b81343 105 //If in the futre I need to embed functions then I will switch to using this class
roryhand 67:043fe0b81343 106 /*
roryhand 67:043fe0b81343 107 class classNotchingValue{
roryhand 67:043fe0b81343 108 public:
roryhand 67:043fe0b81343 109
roryhand 67:043fe0b81343 110 int Notch, Previous_Notch;
roryhand 67:043fe0b81343 111 int NotchDirection;
roryhand 67:043fe0b81343 112 int NotchTransUp;
roryhand 67:043fe0b81343 113 classNotchingValue()
roryhand 67:043fe0b81343 114 {
roryhand 67:043fe0b81343 115 Notch = 1;
roryhand 67:043fe0b81343 116 Previous_Notch = 0;
roryhand 67:043fe0b81343 117 NotchDirection = 1;
roryhand 67:043fe0b81343 118 NotchTransUp = 0;
roryhand 67:043fe0b81343 119 }
roryhand 67:043fe0b81343 120
roryhand 67:043fe0b81343 121 };
roryhand 67:043fe0b81343 122
roryhand 67:043fe0b81343 123
roryhand 67:043fe0b81343 124
roryhand 67:043fe0b81343 125 classNotchingValue NotchingSet;
roryhand 67:043fe0b81343 126
roryhand 67:043fe0b81343 127 */
roryhand 67:043fe0b81343 128
roryhand 1:aac37edee302 129 typedef struct uFMT_STRUCT {
roryhand 1:aac37edee302 130 short comp_code;
roryhand 1:aac37edee302 131 short num_channels;
roryhand 1:aac37edee302 132 unsigned sample_rate;
roryhand 1:aac37edee302 133 unsigned avg_Bps;
roryhand 1:aac37edee302 134 short block_align;
roryhand 1:aac37edee302 135 short sig_bps;
roryhand 0:e89d7a0bfa3b 136 } FMT_STRUCT;
roryhand 0:e89d7a0bfa3b 137
roryhand 1:aac37edee302 138 typedef struct uNotch_STRUCT {
roryhand 1:aac37edee302 139 short Notch;
roryhand 1:aac37edee302 140 short NotchTransUp;
roryhand 1:aac37edee302 141 short NotchTransDown;
roryhand 1:aac37edee302 142 short NotchDirection;
roryhand 1:aac37edee302 143 } Notch_STRUCT;
roryhand 1:aac37edee302 144
roryhand 67:043fe0b81343 145 Notch_STRUCT NotchingSet;
roryhand 67:043fe0b81343 146
roryhand 67:043fe0b81343 147
roryhand 0:e89d7a0bfa3b 148 typedef struct uDATA_STRUCT {
roryhand 1:aac37edee302 149 unsigned subchunk2_ID;
roryhand 1:aac37edee302 150 unsigned subchunk2_size;
roryhand 1:aac37edee302 151 char * data_buf;
roryhand 1:aac37edee302 152 } DATA_STRUCT;
roryhand 0:e89d7a0bfa3b 153
roryhand 1:aac37edee302 154 typedef struct uWAV_FILE_STRUCT {
roryhand 1:aac37edee302 155 FILE *WavFile;
roryhand 1:aac37edee302 156 int id_number;
roryhand 1:aac37edee302 157 char *slice_buf;
roryhand 1:aac37edee302 158 int num_slices;
roryhand 1:aac37edee302 159 FMT_STRUCT FileFormat;
roryhand 1:aac37edee302 160 DATA_STRUCT FileData;
roryhand 0:e89d7a0bfa3b 161 } WAV_FILE_STRUCT;
roryhand 0:e89d7a0bfa3b 162
roryhand 0:e89d7a0bfa3b 163 /*typedef struct uWAV_FILE_STRUCT{
roryhand 1:aac37edee302 164 FILE* WavFile;
roryhand 1:aac37edee302 165
roryhand 1:aac37edee302 166
roryhand 0:e89d7a0bfa3b 167 }WAV_FILE_STRUCT;*/
roryhand 59:8e7c25a915a0 168
roryhand 59:8e7c25a915a0 169
roryhand 59:8e7c25a915a0 170
roryhand 59:8e7c25a915a0 171
roryhand 59:8e7c25a915a0 172
roryhand 59:8e7c25a915a0 173 class classSoundFile
roryhand 59:8e7c25a915a0 174 {
roryhand 59:8e7c25a915a0 175 public:
roryhand 59:8e7c25a915a0 176
roryhand 59:8e7c25a915a0 177 //add a class constructor at some point in the future (perform tests in visual studio)
roryhand 59:8e7c25a915a0 178 WAV_FILE_STRUCT FileInfo;
roryhand 59:8e7c25a915a0 179 short * data_sptr;
roryhand 59:8e7c25a915a0 180 string file_location;
roryhand 59:8e7c25a915a0 181 //classSoundFile(string filename);//this is the constructor
roryhand 59:8e7c25a915a0 182 //string filename;
roryhand 59:8e7c25a915a0 183 };
roryhand 58:a174e7a8f5f2 184 class classPositionIndicators
roryhand 57:0c76b15cabaf 185 {
roryhand 57:0c76b15cabaf 186 public:
roryhand 57:0c76b15cabaf 187 int notch1_indicator, notch2_indicator, notch3_indicator, notch4_indicator;
roryhand 57:0c76b15cabaf 188 int notch5_indicator, notch6_indicator, notch7_indicator, notch8_indicator;
roryhand 57:0c76b15cabaf 189 int notch1_start_pt, notch2_start_pt, notch3_start_pt, notch4_start_pt;
roryhand 57:0c76b15cabaf 190 int notch5_start_pt, notch6_start_pt, notch7_start_pt, notch8_start_pt;
roryhand 63:a8c1971d3d42 191 int N1N2_start_pt, N2N3_start_pt, N3N4_start_pt, N4N5_start_pt, N5N6_start_pt;
roryhand 63:a8c1971d3d42 192 int N6N7_start_pt, N7N8_start_pt, N8N7_start_pt, N7N6_start_pt, N6N5_start_pt;
roryhand 63:a8c1971d3d42 193 int N5N4_start_pt, N4N3_start_pt, N3N2_start_pt, N2N1_start_pt;
roryhand 67:043fe0b81343 194
roryhand 61:212d2db45c56 195 int notch_start_pts [9];
roryhand 61:212d2db45c56 196 int notch_position_indicators[9];
roryhand 61:212d2db45c56 197 int notch_transitions_start_pts[15];
roryhand 61:212d2db45c56 198 int notch_transitions_position_indicators[15];
roryhand 61:212d2db45c56 199 int auxiliary_start_pts[5];
roryhand 61:212d2db45c56 200 int auxiliary_position_indicators[5];
roryhand 58:a174e7a8f5f2 201 classPositionIndicators()
roryhand 57:0c76b15cabaf 202 {
roryhand 57:0c76b15cabaf 203 notch1_start_pt = 44;
roryhand 57:0c76b15cabaf 204 notch2_start_pt = 220884+44;
roryhand 57:0c76b15cabaf 205 notch3_start_pt = notch2_start_pt+217698;
roryhand 57:0c76b15cabaf 206 notch4_start_pt = notch3_start_pt + 193060;
roryhand 57:0c76b15cabaf 207 notch5_start_pt = notch4_start_pt + 92010;
roryhand 57:0c76b15cabaf 208 notch6_start_pt = notch5_start_pt + 216642;
roryhand 57:0c76b15cabaf 209 notch7_start_pt = notch6_start_pt + 250316;
roryhand 61:212d2db45c56 210 notch8_start_pt = notch7_start_pt + 150152;
roryhand 57:0c76b15cabaf 211 notch1_indicator = notch1_start_pt;
roryhand 57:0c76b15cabaf 212 notch2_indicator = notch2_start_pt;
roryhand 57:0c76b15cabaf 213 notch3_indicator = notch3_start_pt;
roryhand 57:0c76b15cabaf 214 notch4_indicator = notch4_start_pt;
roryhand 57:0c76b15cabaf 215 notch5_indicator = notch5_start_pt;
roryhand 57:0c76b15cabaf 216 notch6_indicator = notch6_start_pt;
roryhand 57:0c76b15cabaf 217 notch7_indicator = notch7_start_pt;
roryhand 57:0c76b15cabaf 218 notch8_indicator = notch8_start_pt;
roryhand 61:212d2db45c56 219 notch_start_pts[1] = notch1_start_pt;
roryhand 61:212d2db45c56 220 notch_start_pts[2] = notch2_start_pt;
roryhand 61:212d2db45c56 221 notch_start_pts[3] = notch3_start_pt;
roryhand 61:212d2db45c56 222 notch_start_pts[4] = notch4_start_pt;
roryhand 61:212d2db45c56 223 notch_start_pts[5] = notch5_start_pt;
roryhand 61:212d2db45c56 224 notch_start_pts[6] = notch6_start_pt;
roryhand 61:212d2db45c56 225 notch_start_pts[7] = notch7_start_pt;
roryhand 61:212d2db45c56 226 notch_start_pts[8] = notch8_start_pt;
roryhand 61:212d2db45c56 227 notch_position_indicators[1] = notch1_indicator;
roryhand 61:212d2db45c56 228 notch_position_indicators[2] = notch2_indicator;
roryhand 61:212d2db45c56 229 notch_position_indicators[3] = notch3_indicator;
roryhand 61:212d2db45c56 230 notch_position_indicators[4] = notch4_indicator;
roryhand 61:212d2db45c56 231 notch_position_indicators[5] = notch5_indicator;
roryhand 61:212d2db45c56 232 notch_position_indicators[6] = notch6_indicator;
roryhand 61:212d2db45c56 233 notch_position_indicators[7] = notch7_indicator;
roryhand 61:212d2db45c56 234 notch_position_indicators[8] = notch8_indicator;
roryhand 67:043fe0b81343 235
roryhand 63:a8c1971d3d42 236 N1N2_start_pt = 44;
roryhand 63:a8c1971d3d42 237 N2N3_start_pt = N1N2_start_pt + 73220;
roryhand 63:a8c1971d3d42 238 N3N4_start_pt = N2N3_start_pt + 78164;
roryhand 63:a8c1971d3d42 239 N4N5_start_pt = N3N4_start_pt + 59432;
roryhand 63:a8c1971d3d42 240 N5N6_start_pt = N4N5_start_pt + 64984;
roryhand 63:a8c1971d3d42 241 N6N7_start_pt = N5N6_start_pt + 59924;
roryhand 63:a8c1971d3d42 242 N7N8_start_pt = N6N7_start_pt + 97874;
roryhand 63:a8c1971d3d42 243 N8N7_start_pt = N7N8_start_pt + 63992;
roryhand 63:a8c1971d3d42 244 N7N6_start_pt = N8N7_start_pt + 44506;
roryhand 63:a8c1971d3d42 245 N6N5_start_pt = N7N6_start_pt + 55052;
roryhand 63:a8c1971d3d42 246 N5N4_start_pt = N6N5_start_pt + 37038;
roryhand 63:a8c1971d3d42 247 N4N3_start_pt = N5N4_start_pt + 49692;
roryhand 63:a8c1971d3d42 248 N3N2_start_pt = N4N3_start_pt + 44100;
roryhand 63:a8c1971d3d42 249 N2N1_start_pt = N3N2_start_pt + 58346;
roryhand 67:043fe0b81343 250
roryhand 67:043fe0b81343 251
roryhand 63:a8c1971d3d42 252 notch_transitions_start_pts[1] = N1N2_start_pt;
roryhand 63:a8c1971d3d42 253 notch_transitions_start_pts[2] = N2N3_start_pt;
roryhand 63:a8c1971d3d42 254 notch_transitions_start_pts[3] = N3N4_start_pt;
roryhand 63:a8c1971d3d42 255 notch_transitions_start_pts[4] = N4N5_start_pt;
roryhand 63:a8c1971d3d42 256 notch_transitions_start_pts[5] = N5N6_start_pt;
roryhand 63:a8c1971d3d42 257 notch_transitions_start_pts[6] = N6N7_start_pt;
roryhand 63:a8c1971d3d42 258 notch_transitions_start_pts[7] = N7N8_start_pt;
roryhand 63:a8c1971d3d42 259 notch_transitions_start_pts[8] = N8N7_start_pt;
roryhand 63:a8c1971d3d42 260 notch_transitions_start_pts[9] = N7N6_start_pt;
roryhand 63:a8c1971d3d42 261 notch_transitions_start_pts[10] = N6N5_start_pt;
roryhand 63:a8c1971d3d42 262 notch_transitions_start_pts[11] = N5N4_start_pt;
roryhand 63:a8c1971d3d42 263 notch_transitions_start_pts[12] = N4N3_start_pt;
roryhand 63:a8c1971d3d42 264 notch_transitions_start_pts[13] = N3N2_start_pt;
roryhand 63:a8c1971d3d42 265 notch_transitions_start_pts[14] = N2N1_start_pt;
roryhand 67:043fe0b81343 266
roryhand 67:043fe0b81343 267
roryhand 63:a8c1971d3d42 268 notch_transitions_position_indicators[1] = N1N2_start_pt;
roryhand 63:a8c1971d3d42 269 notch_transitions_position_indicators[2] = N2N3_start_pt;
roryhand 63:a8c1971d3d42 270 notch_transitions_position_indicators[3] = N3N4_start_pt;
roryhand 63:a8c1971d3d42 271 notch_transitions_position_indicators[4] = N4N5_start_pt;
roryhand 63:a8c1971d3d42 272 notch_transitions_position_indicators[5] = N5N6_start_pt;
roryhand 63:a8c1971d3d42 273 notch_transitions_position_indicators[6] = N6N7_start_pt;
roryhand 63:a8c1971d3d42 274 notch_transitions_position_indicators[7] = N7N8_start_pt;
roryhand 63:a8c1971d3d42 275 notch_transitions_position_indicators[8] = N8N7_start_pt;
roryhand 63:a8c1971d3d42 276 notch_transitions_position_indicators[9] = N7N6_start_pt;
roryhand 63:a8c1971d3d42 277 notch_transitions_position_indicators[10] = N6N5_start_pt;
roryhand 63:a8c1971d3d42 278 notch_transitions_position_indicators[11] = N5N4_start_pt;
roryhand 63:a8c1971d3d42 279 notch_transitions_position_indicators[12] = N4N3_start_pt;
roryhand 63:a8c1971d3d42 280 notch_transitions_position_indicators[13] = N3N2_start_pt;
roryhand 63:a8c1971d3d42 281 notch_transitions_position_indicators[14] = N2N1_start_pt;
roryhand 57:0c76b15cabaf 282 }
roryhand 57:0c76b15cabaf 283 };
roryhand 57:0c76b15cabaf 284
roryhand 66:edf370edd21c 285
roryhand 66:edf370edd21c 286 void NotchUpIsr()
roryhand 66:edf370edd21c 287 {
roryhand 66:edf370edd21c 288 if(1 <= NotchingSet.Notch < 8) {
roryhand 66:edf370edd21c 289
roryhand 66:edf370edd21c 290 NotchingSet.Notch = NotchingSet.Notch + 1;
roryhand 66:edf370edd21c 291 NotchingSet.NotchTransUp = NotchingSet.Notch + 7;
roryhand 66:edf370edd21c 292 NotchingSet.NotchDirection = 1;
roryhand 67:043fe0b81343 293 NotchFadeIn.FadeDataInitialise();
roryhand 67:043fe0b81343 294 NotchFadeOut.FadeDataInitialise();
roryhand 67:043fe0b81343 295 //NotchFadeOut.FadeDataInitialise;
roryhand 66:edf370edd21c 296 }
roryhand 66:edf370edd21c 297 }
roryhand 66:edf370edd21c 298
roryhand 66:edf370edd21c 299 void NotchDownIsr()
roryhand 66:edf370edd21c 300 {
roryhand 66:edf370edd21c 301 if(1 < NotchingSet.Notch <= 8) {
roryhand 66:edf370edd21c 302 NotchingSet.Notch = NotchingSet.Notch - 1;
roryhand 67:043fe0b81343 303 NotchingSet.NotchTransDown = NotchingSet.Notch + 15;
roryhand 66:edf370edd21c 304 NotchingSet.NotchDirection = 0;
roryhand 67:043fe0b81343 305 NotchFadeIn.FadeDataInitialise();
roryhand 67:043fe0b81343 306 NotchFadeOut.FadeDataInitialise();
roryhand 66:edf370edd21c 307 }
roryhand 66:edf370edd21c 308 }
roryhand 67:043fe0b81343 309
roryhand 69:df10ee3ad523 310 char *slice_buf1;
roryhand 69:df10ee3ad523 311 char *slice_buf2;
roryhand 69:df10ee3ad523 312 char *slice_buf3;
roryhand 67:043fe0b81343 313
roryhand 54:606a83fff291 314 int OneOff = 0;
roryhand 38:3b4c05af5f36 315 int notch_flag = 0;
roryhand 0:e89d7a0bfa3b 316 int i = 0;
roryhand 0:e89d7a0bfa3b 317 int h = 0;
roryhand 0:e89d7a0bfa3b 318 short bufflen = 1;
roryhand 0:e89d7a0bfa3b 319 int buffer[1];
roryhand 1:aac37edee302 320 int AudioFormat, NumChannels, SampleRate, BitsPerSample ;
roryhand 0:e89d7a0bfa3b 321 char *slice_buf;
roryhand 0:e89d7a0bfa3b 322 short *data_sptr;
roryhand 0:e89d7a0bfa3b 323 short *data_sptr_horn;
roryhand 0:e89d7a0bfa3b 324 short *data_sptr_IdleN2;
roryhand 0:e89d7a0bfa3b 325 short * data_sptr_bell;
roryhand 0:e89d7a0bfa3b 326 short * data_sptr_N2;
roryhand 0:e89d7a0bfa3b 327 short * data_sptr_Flange;
roryhand 0:e89d7a0bfa3b 328 unsigned char *data_bptr;
roryhand 0:e89d7a0bfa3b 329 int *data_wptr;
roryhand 0:e89d7a0bfa3b 330 unsigned channel;
roryhand 45:0e8e1f2ec5d2 331 long slice, slice1, slice2, slice3, num_slices;
roryhand 0:e89d7a0bfa3b 332 int verbosity = 0;
roryhand 0:e89d7a0bfa3b 333 int verbosity2 = 0;
roryhand 0:e89d7a0bfa3b 334 int verbosity3 = 0;
roryhand 0:e89d7a0bfa3b 335 int verbosity4 = 0;
roryhand 0:e89d7a0bfa3b 336 int verbosity5 = 0;
roryhand 0:e89d7a0bfa3b 337 int interrupt_condition = 1;
roryhand 0:e89d7a0bfa3b 338 int sampling_freq = 11025;
roryhand 0:e89d7a0bfa3b 339 const int BufferLen = 2000;
roryhand 0:e89d7a0bfa3b 340 short Buffer1[BufferLen];
roryhand 0:e89d7a0bfa3b 341 short Buffer2[BufferLen];
roryhand 0:e89d7a0bfa3b 342 short place_hold1 = 0;
roryhand 0:e89d7a0bfa3b 343 short place_hold2 = 0;
roryhand 0:e89d7a0bfa3b 344
roryhand 3:6169aeeaeeb4 345
roryhand 3:6169aeeaeeb4 346 string FOLDER;
roryhand 3:6169aeeaeeb4 347 string RootFolder = "/sd/mydir/SoundDecoder/";
roryhand 3:6169aeeaeeb4 348 string filename[25];
roryhand 3:6169aeeaeeb4 349 classSoundFile Sound[22];
roryhand 3:6169aeeaeeb4 350
roryhand 0:e89d7a0bfa3b 351 volatile int flag1 = 1;
roryhand 0:e89d7a0bfa3b 352 volatile int flag2 = 0;
roryhand 0:e89d7a0bfa3b 353 volatile int flag3 = 1;
roryhand 0:e89d7a0bfa3b 354 volatile int flag4 = 0;
roryhand 0:e89d7a0bfa3b 355 int FLAGBUFF1 = 0;
roryhand 0:e89d7a0bfa3b 356 int FLAGBUFF2 = 0;
roryhand 0:e89d7a0bfa3b 357 int BellFlag = 0;
roryhand 0:e89d7a0bfa3b 358 int BellFlag2 = 0;
roryhand 0:e89d7a0bfa3b 359 int FadeFlag = 0;
roryhand 54:606a83fff291 360 int BlockFlag = 0;
roryhand 32:6ee488c97dcc 361 int FileSwitchFlag = 0;
roryhand 0:e89d7a0bfa3b 362
roryhand 0:e89d7a0bfa3b 363
roryhand 0:e89d7a0bfa3b 364 short value[1];
roryhand 59:8e7c25a915a0 365
roryhand 0:e89d7a0bfa3b 366 //long long slice_value;
roryhand 0:e89d7a0bfa3b 367 int slice_value[1];
roryhand 0:e89d7a0bfa3b 368
roryhand 0:e89d7a0bfa3b 369
roryhand 45:0e8e1f2ec5d2 370 FILE *wavfile1;
roryhand 45:0e8e1f2ec5d2 371 FILE *wavfile2;
roryhand 45:0e8e1f2ec5d2 372 FILE *wavfile3;
roryhand 45:0e8e1f2ec5d2 373
roryhand 45:0e8e1f2ec5d2 374 classSoundFile Sound1;
roryhand 45:0e8e1f2ec5d2 375 classSoundFile Sound2;
roryhand 45:0e8e1f2ec5d2 376 classSoundFile Sound3;
roryhand 45:0e8e1f2ec5d2 377
roryhand 0:e89d7a0bfa3b 378
roryhand 0:e89d7a0bfa3b 379 void isr()
roryhand 0:e89d7a0bfa3b 380 {
roryhand 54:606a83fff291 381 //timer_interrupt.start();
roryhand 1:aac37edee302 382 if(flag1 == 0) {
roryhand 0:e89d7a0bfa3b 383 value[0] = Buffer1[place_hold1]>>4;
roryhand 0:e89d7a0bfa3b 384 i2s.write(value,1);//Send next PWM value to amp
roryhand 0:e89d7a0bfa3b 385 place_hold1 = place_hold1 + 1;
roryhand 1:aac37edee302 386 if( (place_hold1 >= BufferLen)) {
roryhand 0:e89d7a0bfa3b 387 led2 = !led2;
roryhand 0:e89d7a0bfa3b 388 place_hold1 = 0;
roryhand 0:e89d7a0bfa3b 389 place_hold2 = 0;
roryhand 0:e89d7a0bfa3b 390 flag1 = 1;
roryhand 0:e89d7a0bfa3b 391 flag2 = 0;
roryhand 1:aac37edee302 392 }
roryhand 1:aac37edee302 393 } else if(flag2 == 0) {
roryhand 0:e89d7a0bfa3b 394 value[0] = Buffer2[place_hold2]>>4;
roryhand 0:e89d7a0bfa3b 395 i2s.write(value,1);//Send next PWM value to amp
roryhand 0:e89d7a0bfa3b 396 place_hold2 = place_hold2 + 1;
roryhand 1:aac37edee302 397 if( (place_hold2 >= BufferLen) ) {
roryhand 0:e89d7a0bfa3b 398 led2 = !led2;
roryhand 0:e89d7a0bfa3b 399 place_hold1 = 0;
roryhand 0:e89d7a0bfa3b 400 place_hold2 = 0;
roryhand 0:e89d7a0bfa3b 401 flag1 = 0;
roryhand 1:aac37edee302 402 flag2 = 1;
roryhand 0:e89d7a0bfa3b 403 FLAGBUFF2 = 0;
roryhand 1:aac37edee302 404 }
roryhand 0:e89d7a0bfa3b 405 }
roryhand 54:606a83fff291 406
roryhand 54:606a83fff291 407 //timer_interrupt.stop();
roryhand 54:606a83fff291 408
roryhand 0:e89d7a0bfa3b 409 }
roryhand 1:aac37edee302 410
roryhand 38:3b4c05af5f36 411
roryhand 38:3b4c05af5f36 412
roryhand 38:3b4c05af5f36 413
roryhand 38:3b4c05af5f36 414
roryhand 0:e89d7a0bfa3b 415
roryhand 59:8e7c25a915a0 416
roryhand 59:8e7c25a915a0 417
roryhand 59:8e7c25a915a0 418
roryhand 59:8e7c25a915a0 419
roryhand 59:8e7c25a915a0 420
roryhand 3:6169aeeaeeb4 421
roryhand 3:6169aeeaeeb4 422
roryhand 3:6169aeeaeeb4 423
roryhand 3:6169aeeaeeb4 424
roryhand 3:6169aeeaeeb4 425
roryhand 3:6169aeeaeeb4 426 //function prototypes
roryhand 67:043fe0b81343 427 //classFade FadeDataInitialise(classFade FadeData);
roryhand 45:0e8e1f2ec5d2 428 classSoundFile ReadFileInfo(classSoundFile Sound, FILE * wav_file);
roryhand 3:6169aeeaeeb4 429 classSoundFile LoadFileStream(classSoundFile FileInfo, string filename);
roryhand 3:6169aeeaeeb4 430 void Play_WaveFile(FILE * my_wav, WAV_FILE_STRUCT FileInfo);
roryhand 32:6ee488c97dcc 431 void Play_WaveFileDual(FILE * my_wav, WAV_FILE_STRUCT FileInfo);
roryhand 59:8e7c25a915a0 432 void Play_WaveFileLoop(classSoundFile Sound1, FILE* wavfile1,classPositionIndicators Positions);
roryhand 0:e89d7a0bfa3b 433
roryhand 1:aac37edee302 434 int main()
roryhand 1:aac37edee302 435 {
roryhand 44:a9e84d333a6a 436
roryhand 0:e89d7a0bfa3b 437 NotchUp.mode(PullUp);
roryhand 38:3b4c05af5f36 438 NotchDown.mode(PullUp);
roryhand 0:e89d7a0bfa3b 439
roryhand 0:e89d7a0bfa3b 440 pc.printf("Beginning of program\n");
roryhand 32:6ee488c97dcc 441
roryhand 13:8e93396a27c5 442
roryhand 13:8e93396a27c5 443
roryhand 4:55fbbb049bae 444
roryhand 25:5336e1cf38d6 445 printf("Do we even get to this stupid bloody point\n\r");
roryhand 0:e89d7a0bfa3b 446 //Populate our class instances with some data (is there an implicit way to do this?)
roryhand 28:6b2353fad12d 447
roryhand 1:aac37edee302 448
roryhand 3:6169aeeaeeb4 449 printf("hello\n\r");
roryhand 0:e89d7a0bfa3b 450 //Set up the wolfson Audio Codec board
roryhand 0:e89d7a0bfa3b 451 wm8731_Config_setup();
roryhand 0:e89d7a0bfa3b 452 //i2s audio data transfer code??
roryhand 0:e89d7a0bfa3b 453 i2s.stereomono(I2S_STEREO);
roryhand 0:e89d7a0bfa3b 454 i2s.masterslave(I2S_MASTER);
roryhand 0:e89d7a0bfa3b 455 led3 = 1;
roryhand 0:e89d7a0bfa3b 456 led2 = 1;
roryhand 45:0e8e1f2ec5d2 457 printf("Hello i2s has started!");
roryhand 30:4a8e80b243c4 458 i2s.start();
roryhand 0:e89d7a0bfa3b 459 sampletick.attach(&isr,1.0/sampling_freq); //1/16000
roryhand 67:043fe0b81343 460
roryhand 67:043fe0b81343 461
roryhand 67:043fe0b81343 462 NotchFadeIn.LengthSecs = 2;
roryhand 67:043fe0b81343 463 NotchFadeOut.LengthSecs = 2;
roryhand 67:043fe0b81343 464
roryhand 67:043fe0b81343 465 NotchFadeIn.FadeDataInitialise();
roryhand 67:043fe0b81343 466 NotchFadeOut.FadeDataInitialise();
roryhand 67:043fe0b81343 467
roryhand 58:a174e7a8f5f2 468 classPositionIndicators Positions;
roryhand 61:212d2db45c56 469 slice1 = Positions.notch7_start_pt;
roryhand 60:36df2997de3d 470 FILE* wavfile1 = fopen("/sd/mydir/SoundDecoder_second/All_eight_notches.wav","rb");
roryhand 60:36df2997de3d 471 //FILE* wavfile1 = fopen("/sd/mydir/SoundDecoder_second/01.wav","rb");
roryhand 58:a174e7a8f5f2 472 classSoundFile Sound1;
roryhand 58:a174e7a8f5f2 473 Sound1 = ReadFileInfo(Sound1, wavfile1);
roryhand 61:212d2db45c56 474 fseek(wavfile1,Positions.notch7_start_pt,SEEK_SET);
roryhand 20:9cc7d825c07b 475 printf("about to play wav file\n\r");
roryhand 59:8e7c25a915a0 476 Play_WaveFileLoop(Sound1,wavfile1,Positions);
roryhand 20:9cc7d825c07b 477 printf("finished playing Wav file\n\r");
roryhand 54:606a83fff291 478
roryhand 54:606a83fff291 479
roryhand 31:0f8c3adf09c3 480 timer_open.reset();
roryhand 31:0f8c3adf09c3 481 timer_open.start();
roryhand 45:0e8e1f2ec5d2 482 fclose(wavfile1);
roryhand 31:0f8c3adf09c3 483 timer_open.stop();
roryhand 31:0f8c3adf09c3 484 printf("It took %d useconds to close file\n\r",timer_open.read_us());
roryhand 54:606a83fff291 485
roryhand 54:606a83fff291 486
roryhand 54:606a83fff291 487
roryhand 54:606a83fff291 488
roryhand 9:dd9cae06b202 489 /************************************PLAY WAV FILE LOOP*******************/
roryhand 9:dd9cae06b202 490 /************************************END OF PLAY WAV FILE LOOP*************/
roryhand 13:8e93396a27c5 491
roryhand 13:8e93396a27c5 492
roryhand 1:aac37edee302 493 i2s.stop();
roryhand 0:e89d7a0bfa3b 494
roryhand 0:e89d7a0bfa3b 495 }
roryhand 0:e89d7a0bfa3b 496
roryhand 0:e89d7a0bfa3b 497
roryhand 3:6169aeeaeeb4 498
roryhand 3:6169aeeaeeb4 499
roryhand 3:6169aeeaeeb4 500
roryhand 3:6169aeeaeeb4 501
roryhand 45:0e8e1f2ec5d2 502 classSoundFile ReadFileInfo(classSoundFile Sound, FILE * wav_file)
roryhand 0:e89d7a0bfa3b 503 {
roryhand 0:e89d7a0bfa3b 504 fseek(wav_file,20,SEEK_SET);
roryhand 22:706e86dc0d45 505 printf("We have just seeked through this file\n\r");
roryhand 45:0e8e1f2ec5d2 506 fread(&Sound.FileInfo.FileFormat,sizeof(Sound.FileInfo.FileFormat),1,wav_file);
roryhand 1:aac37edee302 507 //printf("wav_format.sample_rate: %d\n\r",FileInfo.FileFormat.sample_rate);
roryhand 1:aac37edee302 508
roryhand 45:0e8e1f2ec5d2 509 fread(&Sound.FileInfo.FileData,sizeof(Sound.FileInfo.FileData),1,wav_file);
roryhand 55:5a441d3b0d57 510 printf("wav_data.subchunk2_size: %d\n\r",Sound.FileInfo.FileData.subchunk2_size);
roryhand 45:0e8e1f2ec5d2 511 Sound.FileInfo.slice_buf = ( char *)malloc(Sound.FileInfo.FileFormat.block_align);
roryhand 59:8e7c25a915a0 512 printf("Wav File Block Align (number of bytes per sample!!: %d\n\r", Sound.FileInfo.FileFormat.block_align);
roryhand 45:0e8e1f2ec5d2 513 fread(Sound.FileInfo.slice_buf,Sound.FileInfo.FileFormat.block_align,1,wav_file); //This isnt actually required, its just a test
roryhand 45:0e8e1f2ec5d2 514 Sound.FileInfo.num_slices = Sound.FileInfo.FileData.subchunk2_size/Sound.FileInfo.FileFormat.block_align;
roryhand 1:aac37edee302 515 //printf("Number of Slices: %d\n\r",FileInfo.num_slices);
roryhand 45:0e8e1f2ec5d2 516 return Sound;
roryhand 0:e89d7a0bfa3b 517 }
roryhand 1:aac37edee302 518
roryhand 1:aac37edee302 519
roryhand 64:6061ffe25985 520 //Function to initialise Data for classFade objects. Perhaps move this into a constructor for the class? (class still to be added)
roryhand 67:043fe0b81343 521 /*
roryhand 64:6061ffe25985 522 classFade FadeDataInitialise(classFade FadeData)
roryhand 64:6061ffe25985 523 {
roryhand 64:6061ffe25985 524 FadeData.DecayFactor = 1.3;
roryhand 64:6061ffe25985 525 FadeData.FadeIteration = 1;
roryhand 64:6061ffe25985 526 //FadeData.Denom = 11025*FadeData.DecayFactor;
roryhand 64:6061ffe25985 527 FadeData.Denom = 11025*FadeData.DecayFactor;
roryhand 64:6061ffe25985 528 FadeData.Natural_Exp = 2.7183;
roryhand 64:6061ffe25985 529 FadeData.Length = 11025*FadeData.LengthSecs;
roryhand 64:6061ffe25985 530 //FadeData.Natural_Exp = 2.7;
roryhand 64:6061ffe25985 531 return FadeData;
roryhand 64:6061ffe25985 532 }
roryhand 67:043fe0b81343 533 */
roryhand 1:aac37edee302 534
roryhand 1:aac37edee302 535
roryhand 1:aac37edee302 536
roryhand 0:e89d7a0bfa3b 537
roryhand 0:e89d7a0bfa3b 538 void Play_WaveFile(FILE * my_wav, WAV_FILE_STRUCT FileInfo)
roryhand 0:e89d7a0bfa3b 539 {
roryhand 1:aac37edee302 540 while(slice<FileInfo.num_slices) {
roryhand 1:aac37edee302 541 fread(FileInfo.slice_buf,FileInfo.FileFormat.block_align,1,my_wav);
roryhand 1:aac37edee302 542 data_sptr=(short *)FileInfo.slice_buf; // 16 bit samples
roryhand 1:aac37edee302 543 for (channel=0; channel<FileInfo.FileFormat.num_channels; channel++) {
roryhand 1:aac37edee302 544 if(flag1 == 1) {
roryhand 1:aac37edee302 545 Buffer1[place_hold1] = data_sptr[channel];
roryhand 1:aac37edee302 546 place_hold1 = place_hold1 + 1;
roryhand 1:aac37edee302 547 if(place_hold1 >= BufferLen) {
roryhand 1:aac37edee302 548 while(1) {
roryhand 1:aac37edee302 549 if(flag1 == 0) {
roryhand 0:e89d7a0bfa3b 550
roryhand 1:aac37edee302 551 break;
roryhand 0:e89d7a0bfa3b 552 }
roryhand 1:aac37edee302 553
roryhand 0:e89d7a0bfa3b 554 }
roryhand 1:aac37edee302 555 }
roryhand 1:aac37edee302 556
roryhand 1:aac37edee302 557 } else if(flag2 == 1) {
roryhand 1:aac37edee302 558 Buffer2[place_hold2] = data_sptr[channel];
roryhand 1:aac37edee302 559 place_hold2 = place_hold2 + 1;
roryhand 1:aac37edee302 560 if(place_hold2 >= BufferLen) {
roryhand 1:aac37edee302 561
roryhand 1:aac37edee302 562 while(1) {
roryhand 1:aac37edee302 563 if(flag2 == 0) {
roryhand 1:aac37edee302 564
roryhand 1:aac37edee302 565 break;
roryhand 1:aac37edee302 566 }
roryhand 0:e89d7a0bfa3b 567 }
roryhand 1:aac37edee302 568 }
roryhand 0:e89d7a0bfa3b 569 }
roryhand 1:aac37edee302 570
roryhand 1:aac37edee302 571 }
roryhand 1:aac37edee302 572 slice = slice + 1;
roryhand 0:e89d7a0bfa3b 573 }
roryhand 0:e89d7a0bfa3b 574 }
roryhand 0:e89d7a0bfa3b 575
roryhand 0:e89d7a0bfa3b 576
roryhand 0:e89d7a0bfa3b 577
roryhand 0:e89d7a0bfa3b 578
roryhand 38:3b4c05af5f36 579 //***************************************************************************//
roryhand 38:3b4c05af5f36 580
roryhand 38:3b4c05af5f36 581 //**************************************************************************//
roryhand 38:3b4c05af5f36 582
roryhand 38:3b4c05af5f36 583
roryhand 38:3b4c05af5f36 584
roryhand 38:3b4c05af5f36 585
roryhand 38:3b4c05af5f36 586
roryhand 59:8e7c25a915a0 587
roryhand 44:a9e84d333a6a 588
roryhand 57:0c76b15cabaf 589 void Play_WaveFileLoop(classSoundFile Sound1, FILE *wavfile1, classPositionIndicators Positions)
roryhand 45:0e8e1f2ec5d2 590 {
roryhand 45:0e8e1f2ec5d2 591 while(1) { //might have to change this to a while(1) loop?
roryhand 44:a9e84d333a6a 592
roryhand 2:957d3b2afff4 593
roryhand 44:a9e84d333a6a 594
roryhand 44:a9e84d333a6a 595
roryhand 54:606a83fff291 596
roryhand 44:a9e84d333a6a 597 //Sound1=======================================================================================
roryhand 69:df10ee3ad523 598 if( slice1 == (Positions.notch_start_pts[NotchingSet.Notch + 1]) ) {
roryhand 69:df10ee3ad523 599 slice1 = Positions.notch_start_pts[NotchingSet.Notch];
roryhand 69:df10ee3ad523 600 fseek(wavfile1,Positions.notch_start_pts[NotchingSet.Notch],SEEK_SET);
roryhand 67:043fe0b81343 601 }
roryhand 57:0c76b15cabaf 602
roryhand 69:df10ee3ad523 603 if(NotchingSet.Notch > 1) {
roryhand 69:df10ee3ad523 604
roryhand 69:df10ee3ad523 605 fseek(wavfile1,Positions.notch_position_indicators[NotchingSet.Notch],SEEK_SET);
roryhand 69:df10ee3ad523 606 fread(slice_buf1, Sound1.FileInfo.FileFormat.block_align,1,wavfile1);
roryhand 69:df10ee3ad523 607
roryhand 69:df10ee3ad523 608 fseek(wavfile1,Positions.notch_position_indicators[NotchingSet.Notch - 1],SEEK_SET);
roryhand 69:df10ee3ad523 609 fread(slice_buf2, Sound1.FileInfo.FileFormat.block_align,1,wavfile1);
roryhand 69:df10ee3ad523 610
roryhand 69:df10ee3ad523 611 if(NotchingSet.NotchDirection)
roryhand 69:df10ee3ad523 612
roryhand 69:df10ee3ad523 613 {
roryhand 69:df10ee3ad523 614
roryhand 69:df10ee3ad523 615 fseek(wavfile1,Positions.notch_position_indicators[NotchingSet.NotchTransUp],SEEK_SET);
roryhand 69:df10ee3ad523 616 fread(slice_buf3, Sound1.FileInfo.FileFormat.block_align,1,wavfile1);
roryhand 69:df10ee3ad523 617
roryhand 69:df10ee3ad523 618
roryhand 69:df10ee3ad523 619 } else {
roryhand 69:df10ee3ad523 620
roryhand 69:df10ee3ad523 621 fseek(wavfile1,Positions.notch_position_indicators[NotchingSet.NotchTransDown],SEEK_SET);
roryhand 69:df10ee3ad523 622 fread(slice_buf3, Sound1.FileInfo.FileFormat.block_align,1,wavfile1);
roryhand 69:df10ee3ad523 623 }
roryhand 69:df10ee3ad523 624
roryhand 69:df10ee3ad523 625 } else {
roryhand 69:df10ee3ad523 626
roryhand 69:df10ee3ad523 627 fread(Sound1.FileInfo.slice_buf,Sound1.FileInfo.FileFormat.block_align,1,wavfile1);
roryhand 69:df10ee3ad523 628 Sound1.data_sptr=(short *)Sound1.FileInfo.slice_buf; // 16 bit samples
roryhand 69:df10ee3ad523 629 }
roryhand 44:a9e84d333a6a 630 //=============================================================================================
roryhand 44:a9e84d333a6a 631
roryhand 67:043fe0b81343 632
roryhand 1:aac37edee302 633
roryhand 1:aac37edee302 634
roryhand 44:a9e84d333a6a 635
roryhand 45:0e8e1f2ec5d2 636 for (channel=0; channel<Sound1.FileInfo.FileFormat.num_channels; channel++) {
roryhand 45:0e8e1f2ec5d2 637 switch (Sound1.FileInfo.FileFormat.sig_bps) {
roryhand 0:e89d7a0bfa3b 638 case 16:
roryhand 1:aac37edee302 639 if(flag1 == 1) {
roryhand 45:0e8e1f2ec5d2 640 Buffer1[place_hold1] = Sound1.data_sptr[channel];
roryhand 1:aac37edee302 641 place_hold1 = place_hold1 + 1;
roryhand 1:aac37edee302 642 if(place_hold1 >= BufferLen) {
roryhand 1:aac37edee302 643 while(1) {
roryhand 1:aac37edee302 644 if(flag1 == 0) {
roryhand 1:aac37edee302 645 break;
roryhand 1:aac37edee302 646 }//if(flag1 == 0)
roryhand 1:aac37edee302 647
roryhand 1:aac37edee302 648
roryhand 1:aac37edee302 649 }//while(1)
roryhand 1:aac37edee302 650 }//if(place_hold1 > = BufferLen)
roryhand 0:e89d7a0bfa3b 651
roryhand 1:aac37edee302 652 } else if(flag2 == 1) {
roryhand 45:0e8e1f2ec5d2 653 Buffer2[place_hold2] = Sound1.data_sptr[channel];
roryhand 1:aac37edee302 654 place_hold2 = place_hold2 + 1;
roryhand 1:aac37edee302 655 if(place_hold2 >= BufferLen) {
roryhand 1:aac37edee302 656 while(1) {
roryhand 1:aac37edee302 657
roryhand 1:aac37edee302 658 if(flag2 == 0) {
roryhand 1:aac37edee302 659 break;
roryhand 1:aac37edee302 660 }
roryhand 1:aac37edee302 661 }
roryhand 0:e89d7a0bfa3b 662 }
roryhand 1:aac37edee302 663
roryhand 1:aac37edee302 664 }
roryhand 0:e89d7a0bfa3b 665 }
roryhand 0:e89d7a0bfa3b 666 }
roryhand 59:8e7c25a915a0 667 slice1 = slice1 + 2;//increment up by the number of bytes per Audio data sample! Makes sense it is 2 bytes, as this is 16-bit data.
roryhand 45:0e8e1f2ec5d2 668 slice2 = slice2 + 1;
roryhand 45:0e8e1f2ec5d2 669 slice3 = slice3 + 1;
roryhand 0:e89d7a0bfa3b 670 }
roryhand 0:e89d7a0bfa3b 671 }
roryhand 0:e89d7a0bfa3b 672
roryhand 0:e89d7a0bfa3b 673
roryhand 0:e89d7a0bfa3b 674
roryhand 0:e89d7a0bfa3b 675
roryhand 0:e89d7a0bfa3b 676
roryhand 0:e89d7a0bfa3b 677
roryhand 59:8e7c25a915a0 678
roryhand 59:8e7c25a915a0 679