Search Results

Search found 30894 results on 1236 pages for 'best practice'.

Page 635/1236 | < Previous Page | 631 632 633 634 635 636 637 638 639 640 641 642  | Next Page >

  • Autocorrelation returns random results with mic input (using a high pass filter)

    - by Niall
    Hello, Sorry to ask a similar question to the one i asked before (FFT Problem (Returns random results)), but i've looked up pitch detection and autocorrelation and have found some code for pitch detection using autocorrelation. Im trying to do pitch detection of a users singing. Problem is, it keeps returning random results. I've got some code from http://code.google.com/p/yaalp/ which i've converted to C++ and modified (below). My sample rate is 2048, and data size is 1024. I'm detecting pitch of both a sine wave and mic input. The frequency of the sine wave is 726.0, and its detecting it to be 722.950820 (which im ok with), but its detecting the pitch of the mic as a random number from around 100 to around 1050. I'm now using a High pass filter to remove the DC offset, but it's not working. Am i doing it right, and if so, what else can i do to fix it? Any help would be greatly appreciated! double* doHighPassFilter(short *buffer) { // Do FFT: int bufferLength = 1024; float *real = malloc(bufferLength*sizeof(float)); float *real2 = malloc(bufferLength*sizeof(float)); for(int x=0;x<bufferLength;x++) { real[x] = buffer[x]; } fft(real, bufferLength); for(int x=0;x<bufferLength;x+=2) { real2[x] = real[x]; } for (int i=0; i < 30; i++) //Set freqs lower than 30hz to zero to attenuate the low frequencies real2[i] = 0; // Do inverse FFT: inversefft(real2,bufferLength); double* real3 = (double*)real2; return real3; } double DetectPitch(short* data) { int sampleRate = 2048; //Create sine wave double *buffer = malloc(1024*sizeof(short)); double amplitude = 0.25 * 32768; //0.25 * max length of short double frequency = 726.0; for (int n = 0; n < 1024; n++) { buffer[n] = (short)(amplitude * sin((2 * 3.14159265 * n * frequency) / sampleRate)); } doHighPassFilter(data); printf("Pitch from sine wave: %f\n",detectPitchCalculation(buffer, 50.0, 1000.0, 1, 1)); printf("Pitch from mic: %f\n",detectPitchCalculation(data, 50.0, 1000.0, 1, 1)); return 0; } // These work by shifting the signal until it seems to correlate with itself. // In other words if the signal looks very similar to (signal shifted 200 data) than the fundamental period is probably 200 data // Note that the algorithm only works well when there's only one prominent fundamental. // This could be optimized by looking at the rate of change to determine a maximum without testing all periods. double detectPitchCalculation(double* data, double minHz, double maxHz, int nCandidates, int nResolution) { //-------------------------1-------------------------// // note that higher frequency means lower period int nLowPeriodInSamples = hzToPeriodInSamples(maxHz, 2048); int nHiPeriodInSamples = hzToPeriodInSamples(minHz, 2048); if (nHiPeriodInSamples <= nLowPeriodInSamples) printf("Bad range for pitch detection."); if (1024 < nHiPeriodInSamples) printf("Not enough data."); double *results = new double[nHiPeriodInSamples - nLowPeriodInSamples]; //-------------------------2-------------------------// for (int period = nLowPeriodInSamples; period < nHiPeriodInSamples; period += nResolution) { double sum = 0; // for each sample, find correlation. (If they are far apart, small) for (int i = 0; i < 1024 - period; i++) sum += data[i] * data[i + period]; double mean = sum / 1024.0; results[period - nLowPeriodInSamples] = mean; } //-------------------------3-------------------------// // find the best indices int *bestIndices = findBestCandidates(nCandidates, results, nHiPeriodInSamples - nLowPeriodInSamples - 1); //note findBestCandidates modifies parameter // convert back to Hz double *res = new double[nCandidates]; for (int i=0; i < nCandidates;i++) res[i] = periodInSamplesToHz(bestIndices[i]+nLowPeriodInSamples, 2048); double pitch2 = res[0]; free(res); free(results); return pitch2; } /// Finds n "best" values from an array. Returns the indices of the best parts. /// (One way to do this would be to sort the array, but that could take too long. /// Warning: Changes the contents of the array!!! Do not use result array afterwards. int* findBestCandidates(int n, double* inputs,int length) { //int length = inputs.Length; if (length < n) printf("Length of inputs is not long enough."); int *res = new int[n]; double minValue = 0; for (int c = 0; c < n; c++) { // find the highest. double fBestValue = minValue; int nBestIndex = -1; for (int i = 0; i < length; i++) { if (inputs[i] > fBestValue) { nBestIndex = i; fBestValue = inputs[i]; } } // record this highest value res[c] = nBestIndex; // now blank out that index. if(nBestIndex!=-1) inputs[nBestIndex] = minValue; } return res; } int hzToPeriodInSamples(double hz, int sampleRate) { return (int)(1 / (hz / (double)sampleRate)); } double periodInSamplesToHz(int period, int sampleRate) { return 1 / (period / (double)sampleRate); } Thanks, Niall. Edit: Changed the code to implement a high pass filter with a cutoff of 30hz (from What Are High-Pass and Low-Pass Filters?, can anyone tell me how to convert the low-pass filter using convolution to a high-pass one?) but it's still returning random results. Plugging it into a VST host and using VST plugins to compare spectrums isn't an option to me unfortunately.

    Read the article

  • Deterministic Annealing Code

    - by wade
    I would like to find an open source example of a code for deterministic annealing. It can be in almost any language: C, C++, MatLab/Octave, Fortran. I have already found a MatLab code for simulated annealing, so MatLab would be best. Here is a paper that describes the algorithm: http://www.google.com/url?sa=t&source=web&ct=res&cd=1&ved=0CB8QFjAA&url=http%3A%2F%2Fvandamteaching.googlepages.com%2FABriefIntroductionToDeterministicAnn.pdf&ei=DiLiS8qZFI7AMozB1JED&usg=AFQjCNHLps7HRWXLNN5rAX5aJ5BsJbcHuQ&sig2=YSokUTOs0UszAFZ9TDiJgQ

    Read the article

  • Run length encoding

    - by Phoenix
    What is the best we can do with run length encoding. http://en.wikipedia.org/wiki/Run-length_encoding Page suggests the time complexity is O(m*n) where m is the number of time the number repeats .. Is the a more efficient algorithm to do RLE ??

    Read the article

  • How to auto-generate externs for the Google Closure Compiler

    - by ivo
    Suppose you are working in a javascript project with several external library dependencies, and want to compile your sources using the Google Closure Compiler in ADVANCED_OPTIMIZATIONS mode. Since in this mode the compiler will rename your code calls to the external libraries objects and functions, you must provide externs, to prevent this renaming from happening. But, it is a lot of work to produce the externs by hand, so, what is the best way to auto-generate the appropriate extern from a given javascript lib?

    Read the article

  • How can I detect the Android emulator?

    - by Joe Ludwig
    I would like to have my code run slightly differently when running on the emulator than when running on a device. (For example, using 10.0.2.2 instead of a public URL to run against a development server automatically.) What is the best way to detect when an Android application is running in the emulator?

    Read the article

  • simple text menu in Haskell

    - by snorlaks
    Hello, I would like to know what is the best solution to create simple menu with functionality described below (pseudo code) just like im used to: while (true){ x = readLine(); case (x): x == "1" then do sth1 function x == "2" then do sth2 function } thanks for help, maybe any other ideas on how to make menu not in pattern described above?

    Read the article

  • Amazon EC2 Development Stack

    - by sirmak
    I want to use EC2 for some reasons and EC2 provides both windows and linux deployments, but linux is much cheaper (linux reserved instances are approx. %63-%85 price of windows ones and spot instances are %50 cheaper for linux). I need a type safe lang and mainstream platform and I prefer to use .net/c# stack (but not mono for some reasons), but in this situation java seems a better fit for the future (when ec2 instance counts begin to increase). So, is it worth to use .net ? best regards,

    Read the article

  • How to promote my Rss feed ?

    - by Ican Zilb
    I started recently this blog about iPhone / Objective-c : www.touch-code-magazine.com and I'm looking for ways to spread the word about my Rss feed. Question is how one promotes an rss feed ? Any of you have good recommendation how to do that? Advice on "best" feed directories or thematic portals which consume rss ... don't know, what do you say ?

    Read the article

  • Online option calculator like Sitmo.com

    - by baraider
    I'd like to know the best way to create online calculator for stock options such as this site http://www.sitmo.com/live/OptionVanilla.html I can see it uses CGI, and I like to learn what other ways to achieve the same goals using other languages. If anyone has experience building it and can freelance, I'd like to know as well. Our site is running on LAMP.

    Read the article

  • Symfony - Custom under maintenance page

    - by Rui Gonçalves
    Hi there! I'm trying to add a custom page to my web application for the times I'm performing maintenance. I'm trying to test the referred page on my development environment but always appear the symfony page. I had already created a module with a proper action and template and also configured those on the settings.yml file. Can anyone give me some help? Thanks in advance, Best regards!

    Read the article

  • Bash: Correct way to Iterate over Map

    - by Lars Tackmann
    In Bash I can create a map (hashtable) with this common construction hput() { eval "$1""$2"='$3' } hget() { eval echo '${'"$1$2"'#hash}' } and then use it like this: hput capitols France Paris hput capitols Spain Madrid echo "$(hget capitols France)" But how do I best iterate over the entries in the map ?. For instance, in Java I would do: for (Map.Entry<String, String> entry : capitols.entrySet()) { System.out.println("Country " + entry.getKey() + " capital " + entry.getValue()); } is there a common way of accomplishing something similar in Bash ?.

    Read the article

  • Testing Silverlight install detection

    - by Pat Long - Munkii Yebee
    I have implemented a silverlight install process inline with the best practive approach described in Microsoft's "Installation Experience White Paper - Apr 2009". I want to test out the following user scenarios Old version of Silverlight No Silverlight Cross browser In the past I have seen tools for uninstalling and installing different versions of Flash for this same type of testing. Is there anything like that for Silverlight? I know I can disable the plug ins but that is not the same IMHO TIA Pat

    Read the article

  • Confusing .gitignore syntax

    - by tmslnz
    I was reading http://www.kernel.org/pub/software/scm/git/docs/gitignore.html and the 6 points used to explain the ignore patterns seem to be describing a custom variant of a glob search syntax. I am more familiar with Mercurial, which allows to explicitly ignore via glob or regex patterns, no questions asked. Is there anything similar functionality in Git? Can anyone point me to some more exhaustive reference than the Git man page? Best, t

    Read the article

  • Normalizing URI to make it work correctly with MakeRelativeUri

    - by dr. evil
    Dim x AS New URI("http://www.example.com/test//test.asp") Dim rel AS New URI("http://www.example.com/xxx/xxx.asp") Console.Writeline(x.MakeRelativeUri(rel).Tostring()) In here output is: ../../xxx/xxx.asp Which looks correct almost all web servers will process the two of the following as same request: http://www.example.com/test//test.asp http://www.example.com/test/test.asp What's the best way to fix this behaviour is there any API to do this, or shall manually create a new URI and remove all // in the path?

    Read the article

  • Django: Only one of two fields can be filled in

    - by Giovanni Di Milia
    I have this model: class Journals(models.Model): jid = models.AutoField(primary_key=True) code = models.CharField("Code", max_length=50) name = models.CharField("Name", max_length=2000) publisher = models.CharField("Publisher", max_length=2000) price_euro = models.CharField("Euro", max_length=2000) price_dollars = models.CharField("Dollars", max_length=2000) Is there a way to let people fill out either price_euro or price_dollars? I do know that the best way to solve the problem is to have only one field and another table that specify the currency, but I have constraints and I cannot modify the DB. Thanks!

    Read the article

< Previous Page | 631 632 633 634 635 636 637 638 639 640 641 642  | Next Page >