SignalBox
SignalBox : Read Me
A set of tools for signal analysis and design in the Time and Frequency domains.
Extensions to the Signal class include:
Cosine basis
| Method | Description |
| ----------- | ----------- |
| *cosineFill
| Fill a Signal of the given size with a sum of cosines at the given amplitudes and phases. |
| cosineFill
| A sum of cosines with the given amplitudes and phases, returned in place. |
| cosineFill2
| A sum of cosines with the given harmonics, amplitudes and phases, returned in place. |
Wave packet
| Method | Description |
| ----------- | ----------- |
| *readPacket
| Read a Hann enveloped wave packet from a soundfile. |
| *packetFill
| Fill a Signal of the given size with a sum of Hann enveloped cosines at the given amplitudes and phases. |
| packetFill
| A sum of Hann enveloped cosines at the given amplitudes and phases, returned in place. |
| packetFill2
| A sum of Hann enveloped cosines with the given harmonics, amplitudes and phases, returned in place. |
Reading & writing
| Method | Description |
| ----------- | ----------- |
| *read
| Read a soundfile. |
| *readWave
| Read a periodic waveform from a soundfile. |
| write
| Writes the entire Signal to a soundfile. |
| writeFile
| Writes the entire Signal to a file, where every chunk of four bytes is a 32-bit floating point sample. |
Fourier Transform
| Method | Description |
| ----------- | ----------- |
| *rfftCosTable
| Fill a Signal with the cosine table needed by the Real-FFT methods. |
| *rfftTwoCosTable
| Fill a Signal with the cosine table needed by the Real-FFT-Two methods. |
| fftToRfft
| Return a complex Real-FFT spectrum from a complex FFT spectrum. |
| rfftToFft
| Return a complex FFT spectrum from a complex Real-FFT spectrum. |
| rfft
| Perform a Real-FFT on a real signal. |
| irfft
| Perform an inverse Real-FFT on a real and imaginary signal. |
| rfftTwo
| Perform a Real-FFT on two real signals. |
| irfftTwo
| Perform an inverse Real-FFT on two real and imaginary signals. |
| dft
| Perform a DFT on a real and imaginary signal. |
| idft
| Perform an inverse DFT on a real and imaginary signal. |
| dftZoom
| Perform a Zoom DFT on a real and imaginary signal. |
| rdftZoom
| Perform a Zoom DFT on a real signal. |
| goertzel
| Return individual terms of a DFT on a real and imaginary signal. |
| rgoertzel
| Return individual terms of a DFT on a real signal. |
Chirp z-Transform
| Method | Description |
| ----------- | ----------- |
| czt
| Perform a Chirp z-Transform on a real and imaginary signal. |
| rczt
| Perform a Chirp z-Transform on a real signal. |
Cepstrum
| Method | Description |
| ----------- | ----------- |
| rceps
| Return the real part of the cepstrum of a real signal. |
| irceps
| Return the real part of the inverse of the real part of the cepstrum. |
Analytic & Hilbert
| Method | Description |
| ----------- | ----------- |
| *analyticFill
| Return a complex analytic Signal of the given size with a sum of cosines and a sum of sines at the given amplitudes and phases. |
| *hilbert
| Hilbert Transform: Return complex Hilbert Transform coefficients. |
| analytic
| Hilbert Transform: Return a complex analytic signal from a real signal. |
Rotation & Phase
| Method | Description |
| ----------- | ----------- |
| rotateWave
| Rotate the Signal by a value in radians, in place. |
| rotatePhase
| Rotate the phase of Signal by a value in radians, in place. |
| linearPhase
| Return a linear phase kernel, preserving the magnitude, in place. |
| minimumPhase
| Return a minimum phase kernel, preserving the magnitude, in place. |
| even
| Return the even part of a signal. |
| odd
| Return the odd part of a signal. |
RMS & Magnitude
| Method | Description |
| ----------- | ----------- |
| rms
| Return the RMS of a signal. |
| peakMagnitude
| Return the peak of the frequency domain magnitude of a signal. |
| normalizeMagnitude
| Normalize the Signal in place such that the maximum magnitude in the frequency domain is 1. |
Installing
Distributed via SC3 SignalBox.
Start by reviewing the Quark installation instructions found here. See also Using Quarks.
With git installed, you can easily install the SC3 SignalBox directly by running the following line of code in SuperCollider:
Quarks.install("https://gitlab.com/dxarts/projects/SignalBox.quark");
Feedback and Bug Reports
Known issues are logged at GitLab.
List of Changes
Version 0.1.13
- New features:
- SequenceableCollection:-schroederIntegrate
Version 0.1.12
-
New features:
- FreqSpectrum:-averageMagnitude
-
Issue fixes:
- FreqSpectrum:-bandwidth: fix Integer overflow
-
Refactor:
- remove inline warnings
- Signal:-dft: direct method
Version 0.1.11
- New features:
- FreqSpectrum:-rms
- FreqSpectrum:-bandwidth
Version 0.1.10
-
New features:
- Signal:-instantaneousFreq
- FreqSpectrum:-energyDensity
- FreqSpectrum:-totalEnergy
- FreqSpectrum:-phaseOffset
- FreqSpectrum:-averageGroupDelay
- FreqSpectrum:-averagePhaseDelay
- FreqSpectrum:-averagePhaseOffset
- FreqSpectrum:-averageFreq
-
Refactor:
- continuousPhase: optimized angle conform
- groupDelay: include direct differentiation
Version 0.1.9
- New features:
- FreqSpectrum:-continuousPhase
Version 0.1.8
- New features:
- power law chirps
Version 0.1.7
-
New features:
- power law magnitude
- periodic power law noise
- gaussian white noise
- gaussian noise phase
- periodic & partition convolution
-
Refactor:
- rfftTwo & irfftTwo now returns IdentityDictionary
-
Issue fixes:
- Signal: hilbert correct zero padding
Version 0.1.6
-
New features:
- windowed sinc lowpass method
- gaussian filter bank method
-
Issue fixes:
- Signal:-hilbert correct zero padding
Version 0.1.5
Version 0.1.4
- Issue fixes:
- Spectrum name collision with TuningLib, rename as FreqSpectrum
Version 0.1.3
-
New features:
- Spectrum class
- Allpass instance method
- Phase and Group delay analysis
-
Refactor:
- Deprecate Array class methods
- Deprecate linear and minimum phase class methods
-
Issue fixes:
- Signal:-read numFrames calculation
Version 0.1.2
- New features:
- log shelf filter coefficients
Version 0.1.1
-
New features:
- constant-overlap-add (COLA) windowing
-
Documentation Updates:
- Added algorithm citations
- Correct Signal -readWave example
Version 0.1.0
- First Public Release.
Credits
Joseph Anderson 2019-2021.
- J Anderson : [e-mail]
The development of SignalBox for SuperCollider3 is supported by DXARTS, Center for Digital Arts and Experimental Media.
Contributors
Version 0.1.13 * Joseph Anderson (@joslloand)
Version 0.1.12 * Joseph Anderson (@joslloand) * Michael McCrea (@mtmccrea)
Version 0.1.0 - 0.1.11 * Joseph Anderson (@joslloand)
e916c446c85c355820883e56250446e4ff870857
14ebecdbafdce419dfd6512a2329569d76a69348
f49f66b01f1622b4c9b309a378fb45e32c2d1e53
372cce05e10a6a2b788d0e2b995404ee0024471e
adff9d124edfe852ef5e3044363ef1d23ebbdc37
6d0d235f0a887304a58608bdd87483c733f53d91
72c0049ad7002e8b0ec0908826ce88949c3999cb
1f14672c827975aa42b6922e29ccd7a6150efb9a
2135eaa3b2d5993a4e1d36074c5340c7f2456216
387e87ebb83465623b1b0c786993eacea498ea8e
8717462a3db42d3911540f1f032f730200beb9c5
78cba4059cab35c48a76ec85d172ef22674bb7f9
9666c6778f0e88af457b9a213fd3cfb420263a49
61c34b179037208e9041e73b97fd73495b3901e4
Installation
Repository
URL
https://gitlab.com/dxarts/projects/SignalBox.quark
Since
2019-03-29
Last update
2021-05-29
Current version
v0.1.13
Quark info
url
https://gitlab.com/dxarts/projects/SignalBox.quark
name
SignalBox
since
2019
author
Joseph Anderson
schelp
The SignalBox Toolset
license
GPL
summary
A set of tools for working analysis and design in the Time and Frequency domain.
version
0.1.13
copyright
Joseph Anderson 2019
dependencies
['ExtraWindows']