From 521b5d3ea3ea28b83fcd540252e5c2fb34efde4d Mon Sep 17 00:00:00 2001 From: ommerthe69431 Date: Fri, 26 Jun 2020 12:43:00 +0200 Subject: [PATCH] =?UTF-8?q?Aenderungen=20an:=20wav=5Fspeichern,=20speicher?= =?UTF-8?q?n-button=20und=20tinnitus.=5F=5Finit=5F=5F=20wav-Datei=20funkti?= =?UTF-8?q?oniert=20jetzt=20stereo=20und=20speichert=203=20Sekunden=20der?= =?UTF-8?q?=20Speichern-button=20beendet=20jetzt=20die=20Wiedergabee,=20wa?= =?UTF-8?q?s=20Leistung=20f=C3=83uerSpeichern=20frei=20gibt=20Grenzwerte?= =?UTF-8?q?=20des=20Rauschens=20bei=20tinnitus.=5F=5Finit=5F=5F=20auf=20we?= =?UTF-8?q?isses=20Rauschen=20eingestellt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TinnitusAnalyse/SoundGenerator.py | 14 ++++++++------ TinnitusAnalyse/TinnitusAnalyse_GUI.py | 6 +++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/TinnitusAnalyse/SoundGenerator.py b/TinnitusAnalyse/SoundGenerator.py index 3b5c5c9..8382e73 100644 --- a/TinnitusAnalyse/SoundGenerator.py +++ b/TinnitusAnalyse/SoundGenerator.py @@ -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.") diff --git a/TinnitusAnalyse/TinnitusAnalyse_GUI.py b/TinnitusAnalyse/TinnitusAnalyse_GUI.py index 49a7873..54a812c 100644 --- a/TinnitusAnalyse/TinnitusAnalyse_GUI.py +++ b/TinnitusAnalyse/TinnitusAnalyse_GUI.py @@ -3,7 +3,6 @@ from tkinter import * from SoundGenerator import * import csv import time -#todo: in die Obere/untere Grenz Scale cghange Funktionen sicher gehen, dass keine Fehler mehr auftreten (zB :og < ug) """--------------------------FUNKTIONEN DIE DURCH GUI KLICKS AUSGEFÜHRT WERDEN---------------------------------------""" """-------Funktionen links-------------""" @@ -124,13 +123,14 @@ def unten_button_speichern_press(): feedback("Fehlgeschlagener Speicherversuch! Erst Namen links eintragen.", "white", "red") else: try: - feedback("Speichere Sound als '.wav'-Datei. Das kann bis zu 30 Sekunden dauern. Bitte warten...") + unten_button_stop_press() # Wiedergabe beenden, durch den Rechenaufwand gibt es sonst Wiedergabeprobleme + feedback("Speichere Sound als '.wav'-Datei. Das kann ca. 10 Sekunden dauern. Bitte warten...") tinnitus.vorname = untenEntryVorname.get() tinnitus.nachname = untenEntryNachname.get() tinnitus.kommentar = untenTextKommentar.get("1.0", END) tinnitus.speichern() sound.wav_speichern() - feedback("Daten erfolgreich gespeichert. Siehe: 'MeinTinnitus.wav' ") + feedback("Daten erfolgreich gespeichert. Siehe: 'MeinTinnitus.wav' ", "white", "green") except: feedback("Fehlgeschlagener Speicherversuch! Bitte schließe Microsoft Excel.", "white", "red")