From 1d4f21d75e8e7a0533af5b205cd1eb502db0b7ad Mon Sep 17 00:00:00 2001 From: Joseph Anderson Date: Thu, 12 Sep 2019 12:32:04 -0700 Subject: [PATCH] =?UTF-8?q?Refactor:=20Spectrum=20=E2=80=94>=20FreqSpectru?= =?UTF-8?q?m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remedy collision with TuningLib Spectrum: https://github.com/celesteh/TuningLib/blob/master/Spectrum.sc --- Classes/{Spectrum.sc => FreqSpectrum.sc} | 12 ++++++------ Classes/extComplex.sc | 6 +++--- Classes/extSignal.sc | 10 +++++----- .../{Spectrum.schelp => FreqSpectrum.schelp} | 18 +++++++++--------- HelpSource/Classes/Signal.ext.schelp | 2 +- 5 files changed, 24 insertions(+), 24 deletions(-) rename Classes/{Spectrum.sc => FreqSpectrum.sc} (96%) rename HelpSource/Classes/{Spectrum.schelp => FreqSpectrum.schelp} (92%) diff --git a/Classes/Spectrum.sc b/Classes/FreqSpectrum.sc similarity index 96% rename from Classes/Spectrum.sc rename to Classes/FreqSpectrum.sc index 0a4c3f6..b56c314 100644 --- a/Classes/Spectrum.sc +++ b/Classes/FreqSpectrum.sc @@ -1,5 +1,5 @@ // may want to change the superclass -Spectrum : Number { +FreqSpectrum : Number { var <>magnitude, <>phase; *new { arg magnitude, phase; @@ -22,7 +22,7 @@ Spectrum : Number { *newComplex { arg complex; var polar = complex.asPolar; - ^Spectrum.new(polar.magnitude, polar.phase) + ^FreqSpectrum.new(polar.magnitude, polar.phase) } *logShelf { arg size, freq0, freq1, gainDC, gainNy, sampleRate; @@ -71,7 +71,7 @@ Spectrum : Number { } }); - ^Spectrum.new(mag) + ^FreqSpectrum.new(mag) } rho { ^magnitude } @@ -83,7 +83,7 @@ Spectrum : Number { real { ^(magnitude * cos(phase)).as(Signal) } imag { ^(magnitude * sin(phase)).as(Signal) } - asSpectrum { ^this } + asFreqSpectrum { ^this } asPolar { ^Polar.new(magnitude, phase) } asComplex { ^Complex.new(this.real, this.imag) } @@ -207,7 +207,7 @@ Spectrum : Number { } // math - neg { ^Spectrum.new(magnitude, phase + pi) } + neg { ^FreqSpectrum.new(magnitude, phase + pi) } // math - in place invert { phase = phase + pi } @@ -262,7 +262,7 @@ Spectrum : Number { } printOn { arg stream; - stream << "Spectrum( " << magnitude << ", " << phase << " )"; + stream << "FreqSpectrum( " << magnitude << ", " << phase << " )"; } storeArgs { ^[magnitude, phase] } diff --git a/Classes/extComplex.sc b/Classes/extComplex.sc index 549d001..ef07f83 100644 --- a/Classes/extComplex.sc +++ b/Classes/extComplex.sc @@ -23,12 +23,12 @@ + Complex { - // Spectrum class - *newSpectrum { arg spectrum; + // FreqSpectrum class + *newFreqSpectrum { arg spectrum; ^spectrum.asComplex } - asSpectrum { ^Spectrum.newComplex(this) } + asFreqSpectrum { ^FreqSpectrum.newComplex(this) } // could add to MathLib Quark... rotate { arg angle; diff --git a/Classes/extSignal.sc b/Classes/extSignal.sc index 7396ffb..1efa6b6 100644 --- a/Classes/extSignal.sc +++ b/Classes/extSignal.sc @@ -372,14 +372,14 @@ rcomplex = this.rfft(cosTable); // real fft - complex = Spectrum.newComplex( + complex = FreqSpectrum.newComplex( rcomplex.real.rfftToFft(rcomplex.imag) // mirror spectrum ).linearPhase(sym).asComplex; // mirrored linearPhase rcomplexLin = complex.real.fftToRfft(complex.imag); // discard negative freqs rcomplexLin.real.irfft(rcomplexLin.imag, cosTable) // irfft }, { // czt via dft - complex = Spectrum.newComplex( + complex = FreqSpectrum.newComplex( this.dft(Signal.newClear(this.size)) // dft ).linearPhase(sym).asComplex; @@ -407,14 +407,14 @@ rcomplex = osThis.rfft(cosTable); // real fft - complex = Spectrum.newComplex( + complex = FreqSpectrum.newComplex( rcomplex.real.rfftToFft(rcomplex.imag) // mirror spectrum ).minimumPhase(mindb).asComplex; // mirrored minimumPhase rcomplexMin = complex.real.fftToRfft(complex.imag); // discard negative freqs rcomplexMin.real.irfft(rcomplexMin.imag, cosTable).keep(this.size) // irfft }, { // czt via dft - complex = Spectrum.newComplex( + complex = FreqSpectrum.newComplex( osThis.dft(Signal.newClear(osSize)) // dft ).minimumPhase(mindb).asComplex; @@ -1215,7 +1215,7 @@ var spectrum, complex; // complex spectrum - spectrum = Spectrum.logShelf(size, freq0, freq1, gainDC, gainNy, sampleRate); + spectrum = FreqSpectrum.logShelf(size, freq0, freq1, gainDC, gainNy, sampleRate); // assign phase (phase == \min).if({ diff --git a/HelpSource/Classes/Spectrum.schelp b/HelpSource/Classes/FreqSpectrum.schelp similarity index 92% rename from HelpSource/Classes/Spectrum.schelp rename to HelpSource/Classes/FreqSpectrum.schelp index 1e5710a..d8c4418 100644 --- a/HelpSource/Classes/Spectrum.schelp +++ b/HelpSource/Classes/FreqSpectrum.schelp @@ -1,10 +1,10 @@ -TITLE:: Spectrum +TITLE:: FreqSpectrum summary:: Spectral processing categories:: Math related:: Classes/Signal, Classes/Polar, Classes/Complex DESCRIPTION:: -A Spectrum represents a sampled function in the frequency domain, in a polar form. +A FreqSpectrum represents a sampled function in the frequency domain, in a polar form. CLASSMETHODS:: @@ -21,7 +21,7 @@ code:: ~phase = Array.with(0.0) ++ ~randRadian ++ Array.with(0.0) ++ (~randRadian.reverse.neg); // 0.0 at DC & Nyquist, otherwise, symmetric random // design allpass spectrum -~spectrum = Spectrum.new(phase: ~phase); +~spectrum = FreqSpectrum.new(phase: ~phase); // synthesize REAL kernel ~signal = ~spectrum.real.ifft(~spectrum.imag, ~cosTable).real; @@ -30,10 +30,10 @@ code:: :: argument:: magnitude -Spectrum magnitude. If code::nil:: set to 1. +Frequency domain magnitude. If code::nil:: set to 1. argument:: phase -Spectrum phase. If code::nil:: set to 0. +Frequency domain phase. If code::nil:: set to 0. @@ -55,7 +55,7 @@ code:: ~complex = ~real.fft(~imag, ~cosTable); // spectrum -~spectrum = Spectrum.newComplex(~complex); +~spectrum = FreqSpectrum.newComplex(~complex); ~spectrum.magnitude.plot("magnitude"); :: @@ -90,7 +90,7 @@ The sample rate, in Hz. INSTANCEMETHODS:: METHOD:: size -Spectrum size. +FreqSpectrum size. subsection:: Frequeny @@ -135,7 +135,7 @@ code:: ~complex = ~real.fft(~imag, ~cosTable); // spectrum -~spectrum = Spectrum.newComplex(~complex).normalize; +~spectrum = FreqSpectrum.newComplex(~complex).normalize; ~spectrum.magnitude.plot("magnitude"); :: @@ -221,7 +221,7 @@ Return the imaginary part of the complex spectrum. -PRIVATE:: hash, storeArgs, printOn, asSpectrum +PRIVATE:: hash, storeArgs, printOn, asFreqSpectrum EXAMPLES:: diff --git a/HelpSource/Classes/Signal.ext.schelp b/HelpSource/Classes/Signal.ext.schelp index 64ec0d1..737991c 100644 --- a/HelpSource/Classes/Signal.ext.schelp +++ b/HelpSource/Classes/Signal.ext.schelp @@ -243,7 +243,7 @@ See link::#*readWave:: discussion above. METHOD:: logShelf Return a log shelf filter kernel.FOOTNOTE::Baird, J; Jackson, B; and D McGrath. “Raised Cosine Equalization Utilizing Log Scale Filter Synthesis.“ 117th Audio Engineering Society Convention, San Francisco, USA. October 2004. Permalink: link::http://www.aes.org/e-lib/browse.cfm?elib=12914:: -:: See also: link::Classes/Spectrum#*logShelf::. +:: See also: link::Classes/FreqSpectrum#*logShelf::. argument:: size