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
This commit is contained in:
parent
7fed3e630e
commit
521b5d3ea3
@ -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,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…
x
Reference in New Issue
Block a user