Testtöne für unser Hobby
#16
Hallo Linus,

(17.11.2022, 22:47)Linus schrieb: Wenn man die Dateiendung von wav auf flac ändert schreibt es auch gleich flac Dateien. Und mit dem Parameter 'PCM_24' in der soundfile.write Methode wird auch in 24 bit geschrieben. Nicht das es furchtbar wichtig wäre, aber es geht :-)

"Batteries included" - das erledigt alles das soundfile-Paket, auch die Konvertierung vom Float-Format der Samples, die man ihm gibt, in das jeweilige Dateiformat. Sowas muss man sonst auch von Hand machen. Gib in einer interaktiven Python-Session mal "import antigravity" ein Wink spoiler

(17.11.2022, 22:47)Linus schrieb: Was mich jetzt noch interessieren würde ist, ob man nicht auch eine Multifrequenz Datei schreiben könnte, ähnlich der, die Peter mal geteilt hat. Ich kann aber aus der Dokumentation nicht entnehmen was dafür der beste Weg wäre.

Klar - soundfile schreibt einfach nur die Zahlen (also Samples) raus, die man ihm im Funkionsaufruf übergibt. Was inhaltlich im Signal drin ist, interessiert das Paket nicht, deswegen wird die Doku auch nichts dazu sagen.

Meinst Du damit ein Gemisch aus mehreren Einzelfrequenzen, die dann in der FFT wie ein Kamm aussehen? Das wäre dann eine Funktion wie "a1 * sin(f1) + a2 * sin(f2) + ..." - mit geeigneter Normierung (also so, dass nicht nur die Pegel relativ zueinander stimmen, sondern auch absolut).

In dem kleinen Skript oben habe ich die meisten Signale direkt im Funktionsaufruf generiert, z.B. "lvl(-10) * sin(180, 3150)", und nirgends zwischengespeichert. Es hindert Dich aber nichts daran, mehrere Frequenzen zu addieren, und das auch in einzelnen Schritten zu machen, zum Beispiel so ähnlich:

Code:
mf = silence(10)
mf += lvl(-20) * sin(10, 1000)
mf += lvl(-25) * sin(10, 3150)

mf /= np.max(mf)
mf *= lvl(-20)

write('foo.mp3', mf)

Auch wenn hier nirgends eine explizite Schleife steht - in "mf" wird in jedem Schritt ein Array von Floats manipuliert, also z.B. elementweise addiert. Die Notation ist so, wie man sie vielleicht von modernem Fortran, oder Matlab (?) kennt. Das macht alles NumPy, kompakte Einführung: https://numpy.org/doc/stable/user/quickstart.html

Inhaltlich: Ob die Normierung hier sinnvoll ist, weiß ich nicht so recht - sie sorgt halt einfach nur dafür, dass die Summe aller Werte nirgends größer als 1 wird (sonst wäre es ja digital übersteuert), und dass das ganze Gemisch danach einen Spitzenpegel 20 dB unter digitaler Vollaussteuerung hat.

Ich hoffe, das hilft weiter - sonst gerne weiterfragen Smile

Viele Grüße
Andreas


Nachtrag: Auch hier geht es wieder kürzer, auf Kosten der Einsteiger-Lesbarkeit:

Code:
mf = sum([sin(10, f) for f in (1000, 2000, 3150, 6300, 10000)])

... zumindest wenn alle Einzelsignale den gleichen Pegel bekommen sollen. Danach natürlich noch normieren und so.
Zitieren


Nachrichten in diesem Thema
Testtöne für unser Hobby - von slexy - 16.11.2022, 15:47
RE: Testtöne für unser Hobby - von andreas42 - 16.11.2022, 15:58
RE: Testtöne für unser Hobby - von slexy - 16.11.2022, 16:20
RE: Testtöne für unser Hobby - von andreas42 - 16.11.2022, 16:55
RE: Testtöne für unser Hobby - von slexy - 16.11.2022, 17:04
RE: Testtöne für unser Hobby - von sensor - 16.11.2022, 17:53
RE: Testtöne für unser Hobby - von andreas42 - 16.11.2022, 18:19
RE: Testtöne für unser Hobby - von slexy - 16.11.2022, 18:22
RE: Testtöne für unser Hobby - von andreas42 - 16.11.2022, 21:40
RE: Testtöne für unser Hobby - von sensor - 17.11.2022, 10:07
RE: Testtöne für unser Hobby - von Baruse - 17.11.2022, 13:41
RE: Testtöne für unser Hobby - von Mystic - 22.11.2022, 11:16
RE: Testtöne für unser Hobby - von andreas42 - 17.11.2022, 11:22
RE: Testtöne für unser Hobby - von Linus - 17.11.2022, 22:47
RE: Testtöne für unser Hobby - von andreas42 - 18.11.2022, 00:14
RE: Testtöne für unser Hobby - von Linus - 18.11.2022, 08:21
RE: Testtöne für unser Hobby - von Linus - 18.11.2022, 08:44
RE: Testtöne für unser Hobby - von andreas42 - 18.11.2022, 12:52
RE: Testtöne für unser Hobby - von Linus - 18.11.2022, 15:46

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste