old demo that i want to try in mbed studio

Dependencies:   mbed SDFileSystem_Copy_of_mbed_version I2S

Committer:
roryhand
Date:
Wed Oct 02 19:22:05 2019 +0000
Branch:
LargeFile_Tests
Revision:
85:e0c9ba778ae0
Parent:
84:0a259e261532
Child:
86:404ce47e1e6e
WIP - as soon as i add in one more very small classSound object, the whole thing falls over.  absolutely no point doing this project, mbed's resources on this chip are CRAP

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