I made a video, a small study about 1-bit sound.
Have been very fascinated by the topic lately, I’ve found an enormous amount of amazing 1-bit music, and I was really stunned by how good it was.
I really like the idea of exploring such a tight space, I mean, 1 bit, that’s just a switch, a click.
And yet, you can achieve unbelievable things.
My study is not 100% 1-bit, as filters, reverb and signal summing is not strictly1-bit.
I thought, one step at a time let’s explore the sound of 1-bit generators first.
Let me know what you think, I can share the code seen in the video if somebody’s interested!
this is a fascinating idea! I really want to research this more; do you have any links to the 1-bit music you’ve enjoyed? The only 1-bit music I’ve really dug into was Tristan Perich’s 1-Bit Symphony.
Thanks for sharing. The concept of 1-bit anything has been on my mind recently.
It occurred to me while listening to your study how well suited 1-bit sounds are for things like subtractive synthesis and long artificial reverberation. Those sorts of processing techniques live for bright timbres with rich spectrums.
One thing that comes to mind is this paper on 1-bit music. The author of the paper, protodome does a fair bit of very intriguing 1-bit music. They also develop a specialized MML language for writing 1-bit music to AVR controllers, used to make one of their albums. Some of the code used in the album is included, which I think is totally rad.
There is something I find so punk about the 1-bit sound. It rejects all the things the establishment tells you is supposed to be important. Bit depth? Nah. Noise floor? What? All I need is something vaguely speaker-like that goes back, then forth. And do it like, really, really fast. 1, 0, and the truth!
I’ll have to find some of the 1-bit projects I was working on a few months ago. One of the things I was working on was a completely stateless 1-bit table-lookup oscillator. It would take in position (a normalized phasor signal), wavetable size, and the wavetable itself as parameters. The wavetable, being just 1’s and 0’s, would just be encoded as an integer. The idea would be to treat all these parameters as audio-rate, and to build special modules designed to create wavetable signals like parametric PWM.
For those interested in 1-bit sound and retro game programming: there’s a neat in-depth video that breaks down how Pikachu’s iconic cry was played on Pokemon Yellow. Pretty clever:
that’s funny, it’s that exact video that initially sparked my interest in 1-bit music!
Of course my brain melts and then vaporizes if I try to follow the explanation with assembly code, but I was deeply fascinated with that concept of making sound with one bit. you can’t go deeper. 1-bit is the bottom. I love it.
having a look at the code rn, very cool.
still, I feel the need to do everything from the ground up myself. I feel something as radical as 1-bit sound deserves my total dedication, and to really understand something I need to make my own implementation. That’s my limit of course
Lotsa great insiring concepts ith there tho!
And yeah, that’s totaly fucking punk
what about your thing? how is that implemented? I mean, which platform?
when you want to share, I’ll gladly consume the code
Also I think I posted about Bludgeonsoft in some other thread, one of their apps is a PC beeper drum machine thing, never actually used it myself but looks fun https://wizardmaster.com/bludgeonsoft/0303/index.htm
Wow. Small world. That video sparked my interested in trying out 1-bit audio.
I developed it as a node in patchwerk, a library that’s part of my musical software ecosystem monstrosity I built for myself. As a node, it can interact with other previously created nodes in my live-coding modular audio environment. So, it’s mostly C code, but I have bindings for a few high-level languages and DSLs that I use like Janet and runt.
uuuuuu you have a very interesting setup!
So you basically have a low-level layer made with C with patchwerk, and you script it with Janet and runt?
How do you communicate? OSC?
I’ve been thinking about creating my scripting lang for a long time, my idea is to have an almost-purely-functional and reactive language, possibly homoiconic and easy/fast to type. Actually, one you could type without seeing it, keyboard only, no screen.
Hope I’ll be able to bring it to life someday
i downloaded a plug in suite from shuri but I haven’t been able to get it to work yet still trying to figure it out, but if other people are curious it’s here http://randomflux.info/1bit/viewtopic.php?id=11 seems relatively recently updated…
Good ol’ standard input + emacs gets the job done. I have a setup where a REPL is spawned inside of emacs, and I am able to throw blocks of code from any buffer to that REPL to be evaluated.
oook the world really IS small, I started having a look at emacs like one week ago, not sure I’ll stick to that tbh. I know the joke about everybody trying emacs eventually going back to their shitty editors lol.
Do you have any experience writing your own syntax highlighting for emacs?
This thread inspired me to dig out my two 48k ZX Spectrums, only to discover that one has a bad keyboard membrane, and the other needed the trimmers adjusting to get rid of a yellow tint on screen - when i opened it up to do so the membrane broke on that one too (-___-;)>
It took a few attempts before I could make emacs stick. Learning how to use org-mode and evil-mode sold it for me.
If you find yourself working with text a lot, I highly recommend putting in the effort to learning a text editor like emacs or vim. It’s an investment of time that pays for itself.
I haven’t written any syntax highlighting rules in emacs, but if I were, I’d probably just base something off of existing code. A quick glance at the janet-mode source code shows where the syntax highlighting starts. Trace where janet-highlights is defined, and follow the code there. It does require understanding a bit of emacs lisp.