// Transforms data into Time-Frequency representation private void freqDomain() { stftRep = new timefreq(waveIn.wave, 2048); pixelArray = new float[stftRep.timeFreqData[0].Length * stftRep.wSamp / 2]; int count = stftRep.wSamp / 2; void Worker(int start, int end) { for (int jj = start; jj < end; jj++) //1024 times { for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) //4654 times { pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; } } } DoWorkInParallel(Worker, count); /* for (int jj = 0; jj < stftRep.wSamp / 2; jj++) { //1024 times * for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) { //4654 times * pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; * } * }*/ }
// Transforms data into Time-Frequency representation private void freqDomain() { stftRep = new timefreq(waveIn.wave, 2048); pixelArray = new float[stftRep.timeFreqData[0].Length * stftRep.wSamp / 2]; for (int jj = 0; jj < stftRep.wSamp / 2; jj++) { for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) { pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; } } }
// Transforms data into Time-Frequency representation private void freqDomain() { stftRep = new timefreq(waveIn.wave, 2048); pixelArray = new float[stftRep.timeFreqData[0].Length * stftRep.wSamp / 2]; //Parallel loop conversion Parallel.For(0, stftRep.wSamp / 2, parOps, jj => { for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) { pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; } }); }
// Transforms data into Time-Frequency representation private void freqDomain() { //changing timefreq call to globle so we can access fft function in onsetdetection // didn't worked timefreq call needs input :( stftRep = new timefreq(waveIn.wave, 2048); pixelArray = new float[stftRep.timeFreqData[0].Length * stftRep.wSamp / 2]; for (int jj = 0; jj < stftRep.wSamp / 2; jj++) { for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) { pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; } } }
// Transforms data into Time-Frequency representation private void freqDomain() { stftRep = new timefreq(waveIn.wave, 2048); // Short term FT pixelArray = new float[stftRep.timeFreqData[0].Length * stftRep.wSamp / 2]; for (int jj = 0; jj < stftRep.wSamp / 2; jj++) { for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) { // Create the bitmap for visualisation // Work out the pixel array pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; } } }
private void writingparalleldata() { stftRep = new timefreq(waveIn.wave, 2048); pixelArray = new float[stftRep.timeFreqData[0].Length * stftRep.wSamp / 2]; for (int jj = 0; jj < stftRep.wSamp / 2; jj++) { for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) { pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; } } using (var outf = new StreamWriter("datafreq_parallel.txt")) { for (int i = 0; i < pixelArray.Length; i++) { outf.WriteLine(pixelArray[i].ToString()); } } using (var outf = new StreamWriter("ondetectiondata_parallel.txt")) { for (int i = 0; i < lengthscomp.Count; i++) { outf.WriteLine(lengthscomp[i].ToString()); } for (int i = 0; i < noteStartscomp.Count; i++) { outf.WriteLine(noteStartscomp[i].ToString()); } for (int i = 0; i < noteStopscomp.Count; i++) { outf.WriteLine(noteStopscomp[i].ToString()); } for (int i = 0; i < pitchescomp.Count; i++) { outf.WriteLine(pitchescomp[i].ToString()); } } }
// Transforms data into Time-Frequency representation public void freqDomain() { stftRep = new timefreq(waveIn.wave, 2048); pixelArray = new float[stftRep.timeFreqData[0].Length * stftRep.wSamp / 2]; Parallel.For(0, stftRep.wSamp / 2, jj => { for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) { pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; } }); //for (int jj = 0; jj < stftRep.wSamp / 2; jj++) //{ // for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) // { // pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; // } //} }
// Transforms data into Time-Frequency representation private void freqDomain() { stftRep = new timefreq(waveIn.wave, 2048); pixelArray = new float[stftRep.timeFreqData[0].Length * stftRep.wSamp / 2]; //Overhead for both parallels are slower //Parallel.For(0, stftRep.wSamp / 2, jj => //{ // for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) // { // pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; // } //}); int N = stftRep.wSamp / 2; Parallel.For(0, N, threadNum => { int chunk_size = (N + (NUM_THREADS_USED - 1)) / NUM_THREADS_USED; int start = chunk_size * threadNum; int end = Math.Min(start + chunk_size, N); for (int jj = start; jj < end; jj++) { for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) { pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; } } }); //for (int jj = 0; jj < stftRep.wSamp / 2; jj++) //{ // for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) // { // pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; // } //} }
// Transforms data into Time-Frequency representation private void freqDomain() { //filename = @"C:\CAB401data\wave_out"; //FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read); //BinaryReader binRead = new BinaryReader(file); //long length = new System.IO.FileInfo(filename).Length; //float[] values = new float[length]; //for (int i = 0; i < length / 4; i++) //{ // values[i] = binRead.ReadSingle(); //} stftRep = new timefreq(waveIn.wave, 2048); //int wSamp = 2048; //filename = @"C:\CAB401data\timefreq_done"; //FileStream file = new FileStream(filename, FileMode.Open, FileAccess.Read); //BinaryReader binRead = new BinaryReader(file); //long length = new System.IO.FileInfo(filename).Length; //float[] data = new float[length / 4]; //for (int idx = 0; idx < length / 4; idx++) //{ // data[idx] = binRead.ReadSingle(); //} //Console.WriteLine("Read freq: in elements? {1}, length in bytes {0}, ", length, length / 4); //int A = wSamp / 2; //int B = (int)(length / (4 * A)); /* for timefreq_out */ //pixelArray = new float[A * B]; //for (int ii = 0; ii < A; ii++) //{ // for (int jj = 0; jj < B; jj++) // { // pixelArray[ii * B + jj] = data[ii * B + jj]; // } //} /* for timefreq_done */ //pixelArray = new float[A * B]; //for (int ii = 0; ii < A; ii++) //{ // for (int jj = 0; jj < B; jj++) // { // pixelArray[ii * B + jj] = data[jj * A + ii]; // transpose // } //} pixelArray = new float[stftRep.timeFreqData[0].Length * stftRep.wSamp / 2]; for (int jj = 0; jj < stftRep.wSamp / 2; jj++) { for (int ii = 0; ii < stftRep.timeFreqData[0].Length; ii++) { pixelArray[jj * stftRep.timeFreqData[0].Length + ii] = stftRep.timeFreqData[jj][ii]; } } }