From eddc1e4926f84720c3ee8ca38e67f383be722fbf Mon Sep 17 00:00:00 2001 From: ommerthe69431 Date: Fri, 12 Jun 2020 16:18:10 +0200 Subject: [PATCH 1/4] =?UTF-8?q?Verkn=C3=BCpfungen=20zwischen=20GUI=20und?= =?UTF-8?q?=20SoundGenerator=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TinnitusAnalyse/SoundGenerator.py | 11 ++++++++--- TinnitusAnalyse/TinnitusAnalyse_GUI.py | 12 +++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/TinnitusAnalyse/SoundGenerator.py b/TinnitusAnalyse/SoundGenerator.py index 82f45ac..747d34a 100644 --- a/TinnitusAnalyse/SoundGenerator.py +++ b/TinnitusAnalyse/SoundGenerator.py @@ -10,6 +10,9 @@ import time #nur für die Tests, um Zeit zum Anhören der Sounds einzubauen class Tinnitus: #beinhaltet alle Werte, die vom Nutzer eingestellt werden def __init__(self, l_freq=600, r_freq=600, l_amp=0, r_amp=0, l_rausch=0, r_rausch=0, ear=0): + self.vorname = "" + self.nachname = "" + self.kommentar = "" self.linksFrequenz = l_freq self.rechtsFrequenz = r_freq self.linksLautstaerke = l_amp @@ -23,7 +26,9 @@ class Tinnitus: #beinhaltet alle Werte, die vom Nutzer eingestellt werden datei = open("TinnitusDaten.csv", "w") - daten = "linke Frequenz;" + str(self.linksFrequenz) + "\n" + daten = "Vorname;" + self.vorname + "\n" + daten += "Nachname;" + self.nachname + "\n" + daten += "linke Frequenz;" + str(self.linksFrequenz) + "\n" daten += "linke Lautstärke;" + str(self.linksLautstaerke) + "\n" daten += "linkes Rauschen;" + str(self.linksRauschenLautstaerke) + "\n" daten += "rechte Frequenz;" + str(self.rechtsFrequenz) + "\n" @@ -55,7 +60,7 @@ class Sound: def neu_audio(self): #Schreibt Werte in das audio-Array. Soll später abhängig sein von den Tinnitus-Werten(Frequenz, Rauschen, ...) freq = self.tinnitus.linksFrequenz - dauer_ms = 100.0 + dauer_ms = 2000.0 amp = self.tinnitus.linksLautstaerke rauschen = self.tinnitus.linksRauschenLautstaerke @@ -75,7 +80,7 @@ class Sound: def wav_speichern(self): #ezeugt/aktuallisiert die .wav-Datei self.neu_audio() #das 100ms audio-array strecken: - for x in range(50): # entspricht 5 Sekunden + for x in range(5): # entspricht 10 Sekunden for y in range(int(self.framerate/10)): self.audio.append(self.audio[y]) diff --git a/TinnitusAnalyse/TinnitusAnalyse_GUI.py b/TinnitusAnalyse/TinnitusAnalyse_GUI.py index 9428f32..ec20c31 100644 --- a/TinnitusAnalyse/TinnitusAnalyse_GUI.py +++ b/TinnitusAnalyse/TinnitusAnalyse_GUI.py @@ -10,19 +10,19 @@ import csv def links_scale_lautstärke_change(self): tinnitus.linksLautstaerke = float(linksScaleLautstärke.get())/100 # scale liefert 0-100%, tinnitus.lautstärke 0-1 - print("Links Lautstärke =", tinnitus.linksLautstaerke*100) + print("Links Lautstärke =", tinnitus.linksLautstaerke*100, "%") sound.play() def links_scale_frequenz_change(self): - #tinnitus.linksFrequenz = float(linksScaleFrequenz.get())/1000 # scale liefert 20-20kHz, tinnitus.frequenz in Hz - print("Links Frequenz = ", linksFrequenz) + tinnitus.linksFrequenz = float(linksScaleFrequenz.get())*1000 # scale liefert 20-20kHz, tinnitus.frequenz in Hz + print("Links Frequenz = ", linksFrequenz, " Hz") sound.play() def links_scale_rauschen_lautstärke_change(self): - linksRauschenLautstärke = float(linksScaleRauschenLautstärke.get()) - print("Links Rauschen Lautstärke = ", linksRauschenLautstärke) + tinnitus.linksRauschenLautstaerke = float(linksScaleRauschenLautstärke.get()/200) + print("Links Rauschen Lautstärke = ", tinnitus.linksRauschenLautstaerke*200, "%") sound.play() @@ -102,6 +102,8 @@ def unten_button_speichern_press(): vorname.set("..eintragen bitte") print("fehlgeschlagener Speicherversuch - Keine Eingaben gemacht") else: + tinnitus.vorname = untenEntryVorname.get() + tinnitus.nachname = untenEntryNachname.get() print("Speichere Patientendaten, siehe TinnitusDaten.csv") tinnitus.speichern() From 600968195e35c5680726910a6925540e73c75e0c Mon Sep 17 00:00:00 2001 From: ommerthe69431 Date: Sat, 13 Jun 2020 15:05:06 +0200 Subject: [PATCH 2/4] =?UTF-8?q?Funktionen=20zur=20Soundwiedergabe=20ge?= =?UTF-8?q?=C3=A4ndert.=20Wiedergabe=20ist=20jetzt=20echt=20dynamisch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TinnitusAnalyse/SoundGenerator.py | 115 +++++++++++-------------- TinnitusAnalyse/TinnitusAnalyse_GUI.py | 6 +- 2 files changed, 55 insertions(+), 66 deletions(-) diff --git a/TinnitusAnalyse/SoundGenerator.py b/TinnitusAnalyse/SoundGenerator.py index 747d34a..a79707d 100644 --- a/TinnitusAnalyse/SoundGenerator.py +++ b/TinnitusAnalyse/SoundGenerator.py @@ -2,8 +2,8 @@ import math import wave #bearbeiten von .wav-Dateien import struct import sounddevice as sd #zum abspielen des audio-arrays -import random as random #für die Rauscherzeugung -import time #nur für die Tests, um Zeit zum Anhören der Sounds einzubauen +import numpy as np +import sys #für Fehlermeldungen #In .wav-Dateien wird der Ton in absoluten Werte eingetragen. Die Standart-framerate ist 44100 #das heißt für jede Sekunde an Ton gibt es 44100 Werte, die die Tonwelle über die Zeit beschreiben @@ -40,8 +40,9 @@ class Tinnitus: #beinhaltet alle Werte, die vom Nutzer eingestellt werden return -#Die Klasse beinhaltet alle Werte, die zum Erstellen einer .wav-Datei benötigt werden und ein Tinnitus-Objekt, das beim Initialisieren übergeben werden muss. -#Die Audiodaten werden in das Array "audio" geschrieben +"""Sound beinhaltet alle Variablen, die zum erstellen einer .wav-Datei benötigt werden (siehe soun.wav_speichern()) + Das 'sound_obj' ist für das dynamische abspielen zuständig (siehe sound.play()) + Beim Initialisieren muss eine Tinnitus-Objekt übergeben werden""" class Sound: def __init__(self, tinnitus, name="sound.wav", audio=None, nchannels=1, sampwidth=2, framerate=44100, comptype="NONE", compname="not compressed", mute=True): if audio is None: @@ -56,83 +57,71 @@ class Sound: self.comptype = comptype self.compname = compname self.mute = True # wenn der mute boolean auf true gesetzt ist, sollte kein Ton ausgegeben werden - return - - def neu_audio(self): #Schreibt Werte in das audio-Array. Soll später abhängig sein von den Tinnitus-Werten(Frequenz, Rauschen, ...) - freq = self.tinnitus.linksFrequenz - dauer_ms = 2000.0 - amp = self.tinnitus.linksLautstaerke - rauschen = self.tinnitus.linksRauschenLautstaerke - - self.audio.clear() - num_samples = dauer_ms * (self.framerate / 1000.0) # framerate -pro Sekunde- umgerechnet in -pro Millisekunde- - - # einen einfachen Sinus ins array schreiben - for x in range(int(num_samples)): - self.audio.append(amp * math.sin(2 * math.pi * freq * (x / self.framerate))) - - #das Rauschen addieren - if(self.tinnitus.linksRauschenLautstaerke != 0): - for x in range(int(num_samples)): - self.audio[x] += random.random() * rauschen + self.sound_obj = sd.OutputStream(channels=2, callback=self.callback, samplerate=self.framerate) #Objekt fürs Abspielen (siehe sound.play()) + self.start_idx = 0 #wird für sound_obj benötigt return def wav_speichern(self): #ezeugt/aktuallisiert die .wav-Datei - self.neu_audio() - #das 100ms audio-array strecken: - for x in range(5): # entspricht 10 Sekunden - for y in range(int(self.framerate/10)): - self.audio.append(self.audio[y]) - wav_file = wave.open(self.name, "w") + print("Sound wird als .wav-Datei gespeichert. Bitte warten...\nDer Vorgang kann ca. 30 Sekunden dauern") + + #zuerst muss ein Array mit Audiodaten gefüllt werden + audio = [] + freq = self.tinnitus.linksFrequenz + dauer_ms = 10000.0 #10 Sekunden + amp = self.tinnitus.linksLautstaerke + rauschen = self.tinnitus.linksRauschenLautstaerke + + num_samples = dauer_ms * (self.framerate / 1000.0) #framerate -pro Sekunde- umgerechnet in -pro Millisekunde- + + for x in range(int(num_samples)): #einen einfachen Sinus ins array schreiben + audio.append(amp * math.sin(2 * math.pi * freq * (x / self.framerate))) + + if(rauschen): #das Rauschen addieren + for x in range(int(num_samples)): + audio[x] += (np.random.rand() - 0.5) * rauschen + + #erst werden die Rahmen-Parameter gesetzt - self.nframes = len(self.audio) # Anpassen des nframes-Parameters + self.nframes = len(audio) # Anpassen des nframes-Parameters wav_file.setparams((self.nchannels, self.sampwidth, self.framerate, self.nframes, self.comptype, self.compname)) #dann wird das audio-Array an die Datei übertragen - for sample in self.audio: + for sample in audio: wav_file.writeframes(struct.pack('h', int(sample * 32767.0))) wav_file.close() + print("Speichern beendet.") return + """Die Objekt-Funktion __enter__() startet die asynchrone Soundwiedergabe. Sie ruft dabei immer wieder die Funktion + sound.callback() auf. Daher können die dort genutzten Variablen dynamisch geändert werden. """ def play(self): - self.neu_audio() if not self.mute: # NEVER play sound when patient mutes GUI - sd.play(self.audio, self.framerate, loop=1) + self.sound_obj.__enter__() return def stop(self): - sd.stop() + self.sound_obj.__exit__() #beendet die asynchrone Soundwiedergabe return -# tinnitus1 = Tinnitus() -# sound = Sound(tinnitus1) -# -# if(1): -# print("======abnehmende Lautstärke==========") -# for x in range(10): -# print(" Lautstärke = ", tinnitus1.linksLautstaerke) -# sound.play() -# time.sleep(0.6) -# tinnitus1.linksLautstaerke -= 0.1 -# print("\n\n") -# time.sleep(1) -# tinnitus1.linksLautstaerke = 1 -# -# -# -# if(0): -# print("=========RauschTest============") -# for x in range(10): -# tinnitus1.linksRauschenLautstaerke += 0.01 -# print(" Rauschen = ", tinnitus1.linksRauschenLautstaerke) -# sound.play() -# time.sleep(1) -# -# if(0): -# tinnitus1.speichern() -# -# sd.stop() -# print("ENDE") + """Die Funktion callback() erzeugt bei jedem Aufruf die Audiodaten, abhängig von den aktuellen Tinnitus-Variablen. + Die errechneten Werte werden in das NumPy-Array 'outdata' geschrieben """ + #momentan nur Mono. Es werden die Werte des linken Ohrs genutzt + def callback(self, outdata, frames, time, status): + if status: #gibt Warnungen aus, wenn das Soundobjekt auf Fehler stößt (hauptsächlich over/underflow wegen timingproblemen) + print(status, file=sys.stderr) + t = (self.start_idx + np.arange(frames)) / self.framerate + t = t.reshape(-1, 1) + + #Sinuston ins Array schreiben + outdata[:] = self.tinnitus.linksLautstaerke * np.sin(2 * np.pi * self.tinnitus.linksFrequenz * t) + + #Rauschen addieren + if(self.tinnitus.linksRauschenLautstaerke): + for x in range(len(outdata)): + rand = (np.random.rand() - 0.5) * self.tinnitus.linksRauschenLautstaerke + outdata[x] += rand + + self.start_idx += frames diff --git a/TinnitusAnalyse/TinnitusAnalyse_GUI.py b/TinnitusAnalyse/TinnitusAnalyse_GUI.py index ec20c31..624d27a 100644 --- a/TinnitusAnalyse/TinnitusAnalyse_GUI.py +++ b/TinnitusAnalyse/TinnitusAnalyse_GUI.py @@ -16,13 +16,13 @@ def links_scale_lautstärke_change(self): def links_scale_frequenz_change(self): tinnitus.linksFrequenz = float(linksScaleFrequenz.get())*1000 # scale liefert 20-20kHz, tinnitus.frequenz in Hz - print("Links Frequenz = ", linksFrequenz, " Hz") + print("Links Frequenz = ", tinnitus.linksFrequenz, " Hz") sound.play() def links_scale_rauschen_lautstärke_change(self): - tinnitus.linksRauschenLautstaerke = float(linksScaleRauschenLautstärke.get()/200) - print("Links Rauschen Lautstärke = ", tinnitus.linksRauschenLautstaerke*200, "%") + tinnitus.linksRauschenLautstaerke = float(linksScaleRauschenLautstärke.get()/1000) + print("Links Rauschen Lautstärke = ", tinnitus.linksRauschenLautstaerke*1000, "%") sound.play() From 6359602a4b6fbe67401d67dfa722fe0904dd8ec8 Mon Sep 17 00:00:00 2001 From: ommerthe69431 Date: Mon, 15 Jun 2020 10:31:56 +0200 Subject: [PATCH 3/4] =?UTF-8?q?Stereo-Sound=20eingebaut=20und=20Formatieru?= =?UTF-8?q?ngen/Kommentare=20ge=C3=A4ndert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TinnitusAnalyse/SoundGenerator.py | 118 ++++++++++++++----------- TinnitusAnalyse/TinnitusAnalyse_GUI.py | 12 +-- 2 files changed, 71 insertions(+), 59 deletions(-) diff --git a/TinnitusAnalyse/SoundGenerator.py b/TinnitusAnalyse/SoundGenerator.py index a79707d..1774352 100644 --- a/TinnitusAnalyse/SoundGenerator.py +++ b/TinnitusAnalyse/SoundGenerator.py @@ -1,15 +1,18 @@ import math -import wave #bearbeiten von .wav-Dateien +import wave # bearbeiten von .wav-Dateien import struct -import sounddevice as sd #zum abspielen des audio-arrays +import sounddevice as sd # zum abspielen des audio-arrays import numpy as np -import sys #für Fehlermeldungen +import sys # für Fehlermeldungen -#In .wav-Dateien wird der Ton in absoluten Werte eingetragen. Die Standart-framerate ist 44100 -#das heißt für jede Sekunde an Ton gibt es 44100 Werte, die die Tonwelle über die Zeit beschreiben +"""--------------------------------------------------------------------------------------------------------------------- +In .wav-Dateien wird der Ton in absoluten Werte eingetragen. Die Standart-framerate ist 44100 +das heißt für jede Sekunde an Ton gibt es 44100 Werte, die die Tonwelle über die Zeit beschreiben +---------------------------------------------------------------------------------------------------------------------""" -class Tinnitus: #beinhaltet alle Werte, die vom Nutzer eingestellt werden - def __init__(self, l_freq=600, r_freq=600, l_amp=0, r_amp=0, l_rausch=0, r_rausch=0, ear=0): + +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): self.vorname = "" self.nachname = "" self.kommentar = "" @@ -17,13 +20,11 @@ class Tinnitus: #beinhaltet alle Werte, die vom Nutzer eingestellt werden self.rechtsFrequenz = r_freq self.linksLautstaerke = l_amp self.rechtsLautstaerke = r_amp - self.linksRauschenLautstaerke = l_rausch #float von 0-1 (0 ist aus) + self.linksRauschenLautstaerke = l_rausch # float von 0-1 (0 ist aus) self.rechtsRauschenLautstaerke = r_rausch - self.ear = ear # 0:both 1:left 2:right 3:links/rechts unterschiedlich - return - - def speichern(self): #speichert die Nutzerdaten in eine .csv-Datei + self.ohr = ohr # 0:both 1:left 2:right 3:links/rechts unterschiedlich + def speichern(self): # speichert die Nutzerdaten in eine .csv-Datei datei = open("TinnitusDaten.csv", "w") daten = "Vorname;" + self.vorname + "\n" @@ -38,90 +39,101 @@ class Tinnitus: #beinhaltet alle Werte, die vom Nutzer eingestellt werden datei.write(daten) datei.close() - return -"""Sound beinhaltet alle Variablen, die zum erstellen einer .wav-Datei benötigt werden (siehe soun.wav_speichern()) +"""---------------------------------KLASSE: SOUND----------------------------------------------------------------------- +Sound beinhaltet alle Variablen, die zum erstellen einer .wav-Datei benötigt werden (siehe soun.wav_speichern()) Das 'sound_obj' ist für das dynamische abspielen zuständig (siehe sound.play()) - Beim Initialisieren muss eine Tinnitus-Objekt übergeben werden""" + Beim Initialisieren muss eine Tinnitus-Objekt übergeben werden +---------------------------------------------------------------------------------------------------------------------""" + + class Sound: - def __init__(self, tinnitus, name="sound.wav", audio=None, nchannels=1, sampwidth=2, framerate=44100, comptype="NONE", compname="not compressed", mute=True): + def __init__(self, tinnitus, name="sound.wav", audio=None, nchannels=1, sampwidth=2, framerate=44100, + comptype="NONE", compname="not compressed", mute=True): if audio is None: audio = [] self.tinnitus = tinnitus self.name = name - self.audio = audio #ein Array, in das die Sound-Werte geschrieben werden - self.nchannels = nchannels #Zahl der audio channels (1:mono 2:stereo) - self.sampwidth = sampwidth #Größe eines einzelnen Sound-Werts (in bytes) - self.framerate = framerate #Abtastrate - self.nframes = len(audio) #Anzahl der Sound-Werte -> Muss bei jeder audio-Änderung aktuallisiert werden + self.audio = audio # ein Array, in das die Sound-Werte geschrieben werden + self.nchannels = nchannels # Zahl der audio channels (1:mono 2:stereo) + self.sampwidth = sampwidth # Größe eines einzelnen Sound-Werts (in bytes) + self.framerate = framerate # Abtastrate + self.nframes = len(audio) # Anzahl der Sound-Werte -> Muss bei jeder audio-Änderung aktuallisiert werden self.comptype = comptype self.compname = compname - self.mute = True # wenn der mute boolean auf true gesetzt ist, sollte kein Ton ausgegeben werden - self.sound_obj = sd.OutputStream(channels=2, callback=self.callback, samplerate=self.framerate) #Objekt fürs Abspielen (siehe sound.play()) - self.start_idx = 0 #wird für sound_obj benötigt - return + self.mute = mute # wenn der mute boolean auf true gesetzt ist, sollte kein Ton ausgegeben werden + self.sound_obj = sd.OutputStream(channels=2, callback=self.callback, + samplerate=self.framerate) # Objekt fürs Abspielen (siehe sound.play()) + self.start_idx = 0 # wird für sound_obj benötigt - def wav_speichern(self): #ezeugt/aktuallisiert die .wav-Datei + def wav_speichern(self): # ezeugt/aktuallisiert die .wav-Datei wav_file = wave.open(self.name, "w") print("Sound wird als .wav-Datei gespeichert. Bitte warten...\nDer Vorgang kann ca. 30 Sekunden dauern") - #zuerst muss ein Array mit Audiodaten gefüllt werden + # zuerst muss ein Array mit Audiodaten gefüllt werden audio = [] freq = self.tinnitus.linksFrequenz - dauer_ms = 10000.0 #10 Sekunden + dauer_ms = 10000.0 # 10 Sekunden amp = self.tinnitus.linksLautstaerke rauschen = self.tinnitus.linksRauschenLautstaerke - num_samples = dauer_ms * (self.framerate / 1000.0) #framerate -pro Sekunde- umgerechnet in -pro Millisekunde- + num_samples = dauer_ms * (self.framerate / 1000.0) # framerate -pro Sekunde- umgerechnet in -pro Millisekunde- - for x in range(int(num_samples)): #einen einfachen Sinus ins array schreiben + for x in range(int(num_samples)): # einen einfachen Sinus ins array schreiben audio.append(amp * math.sin(2 * math.pi * freq * (x / self.framerate))) - if(rauschen): #das Rauschen addieren + if rauschen: # das Rauschen addieren for x in range(int(num_samples)): audio[x] += (np.random.rand() - 0.5) * rauschen - - #erst werden die Rahmen-Parameter gesetzt + # erst werden die Rahmen-Parameter gesetzt self.nframes = len(audio) # Anpassen des nframes-Parameters wav_file.setparams((self.nchannels, self.sampwidth, self.framerate, self.nframes, self.comptype, self.compname)) - #dann wird das audio-Array an die Datei übertragen + # dann wird das audio-Array an die Datei übertragen for sample in audio: wav_file.writeframes(struct.pack('h', int(sample * 32767.0))) wav_file.close() print("Speichern beendet.") - return - """Die Objekt-Funktion __enter__() startet die asynchrone Soundwiedergabe. Sie ruft dabei immer wieder die Funktion + """Die Objekt-Funktion 'start()' startet die asynchrone Soundwiedergabe. Sie ruft dabei immer wieder die Funktion sound.callback() auf. Daher können die dort genutzten Variablen dynamisch geändert werden. """ + def play(self): - if not self.mute: # NEVER play sound when patient mutes GUI - self.sound_obj.__enter__() - return + if not self.mute: # NEVER play sound when patient mutes GUI + self.sound_obj.start() def stop(self): - self.sound_obj.__exit__() #beendet die asynchrone Soundwiedergabe - return + self.sound_obj.stop() # beendet die asynchrone Soundwiedergabe """Die Funktion callback() erzeugt bei jedem Aufruf die Audiodaten, abhängig von den aktuellen Tinnitus-Variablen. Die errechneten Werte werden in das NumPy-Array 'outdata' geschrieben """ - #momentan nur Mono. Es werden die Werte des linken Ohrs genutzt + + # momentan nur Mono. Es werden die Werte des linken Ohrs genutzt def callback(self, outdata, frames, time, status): - if status: #gibt Warnungen aus, wenn das Soundobjekt auf Fehler stößt (hauptsächlich over/underflow wegen timingproblemen) + if status: # Warnungen, wenn das Soundobj. auf Fehler stößt (hauptsächlich over/underflow wg. Timingproblemen) print(status, file=sys.stderr) - t = (self.start_idx + np.arange(frames)) / self.framerate - t = t.reshape(-1, 1) - #Sinuston ins Array schreiben - outdata[:] = self.tinnitus.linksLautstaerke * np.sin(2 * np.pi * self.tinnitus.linksFrequenz * t) + # Sinus ins Array schreiben: f(t) = A * sin(2 * pi * f * t) + for x in range(frames): + # links: + if self.tinnitus.linksLautstaerke: + outdata[x][0] = self.tinnitus.linksLautstaerke * np.sin(2 * np.pi * self.tinnitus.linksFrequenz * + ((x + self.start_idx) / self.framerate)) + # rechts: + if self.tinnitus.rechtsLautstaerke: + outdata[x][1] = self.tinnitus.rechtsLautstaerke * np.sin(2 * np.pi * self.tinnitus.rechtsFrequenz * + ((x + self.start_idx) / self.framerate)) - #Rauschen addieren - if(self.tinnitus.linksRauschenLautstaerke): - for x in range(len(outdata)): - rand = (np.random.rand() - 0.5) * self.tinnitus.linksRauschenLautstaerke - outdata[x] += rand + # Rauschen addieren + for x in range(frames): + rand = (np.random.rand() - 0.5) * self.tinnitus.linksRauschenLautstaerke + #links: + if self.tinnitus.linksRauschenLautstaerke: + outdata[x][0] += rand + #rechts: + if self.tinnitus.rechtsRauschenLautstaerke: + outdata[x][1] += rand self.start_idx += frames - diff --git a/TinnitusAnalyse/TinnitusAnalyse_GUI.py b/TinnitusAnalyse/TinnitusAnalyse_GUI.py index 624d27a..c47b82c 100644 --- a/TinnitusAnalyse/TinnitusAnalyse_GUI.py +++ b/TinnitusAnalyse/TinnitusAnalyse_GUI.py @@ -42,20 +42,20 @@ def links_scale_rauschen_bandbreite_change(self): def rechts_scale_lautstärke_change(self): - rechtsLautstärke = float(rechtsScaleLautstärke.get()) - print("Rechts Lautstärke =", rechtsLautstärke) + tinnitus.rechtsLautstaerke = float(rechtsScaleLautstärke.get()/100) + print("Rechts Lautstärke =", tinnitus.rechtsLautstaerke, "%") sound.play() def rechts_scale_frequenz_change(self): - rechtsFrequenz = float(rechtsScaleFrequenz.get()) - print("Rechts Frequenz= ", rechtsFrequenz) + tinnitus.rechtsFrequenz = float(rechtsScaleFrequenz.get()*1000) + print("Rechts Frequenz= ", tinnitus.rechtsFrequenz, " Hz") sound.play() def rechts_scale_rauschen_lautstärke_change(self): - rechtsRauschenLautstärke = float(rechtsScaleRauschenLautstärke.get()) - print("Rechts Rauschen Lautstärke = ", rechtsRauschenLautstärke) + tinnitus.rechtsRauschenLautstaerke = float(rechtsScaleRauschenLautstärke.get()/1000) + print("Rechts Rauschen Lautstärke = ", rechtsRauschenLautstärke*1000, "%") sound.play() From 343ee7d2e575d68b37f9fbb5a048ed11ba0b0f25 Mon Sep 17 00:00:00 2001 From: ommerthe69431 Date: Mon, 15 Jun 2020 10:39:29 +0200 Subject: [PATCH 4/4] kleine Fehler des letzten Updates behoben --- TinnitusAnalyse/SoundGenerator.py | 6 +++--- TinnitusAnalyse/TinnitusAnalyse_GUI.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/TinnitusAnalyse/SoundGenerator.py b/TinnitusAnalyse/SoundGenerator.py index 1774352..d6dc570 100644 --- a/TinnitusAnalyse/SoundGenerator.py +++ b/TinnitusAnalyse/SoundGenerator.py @@ -128,12 +128,12 @@ class Sound: # Rauschen addieren for x in range(frames): - rand = (np.random.rand() - 0.5) * self.tinnitus.linksRauschenLautstaerke + rand = (np.random.rand() - 0.5) # Zufallszahl zwischen -0.5 und 0.5 #links: if self.tinnitus.linksRauschenLautstaerke: - outdata[x][0] += rand + outdata[x][0] += rand * self.tinnitus.linksRauschenLautstaerke #rechts: if self.tinnitus.rechtsRauschenLautstaerke: - outdata[x][1] += rand + outdata[x][1] += rand * self.tinnitus.rechtsRauschenLautstaerke self.start_idx += frames diff --git a/TinnitusAnalyse/TinnitusAnalyse_GUI.py b/TinnitusAnalyse/TinnitusAnalyse_GUI.py index c47b82c..ab6040f 100644 --- a/TinnitusAnalyse/TinnitusAnalyse_GUI.py +++ b/TinnitusAnalyse/TinnitusAnalyse_GUI.py @@ -55,7 +55,7 @@ def rechts_scale_frequenz_change(self): def rechts_scale_rauschen_lautstärke_change(self): tinnitus.rechtsRauschenLautstaerke = float(rechtsScaleRauschenLautstärke.get()/1000) - print("Rechts Rauschen Lautstärke = ", rechtsRauschenLautstärke*1000, "%") + print("Rechts Rauschen Lautstärke = ", tinnitus.rechtsRauschenLautstaerke*1000, "%") sound.play()