Code aufgeraeumt
Kommentare ueberarbeitet unnoetigen Code geloescht/zusammengefasst
This commit is contained in:
parent
521b5d3ea3
commit
4e63ebc564
@ -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 *
|
||||
|
@ -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…
x
Reference in New Issue
Block a user