#audioprogramming — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #audioprogramming, aggregated by home.social.
-
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?
-
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?
-
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?
-
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?
-
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?
-
spent winter break building a low level DAW using Rust and Tauri. new blog coming soon for my #AudioProgramming homies 🎶
-
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).
https://www.desmos.com/calculator/6bf88f2b35
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().
-
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).
https://www.desmos.com/calculator/6bf88f2b35
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().
-
(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?
-
(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?
-
(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?
-
(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?
-
This is extremely cool:
https://www.heise.de/news/Steinberg-gibt-Audio-Schnittstellen-ASIO-und-VST-unter-Open-Source-Lizenzen-frei-10963347.htmlVST and ASIO under OpenSource Licenses!
-
Anyone out here selling CLAP plugins? What's your experience like?
#AudioDev #AudioDevelopement #AudioProgramming #ComputerMusic #VST #VST3 #Clap #ClapPlugin
-
Anyone out here selling CLAP plugins? What's your experience like?
#AudioDev #AudioDevelopement #AudioProgramming #ComputerMusic #VST #VST3 #Clap #ClapPlugin
-
Anyone out here selling CLAP plugins? What's your experience like?
#AudioDev #AudioDevelopement #AudioProgramming #ComputerMusic #VST #VST3 #Clap #ClapPlugin
-
PD-latent-jamming repo (v0.2.1) contains updates of 'saatR.pd' component including a small add-on to toggle seed inputs. https://github.com/devstermarts/PD-latent-jamming
#puredata #latentjamming #composition #neuralaudio #musicproduction #audioprogramming -
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. https://github.com/devstermarts/PD-components #puredata #composition #audioprogramming #musicproduction
-
🌸 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 😀
-
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"!
-
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"!
-
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"!
-
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
-
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
-
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
-
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
-
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
-
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 learningand resynthesize high-quality audio based on that manipulated encoding.
There aren't much examples for now, but still feel free to take a look!
-
Variable duty cycle square waves with the Web Audio API
https://www.danblack.co/blog/variable-duty-cycle-square-wave
#HackerNews #VariableDutyCycle #WebAudioAPI #SquareWaves #AudioProgramming #TechInnovation
-
Variable duty cycle square waves with the Web Audio API
https://www.danblack.co/blog/variable-duty-cycle-square-wave
#HackerNews #VariableDutyCycle #WebAudioAPI #SquareWaves #AudioProgramming #TechInnovation
-
Variable duty cycle square waves with the Web Audio API
https://www.danblack.co/blog/variable-duty-cycle-square-wave
#HackerNews #VariableDutyCycle #WebAudioAPI #SquareWaves #AudioProgramming #TechInnovation
-
Variable duty cycle square waves with the Web Audio API
https://www.danblack.co/blog/variable-duty-cycle-square-wave
#HackerNews #VariableDutyCycle #WebAudioAPI #SquareWaves #AudioProgramming #TechInnovation
-
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
https://amini-allight.org/post/game-audio-programming-tutorial-part-11
#gamedev #indiedev #opensource #gameaudio #audioprogramming -
"rune_b" - Deconstructed
https://makertube.net/w/jsRUby9ififPu6TybpAf1rJoin me in exploring the programming code which created my track "rune_b"
-
A few minor releases for this autumn:
Roc VAD 0.0.3 (streaming virtual device for macOS) 👉 https://github.com/roc-streaming/roc-vad/releases/tag/v0.0.3
roc-pulse 0.0.8 (#PulseAudio modules) 👉 https://github.com/roc-streaming/roc-pulse/releases/tag/v0.0.8
Signal Estimator 0.1.0 (latency measuremens) 👉 https://github.com/gavv/signal-estimator/releases/tag/v0.1.0
libASPL 3.1.1 (audio server plugins for macOS) 👉 https://github.com/gavv/libASPL/releases/tag/v3.1.1
#roctoolkit #signalestimator #libASPL #audioprogramming #macosaudio
-
Just tagged #libASPL 3.1.0
Release includes better support of overriding low-level I/O handlers with your own and numerous bug-fixes.
-
In #GameDev / #AudioProgramming, one would expect beginners to use a graphical editor/engine, and experts to use pure code, but I think the other way around is reasonable.
I have been learning how to code a plugin using #JUCE, but now I am starting to use the "audio plugin engine" #HISE (which is based on JUCE). I would probably have gotten very frustrated with HISE had I started audio plugin development with it, because I would have wanted to know what was going on under the hood. But now that I am familiar with JUCE, and that I know how cumbersome it is to develop a plugin with it, HISE sounds like a very sensible option.
Meanwhile, I'm starting to learn gamedev; tried #Godot, but got frustrated with it. Now I'm learning things from the ground up using the simple software libraries (#Raylib and #Apecs in #Haskell). I'm going at a relaxed pace and generally having a good time :)
-
A test bench for a cool freelance project.
Right #RPi (broadcaster) reads input audio, writes it to speakers, and broadcasts over Wi-Fi. Left RPi (receiver) receives audio from Wi-Fi, listens on the mic, and plays received (higher-quality) audio **in-sync** with what it hears on mic.
In this setup, laptop runs #signalestimator that writes probe impulses to broadcaster input and reads outputs of broadcaster and receiver to measure sync error.
-
One more release of #signalestimator - 0.0.9!
Highlights:
- major improvements in GUI
- new mode for measuring software and hardware delays reported by ALSA
- support arbitrary sample formats for output and input devicesThanks to everybody who participated during #hacktoberfest!
Changelog: https://github.com/gavv/signal-estimator/releases/tag/v0.0.9
-
#signalestimator 0.0.8 is out!
Release highlights:
- major improvements in latency calculation precision
- new mode for measuring I/O and scheduling jitter
- support for multiple input devices to measure synchronicity
- support different settings for different cards
- numerous optimizations and bug-fixesFull changelog: https://github.com/gavv/signal-estimator/releases/tag/v0.0.8
-
Recently spent some time optimizing #roctoolkit latency over Ethernet.
So far, achieved 7ms for transport + 12ms for two USB sound cards.
This is the photo of my test bench for measurements.
Legend: R1, R2 - #raspberrypi; S0, S1, S2 - sound cards; L1, L3 - jack cables; L2 - ethernet cable.
Roc runs on R1 and R2 and streams sound from S1 to S2.
On PC, I run #signalestimator that writes sound to S0 output, reads it back from S0 input, and measures latency.
-
[1/3]
I had a lot of fun last weekend, adding surround sound support to #roctoolkit, with conversion between surround layouts (downmixing and upmixing).
(E.g. if network layout is surround 7.1, but sound card is 5.1, it's automatically downmixed)
Learned lots of new! I first discovered remixing algorithm from #pulseaudio [1], but ended up using downmixing tables from dolby [2][3].
Also added support for large multitrack channel sets up to 1024 channels.
-
CW: My a little late introduction
Hi mastodon and #fosstodon!
I'm a software engineer, mainly doing systems programming, with some embedded background.
I'm one of those who loves finding art in software and is inspired by hacker culture 🙂
Programming and #opensource is my main hobby. I maintain several #foss projects, most of them related to audio and networking https://gavv.net/software/
Looking forward to meet new people here!
#introduction #linuxaudio #audioprogramming #networkprogramming
-
We're looking for contributors for recently released Go bindings for #roctoolkit!
👉 https://github.com/roc-streaming/roc-go
Roc is an #opensource real-time audio streaming library. https://roc-streaming.org/
On github, you will find issues for adding tests, documentation, and minor features. We're always glad to meet new people in the project 🙂
-
I've now released v0.3.12 of #saugns (https://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 #SAUlang implemented.
Next, to add the new signal generators from the (otherwise less usable) "mgs0.1" branch mentioned earlier.
-
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
-
Some more weird noises, now that I have filters to filter a feedback path. Most of the weirdness comes from a modulated delay and a modulated all pass filter.
#modular #synthesizer #dsp #coding #sounddesign #foss #opensource #linuxaudio #audiosynthesis #vstplugin #audioprogramming #rustlang #rustprogramming #opensource #modularsynth