From 5e001868748080602984252ff9a6b6fd89d2e747 Mon Sep 17 00:00:00 2001 From: seyffejn <55194230+seyffejn@users.noreply.github.com> Date: Thu, 11 Jun 2020 22:05:03 +0200 Subject: [PATCH] Skript Fusion GUI+SoundGen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fuisonierung der Arbeiten von Heiko und Julian. Die ersten GUI Funktionen mit Sound Sachen gefüllt. Kleine Änderung am SoundGenerator in Form eines Booleans der die Play Funktion verhindert. --- .gitignore | 1 + TinnitusAnalyse/.idea/dictionaries/Julian.xml | 3 + TinnitusAnalyse/.idea/workspace.xml | 108 ++++++++++++------ TinnitusAnalyse/27130.png | Bin 6739 -> 0 bytes TinnitusAnalyse/Headphones Icon.ico | Bin 169221 -> 0 bytes TinnitusAnalyse/SoundGenerator.py | 70 ++++++------ TinnitusAnalyse/TinnitusAnalyse_GUI.py | 35 ++++-- .../__pycache__/SoundGenerator.cpython-35.pyc | Bin 0 -> 3434 bytes 8 files changed, 139 insertions(+), 78 deletions(-) delete mode 100644 TinnitusAnalyse/27130.png delete mode 100644 TinnitusAnalyse/Headphones Icon.ico create mode 100644 TinnitusAnalyse/__pycache__/SoundGenerator.cpython-35.pyc diff --git a/.gitignore b/.gitignore index 15fe31b..fc126c9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ TinnitusAnalyse/.idea/dictionaries/Julian.xml TinnitusAnalyse/.idea/workspace.xml TinnitusAnalyse/eggs.csv +TinnitusAnalyse/.idea/workspace.xml diff --git a/TinnitusAnalyse/.idea/dictionaries/Julian.xml b/TinnitusAnalyse/.idea/dictionaries/Julian.xml index ee120ee..4a62725 100644 --- a/TinnitusAnalyse/.idea/dictionaries/Julian.xml +++ b/TinnitusAnalyse/.idea/dictionaries/Julian.xml @@ -8,7 +8,9 @@ definieren frequenz kommentare + lautstaerke lautstärke + liefert linkem linken linkes @@ -23,6 +25,7 @@ rechter rechtes rechts + speicherversuch variablen vorname zwischen diff --git a/TinnitusAnalyse/.idea/workspace.xml b/TinnitusAnalyse/.idea/workspace.xml index f7d9086..44775cb 100644 --- a/TinnitusAnalyse/.idea/workspace.xml +++ b/TinnitusAnalyse/.idea/workspace.xml @@ -2,8 +2,12 @@ + + + + \ No newline at end of file diff --git a/TinnitusAnalyse/27130.png b/TinnitusAnalyse/27130.png deleted file mode 100644 index 3ccf6fe497e669e791474fed0574875efa64f658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6739 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 diff --git a/TinnitusAnalyse/Headphones Icon.ico b/TinnitusAnalyse/Headphones Icon.ico deleted file mode 100644 index 5f3629a71b52fcb096e895ab90b833182ce54cbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169221 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 GhWS6dnWz2$ diff --git a/TinnitusAnalyse/SoundGenerator.py b/TinnitusAnalyse/SoundGenerator.py index e326e09..82f45ac 100644 --- a/TinnitusAnalyse/SoundGenerator.py +++ b/TinnitusAnalyse/SoundGenerator.py @@ -9,7 +9,7 @@ import time #nur für die Tests, um Zeit zum Anhören der Sounds einzubauen #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=1, r_amp=1, l_rausch=0, r_rausch=0, ear=0): + def __init__(self, l_freq=600, r_freq=600, l_amp=0, r_amp=0, l_rausch=0, r_rausch=0, ear=0): self.linksFrequenz = l_freq self.rechtsFrequenz = r_freq self.linksLautstaerke = l_amp @@ -38,7 +38,7 @@ class Tinnitus: #beinhaltet alle Werte, die vom Nutzer eingestellt werden #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 class Sound: - def __init__(self, tinnitus, name="sound.wav", audio=None, nchannels=1, sampwidth=2, framerate=44100, comptype="NONE", compname="not compressed"): + 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 @@ -50,6 +50,7 @@ class Sound: 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 return def neu_audio(self): #Schreibt Werte in das audio-Array. Soll später abhängig sein von den Tinnitus-Werten(Frequenz, Rauschen, ...) @@ -92,38 +93,41 @@ class Sound: def play(self): self.neu_audio() - sd.play(self.audio, self.framerate, loop=1) + if not self.mute: # NEVER play sound when patient mutes GUI + sd.play(self.audio, self.framerate, loop=1) return + def stop(self): + sd.stop() + return - -tinnitus1 = Tinnitus() -sound = Sound(tinnitus1) - -if(0): - 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") +# 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") diff --git a/TinnitusAnalyse/TinnitusAnalyse_GUI.py b/TinnitusAnalyse/TinnitusAnalyse_GUI.py index d9950a7..9428f32 100644 --- a/TinnitusAnalyse/TinnitusAnalyse_GUI.py +++ b/TinnitusAnalyse/TinnitusAnalyse_GUI.py @@ -1,5 +1,6 @@ from tkinter.ttk import Frame, Label, Button, LabelFrame, Combobox, Style, Checkbutton, Entry, Panedwindow, Separator from tkinter import * +from SoundGenerator import * import csv @@ -8,28 +9,33 @@ import csv def links_scale_lautstärke_change(self): - linksLautstärke = float(linksScaleLautstärke.get()) - print("Links Lautstärke =", linksLautstärke) + tinnitus.linksLautstaerke = float(linksScaleLautstärke.get())/100 # scale liefert 0-100%, tinnitus.lautstärke 0-1 + print("Links Lautstärke =", tinnitus.linksLautstaerke*100) + sound.play() def links_scale_frequenz_change(self): - linksFrequenz = float(linksScaleFrequenz.get()) + #tinnitus.linksFrequenz = float(linksScaleFrequenz.get())/1000 # scale liefert 20-20kHz, tinnitus.frequenz in Hz print("Links Frequenz = ", linksFrequenz) + sound.play() def links_scale_rauschen_lautstärke_change(self): linksRauschenLautstärke = float(linksScaleRauschenLautstärke.get()) print("Links Rauschen Lautstärke = ", linksRauschenLautstärke) + sound.play() def links_scale_rauschen_mittelfrequenz_change(self): linksRauschenMittelfrequenz = float(linksScaleRauschenMittelFrequenz.get()) print("Links Rauschen Mittelfrequenz = ", linksRauschenMittelfrequenz) + sound.play() def links_scale_rauschen_bandbreite_change(self): linksRauschenBandbreite = float(linksScaleRauschenBandbreite.get()) print("Links Rauschen Bandbreite = ", linksRauschenBandbreite) + sound.play() """----------Funktionen rechts----------""" @@ -38,26 +44,31 @@ 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) + sound.play() def rechts_scale_frequenz_change(self): rechtsFrequenz = float(rechtsScaleFrequenz.get()) print("Rechts Frequenz= ", rechtsFrequenz) + sound.play() def rechts_scale_rauschen_lautstärke_change(self): rechtsRauschenLautstärke = float(rechtsScaleRauschenLautstärke.get()) print("Rechts Rauschen Lautstärke = ", rechtsRauschenLautstärke) + sound.play() def rechts_scale_rauschen_mittelfrequenz_change(self): rechtsRauschenMittelfrequenz = float(rechtsScaleRauschenMittelFrequenz.get()) print("Rechts Rauschen Mittelfrequenz = ", rechtsRauschenMittelfrequenz) + sound.play() def rechts_scale_rauschen_bandbreite_change(self): rechtsRauschenBandbreite = float(rechtsScaleRauschenBandbreite.get()) print("Rechts Rauschen Bandbreite = ", rechtsRauschenBandbreite) + sound.play() """--------------Funktionen unten------------------""" @@ -89,18 +100,28 @@ def unten_button_speichern_press(): (untenEntryNachname == "Erst Namen..") or (untenEntryVorname == "..eintragen bitte"): nachname.set("Erst Namen..") vorname.set("..eintragen bitte") + print("fehlgeschlagener Speicherversuch - Keine Eingaben gemacht") else: - print("TEST") + print("Speichere Patientendaten, siehe TinnitusDaten.csv") + tinnitus.speichern() def unten_button_play_press(): - print("button play pressed") - + print("button play pressed -> mute=false") + sound.mute = False + sound.play() def unten_button_stop_press(): - print("button stop press") + print("button stop press -> mute=true") + sound.mute = True + sound.stop() +"""""" +tinnitus = Tinnitus() +sound = Sound(tinnitus) +print("test") + """------------------------------------------ AUFBAU DES ROOT WINDOWS -----------------------------------------------""" root = Tk() # build the main window root.title("Tinnitus Analyse") diff --git a/TinnitusAnalyse/__pycache__/SoundGenerator.cpython-35.pyc b/TinnitusAnalyse/__pycache__/SoundGenerator.cpython-35.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1812ae953d980ed72c0106650ddfcdf3cb471bae GIT binary patch literal 3434 zcmbVPTW{mW6`mnQijpPY6UW_b*W08QHm!?Zom&ehyUn&qqZC;O+pC5E<`lbrHEv0cSPjWx+|hat$QN!YTXx+FYcvi=ZYs7 z#TAdytqBvFdu;O96wp-nL;oD}ie8^&eYK$M;xRvmQ1FI5pt+&ohBAM<0%JdEiUdOT`!DR`dWa_ zcMjWCV>DJp<(g7!+Ij7fXp*2HXrBZfvdVj;vr<)FKOY$ty1ETx_>FNv&vktw`BN!FQP{nc8j^p7do#do<;`n%y zn=O45W*4nu7mq=Nt`QX=#mr(Ko zizfkd)q+SnHCJ^-y2v^RY)Pcctb?EY}@jr)7uLds-V1}=c++bsk~&8W}~WA^beDwP`LpRz* zv^=a@2O4ca6{>P`0IylF!Bhb)v^*UvtMN#U;iObyo1vzk$2#>*5??2Ai^LX*+az8j z@l6unBEcBA1OmY%#ACh&A!JATSLkTzqBLFP$Xw?nIuG-LCiMq8Y9%Wk$ zfHbRg#5!WTZZj7~y0MN<^vL5shzA#bF=~%op+6TVKfOM~?aLW3j<;EM#h^1Y@>Ev+;-=LKmpQ92%)$fcYY*i@&AXrY)4W5QIf zOeIgAiZ+m^CNYEXWw>IVgRn90$PO51#od%U?yB6Bx8!umMts(zU#B5j&n)C$pkTL_ zqImKiaX*d%hwBZ(z{$&GDlH7K`v@;8x&CI24n_fu0#G<&6P5CKM?5&*5D#$f27K0# zI}m3|bci;B&#loCO57$a00?C4uffSDDZpdKf(r_6Yc0lh)NzZ9RB|0XS?CL-X{BZNYELx z=aJ9ocd2ay1gA881=!R34bonKh+0OK;{<$Q=1%kMAV&+Fa4zV`bU~F zT1FjmCNt z1BAZaMq;nZF*qROJUO*gM+6s2yV|FSjR5`;9z!V_D*=%`FQ;wmJB@I~WpbNcrXb?8 z3XT$