// 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];
             *      }
             *  }*/
        }
示例#2
0
        // 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];
                }
            }
        }
示例#3
0
        // 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());
                }
            }
        }
示例#7
0
        // 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];
                }
            }
        }