|
|
|
|
|
|
|
|
else: |
|
|
else: |
|
|
try: |
|
|
try: |
|
|
unten_button_stop_press() # Wiedergabe beenden, durch den Rechenaufwand gibt es sonst Wiedergabeprobleme |
|
|
unten_button_stop_press() # Wiedergabe beenden, durch den Rechenaufwand gibt es sonst Wiedergabeprobleme |
|
|
feedback("Speichere Sound als '.wav'-Datei. Bitte warten...") |
|
|
|
|
|
tinnitus.vorname = untenEntryVorname.get() |
|
|
tinnitus.vorname = untenEntryVorname.get() |
|
|
tinnitus.nachname = untenEntryNachname.get() |
|
|
tinnitus.nachname = untenEntryNachname.get() |
|
|
tinnitus.kommentar = untenTextKommentar.get("1.0", END) |
|
|
tinnitus.kommentar = untenTextKommentar.get("1.0", END) |
|
|
tinnitus.speichern() |
|
|
tinnitus.speichern() |
|
|
|
|
|
feedback("Speichere Sound als '.wav'-Datei. Bitte warten...") |
|
|
sound.wav_speichern() |
|
|
sound.wav_speichern() |
|
|
feedback("Daten erfolgreich gespeichert. Siehe: " + sound.wav_name, "white", "green") |
|
|
feedback("Daten erfolgreich gespeichert. Siehe: " + sound.wav_name, "white", "green") |
|
|
except: |
|
|
except: |
|
|
|
|
|
|
|
|
right of the GUI) in the text widget. The parameter color is also a string and defines the font color. Same with |
|
|
right of the GUI) in the text widget. The parameter color is also a string and defines the font color. Same with |
|
|
background. Honestly this function is way too complicated, but Tkinter has no nicer/easier builtin way of doing the |
|
|
background. Honestly this function is way too complicated, but Tkinter has no nicer/easier builtin way of doing the |
|
|
coloring nicely """ |
|
|
coloring nicely """ |
|
|
|
|
|
|
|
|
feedback.lineCounter += 1 # in order to color the texts nicely we need to count the lines of text we add |
|
|
feedback.lineCounter += 1 # in order to color the texts nicely we need to count the lines of text we add |
|
|
untenFeedbackText.config(state=NORMAL) # activate text field (otherwise it is readonly) |
|
|
untenFeedbackText.config(state=NORMAL) # activate text field (otherwise it is readonly) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def unten_button_filtere_tinnitus_aus_musik(): |
|
|
def unten_button_filtere_tinnitus_aus_musik(): |
|
|
print("button filtere tinnitus aus musik pressed") |
|
|
print("button filtere tinnitus aus musik pressed") |
|
|
try: |
|
|
|
|
|
|
|
|
print(untenTextMusikDatei.get('1.0', END)) |
|
|
|
|
|
if untenTextMusikDatei.get('1.0', END) == "Einen Song deiner Wahl hier auswählen\n": |
|
|
|
|
|
feedback("Wähle zuerst eine Musikdatei aus", "white", "red") |
|
|
|
|
|
else: |
|
|
|
|
|
unten_button_stop_press() # Wiedergabe beenden, durch den Rechenaufwand gibt es sonst Wiedergabeprobleme |
|
|
feedback("Starte Filtervorgang (dies kann etwas dauern)...", "blue") |
|
|
feedback("Starte Filtervorgang (dies kann etwas dauern)...", "blue") |
|
|
# Filtern in extra thread, damit sich die GUI nicht aufhängt: (daemon beendet den Thread, wenn das Hauptprogramm beendet wird) |
|
|
|
|
|
filter_thread = threading.Thread(target=sound.musik_filtern, daemon=True) |
|
|
|
|
|
filter_thread.start() |
|
|
|
|
|
|
|
|
|
|
|
while filter_thread.is_alive() == True: |
|
|
|
|
|
fb = "Status: " + str(sound.filterfortschritt) + "%" |
|
|
|
|
|
feedback(fb) |
|
|
|
|
|
time.sleep(0.2) |
|
|
|
|
|
print("-- filtern beendet --") |
|
|
|
|
|
feedback("Filtervorgang erfolgreich abgeschlossen. \n" |
|
|
|
|
|
"Audiodatei unter dem Namen MyTinnitusFreeSong.wav erstellt", "white", "green") |
|
|
|
|
|
except: |
|
|
|
|
|
feedback("Fehlgeschlagener Filterversuch. Drücke zuerst den Speichern Knopf" |
|
|
|
|
|
"Stelle sicher, dass die Lautstärke mindestens einer Seite über 0" |
|
|
|
|
|
"gestellt ist. Sonst gehen wir davon aus, dass auf diesem Ohr kein Tinnitus vorliegt.", "red", "white") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
|
# Filtern in extra thread, damit sich die GUI nicht aufhängt: (daemon beendet den Thread, wenn das Hauptprogramm beendet wird) |
|
|
|
|
|
filter_thread = threading.Thread(target=sound.musik_filtern, daemon=True) |
|
|
|
|
|
filter_thread.start() |
|
|
|
|
|
time.sleep(3) # Zeit, damit man das Feedback lesen kann, bevor es gelöscht wird (siehe übernächste Zeile) |
|
|
|
|
|
|
|
|
|
|
|
while filter_thread.is_alive(): |
|
|
|
|
|
feedback.lineCounter = 11 # "Workaround" um Zeilen überschreiben zu können |
|
|
|
|
|
if sound.filterfortschritt[0] > 2: #Nur bei dem 3. und 4. Schritt wird der Fortschritt in Prozent angezeigt |
|
|
|
|
|
fb = "Schritt " + str(sound.filterfortschritt[0]) + " von 4 (" + str(sound.filterfortschritt[1]) + "%)" |
|
|
|
|
|
else: |
|
|
|
|
|
fb = "Schritt " + str(sound.filterfortschritt[0]) + " von 4" |
|
|
|
|
|
feedback(fb) |
|
|
|
|
|
if sound.filterfortschritt[0] == 5: #ist 5, wenn erfolgreich gefiltert wurde |
|
|
|
|
|
print("-- filtern beendet --") |
|
|
|
|
|
feedback("Filtervorgang erfolgreich abgeschlossen. \n" |
|
|
|
|
|
"Audiodatei unter dem Namen MyTinnitusFreeSong.wav erstellt", "white", "green") |
|
|
|
|
|
else: |
|
|
|
|
|
print("Fehler bei Filterfunktion. Siehe Compiler-Meldungen") |
|
|
|
|
|
feedback("Fehlgeschlagener Filterversuch!", "red", "white") |
|
|
|
|
|
except: |
|
|
|
|
|
feedback("Fehlgeschlagener Filterversuch. Drücke zuerst den Speichern Knopf" |
|
|
|
|
|
"Stelle sicher, dass die Lautstärke mindestens einer Seite über 0" |
|
|
|
|
|
"gestellt ist. Sonst gehen wir davon aus, dass auf diesem Ohr kein Tinnitus vorliegt.", "red", |
|
|
|
|
|
"white") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" Initialisierungen """ |
|
|
""" Initialisierungen """ |
|
|
|
|
|
|
|
|
untenLabelOhrenSynchro2.grid(column=2, row=0, sticky=(N + W + E + S)) |
|
|
untenLabelOhrenSynchro2.grid(column=2, row=0, sticky=(N + W + E + S)) |
|
|
untenButtonOhrenSynchro = Button(untererFrame, text="Bestätigen", |
|
|
untenButtonOhrenSynchro = Button(untererFrame, text="Bestätigen", |
|
|
command=unten_button_ohren_synchro) |
|
|
command=unten_button_ohren_synchro) |
|
|
untenButtonOhrenSynchro.grid(column=3, row=0, sticky=(N + W + E + S)) |
|
|
|
|
|
|
|
|
untenButtonOhrenSynchro.grid(column=3, row=0, sticky=(N + S)) |
|
|
|
|
|
|
|
|
#----------- PLAY BUTTON |
|
|
#----------- PLAY BUTTON |
|
|
untenButtonPlay = Button(untererFrame, text="PLAY", font="bold", relief="raised", bg="green", fg="white", |
|
|
untenButtonPlay = Button(untererFrame, text="PLAY", font="bold", relief="raised", bg="green", fg="white", |
|
|
command=unten_button_play_press) |
|
|
command=unten_button_play_press) |
|
|
untenButtonPlay.grid(column=8, row=0, sticky=(N + W + E + S)) |
|
|
|
|
|
|
|
|
untenButtonPlay.grid(column=7, row=0, sticky=(N + W + E + S)) |
|
|
|
|
|
|
|
|
#------------STOP BUTTON------------- |
|
|
#------------STOP BUTTON------------- |
|
|
untenButtonStop = Button(untererFrame, text="STOP", font="bold", relief="raised", bg="red", fg="white", |
|
|
untenButtonStop = Button(untererFrame, text="STOP", font="bold", relief="raised", bg="red", fg="white", |
|
|
command=unten_button_stop_press) |
|
|
command=unten_button_stop_press) |
|
|
untenButtonStop.grid(column=9, row=0, sticky=(N + W + E + S)) |
|
|
|
|
|
|
|
|
untenButtonStop.grid(column=8, row=0, sticky=(N + W + E + S)) |
|
|
|
|
|
|
|
|
# ----------- ABTRENNSTRICHE ---------------- |
|
|
# ----------- ABTRENNSTRICHE ---------------- |
|
|
untenSeparator = Separator(untererFrame, orient="horizontal") |
|
|
untenSeparator = Separator(untererFrame, orient="horizontal") |
|
|
|
|
|
|
|
|
# ------------ KOMMENTAR ---------------- |
|
|
# ------------ KOMMENTAR ---------------- |
|
|
untenLabelKommentar = Label(untererFrame, text="weitere Kommentare:") |
|
|
untenLabelKommentar = Label(untererFrame, text="weitere Kommentare:") |
|
|
untenLabelKommentar.grid(column=0, row=4, sticky=W) |
|
|
untenLabelKommentar.grid(column=0, row=4, sticky=W) |
|
|
untenTextKommentar = Text(untererFrame, height=10, width=50) # create a field where u can enter text |
|
|
|
|
|
untenTextKommentar.grid(column=1, row=4, columnspan=3, rowspan=3) |
|
|
|
|
|
|
|
|
untenLabelKommentar = Label(untererFrame, text="(optional)") |
|
|
|
|
|
untenLabelKommentar.grid(column=0, row=5, sticky=N) |
|
|
|
|
|
untenTextKommentar = Text(untererFrame, height=10, width=60) # create a field where u can enter text |
|
|
|
|
|
untenTextKommentar.grid(column=1, row=4, sticky=W, columnspan=3, rowspan=3) |
|
|
|
|
|
|
|
|
# ----------- SPEICHERN -------------------- |
|
|
# ----------- SPEICHERN -------------------- |
|
|
untenButtonSpeichern = Button(untererFrame, text="Speichern", font="bold", |
|
|
untenButtonSpeichern = Button(untererFrame, text="Speichern", font="bold", |
|
|
command=unten_button_speichern_press) |
|
|
command=unten_button_speichern_press) |
|
|
untenButtonSpeichern.grid(column=4, row=6, sticky=S) |
|
|
|
|
|
|
|
|
untenButtonSpeichern.grid(column=4, row=6, sticky=(S+E+W)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""--------------------------------------UNTERER RECHTER FRAME-------------------------------------------------------""" |
|
|
"""--------------------------------------UNTERER RECHTER FRAME-------------------------------------------------------""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# -------------- LOAD MUSIC FILE-------------- |
|
|
# -------------- LOAD MUSIC FILE-------------- |
|
|
untenTextMusikDatei = Text(untererFrame, height=1, width=50) |
|
|
untenTextMusikDatei = Text(untererFrame, height=1, width=50) |
|
|
untenTextMusikDatei.grid(column=0, row=7, sticky=(N+S+E+W), columnspan=6) |
|
|
|
|
|
|
|
|
untenTextMusikDatei.grid(column=1, row=7, sticky=(N+S+E+W), columnspan=4) |
|
|
untenTextMusikDatei.insert(INSERT, "Einen Song deiner Wahl hier auswählen") # insert selected file path to text widget |
|
|
untenTextMusikDatei.insert(INSERT, "Einen Song deiner Wahl hier auswählen") # insert selected file path to text widget |
|
|
untenTextMusikDatei.config(state=DISABLED) # activate text field (otherwise it is readonly) |
|
|
|
|
|
|
|
|
untenTextMusikDatei.config(state=DISABLED, font=("Arial", 8)) # activate text field (otherwise it is readonly) |
|
|
|
|
|
|
|
|
untenButtonMusikDateiLaden = Button(untererFrame, text="Musikdatei auswählen", |
|
|
untenButtonMusikDateiLaden = Button(untererFrame, text="Musikdatei auswählen", |
|
|
command=unten_button_musikdatei_laden_press) |
|
|
command=unten_button_musikdatei_laden_press) |
|
|
untenButtonMusikDateiLaden.grid(column=7, row=7, sticky=(N+S+E+W)) |
|
|
|
|
|
|
|
|
untenButtonMusikDateiLaden.grid(column=4, row=7, sticky=(N+S+E+W)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#------------BUTTON FILTERE TINNITUS AUS MUSIK----------------- |
|
|
#------------BUTTON FILTERE TINNITUS AUS MUSIK----------------- |
|
|
untenButtonFiltereTinnitusAusMusik = Button(untererFrame, text="Filtere Tinnitus Frequenzen aus Musik", |
|
|
|
|
|
|
|
|
untenButtonFiltereTinnitusAusMusik = Button(untererFrame, text="Filtere Tinnitus-Frequenzen aus Musik", |
|
|
command=unten_button_filtere_tinnitus_aus_musik, font="bold", |
|
|
command=unten_button_filtere_tinnitus_aus_musik, font="bold", |
|
|
relief="raised", bg="blue", fg="white",) |
|
|
relief="raised", bg="blue", fg="white",) |
|
|
untenButtonFiltereTinnitusAusMusik.grid(column=0, row=9, sticky=(N+S+E+W)) |
|
|
|
|
|
|
|
|
untenButtonFiltereTinnitusAusMusik.grid(column=3, row=9, sticky=(N+S+E+W), columnspan=3) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
root.mainloop() |
|
|
root.mainloop() |