• HFF

    My misadventures in audio dsp programming continues with what I’m calling a Hadamard Function Filter.

    A Hadamard Matrix provides rows of +1 and -1 values. These rows are called “Functions” and the number of times the value of these +1 and -1 “Elements” cross zero is referred to as the “Sequency” number of the Function.

    Here is a Hadamard Matrix with the length of 8

         +1 +1 +1 +1 +1 +1 +1 +1
         +1 -1 +1 -1 +1 -1 +1 -1
         +1 +1 -1 -1 +1 +1 -1 -1
         +1 -1 -1 +1 +1 -1 -1 +1
         +1 +1 +1 +1 -1 -1 -1 -1
         +1 -1 +1 -1 -1 +1 -1 +1
         +1 +1 -1 -1 -1 -1 +1 +1
         +1 -1 -1 +1 -1 +1 +1 -1

    The Hadamard Function Filter repeatedly cycles through the “Elements” of a “Function” row at audio sample rate, and when the value of the current “Element” is -1, the amplitude of the incoming signal is reduces by a selected amount. For example, If the amplitude is set to 1, then the current audio sample would be completely masked.

    sine wave input
    0.0   0.5   1.0   0.5   0.0   -0.5  -1.0  -0.5
    
    selected Hadamard Function
    +1    -1    +1    -1    -1    +1    -1    +1
    
    output, applying 0.5 amplitude to Element masking
    0.0   0.25  1.0   0.25  0.0  -0.5.  -0.5  -0.5

    What does it sound like?

    A triangle wave arpeggio is fed into the Hadamard Function Filter, where the current “Sequency” is being modulated every 4 counts, and the the number of “Samples” is being swept by an external LFO. The results are something like a ring modulator with some formant filter qualities.

    These vignettes are short tracks that feature whatever audio thing I’ve been working on, and are a chance to embrace a more minimal and experimental approach to composition. This one however is full on 1970’s Krautrock inspired!

    Want to try it out yourself?

    Here’s a link to the c++ code for the Hadamard Function Filter class.

    https://github.com/craigcorvin/hadamardfunctionfilter

    …and the code to run this on the Electrosmith Patch.

    https://github.com/craigcorvin/hadamardpatch

  • FMDB OSC

    My misadventures in audio dsp programming continues here with what I’m calling a Frequency Modulated Delay Buffer Oscillator.

    The oscillating values of a sine wave are added into a delay buffer array, and the audio output is a modulated range of locations of the delay buffer at a specific offset from the current input location… For example, if the total delay buffer is 48,000 samples, and the offset is 24,000, with a range of 6,000, then the output would be locations between 18,000 (3,000 x -1.0) and 30,000 (3,000 x 1.0) as the modulation sine wave oscillates.

    What does it sound like?

    This composition starts with the fmdb oscillator range and offset set at 1, and then gradually increases the width of the range and offset. The modulation frequency doesn’t change.

    The tone sequence uses a C Dorian scale and the melody incorporates some large interval changes to accentuate the cross modulation that happens when pitches change due to the delay aspect of the fmdb oscillator.

    If you’re curious, here’s a link to my c++ code for the fmdb oscillator class.

    https://github.com/craigcorvin/fmdboscillator

    Listen to this track, and other Astrospherian tracks as I release them, on Spotify