Töne wiedergeben anhand von Intensitäten
-
Und wie implementier eich sowas?
also ich hab einw enig gegoogelt, abe rbis jetzt nichts nützliches gefunden in verbindung mit LPCM, c und amplituden.
-
Im endeffekt ist das was ich habe ja genau das was in einem wav format gespeichert ist nur das ich Zahlen (float) habe und nicht (ich glaube) hexadezimal wie bei wav, würde es reichen die zahlen als hexadezimal irgentwie ausgeben zu laßen zu speichern udn dann über das programm die wav datei ab zu spielen?
Wenn ja wi emache ich das? ich scheine nicht die passenden zauberwörter für google zu kennen -.-
-
Beim wav Format werden die Daten als Ganzzahlen im Binärformat abgespeichert.
Die hexadezimale Darstellung ist nur damit du (als Mensch) die Daten lesen kannst.
-
wie bekomme ich nun integers aus meinen floats ^^ (runden, mit 10er potenzen multiplizieren?)
bzw. ich hab ja frequenzen und dauer (alles in kleine stücke hackseln und fft drauf jagen) gibt es vll sowas wie beep für alles OS und Lautsprecher und mit mehreren gleichzeitig? Ich glaubd as würde helfen, ich brauch ja nicht zwangsläufig eine wav datei, och wenn es schön währe.
-
Dudu schrieb:
wie bekomme ich nun integers aus meinen floats ^^ (runden, mit 10er potenzen multiplizieren?)
Das kannst du einfach zuweisen.
int i; double d; i = 127.0 * sin(d);
Dudu schrieb:
bzw. ich hab ja frequenzen und dauer (alles in kleine stücke hackseln und fft drauf jagen)
Wieso fft?
Du hast doch schon die Angabe der Frequenzen.
Eine Schleife mit Sinus und passenden Parametern reicht doch.Dudu schrieb:
gibt es vll sowas wie beep für alles OS und Lautsprecher
Nein, gibt es nicht. das ist hier Standard-C.
Sonst frag doch nochmal bei WinApi oder Linux nach.
-
meind atensatz sieht inetwa so aus:
t x
0 0.0193355
4.53515e-05 0.000975719
9.07029e-05 -0.0112808
0.000136054 0.0296235
0.000181406 -0.0333862
0.000226757 0.0131014
0.000272109 0.0242421
0.00031746 0.0348705
0.000362812 0.0295769
0.000408163 -0.0163924
0.000453515 0.00234822
0.000498866 -0.0171943
0.000544218 -0.00406575
0.000589569 -0.013719
0.000634921 -0.00032472
0.000680272 0.0153965
0.000725624 0.0646615
0.000770975 -0.00204166
0.000816327 -0.0143385
0.000861678 0.00183197
0.000907029 -0.00151616
0.000952381 0.00571648
0.000997732 -0.0172811
0.00104308 0.00465234
0.00108844 0.0339094
0.00113379 0.0233287
.............über fft bekomem ich die frequenzen wenn ich sie brauche.
Was hat es mit 127 auf sich ist das die maximal amplitude für töne am pc?tut mir leid wenn ich mich etwas dumm anstelle, aber ich schreibe normalerweise nur mathematische fkt. für die komandozeile, daher weis ich ncith wie ich töne an den lautsprecher ausgebe oder eine wiedergebbare datei erstelle.
-
Vielleicht solltet ihr euch in eurer Gruppe bei Hausaufgaben besser abstimmen, wer denn nun die Recherche übernimmt:
-
Ich hab es gelößt bekommen.
1. Wave header erstellen
2. Werte mit const multiplizieren und in integer casten.
3. Header und integers biteweise in dateischreiben
4. datei wiedergeben laßen
-
Ist mein semester
-
Dudu schrieb:
Hallo,
Ich habe eine ".txt"-Datei mit Zeiten und Intensitäten (frequenz 1/22050)Das ist höchstwahrscheinlich nicht die Frequenz, sondern das Abstastintervall (also die Zeitspanne zwischen zwei Abtastpunkten). Die Abtastfrequenz ist 22050.
Dudu schrieb:
Nun möchte ich ein Programm schreiben, dass mir dies als Ton ausgibt.
Soll das Programm selbst den Ton erzeugen, oder soll es eine Datei in einem bekannten Audioformat erzeugen, welche dann mit einem anderen Programm ausgegeben wird? Die Datei kannst Du ohne Hilfsmittel mit Standard-C erzeugen. Für die Ausgabe direkt im Programm brauchst Du zusätzliche Hilfsmittel.
Dudu schrieb:
Ich habe bis jetzt einige dinge gefunden wie Midi doer Wav wiedergebe in c, abe rnichts fuer amplituden/intensitäten. Wenn es hilft, ich habe eine fouriertransformation vorgenommen und kann die daten auch noch benutzen (frequenz).
Eine Fouriertransformation hilft Dir eigentlich nicht weiter. Es sei denn, Du willst neben der Ausgabe noch etwas über Dein Signal in Erfahrung bringen oder das Signal verändern.
Du scheinst das Ausgangssignal in eine Wavedatei wandeln zu wollen, aber ist das wirklich die Aufgabe? Oder soll das Programm selbst den Ton ausgeben?