From 4e63ebc564c6c921dde7bb94c280ea01130553e9 Mon Sep 17 00:00:00 2001 From: ommerthe69431 Date: Fri, 26 Jun 2020 13:24:25 +0200 Subject: [PATCH] Code aufgeraeumt Kommentare ueberarbeitet unnoetigen Code geloescht/zusammengefasst --- TinnitusAnalyse/SoundGenerator.py | 24 ++++++++++-------------- TinnitusAnalyse/TinnitusAnalyse_GUI.py | 2 +- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/TinnitusAnalyse/SoundGenerator.py b/TinnitusAnalyse/SoundGenerator.py index 8382e73..ae464c8 100644 --- a/TinnitusAnalyse/SoundGenerator.py +++ b/TinnitusAnalyse/SoundGenerator.py @@ -1,11 +1,9 @@ -import math import wave # bearbeiten von .wav-Dateien import struct import sounddevice as sd import numpy as np import sys # für Fehlermeldungen from scipy import signal -import time as tm """--------------------------------------------------------------------------------------------------------------------- In .wav-Dateien wird der Ton in absoluten Werte eingetragen. Die Standart-framerate ist 44100 @@ -23,13 +21,12 @@ 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 self.rechtsRauschenLautstaerke = r_rausch self.linksRauschenUntereGrenzfrequenz = l_rausch_ug self.rechtsRauschenUntereGrenzfrequenz = r_rausch_ug self.linksRauschenObereGrenzfrequenz = l_rausch_og self.rechtsRauschenObereGrenzfrequenz = r_rausch_og - 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") @@ -57,17 +54,17 @@ class Tinnitus: # beinhaltet alle Werte, die vom Nutzer eingestellt werden """---------------------------------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 ein Tinnitus-Objekt übergeben werden ---------------------------------------------------------------------------------------------------------------------""" class Sound: - def __init__(self, tinnitus, name="MeinTinnitus.wav", audio=None, nchannels=1, sampwidth=2, framerate=44100, + def __init__(self, tinnitus, wav_name="MeinTinnitus.wav", audio=None, nchannels=2, sampwidth=2, framerate=44100, comptype="NONE", compname="not compressed", mute=True): if audio is None: audio = [] self.tinnitus = tinnitus - self.name = name + self.wav_name = wav_name #Der Dateiname self.audio = audio # ein Array, in das die Sound-Werte geschrieben werden (von -1, bis +1) self.nchannels = nchannels # Zahl der audio channels (1:mono 2:stereo) self.sampwidth = sampwidth # Größe eines einzelnen Sound-Werts (in bytes) @@ -81,20 +78,19 @@ class Sound: self.start_idx = 0 # wird für sound_obj benötigt def wav_speichern(self): # ezeugt/aktuallisiert die .wav-Datei - print("Sound wird als .wav-Datei gespeichert. Bitte warten...\nDer Vorgang kann ca. 30 Sekunden dauern") + print("Sound wird als .wav-Datei gespeichert. Bitte warten...\nDer Vorgang kann ca. 10 Sekunden dauern") - wav_obj = wave.open("MeinTinnitus.wav", "w") + wav_obj = wave.open(self.wav_name, "w") # Die Callback-Funktion aufrufen, um die Audiodaten zu bekommen - frames = 44100 * 3 # entspricht 1 Sekunde + frames = self.framerate * 3 # entspricht 3 Sekunden 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(2) # mono - wav_obj.setsampwidth(self.sampwidth) - wav_obj.setframerate(self.framerate) + self.nframes = len(audio) + wav_obj.setparams((self.nchannels, self.sampwidth, self.framerate, self.nframes, self.comptype, self.compname)) #Die Audiosamples schreiben for x in range(frames): @@ -154,7 +150,7 @@ class Sound: outdata[:, 1] = signal.sosfilt(sos, outdata[:, 1]) - # Sinus ins Array schreiben: f(t) = A * sin(2 * pi * f * t) + # Sinus addieren: f(t) = A * sin(2 * pi * f * t) for x in range(len(outdata)): # links: outdata[x][0] += self.tinnitus.linksLautstaerke * np.sin(2 * np.pi * self.tinnitus.linksFrequenz * diff --git a/TinnitusAnalyse/TinnitusAnalyse_GUI.py b/TinnitusAnalyse/TinnitusAnalyse_GUI.py index 54a812c..f19e0d3 100644 --- a/TinnitusAnalyse/TinnitusAnalyse_GUI.py +++ b/TinnitusAnalyse/TinnitusAnalyse_GUI.py @@ -130,7 +130,7 @@ def unten_button_speichern_press(): tinnitus.kommentar = untenTextKommentar.get("1.0", END) tinnitus.speichern() sound.wav_speichern() - feedback("Daten erfolgreich gespeichert. Siehe: 'MeinTinnitus.wav' ", "white", "green") + feedback("Daten erfolgreich gespeichert. Siehe: " + sound.wav_name, "white", "green") except: feedback("Fehlgeschlagener Speicherversuch! Bitte schließe Microsoft Excel.", "white", "red")