|
|
@@ -14,7 +14,7 @@ das heißt für jede Sekunde an Ton gibt es 44100 Werte, die die Tonwelle über |
|
|
|
|
|
|
|
|
|
|
|
class Tinnitus: # beinhaltet alle Werte, die vom Nutzer eingestellt werden |
|
|
|
def __init__(self, l_freq=0, r_freq=0, l_amp=0, r_amp=0, l_rausch=0, r_rausch=0, ohr=0, l_rausch_ug=0, r_rausch_ug=0, l_rausch_og=0, r_rausch_og=0): |
|
|
|
def __init__(self, l_freq=0, r_freq=0, l_amp=0, r_amp=0, l_rausch=0, r_rausch=0, ohr=0, l_rausch_ug=10, r_rausch_ug=10, l_rausch_og=20000, r_rausch_og=20000): |
|
|
|
self.vorname = "" |
|
|
|
self.nachname = "" |
|
|
|
self.kommentar = "" |
|
|
@@ -41,6 +41,7 @@ class Tinnitus: # beinhaltet alle Werte, die vom Nutzer eingestellt werden |
|
|
|
daten += "linkes Rauschen Lautstärke;" + str(self.linksRauschenLautstaerke) + "\n" |
|
|
|
daten += "linkes Rauschen untere Grenzfrequenz;" + str(self.linksRauschenUntereGrenzfrequenz) + "\n" |
|
|
|
daten += "linkes Rauschen obere Grenzfrequenz;" + str(self.linksRauschenObereGrenzfrequenz) + "\n" |
|
|
|
|
|
|
|
daten += "rechte Frequenz;" + str(self.rechtsFrequenz) + "\n" |
|
|
|
daten += "rechte Lautstärke;" + str(self.rechtsLautstaerke) + "\n" |
|
|
|
daten += "rechtes Rauschen Lautstärke;" + str(self.rechtsRauschenLautstaerke) + "\n" |
|
|
@@ -80,25 +81,26 @@ class Sound: |
|
|
|
self.start_idx = 0 # wird für sound_obj benötigt |
|
|
|
|
|
|
|
def wav_speichern(self): # ezeugt/aktuallisiert die .wav-Datei |
|
|
|
# MOMENTAN NUR MONO |
|
|
|
print("Sound wird als .wav-Datei gespeichert. Bitte warten...\nDer Vorgang kann ca. 30 Sekunden dauern") |
|
|
|
|
|
|
|
wav_obj = wave.open("MeinTinnitus.wav", "w") |
|
|
|
|
|
|
|
# Die Callback-Funktion aufrufen, um die Audiodaten zu bekommen |
|
|
|
frames = 44100 # entspricht 1 Sekunde |
|
|
|
frames = 44100 * 3 # entspricht 1 Sekunde |
|
|
|
status = "" # für den Funktionsaufruf benötigt, sonst keine Funktion |
|
|
|
audio = np.ones((frames, 2)) |
|
|
|
audio = self.callback(audio, frames, self.sound_obj.time, status) |
|
|
|
|
|
|
|
# Rahmenparameter für die .wav-Datei setzen |
|
|
|
wav_obj.setnchannels(1) # mono |
|
|
|
wav_obj.setnchannels(2) # mono |
|
|
|
wav_obj.setsampwidth(self.sampwidth) |
|
|
|
wav_obj.setframerate(self.framerate) |
|
|
|
|
|
|
|
for sample in audio[:, 0]: # geht gerade nur die Werte des linken Ohrs (0) durch |
|
|
|
#Die Audiosamples schreiben |
|
|
|
for x in range(frames): |
|
|
|
#Die Audiodaten müssen von float in einen passenden int-Wert umgerechnet werden |
|
|
|
wav_obj.writeframes(struct.pack('h', int(sample * 32767.0))) #beschreibt die Datei mit diesen Werten |
|
|
|
wav_obj.writeframes(struct.pack('h', int(audio[x][0] * 32767.0))) # Werte für links und rechts werden bei |
|
|
|
wav_obj.writeframes(struct.pack('h', int(audio[x][1] * 32767.0))) # wav abwechselnd eingetragen |
|
|
|
|
|
|
|
wav_obj.close() |
|
|
|
print("Speichern beendet.") |