Hallo Linus,
für Stereo musst Du dem soundfile.write-Aufruf ein 2d-Array übergeben, das die Daten für linken und rechten Kanal enthält. Wenn da das gleiche drinstehen soll, kannst Du das Signal ja auch einfach wiederverwenden. Beispiel:
(habe mich zuerst verwirrt, weil ich in der Doku von audiofile statt soundfile nachgeschaut habe... und da ist die Reihenfolge von Zeilen und Spalten andersrum... also np.vstack statt np.column_stack)
Übungsaufgabe wäre jetzt, die Hilfsfunktion "write" mit einem optionalen Parameter "stereo" zu versehen, der dann obige Verdopplung bequem beim Schreiben vornimmt...
Viele Grüße
Andreas
für Stereo musst Du dem soundfile.write-Aufruf ein 2d-Array übergeben, das die Daten für linken und rechten Kanal enthält. Wenn da das gleiche drinstehen soll, kannst Du das Signal ja auch einfach wiederverwenden. Beispiel:
Code:
sig = 0.1 * sin(10, 440)
# array([ 0. , 0.0057564 , 0.01149372, ..., -0.01719291,
# -0.01149372, -0.0057564 ])
sig.shape
# (480000,)
sig_st = np.column_stack([sig, sig])
# array([[ 0. , 0. ],
# [ 0.0057564 , 0.0057564 ],
# [ 0.01149372, 0.01149372],
# ...,
# [-0.01719291, -0.01719291],
# [-0.01149372, -0.01149372],
# [-0.0057564 , -0.0057564 ]])
sig_st.shape
# (480000, 2)
write('foo.wav', sig_st)
# foo.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 48000 Hz
(habe mich zuerst verwirrt, weil ich in der Doku von audiofile statt soundfile nachgeschaut habe... und da ist die Reihenfolge von Zeilen und Spalten andersrum... also np.vstack statt np.column_stack)
Übungsaufgabe wäre jetzt, die Hilfsfunktion "write" mit einem optionalen Parameter "stereo" zu versehen, der dann obige Verdopplung bequem beim Schreiben vornimmt...
Viele Grüße
Andreas