diff --git a/Pipfile b/Pipfile index 11d5114..7cd84b0 100644 --- a/Pipfile +++ b/Pipfile @@ -10,6 +10,7 @@ sounddevice = "*" soundfile = "*" numpy = "*" matplotlib = "*" +tkinter = "*" [requires] python_version = "3.7" diff --git a/smnp/module/synth/__init__.py b/smnp/module/synth/__init__.py index a8b743a..a362136 100644 --- a/smnp/module/synth/__init__.py +++ b/smnp/module/synth/__init__.py @@ -1,4 +1,4 @@ -from smnp.module.synth.function import synth, pause, plot, compile +from smnp.module.synth.function import synth, pause, plot, compile, fft -functions = [ synth.function, pause.function, plot.function, compile.function ] +functions = [ synth.function, pause.function, plot.function, compile.function, fft.function ] methods = [] \ No newline at end of file diff --git a/smnp/module/synth/function/fft.py b/smnp/module/synth/function/fft.py new file mode 100644 index 0000000..8bd8775 --- /dev/null +++ b/smnp/module/synth/function/fft.py @@ -0,0 +1,17 @@ +import numpy as np + +from smnp.function.model import Function +from smnp.function.signature import signature +from smnp.type.model import Type +from smnp.type.signature.matcher.list import listOf + +_signature = signature(listOf(Type.FLOAT)) +def _function(env, signal): + raw = [ x.value for x in signal.value ] + N = len(raw) + fft = np.fft.fft(raw)/N + fft = fft[range(int(N/2))] + return Type.list([ Type.float(float(abs(x))) for x in fft ]) + + +function = Function(_signature, _function, 'fft') \ No newline at end of file diff --git a/smnp/module/synth/function/plot.py b/smnp/module/synth/function/plot.py index 4d415f9..829d9bd 100644 --- a/smnp/module/synth/function/plot.py +++ b/smnp/module/synth/function/plot.py @@ -10,4 +10,4 @@ def _function(env, wave): plot(rawWave) -function = Function(_signature, _function, 'plotWave') +function = Function(_signature, _function, 'plot')