Browse Source

Aenderungen an: wav_speichern, speichern-button und tinnitus.__init__

wav-Datei funktioniert jetzt stereo und speichert 3 Sekunden
der Speichern-button beendet jetzt die Wiedergabee, was Leistung fÃuerSpeichern frei gibt
Grenzwerte des Rauschens bei tinnitus.__init__ auf weisses Rauschen eingestellt
master
Heiko Ommert 4 years ago
parent
commit
521b5d3ea3
2 changed files with 11 additions and 9 deletions
  1. 8
    6
      TinnitusAnalyse/SoundGenerator.py
  2. 3
    3
      TinnitusAnalyse/TinnitusAnalyse_GUI.py

+ 8
- 6
TinnitusAnalyse/SoundGenerator.py View File

@@ -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.")

+ 3
- 3
TinnitusAnalyse/TinnitusAnalyse_GUI.py View File

@@ -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")


Loading…
Cancel
Save