SignalBox

A set of tools for working analysis and design in the Time and Frequency domain.

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.

 

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)

Array
Project
Source file
Extension
Superclass:
Complex
Project
Source file
Extension
Superclass:
FreqSpectrum
Project
Source file
Extension
Superclass:
Number
Integer
Project
Source file
Extension
Superclass:
SequenceableCollection
Extension
Superclass:
Signal
Project
Source file
Extension
Superclass:
SimpleNumber
Extension
Superclass:
v0.1.13
Date
2021-05-29
Git hash
e916c446c85c355820883e56250446e4ff870857
v0.1.12
Date
2021-01-12
Git hash
14ebecdbafdce419dfd6512a2329569d76a69348
v0.1.11
Date
2020-08-31
Git hash
f49f66b01f1622b4c9b309a378fb45e32c2d1e53
v0.1.10
Date
2020-08-25
Git hash
372cce05e10a6a2b788d0e2b995404ee0024471e
v0.1.9
Date
2020-07-22
Git hash
adff9d124edfe852ef5e3044363ef1d23ebbdc37
v0.1.8
Date
2020-05-27
Git hash
6d0d235f0a887304a58608bdd87483c733f53d91
v0.1.7
Date
2020-01-03
Git hash
72c0049ad7002e8b0ec0908826ce88949c3999cb
v0.1.6
Date
2019-11-16
Git hash
1f14672c827975aa42b6922e29ccd7a6150efb9a
v0.1.5
Date
2019-09-17
Git hash
2135eaa3b2d5993a4e1d36074c5340c7f2456216
v0.1.4
Date
2019-09-12
Git hash
387e87ebb83465623b1b0c786993eacea498ea8e
v0.1.3
Date
2019-07-29
Git hash
8717462a3db42d3911540f1f032f730200beb9c5
v0.1.2
Date
2019-06-18
Git hash
78cba4059cab35c48a76ec85d172ef22674bb7f9
v0.1.1
Date
2019-05-10
Git hash
9666c6778f0e88af457b9a213fd3cfb420263a49
v0.1.0
Date
2019-05-07
Git hash
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']

Possible dependcies

ExtraWindows

Possible dependants

Convolve

Hilbert

TimeStretch

atk-sc3