Projektbericht hinzugefügt und % Fortschritt Anzeige grober gemacht
This commit is contained in:
parent
7971322755
commit
f05fa4faee
114
TinnitusAnalyse/.idea/workspace.xml
generated
114
TinnitusAnalyse/.idea/workspace.xml
generated
@ -2,11 +2,11 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="5b3f2136-e422-4072-84be-e86e40fa2d55" name="Default Changelist" comment="">
|
<list default="true" id="5b3f2136-e422-4072-84be-e86e40fa2d55" name="Default Changelist" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/dictionaries/Julian.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dictionaries/Julian.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/MyTinnitusFreeSong.wav" beforeDir="false" afterPath="$PROJECT_DIR$/MyTinnitusFreeSong.wav" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/SoundGenerator.py" beforeDir="false" afterPath="$PROJECT_DIR$/SoundGenerator.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/SoundGenerator.py" beforeDir="false" afterPath="$PROJECT_DIR$/SoundGenerator.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusAnalyse_GUI.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/TinnitusDaten.csv" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusDaten.csv" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/TinnitusDaten.csv" beforeDir="false" afterPath="$PROJECT_DIR$/TinnitusDaten.csv" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/musikTest.wav" beforeDir="false" afterPath="$PROJECT_DIR$/musikTest.wav" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<ignored path="$PROJECT_DIR$/venv/" />
|
<ignored path="$PROJECT_DIR$/venv/" />
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||||
@ -16,12 +16,12 @@
|
|||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<leaf>
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
|
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="352">
|
<state>
|
||||||
<caret line="210" lean-forward="true" selection-start-line="210" selection-end-line="210" />
|
<caret line="234" column="42" selection-start-line="234" selection-start-column="42" selection-end-line="234" selection-end-column="42" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#30#0" expanded="true" />
|
<element signature="e#0#30#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -30,28 +30,10 @@
|
|||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/io/wavfile.py">
|
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/fir_filter_design.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="275">
|
<state relative-caret-position="6562">
|
||||||
<caret line="263" selection-start-line="263" selection-end-line="263" />
|
<caret line="399" selection-start-line="399" selection-end-line="399" />
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/filter_design.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="66">
|
|
||||||
<caret line="2278" column="41" selection-start-line="2278" selection-start-column="41" selection-end-line="2278" selection-end-column="41" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/__init__.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="278">
|
|
||||||
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
|
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
@ -59,8 +41,8 @@
|
|||||||
<file pinned="false" current-in-tab="true">
|
<file pinned="false" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="373">
|
<state relative-caret-position="583">
|
||||||
<caret line="278" selection-start-line="278" selection-end-line="278" />
|
<caret line="257" selection-start-line="257" selection-end-line="257" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#42#0" expanded="true" />
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -68,15 +50,6 @@
|
|||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/signaltools.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="275">
|
|
||||||
<caret line="1694" column="4" selection-start-line="1694" selection-start-column="4" selection-end-line="1694" selection-end-column="4" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
</leaf>
|
</leaf>
|
||||||
</component>
|
</component>
|
||||||
<component name="FileTemplateManagerImpl">
|
<component name="FileTemplateManagerImpl">
|
||||||
@ -111,9 +84,11 @@
|
|||||||
<find>Speichern</find>
|
<find>Speichern</find>
|
||||||
<find>csv</find>
|
<find>csv</find>
|
||||||
<find>order</find>
|
<find>order</find>
|
||||||
<find>feedback</find>
|
|
||||||
<find>musikTest</find>
|
<find>musikTest</find>
|
||||||
<find>Daten er</find>
|
<find>Daten er</find>
|
||||||
|
<find>samples</find>
|
||||||
|
<find>feedback</find>
|
||||||
|
<find>framerate</find>
|
||||||
</findStrings>
|
</findStrings>
|
||||||
<dirStrings>
|
<dirStrings>
|
||||||
<dir>C:\Users\Julian\PycharmProjects\TinnitusAnalyse</dir>
|
<dir>C:\Users\Julian\PycharmProjects\TinnitusAnalyse</dir>
|
||||||
@ -130,9 +105,9 @@
|
|||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectFrameBounds" extendedState="7">
|
<component name="ProjectFrameBounds" extendedState="6">
|
||||||
<option name="x" value="-8" />
|
<option name="x" value="2520" />
|
||||||
<option name="y" value="-8" />
|
<option name="y" value="-21" />
|
||||||
<option name="width" value="1294" />
|
<option name="width" value="1294" />
|
||||||
<option name="height" value="1407" />
|
<option name="height" value="1407" />
|
||||||
</component>
|
</component>
|
||||||
@ -298,23 +273,23 @@
|
|||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="ToolWindowManager">
|
<component name="ToolWindowManager">
|
||||||
<frame x="-8" y="-8" width="2576" height="1416" extended-state="6" />
|
<frame x="2552" y="-8" width="1696" height="1026" extended-state="6" />
|
||||||
<editor active="true" />
|
<editor active="true" />
|
||||||
<layout>
|
<layout>
|
||||||
<window_info id="Favorites" side_tool="true" />
|
|
||||||
<window_info content_ui="combo" id="Project" order="0" weight="0.25" />
|
<window_info content_ui="combo" id="Project" order="0" weight="0.25" />
|
||||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||||
<window_info anchor="bottom" id="Version Control" weight="0.32969603" />
|
<window_info id="Favorites" order="2" side_tool="true" />
|
||||||
<window_info anchor="bottom" id="Python Console" weight="0.32969603" />
|
|
||||||
<window_info anchor="bottom" id="Terminal" weight="0.32969603" />
|
|
||||||
<window_info anchor="bottom" id="Event Log" side_tool="true" />
|
|
||||||
<window_info anchor="bottom" id="Message" order="0" />
|
<window_info anchor="bottom" id="Message" order="0" />
|
||||||
<window_info anchor="bottom" id="Find" order="1" />
|
<window_info anchor="bottom" id="Find" order="1" />
|
||||||
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.32969603" />
|
<window_info anchor="bottom" id="Run" order="2" weight="0.47368422" />
|
||||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.3998441" />
|
<window_info anchor="bottom" id="Debug" order="3" weight="0.3998441" />
|
||||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||||
<window_info anchor="bottom" id="TODO" order="6" />
|
<window_info anchor="bottom" id="TODO" order="6" />
|
||||||
|
<window_info anchor="bottom" id="Version Control" order="7" weight="0.32969603" />
|
||||||
|
<window_info anchor="bottom" id="Terminal" order="8" weight="0.32969603" />
|
||||||
|
<window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
|
||||||
|
<window_info anchor="bottom" id="Python Console" order="10" weight="0.32969603" />
|
||||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||||
@ -343,13 +318,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/__init__.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="278">
|
|
||||||
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$USER_HOME$/.PyCharmCE2019.1/system/python_stubs/-1242442885/builtins.py">
|
<entry file="file://$USER_HOME$/.PyCharmCE2019.1/system/python_stubs/-1242442885/builtins.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="375">
|
<state relative-caret-position="375">
|
||||||
@ -357,31 +325,45 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/signaltools.py">
|
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/io/wavfile.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="275">
|
<state relative-caret-position="4386">
|
||||||
<caret line="1694" column="4" selection-start-line="1694" selection-start-column="4" selection-end-line="1694" selection-end-column="4" />
|
<caret line="263" selection-start-line="263" selection-end-line="263" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/filter_design.py">
|
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/filter_design.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="66">
|
<state relative-caret-position="38437">
|
||||||
<caret line="2278" column="41" selection-start-line="2278" selection-start-column="41" selection-end-line="2278" selection-end-column="41" />
|
<caret line="2278" column="41" selection-start-line="2278" selection-start-column="41" selection-end-line="2278" selection-end-column="41" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/io/wavfile.py">
|
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/signaltools.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="275">
|
<state relative-caret-position="28492">
|
||||||
<caret line="263" selection-start-line="263" selection-end-line="263" />
|
<caret line="1694" column="4" selection-start-line="1694" selection-start-column="4" selection-end-line="1694" selection-end-column="4" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/tkinter/__init__.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="-3474">
|
||||||
|
<caret line="1557" selection-start-line="1557" selection-end-line="1557" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$USER_HOME$/AppData/Local/Programs/Python/Python35/Lib/site-packages/scipy/signal/fir_filter_design.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="6562">
|
||||||
|
<caret line="399" selection-start-line="399" selection-end-line="399" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
|
<entry file="file://$PROJECT_DIR$/TinnitusAnalyse_GUI.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="352">
|
<state>
|
||||||
<caret line="210" lean-forward="true" selection-start-line="210" selection-end-line="210" />
|
<caret line="234" column="42" selection-start-line="234" selection-start-column="42" selection-end-line="234" selection-end-column="42" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#30#0" expanded="true" />
|
<element signature="e#0#30#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@ -390,8 +372,8 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
<entry file="file://$PROJECT_DIR$/SoundGenerator.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="373">
|
<state relative-caret-position="583">
|
||||||
<caret line="278" selection-start-line="278" selection-end-line="278" />
|
<caret line="257" selection-start-line="257" selection-end-line="257" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#0#42#0" expanded="true" />
|
<element signature="e#0#42#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 39 KiB |
BIN
TinnitusAnalyse/Projektbericht/Projektbericht.docx
Normal file
BIN
TinnitusAnalyse/Projektbericht/Projektbericht.docx
Normal file
Binary file not shown.
BIN
TinnitusAnalyse/Projektbericht/~$ojektbericht.docx
Normal file
BIN
TinnitusAnalyse/Projektbericht/~$ojektbericht.docx
Normal file
Binary file not shown.
BIN
TinnitusAnalyse/Projektbericht/~WRL0004.tmp
Normal file
BIN
TinnitusAnalyse/Projektbericht/~WRL0004.tmp
Normal file
Binary file not shown.
@ -6,7 +6,7 @@ import sys # für Fehlermeldungen
|
|||||||
from scipy import signal
|
from scipy import signal
|
||||||
import csv
|
import csv
|
||||||
import time
|
import time
|
||||||
#import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
"""---------------------------------------------------------------------------------------------------------------------
|
"""---------------------------------------------------------------------------------------------------------------------
|
||||||
In .wav-Dateien wird der Ton in absoluten Werte eingetragen. Die Standart-framerate ist 44100
|
In .wav-Dateien wird der Ton in absoluten Werte eingetragen. Die Standart-framerate ist 44100
|
||||||
@ -151,6 +151,25 @@ class Sound:
|
|||||||
# sosfilt filtert das Signal mittels mehrerer 'second order sections' (= Filter 2. Ordnung) die über sos definiert sind
|
# sosfilt filtert das Signal mittels mehrerer 'second order sections' (= Filter 2. Ordnung) die über sos definiert sind
|
||||||
outdata[:, 0] = signal.sosfilt(sos, outdata[:, 0])
|
outdata[:, 0] = signal.sosfilt(sos, outdata[:, 0])
|
||||||
|
|
||||||
|
# Plotten des Filters für Filterentwicklung und Dokumentation nützlich---------
|
||||||
|
# w, h = signal.sosfreqz(sos, worN=1500)
|
||||||
|
# plt.subplot(2, 1, 1)
|
||||||
|
# db = 20 * np.log10(np.maximum(np.abs(h), 1e-5))
|
||||||
|
# plt.plot(w / np.pi, db)
|
||||||
|
# plt.ylim(-75, 5)
|
||||||
|
# plt.grid(True)
|
||||||
|
# plt.yticks([0, -20, -40, -60])
|
||||||
|
# plt.ylabel('Gain [dB]')
|
||||||
|
# plt.title('Frequency Response')
|
||||||
|
# plt.subplot(2, 1, 2)
|
||||||
|
# plt.plot(w / np.pi, np.angle(h))
|
||||||
|
# plt.grid(True)
|
||||||
|
# plt.yticks([-np.pi, -0.5 * np.pi, 0, 0.5 * np.pi, np.pi],
|
||||||
|
# [r'$-\pi$', r'$-\pi/2$', '0', r'$\pi/2$', r'$\pi$'])
|
||||||
|
# plt.ylabel('Phase [rad]')
|
||||||
|
# plt.xlabel('Normalized frequency (1.0 = Nyquist)')
|
||||||
|
# plt.show()
|
||||||
|
# -------------------------------------------------------------------------------
|
||||||
if self.tinnitus.rechtsRauschenLautstaerke:
|
if self.tinnitus.rechtsRauschenLautstaerke:
|
||||||
# (-3dB Grenzen) bzw was der Bandpass durchlässt
|
# (-3dB Grenzen) bzw was der Bandpass durchlässt
|
||||||
fGrenz = [self.tinnitus.rechtsRauschenUntereGrenzfrequenz,
|
fGrenz = [self.tinnitus.rechtsRauschenUntereGrenzfrequenz,
|
||||||
@ -238,11 +257,18 @@ class Sound:
|
|||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
|
|
||||||
if ll != 0.0: # nur wenn die Lautstärke des linken Tinnitus ungleich 0 ist, wird auf diesem Ohr auch gefiltert
|
if ll != 0.0: # nur wenn die Lautstärke des linken Tinnitus ungleich 0 ist, wird auf diesem Ohr auch gefiltert
|
||||||
|
|
||||||
b, a = signal.iirfilter(order, cutoff_frequencies, rp=max_ripple_passband, btype='bandstop', ftype='butter',
|
b, a = signal.iirfilter(order, cutoff_frequencies, rp=max_ripple_passband, btype='bandstop', ftype='butter',
|
||||||
fs=self.music_samplerate) # Diese Funktion erstellt den IIR-Bandpassfilter (links)
|
fs=self.music_samplerate) # Diese Funktion erstellt den IIR-Bandpassfilter (links)
|
||||||
|
|
||||||
music_links = signal.lfilter(b, a, self.music_data[:, 0]) # diese Funktion filtert die Audiodaten
|
music_links = signal.lfilter(b, a, self.music_data[:, 0]) # diese Funktion filtert die Audiodaten
|
||||||
|
|
||||||
|
# FIR Filterversuch
|
||||||
|
# b = signal.firwin(order, cutoff_frequencies, pass_zero="bandstop", fs=self.music_samplerate, width=bandwidth,
|
||||||
|
# window="hamming")
|
||||||
|
#
|
||||||
|
# music_links = signal.lfilter(b, [1.0], self.music_data[:, 0])
|
||||||
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
music_links = self.music_data[:, 0] # ungefiltert, wenn kein Tinnitus angegeben wurde
|
music_links = self.music_data[:, 0] # ungefiltert, wenn kein Tinnitus angegeben wurde
|
||||||
|
|
||||||
@ -255,6 +281,12 @@ class Sound:
|
|||||||
fs=self.music_samplerate) # Diese Funktion erstellt den IIR-Bandpassfilter (rechts)
|
fs=self.music_samplerate) # Diese Funktion erstellt den IIR-Bandpassfilter (rechts)
|
||||||
|
|
||||||
music_rechts = signal.lfilter(b, a, self.music_data[:, 1]) # rechts
|
music_rechts = signal.lfilter(b, a, self.music_data[:, 1]) # rechts
|
||||||
|
|
||||||
|
# FIR Filterversuch
|
||||||
|
# b = signal.firwin(order, cutoff_frequencies, pass_zero="bandstop", fs=self.music_samplerate, width=bandwidth,
|
||||||
|
# window="hamming")
|
||||||
|
#
|
||||||
|
# music_rechts = signal.lfilter(b, [1.0], self.music_data[:, 1])
|
||||||
else:
|
else:
|
||||||
music_rechts = self.music_data[:, 1] # diese Funktion filtert die Audiodaten(die Tinnitusfreq wird entfernt)
|
music_rechts = self.music_data[:, 1] # diese Funktion filtert die Audiodaten(die Tinnitusfreq wird entfernt)
|
||||||
|
|
||||||
@ -267,13 +299,18 @@ class Sound:
|
|||||||
#Maximum finden (Funktion max(...) ist minimal schneller, macht aber Probleme beim Feedback)
|
#Maximum finden (Funktion max(...) ist minimal schneller, macht aber Probleme beim Feedback)
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
max_ges = 0
|
max_ges = 0
|
||||||
|
fortschritt = 0
|
||||||
for i in range(nframes):
|
for i in range(nframes):
|
||||||
if max_ges < abs(music_links[i]):
|
if max_ges < abs(music_links[i]):
|
||||||
max_ges = abs(music_links[i])
|
max_ges = abs(music_links[i])
|
||||||
if max_ges < abs(music_rechts[i]):
|
if max_ges < abs(music_rechts[i]):
|
||||||
max_ges = abs(music_rechts[i])
|
max_ges = abs(music_rechts[i])
|
||||||
if i % 50000 == 0:
|
if i % int(nframes/10) == 0: # glaub hier stand 10000 davor oder 50000
|
||||||
fortschritt = i / nframes * 100
|
# fortschritt = i / nframes * 100
|
||||||
|
# self.filterfortschritt = 3, round(fortschritt, 1)
|
||||||
|
# print(" max: ", self.filterfortschritt[1], "%")
|
||||||
|
|
||||||
|
fortschritt += 10
|
||||||
self.filterfortschritt = 3, round(fortschritt, 1)
|
self.filterfortschritt = 3, round(fortschritt, 1)
|
||||||
print(" max: ", self.filterfortschritt[1], "%")
|
print(" max: ", self.filterfortschritt[1], "%")
|
||||||
end_time = time.time()
|
end_time = time.time()
|
||||||
@ -310,6 +347,7 @@ class Sound:
|
|||||||
|
|
||||||
# Die Audiosamples schreiben
|
# Die Audiosamples schreiben
|
||||||
print("Musikdatei wird erstellt...")
|
print("Musikdatei wird erstellt...")
|
||||||
|
fortschritt = 0
|
||||||
for tinnitus_data in range(nframes): #geht jeden Sample-Wert der Musikdatei einzeln durch
|
for tinnitus_data in range(nframes): #geht jeden Sample-Wert der Musikdatei einzeln durch
|
||||||
# Die Audiodaten müssen von float in einen passenden int-Wert umgerechnet werden
|
# Die Audiodaten müssen von float in einen passenden int-Wert umgerechnet werden
|
||||||
packedMusic.append(struct.pack('h', int(music_links[tinnitus_data] * 32767.0)))
|
packedMusic.append(struct.pack('h', int(music_links[tinnitus_data] * 32767.0)))
|
||||||
@ -317,8 +355,8 @@ class Sound:
|
|||||||
|
|
||||||
# wav_obj.writeframes(struct.pack('h', int(music_links[x] * 32767.0))) # Werte für links und rechts werden bei
|
# wav_obj.writeframes(struct.pack('h', int(music_links[x] * 32767.0))) # Werte für links und rechts werden bei
|
||||||
# wav_obj.writeframes(struct.pack('h', int(musicRechts[x] * 32767.0))) # wav abwechselnd eingetragen
|
# wav_obj.writeframes(struct.pack('h', int(musicRechts[x] * 32767.0))) # wav abwechselnd eingetragen
|
||||||
if tinnitus_data % 50000 == 0:
|
if tinnitus_data % int(nframes/10) == 0:
|
||||||
fortschritt = tinnitus_data/nframes*100
|
fortschritt += 10
|
||||||
self.filterfortschritt = 4, round(fortschritt, 1)
|
self.filterfortschritt = 4, round(fortschritt, 1)
|
||||||
print(" samples: ", self.filterfortschritt[1], "%")
|
print(" samples: ", self.filterfortschritt[1], "%")
|
||||||
|
|
||||||
|
@ -209,24 +209,28 @@ def unten_button_filtere_tinnitus_aus_musik():
|
|||||||
# Filtern in extra thread, damit sich die GUI nicht aufhängt: (daemon beendet den Thread, wenn das Hauptprogramm beendet wird)
|
# 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 = threading.Thread(target=sound.musik_filtern, daemon=True)
|
||||||
filter_thread.start()
|
filter_thread.start()
|
||||||
time.sleep(3) # Zeit, damit man das Feedback lesen kann, bevor es gelöscht wird (siehe übernächste Zeile)
|
time.sleep(1) # Zeit, damit man das Feedback lesen kann, bevor es gelöscht wird (siehe übernächste Zeile)
|
||||||
|
|
||||||
|
safe_percentage = 0
|
||||||
while filter_thread.is_alive():
|
while filter_thread.is_alive():
|
||||||
feedback.lineCounter = 11 # "Workaround" um Zeilen überschreiben zu können
|
#feedback.lineCounter = 11 # "Workaround" um Zeilen überschreiben zu können
|
||||||
schritt = sound.filterfortschritt[0]
|
schritt = sound.filterfortschritt[0]
|
||||||
if schritt == 3 or schritt == 4: #Nur bei dem 3. und 4. Schritt wird der Fortschritt in Prozent angezeigt
|
if schritt == 3 or schritt == 4: # Nur bei dem 3. und 4. Schritt wird der Fortschritt in Prozent angezeigt
|
||||||
fb = "Schritt " + str(schritt) + " von 4 (" + str(sound.filterfortschritt[1]) + "%)"
|
fb = "Schritt " + str(schritt) + " von 4 (" + str(sound.filterfortschritt[1]) + "%)"
|
||||||
feedback(fb)
|
if sound.filterfortschritt[1] > safe_percentage:
|
||||||
|
feedback(fb)
|
||||||
|
safe_percentage = sound.filterfortschritt[1]
|
||||||
elif schritt < 3:
|
elif schritt < 3:
|
||||||
fb = "Schritt " + str(schritt) + " von 4"
|
fb = "Schritt " + str(schritt) + " von 4"
|
||||||
feedback(fb)
|
feedback(fb)
|
||||||
|
|
||||||
if sound.filterfortschritt[0] == 5: #ist 5, wenn erfolgreich gefiltert wurde
|
if sound.filterfortschritt[0] == 5: #ist 5, wenn erfolgreich gefiltert wurde
|
||||||
print("-- filtern beendet --")
|
print("-- filtern beendet --")
|
||||||
feedback("Filtervorgang erfolgreich abgeschlossen. \n"
|
feedback("Filtervorgang erfolgreich abgeschlossen. \n"
|
||||||
"Audiodatei unter dem Namen MyTinnitusFreeSong.wav erstellt", "white", "green")
|
"Audiodatei unter dem Namen MyTinnitusFreeSong.wav erstellt", "white", "green")
|
||||||
else:
|
else:
|
||||||
print("Fehler bei Filterfunktion. Siehe Compiler-Meldungen")
|
print("Fehler bei Filterfunktion. Siehe Compiler-Meldungen")
|
||||||
feedback("Fehlgeschlagener Filterversuch!", "red", "white")
|
feedback("Fehlgeschlagener Filterversuch. Ein SWAT-Team gut ausgebildeter Affen ist unterwegs!", "red", "white")
|
||||||
except:
|
except:
|
||||||
feedback("Fehlgeschlagener Filterversuch. Drücke zuerst den Speichern Knopf"
|
feedback("Fehlgeschlagener Filterversuch. Drücke zuerst den Speichern Knopf"
|
||||||
"Stelle sicher, dass die Lautstärke mindestens einer Seite über 0"
|
"Stelle sicher, dass die Lautstärke mindestens einer Seite über 0"
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
Vorname;asd
|
Vorname;Mustermann
|
||||||
Nachname;asd
|
Nachname;Max
|
||||||
linke Frequenz;5040.0
|
linke Frequenz;8420.0
|
||||||
linke Lautstärke;0.04
|
linke Lautstärke;0.5
|
||||||
linkes Rauschen Lautstärke;0.0
|
linkes Rauschen Lautstärke;0.015
|
||||||
linkes Rauschen untere Grenzfrequenz;10.0
|
linkes Rauschen untere Grenzfrequenz;7440.0
|
||||||
linkes Rauschen obere Grenzfrequenz;20000.0
|
linkes Rauschen obere Grenzfrequenz;11910.0
|
||||||
rechte Frequenz;5040.0
|
rechte Frequenz;0.0
|
||||||
rechte Lautstärke;0.02
|
rechte Lautstärke;0.0
|
||||||
rechtes Rauschen Lautstärke;0.0
|
rechtes Rauschen Lautstärke;0.0
|
||||||
rechtes Rauschen untere Grenzfrequenz;10.0
|
rechtes Rauschen untere Grenzfrequenz;10.0
|
||||||
rechtes Rauschen obere Grenzfrequenz;20000.0
|
rechtes Rauschen obere Grenzfrequenz;20000.0
|
||||||
Kommentar;
|
Kommentar;Lediglich auf dem linken Ohr höre ich einen hohen Piepston
|
||||||
|
und ein leises Rauschen (vergleichbar mit einem laufenden
|
||||||
|
Kühlschrank)
|
||||||
|
|
||||||
|
Can't render this file because it has a wrong number of fields in line 14.
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user