Pegeldarstellung bei Wavewiedergabe
-
a hab ich gleich mal eine frage: wie viel bytes haben wave-roh-daten bei 16Bit und 44,1 Khz?? gibt 44,1 KhZ an, dass dass dann 44100*2 Bytes sind??
Die Samplerate gibt an, wieviele Werte pro Sekunde vorhanden sind. In einer Sekunde hast du bei 16Bit 44,1KHz '44100*2 Bytes', richtig.
-
@Helium
hast du vielleicht gute Links generell zu dem Thema Audio und DSP? Ich such nämlich zufällig auch gerade nach so etwas. Vorallem um die Frequenzen aus den Samples zu gewinnen.
-
Im Kopf habe ich gerade nur http://www.musicdsp.org/ und http://www.dspdimension.com/ . Andere Links kann ich dir erst geben, wenn ich nach Hause komme.
Vorallem um die Frequenzen aus den Samples zu gewinnen.
Also einfach 'ne FFT?
-
die erste seite ist wirklich gut! die zweite irgendwie sinnlos... habsch aber gleich haufen material für mein LMMS (Linux MultiMedia Studio) bekommen...
-
Helium schrieb:
Also einfach 'ne FFT?
ja, ich versuch mich nur in das Thema besser einzuarbeiten, vorallem auch in die unterschiedlichen FFT-Algorithmen. musicdsp.org kannte ich zwar schon
Folgende Link Sammlung habe ich gerade gefunden, die sehr interessant aussieht
-
Ach ja, quasi kostenlos ein ganzes Buch zum Thema DSP: http://www.dspguide.com/
die zweite irgendwie sinnlos
Wieso?
Ich fand beispielswiese http://www.dspdimension.com/html/pshiftstft.html ganz interessant.
-
hmmm, stimmt, da war ja noch dien such-funktion...
-
hmmm, stimmt, da war ja noch dien such-funktion...
Falls das auf mich bezogen war: Klick einfach auf Articles oben in der Leiste.
-
Hi
Also die Links sammlung is ganz gut, das dsp buch hatte ich schon gezogen.
Ich bin auch grad dabei ne fft zu programmieren. Da ichs aber auch verstehen will, werd ich erstmal ne normale dft schreiben (also ohne die fft zerstückleung).
Is eigetnlich auch net schwer nur versteh ich net, wie man die frequenz der 1. Harmonischen ermittelt?? der Frequenzabstand zwischen den einzeln spektrallinien is klar, aber wie erhalte ich die absolute frequenz der 1.?Gruß Flow
-
@Flow_cplus
ich würde an deiner Stelle die FFTW-Library mal anschauen, da diese dir FFT-Funktionen zu verfügung stellt, die auch SIMD optimiert sind (ua. für MMX,3DNOW,SSE,Altivec) und somit extrem schnell sein sollten.(btw: wenn mir jemand an kingruedi@c-plusplus.net eine WAV-Datei schicken könnte, die nur eine bestimmte Frequenz enthält zum testen meiner versuche, wäre ich sehr erfreut :))
-
Die meisten Audioeditoren bieten die Möglichkeit einen Sinus zu generieren. Aber meinetwegen kann ich dir auch eine basteln.
-
@kingruedi,
FFTW kan ich nur empfehlen. Ich benutze die dür 2D FFTW von Bilddaten. Die Library schlägt von der Performance her alles andere, was ich getestet habe. Die Doku ist auch top.
Wußte gar nicht, das so viele hier auch im Bereich DSP rumprobieren. Privat code ich auch gerade an einem kleinen Soundproggi.
-
Wußte gar nicht, das so viele hier auch im Bereich DSP rumprobieren.
Ja, die beliebtesten Sachen, die ich bis jetzt rausgebracht habe sind mein Guitifier (virtueller Gitarrenverstärker) und Bass Punch (Der Name beschreibts ganz gut). Beides VSTs, momentan nur Windows, OSX geplant.
-
jo, FFTW sieht ganz nett aus, auch wenn es mich um die Erfahrung bringt selber einen FFT Algorithmus zu programmieren und den mit SIMD zu optimieren
@Helium
danke, hab schon eine sinus-wav datei bekommen.Das Tutorial hat mir auch sehr geholfen. Nur leider schaffe ich es nicht wirklich die Analyse Funktion nachzubauen (meine Werte sind leider nicht gleich den Werten des Tutorials. Ich muss mal schauen, ob das vielleicht an der verwendeten FFT liegt (ich nutze natürlich FFTW3 :)))
-
kingruedi schrieb:
(btw: wenn mir jemand an kingruedi@c-plusplus.net eine WAV-Datei schicken könnte, die nur eine bestimmte Frequenz enthält zum testen meiner versuche, wäre ich sehr erfreut :))
wo liegt da das problem, das selber zu machen??
int bigbuffer[1048576]; for (int i = 0; i < 1048576; ++i) bigbuffer[i] = (int) (sin((i%360)*3.14159265/180)) * 32000);
danach musst du bigbuffer nur noch in eine wav schreiben (+header - hab ich jetzt keinen bock, das zu schreiben...) bzw. an /dev/dsp, wobei du hier vorher die richtigen parameter (in diesem fall z.b. 16-Bit-Wave-Daten) setzen solltest.