home.social

#audioprogramming — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #audioprogramming, aggregated by home.social.

  1. Working on crossfade syntax for section transitions in Sorbis (my open-source computer music scripting language). Which reads better to you?

    Option A — keyword:

    o: play A xfade 10ms B xfade 5% C xfade 10% A

    Option B — symbolic:

    o: play A >10%< B >5ms< C >10%< A

    (> = fade out, < = fade in, value = overlap amount)

    What feels more intuitive?

    #Rust #AudioProgramming #OpenSource #ComputerMusic

  2. Working on crossfade syntax for section transitions in Sorbis (my open-source computer music scripting language). Which reads better to you?

    Option A — keyword:

    o: play A xfade 10ms B xfade 5% C xfade 10% A

    Option B — symbolic:

    o: play A >10%< B >5ms< C >10%< A

    (> = fade out, < = fade in, value = overlap amount)

    What feels more intuitive?

    #Rust #AudioProgramming #OpenSource #ComputerMusic

  3. Working on crossfade syntax for section transitions in Sorbis (my open-source computer music scripting language). Which reads better to you?

    Option A — keyword:

    o: play A xfade 10ms B xfade 5% C xfade 10% A

    Option B — symbolic:

    o: play A >10%< B >5ms< C >10%< A

    (> = fade out, < = fade in, value = overlap amount)

    What feels more intuitive?

    #Rust #AudioProgramming #OpenSource #ComputerMusic

  4. Working on crossfade syntax for section transitions in Sorbis (my open-source computer music scripting language). Which reads better to you?

    Option A — keyword:

    o: play A xfade 10ms B xfade 5% C xfade 10% A

    Option B — symbolic:

    o: play A >10%< B >5ms< C >10%< A

    (> = fade out, < = fade in, value = overlap amount)

    What feels more intuitive?

    #Rust #AudioProgramming #OpenSource #ComputerMusic

  5. Working on crossfade syntax for section transitions in Sorbis (my open-source computer music scripting language). Which reads better to you?

    Option A — keyword:

    o: play A xfade 10ms B xfade 5% C xfade 10% A

    Option B — symbolic:

    o: play A >10%< B >5ms< C >10%< A

    (> = fade out, < = fade in, value = overlap amount)

    What feels more intuitive?

    #Rust #AudioProgramming #OpenSource #ComputerMusic

  6. spent winter break building a low level DAW using Rust and Tauri. new blog coming soon for my #AudioProgramming homies 🎶

  7. I’m quite happy with the formula I found to tune a 1-pole/no-zero digital low-pass filter in the form y ← y + c * (x - y).

    desmos.com/calculator/6bf88f2b

    It can set the cutoff frequency way above Nyquist and matches well the passband response of an ideal continuous-time equivalent filter (black curve). It is slightly shelf-shaped when the cutoff is close to Nyquist, but that’s the limitation of the lack of zero.

    It’s a good way to tune the damping filter of a #reverb!

    The formula remains fast to compute (a square root and a few mul/add). See Coefficient calculation > c5() and c3().

    #dsp #audio #AudioProgramming #DigitalSignalProcessing

  8. I’m quite happy with the formula I found to tune a 1-pole/no-zero digital low-pass filter in the form y ← y + c * (x - y).

    desmos.com/calculator/6bf88f2b

    It can set the cutoff frequency way above Nyquist and matches well the passband response of an ideal continuous-time equivalent filter (black curve). It is slightly shelf-shaped when the cutoff is close to Nyquist, but that’s the limitation of the lack of zero.

    It’s a good way to tune the damping filter of a #reverb!

    The formula remains fast to compute (a square root and a few mul/add). See Coefficient calculation > c5() and c3().

    #dsp #audio #AudioProgramming #DigitalSignalProcessing

  9. (I'm not sure what I write in this toot is exact, please feel free to correct me)

    When doing real-time #AudioProgramming you usually need to implement a function/procedure that will run once for every block of audio samples. Since that function needs to be very responsive, it must contain no memory allocation.

    As a corollary, that means languages with automatic memory management are off the table, because you can't trust them not to allocate memory during that procedure.

    Now there's this thing called #LinearTypes , which, as far I understand, can be used to control how memory is allocated. And #haskell has them.

    So my question is: could one use Haskell with linear types for real-time audio programming? Or does it not offer the guarantees we need w.r.t. control over memory allocations?

  10. (I'm not sure what I write in this toot is exact, please feel free to correct me)

    When doing real-time #AudioProgramming you usually need to implement a function/procedure that will run once for every block of audio samples. Since that function needs to be very responsive, it must contain no memory allocation.

    As a corollary, that means languages with automatic memory management are off the table, because you can't trust them not to allocate memory during that procedure.

    Now there's this thing called #LinearTypes , which, as far I understand, can be used to control how memory is allocated. And #haskell has them.

    So my question is: could one use Haskell with linear types for real-time audio programming? Or does it not offer the guarantees we need w.r.t. control over memory allocations?

  11. (I'm not sure what I write in this toot is exact, please feel free to correct me)

    When doing real-time #AudioProgramming you usually need to implement a function/procedure that will run once for every block of audio samples. Since that function needs to be very responsive, it must contain no memory allocation.

    As a corollary, that means languages with automatic memory management are off the table, because you can't trust them not to allocate memory during that procedure.

    Now there's this thing called #LinearTypes , which, as far I understand, can be used to control how memory is allocated. And #haskell has them.

    So my question is: could one use Haskell with linear types for real-time audio programming? Or does it not offer the guarantees we need w.r.t. control over memory allocations?

  12. (I'm not sure what I write in this toot is exact, please feel free to correct me)

    When doing real-time #AudioProgramming you usually need to implement a function/procedure that will run once for every block of audio samples. Since that function needs to be very responsive, it must contain no memory allocation.

    As a corollary, that means languages with automatic memory management are off the table, because you can't trust them not to allocate memory during that procedure.

    Now there's this thing called #LinearTypes , which, as far I understand, can be used to control how memory is allocated. And #haskell has them.

    So my question is: could one use Haskell with linear types for real-time audio programming? Or does it not offer the guarantees we need w.r.t. control over memory allocations?

  13. PD-components update (v0.2.1) contains two multi pole filter abstractions, a rev3~ wrapper and a 4 bank step sequencer. Nothing too fancy, but it will make setup for compositions a bit more convenient. github.com/devstermarts/PD-com #puredata #composition #audioprogramming #musicproduction

  14. 🌸 Floral Sample Toolkit is underway, and I'm almost at 10 algorithms in there. Will be using this in my next track, and will make the repo public at the same time!

    As you can see, the "Trace Console" logs each step you take, and then exports that along with the final WAV. That way you can do destructive editing, but still share the steps in an open-source sense 😀

    #opensource #audioprogramming #javascript

  15. Just found out about the ATS programming language, a functional language with #DependentTypes, and with C-like control over memory allocation thanks to #LinearTypes. I've been longing for a #Haskell -like language that could be used for low-level real time #AudioProgramming , so this looks very interesting.

    Note however that it's a research language, "not meant for widespread use", "with tons of accidental complexity"!

    youtube.com/watch?v=c4Z25DJusu

  16. Just found out about the ATS programming language, a functional language with #DependentTypes, and with C-like control over memory allocation thanks to #LinearTypes. I've been longing for a #Haskell -like language that could be used for low-level real time #AudioProgramming , so this looks very interesting.

    Note however that it's a research language, "not meant for widespread use", "with tons of accidental complexity"!

    youtube.com/watch?v=c4Z25DJusu

  17. Just found out about the ATS programming language, a functional language with #DependentTypes, and with C-like control over memory allocation thanks to #LinearTypes. I've been longing for a #Haskell -like language that could be used for low-level real time #AudioProgramming , so this looks very interesting.

    Note however that it's a research language, "not meant for widespread use", "with tons of accidental complexity"!

    youtube.com/watch?v=c4Z25DJusu

  18. Having a very nice time at #LibreGraphicsMeeting :) I wonder if there's a similar event for audio? I know about #AudioDeveloperConference but I'm pretty sure it's not specific to free software. Also I like the fact that LGM is focused both on the developer- and the user-facing side (to some extent), whereas ADC is explicitly targeted towards developers

    #AudioDevelopment #AudioDev #AudioProgramming #FOSS

  19. Having a very nice time at #LibreGraphicsMeeting :) I wonder if there's a similar event for audio? I know about #AudioDeveloperConference but I'm pretty sure it's not specific to free software. Also I like the fact that LGM is focused both on the developer- and the user-facing side (to some extent), whereas ADC is explicitly targeted towards developers

    #AudioDevelopment #AudioDev #AudioProgramming #FOSS

  20. Having a very nice time at #LibreGraphicsMeeting :) I wonder if there's a similar event for audio? I know about #AudioDeveloperConference but I'm pretty sure it's not specific to free software. Also I like the fact that LGM is focused both on the developer- and the user-facing side (to some extent), whereas ADC is explicitly targeted towards developers

    #AudioDevelopment #AudioDev #AudioProgramming #FOSS

  21. Having a very nice time at #LibreGraphicsMeeting :) I wonder if there's a similar event for audio? I know about #AudioDeveloperConference but I'm pretty sure it's not specific to free software. Also I like the fact that LGM is focused both on the developer- and the user-facing side (to some extent), whereas ADC is explicitly targeted towards developers

    #AudioDevelopment #AudioDev #AudioProgramming #FOSS

  22. Having a very nice time at #LibreGraphicsMeeting :) I wonder if there's a similar event for audio? I know about #AudioDeveloperConference but I'm pretty sure it's not specific to free software. Also I like the fact that LGM is focused both on the developer- and the user-facing side (to some extent), whereas ADC is explicitly targeted towards developers

    #AudioDevelopment #AudioDev #AudioProgramming #FOSS

  23. I just released the first version of hworld, the #haskell bindings I wrote for the World library.

    Given a recording of a voice, it allows you to compute a "vocoded" representation that is easy to manipulate to perform actions such as:
    - pitch shifting
    - simulation of whispering
    - machine learning

    and resynthesize high-quality audio based on that manipulated encoding.

    There aren't much examples for now, but still feel free to take a look!

    gitlab.com/glocq/hworld

    #AudioProgramming

  24. Time for a new game audio programming tutorial!

    Learn how to load compressed audio files in either Opus or QOA format to keep your game's file size under control

    amini-allight.org/post/game-au
    #gamedev #indiedev #opensource #gameaudio #audioprogramming

  25. I've now released v0.3.12 of (sau.frama.io), which fixes old bugs and refines old features. It's meant to be the last version with only normal oscillators.

    Following another insane git rebase marathon, the new version does away with some code, and splits out a static C library for the implemented.

    Next, to add the new signal generators from the (otherwise less usable) "mgs0.1" branch mentioned earlier.

  26. Just tagged 3.1.0

    Release includes better support of overriding low-level I/O handlers with your own and numerous bug-fixes.

    👉 github.com/gavv/libASPL/releas

  27. Implemented a huge pile of simple audio filters for HexoSynth. Now there are implementations for one pole, Hal Chamberlin SVF, Simper SVF and Stilson/Moog filters ready. Next up on my list is a biquad EQ filter node and a comb filter node.

    #dsp #coding #sounddesign #foss #opensource #linuxaudio #audiosynthesis #vstplugin #audioprogramming #rustlang #rustprogramming #opensource #modularsynth

  28. With the Hal Chamberlin SVF filter implemented now, which has resonance, I felt inspired to try out playing a simple melody with the filter to check if it is in tune. I'm glad it works this well :-)

    #modular #synthesizer #dsp #coding #sounddesign #foss #opensource #linuxaudio #audiosynthesis #vstplugin #audioprogramming #rustlang #rustprogramming #opensource #modularsynth

  29. I sat down and more or less quickly implemented a few very simple filters (one pole low-pass and high-pass). They are not that fascinating yet for musical purposes, as there is no resonance for these kind of filters. But eventually there will be more kinds of more interesting filters.

    #dsp #coding #sounddesign #audiosynthesis #vstplugin #foss #opensource #linuxaudio #audioprogramming #programming #rustlang #rustprogramming #opensource #modularsynth #vstplugin

  30. After feeling how tedious simple modulation setup can be with explicit mapping nodes, I started working on directly specifying the modulation amount with the knobs. Here is an intermediate state of the work on the UI. You can specify positive and negative modulation with the right mouse button.

    #modularsynth #softwaresynthesizer #vstplugin #audiosynthesis #modular #synthesizer #opensource #foss #audioprogramming #programming #rustlang #rustprogramming #audioplugin #linuxaudio

  31. The Map node was a bit complicated, so I implemented a much simpler node: the SMap, which makes it much more straight forward and less confusing to set an output (control) signal range. But it still feels kinda convoluted to apply simple modulation this way, I've got to think of something easier to use...

    #sounddesign #audiosynthesis #modular #synthesizer #modularsynth #opensource #foss #linuxaudio #opensource #audioprogramming #programming #rustlang

  32. The parameter modulation needs a place directly in the core DSP loop of HexoSynth. I just love how easy it is to write well structured and performant code with Rust.

    #vstplugin #foss #opensource #linuxaudio #audioprogramming #programming #rustlang #rustprogramming #opensource #coding #vim #digitalsignalprocessing