> -----Ursprüngliche Nachricht----- > Von: Jan-Benedict Glaw [mailto:jbglaw@xxxxxxxxxx] > Gesendet: Sonntag, 27. Dezember 2009 15:05 > An: Markus Vogl > Cc: alsa-devel@xxxxxxxxxxxxxxxx > Betreff: Re: frequency analysis with alsa and fftw > > On Sun, 2009-12-27 14:50:20 +0100, Markus Vogl > <markus.vogl@xxxxxxx> wrote: > > Von: Jan-Benedict Glaw [mailto:jbglaw@xxxxxxxxxx]: > > > On Sun, 2009-12-27 13:26:31 +0100, Markus Vogl > <markus.vogl@xxxxxxx> wrote: > > > > my project is to analyse the mic input frequency from > my asus eepc > > > > 1008ha with ubuntu 9.10 and show it in a terminal window. > > > > i would use my acoustic 6 string guitar to play in front of my > > > > netbook. > > > > > > > > i´ve testet the howto from linuxjornal.com .. > > > > http://www.linuxjournal.com/article/6735 > > > > > > > > ...but i´ve no plan to use the mic input and then > analyse it with > > > > fftw. > > > > > > Why do you need to do ALSA programming in the first > place? Isn't it > > > enough to use any given ALSA-capable audio recorder (eg. > > > arecord) to record some sound, convert it to raw PCM data > (eg. cut > > > off the WAV header) and then shift all the data into the FFT lib? > > > > i have to do this in realtime (like a guitartuner) and with my > > "project" i have to see the frequency shift in realtime in > a terminal > > window. > > Sure. Just let eg. arecord write to stdout or to a FIFO and > read the data from there. You can directly request raw > output, all you need to do is to shouvle the data through the > FTT lib... Who can me explain how i can transfer the frame/buffer to the fftw3.lib? This is from the howto example at linuxjournal and in the "while loop" is the frame that i can use for DFT ...or i´m wrong? while (loops > 0) { loops--; rc = snd_pcm_readi(handle, buffer, frames); if (rc == -EPIPE) { /* EPIPE means overrun */ fprintf(stderr, "overrun occurred\n"); snd_pcm_prepare(handle); } else if (rc < 0) { fprintf(stderr, "error from read: %s\n", snd_strerror(rc)); } else if (rc != (int)frames) { fprintf(stderr, "short read, read %d frames\n", rc); } rc = write(1, buffer, size); if (rc != size) fprintf(stderr, "short write: wrote %d bytes\n", rc); } regards markus _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel