Browse Source

Code aufgeraeumt

Kommentare ueberarbeitet
unnoetigen Code geloescht/zusammengefasst
master
Heiko Ommert 3 years ago
parent
commit
4e63ebc564
2 changed files with 11 additions and 15 deletions
  1. 10
    14
      TinnitusAnalyse/SoundGenerator.py
  2. 1
    1
      TinnitusAnalyse/TinnitusAnalyse_GUI.py

+ 10
- 14
TinnitusAnalyse/SoundGenerator.py View File

@@ -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 *

+ 1
- 1
TinnitusAnalyse/TinnitusAnalyse_GUI.py View File

@@ -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")


Loading…
Cancel
Save