Hacker News new | past | comments | ask | show | jobs | submit login
I need to grow away from these roots (vitling.xyz)
459 points by HansardExpert on Jan 28, 2024 | hide | past | favorite | 83 comments



This person is also the creator of the marvellous "endless acid banger" which you can waste hours with in your browser, and which made me get my own physical 303 clone to start derping around with.

https://www.vitling.xyz/toys/acid-banger/

Also of note: all the demos open to a silent "click to start" screen, and all the autoplaying videos are muted by default even, like on TFA.


Neither of these pages show a "click to start" message for me, but they should. In TFA I had to hover over the "silent gif" to see a volume control, and in the acid banger I had written half of this comment before I figured out you could just click anywhere to unmute.


That's a browser thing. Thank the advertising industry with their auto-playing audio ads. To get rid of that browsers now require you to engage with a page before audio can be played.


"To get rid of that browsers now require you to engage with a page before audio can be played."

Where "engage" just means any UI event, so also a simple mousemove over the area.


This is a wonderful little toy. As an aside is it difficult to pick up and use a 303 with no prior synth experience?


If you're transcribing written music then it's fairly straight forward - you program the pitches in one round, press a button and input the note length values. If however you want to jam around like you might with any other seqencer driven synth I find it's too much to keep in your head so a pencil and paper with a 303 sequencer grid on it is pretty essential.

The Behringer lets you connect to an app via USB so you can program it that way too.

The sound engine is easy to use and the knobs encourage experimentation - the interaction of the filter, the envelope and the accent is where the fun is. And of course the slide!


I think the issue will be more the cost, they go for about 2500 to 3000 euros

But yes arguably synth experience won't even help, the 303 sequencer is very weird and unlike any other sequencer


Behringer does really nice clones of these old synths, much more affordable (~120 EUR for this one): https://www.behringer.com/product.html?modelCode=P0DTD


Yeah, I have a TD-3. It's by no means trivial to use for a novice, but there are some nice guides such as the one linked below. You have to get used to holding the internal state of the sequencer in your head during programming, as there is no display showing which step you are on etc.

And the time mode must be programmed separately, which on several occasions has left me scratching my head at why the thing makes no sound at all.

https://airainfo.org/files/TD-3-Programming.pdf


A new TB-03 from Roland, which is a digital clone but quite nice sounding, is only $400.


Sounds really unlike the real thing


I love the key change button. What would make this a truly awesome DJ tool is if you could go BACK to some arbitrary pattern, rather than only going forward. Am I missing a button/option for that?


The beauty of synthesizers like this (and especially modular synth setups) is everything is ephemeral. It's like a sand mandala.


I don't think it would necessarily ruin the vibe to have maybe four snapshot buttons that let you record current state, which you can jump back to. Would let you do some cool builds that pay off by returning to a known state or perhaps jumping to a new preset.


What I would do on MacOS is send the browser audio to blackhole and then run it thru ableton before sending it to the speakers so you could record and playback any sections you like


Something fascinating about seeing a 'score' for generative music written out as a sort of specification like that.

There's enough detail there that you can take those instructions and reimplement your own version of it, and you'll end up with essentially the same 'piece of music', but certainly a different interpretation of it. Because while the score lays out some details precisely, it leaves other choices less clear. What does 'all inversions' really mean when enumerating chords? Does it include open, spread voicings? What durations should we choose from for our random waveforms? How short is 'short' when deciding to repeat? And of course, what wave synths should you use, and how should you modulate them?

All those are similar to the decisions a traditional instrumentalist makes when interpreting a sheet music score for performance - here, a generative music coder can follow this 'score' and produce a program that represents their own interpretation of the piece.

Coding it up in Sonic Pi (https://sonic-pi.net/) was a fun exercise, and I feel like I was able to produce something along the lines of what the composer intended. It carries the same kind of mood that the recording in the video has. But it's my own 'performance' of the work, if that makes sense (even if it's actually Sonic Pi 'performing' it at runtime...)

All of which got me thinking about the relationship more generally between specification, and implementation. Considering different programmers' implementations of algorithms as individual 'performances' of scores from the overall design - and then thinking about developers building elements of a larger system architecture as individual performers working to deliver their part of the performance as part of a band or orchestra. Some groups, maybe they're directed by a conductor-architect; others maybe are improvisers, riffing off one another and occasionally stepping up to deliver a solo. And some are maybe solid session performers, showing up and delivering strong but unflashy performances to a producer's specification.

So overall, a nice meditative coding exercise for a Sunday afternoon, and a shift in perspective. Thanks for sharing it.


I think you really picked up what I was trying to do with the score, glad it came through.

I had some feedback from a art curator about a previous piece of work that I was going to show (this one in fact https://www.vitling.xyz/welcome-to-tech-talk/ ), and she didn't really understand what was going on. After explaining what was happening and how it all works she told me "I love it now; but you're hiding all the interesting parts from the audience".

One of the interesting parts about generative art is that the "work" I do is really the ruleset/algorithm, rather than the audio or visuals that come out of it, so I always want to find a way to show what's happening 'inside the box' so to speak. Source code can be nice, but only for those who can read it, and the core idea often gets lost in boilerplate and technical weirdness. That's where I got to the idea of writing a score for it instead, which just lays out the basic premise of what's going on - enough to understand that what's being played is generative but not so much as to get lost in the detail.


Thanks - it’s really just a magical choice of word you made. You could have posted the same explanation under the heading of ‘How it Works’ and it wouldn’t have had any of the same connotation for me. Calling it a ‘Score’ made something click.


I love how you've done this. It really is a musical score. Reminds me of Terry Riley's similarly "algorithmic" approach to describing how a piece of music is played.


One of my favorite procedural visual artists has a similar vagueness to his specifications that leads to a nice variation each time a piece is recreated: https://www.sfmoma.org/artist/sol_lewitt/ https://massmoca.org/event/walldrawing305/


> What does 'all inversions' really mean when enumerating chords? Does it include open, spread voicings?

I think it usually just means: take the chord in its ‘root position’, and take inversions (that is, sort of (up to octaves) cyclic permutations) of it. So it would be leaving out lots of those more open, sparse voicings.


A basic c maj chord is c4 f4 g4. Inversions move bottom notes to the top, like f4 g4 c5, or g4 c5 f5. They significantly change the flavor of the chord.


Yes, those are 'closed' voicings of the basic inversions, though. What about f4 c5 g5? Still a C/F, but an open voicing.

I mentioned Sonic Pi in my post - it actually has a bunch of built in API support for this sort of thing.

Generating all the basic inversions of all those chords for all those root notes is as simple as:

    (note_range :A2, :D5).each { |root|
      [:major, :minor, :major7, :minor7].each { |chord|
        chord_size = chord(root, chord).to_a.length
      
        for i in 0..chord_size do
        
          the_chord = chord(root, chord, inversion: i)
        
        end
      }
    }
 
'the_chord' gets set to arrays of midi notes corresponding to every inversion of every chord.


Pretty sure that's a C sus4


Ha, true. Derp.


i thot it was c4 e4 g4?


It doesn't sound like there are open chords in there, just the ones where the notes follow each other immediately without any gaps.


Right. But that's what you glean from listening to the performance. Not what you can gather from reading the 'score'.


Can somebody recommend some music theory book/course for this algorithm or the one in https://www.vitling.xyz/toys/acid-banger/ to make sense? Obviously, there are some pretty simple rules to predict that something sounds alright, some more complicated ones, and baroque music is notoriously algorithmic. But I still have no clue.

I tried to research something across these lines before, and I cannot quite recollect what exactly was the problem with the books I came across on my own (I think it was mostly just too basic to be useful), but somehow I never got any "general" understanding of "how music works". Even though I've got some very basic solfeggio training long time ago (admittedly, I was too young to ask questions I now find interesting and understand what's the purpose of what we were doing there, but at least I can read the notation).


In order for it to fully make sense, you will need to study it from multiple angles. Hooktheory.com, books, and lots of YouTube videos will get you there over the course of 1-10 years. Ultimately, you won't understand music theory without trying to write a lot of your own music. It's like programming: you can read a book about JavaScript, but if you never wrote software and you never plan to, there's simply no way to actually understand the book.

An explanation of how this application might work (haven't verified from the source or letting it run long enough): let's say it chooses a subset of notes ("scale degrees") from a minor key, probably chosen at random. A subset of 5 or fewer notes from a scale (a pentatonic scale) will constrain the possible space of melodies so that most configurations will sound good. Even fewer and you get a more predictably pleasant (but perhaps less interesting) result. For instance, the notes that comprise the root chord will always sound good when played in any order. Acid lines typically suggest some kind of minor chord by playing an arpeggio (usually a repetitive melody consisting entirely of notes from a particular chord).

Also, a subset of notes from one scale are always going to be present in another scale. You can transition (modulate) from one scale to another by having a section use a shared subset of notes, then switching to the new one. In this manner, you can have a single piece of music traverse all possible scales (in acid techno, almost entirely minor scales).


> Ultimately, you won't understand music theory without trying to write a lot of your own music. It's like programming: you can read a book about JavaScript, but if you never wrote software and you never plan to, there's simply no way to actually understand the book.

That's a great observation, thank you!


Yale has an online course "Listening to Music" that covers quite a bit of music theory. I quite enjoyed it: https://online.yale.edu/courses/listening-music


Its very difficult to get into. I liken it most to maths, you simply cannot take something written for someone with a certain higher level of understanding than you currently have and expect to get much from it. You simply must go page by page slowly, deliberately, and humbly, taking the time to completely understand each term you come across (which will often require a several hour diversion, in which you come across more terms branching all the way down, etc). You can't skip over terms like "intervals", "locrian/lydian" and hope to understand them by osmosis.


Except, if you are asking how to learn algebra or statistics to a certain level, I could give you a list of certain theory books and exercise books in a certain order (some of them, admittedly, written in an unnecessarily complicated way in my opinion and you would be better off with some youtube videos, and for some of them I really don't know a more approachable ­(= better) alternative, but I think there could be), and be fairly confident that you at least could follow them and actually achieve what you were asking for.

And there's no single actual music theory book recommendation in this thread.

(And I don't think it's a lack of patience to learn terms that's the problem here, definitely not in my case. I know names for all intervals literally for a longest part of my life. I kinda know how each of them "feels". But it's still too far from being able to write music "algorithmically", and I don't know what would be the next step. Most books I come across just try to teach me interval names once again, and I'm pretty sure there must be more theory in music than that.)


If I have to give my recommendation, I used "Idiot's Guide: Music Composition" by Michael Miller. It required a lot of background reading, but once I understood chords and chord progressions well and melody construction it started, slowly, to come together. I don't know that it's a good book, but it worked for me.

I then read "A first book of blues, for the beginning pianist" by David Dutkanicz, which led me into blues which is kinda its own thing, I couldn't apply some of the algorithmic rules I had learned to the blues scale and I wanted to understand why. Admittedly the book didnt teach me the background theory of why that is the case but I did learn more concepts like syncopation and ways that the blues scales are constructed from a major scale and why


It's not a typical intro to theory but the "pop psychology" book This Is Your Brain On Music by Daniel J. Levitin includes something like what you're asking for: What is pitch, why do our brains "like" certain combinations of pitches and dislike others, etc.

It's a fascinating book in its own right on a bunch of theories about the neurology of music but it includes a very basic introduction to theory at the beginning.


If you don't play, I suspect it's like trying to explain Tetris to a blind person.


Explaining Tetris to a blind person doesn't sound like an intractable problem?!


A better metaphor might be trying to explain to someone who can't hear why the word "barracks" sounds harsher to the ear than the word "mellifluous."


Tip for author: you can drastically reduce hardware & software complexity of this project by removing the Arduino and use this library which allows controlling WS281x strips directly from your Raspberry Pi: https://github.com/jgarff/rpi_ws281x

I use it myself on a Pi 4 to control a WS2815 strip of 466 pixels on the fascia of my house, for holiday decorations.


There's some fun music theory lurking inside this project. It turns out that every transition from one chord to another via the algorithm described is either from one chord to itself (e.g., C major to an inversion of itself or adding/removing a 7th), or one of the three basic Neo-Riemannian transformations: P, L, or R.

Go check out the Wikipedia page on Neo-Riemannian theory for more details, but here are a few key facts about P, L, and R: For any chord x, then if x is major, then P(x), L(x), and R(x) are all minor. If x is minor, then P(x), L(x) and R(x) are all major. P, L, and R are all inverses of themselves, so that P(P(x)) = x, and so on for L and R. It's possible to reach any major or minor chord from any other major or minor chord by some sequence of P, L, and R transformations. For example, from C major, applying L then R gets you to G major; applying R then P gets you to A major; and applying L then P gets you to E major.

Hopping around via Neo-Riemannian transformations are a quick way to use smooth voice leading to get to a "remote" key center (i.e., one that doesn't have many scale tones in common with the key you started in), but I was surprised when listening to the piece how (relatively) stable the harmony seemed. What's interesting here is that because of the way the algorithm is constructed, P transforms are much less common than L or R transforms (or just staying with the same chord) -- and crucially, P transforms are a vital ingredient in quickly moving to remote keys. By my rough calculations (which assume the Markov process has reached steady state and ignore the limits on min/max pitch), only 1/27th of all chord changes are P transforms. It also turns out that in steady state, 7th chords are more common than simple triads by a ratio of 16:11.


Curious about one of the technical details, I'm only asking to learn more about the limits of the RPi:

couldn't this all be done only with the Raspberry Pi, using all those GPIO pins that it has? Feels like it is being underutilized and the project ought to be simplified to a single board (a single mains connection needed would be a very nice consequence too)


I was thinking the same thing except the Arduino instead of the Raspberry Pi. All the Pi is doing is "note selection and the synthesising of the audio buffers themselves." Surely the Arduino Uno can do that, too?


I think the Uno wouldn't have enough RAM for that, the Pi is a lot more powerful in that sense.


I think yes, but the LED code is designed for arduino so from a code reuse / prototyping perspective it would be simpler to do initial build with 2 units.


Correct answer. Also the RPi is only just powerful enough to run all the synths (it's a 3rd gen) and the prototype was Mac + Arduino; so made a lot of sense to just move the synthesis program to the Pi to make it self-contained and leave the Arduino program as-is.


I love how they wrote it out in pseudocode for everyone to understand. I've worked on projects like this (just the music generation part) and I greatly appreciate how they presented it.

And for someone to have a video demo, it just makes it better. Lots of code projects die before they take off because the author only described it with a wall of text.


This is really cool, would be nice to get detailed instructions how to build something like that.


I think I now have to create an online version of it. Web Audio and CSS transforms should be more than up to the task.


Best use audio worklets for best performance to avoid buffer underruns


That could be the intro for a Four Tet set :)


Yes!


This is beautiful. Imagine an alien planet where the plants are like this. Maybe a forest of them can sync up the way metronomes and firebugs synchronize.


This would be a fun art installation to build and experience :)


  Find all the chords from the set that have all but one note in common with the playing chord.
  Choose one of these at random.
  Go back to 3 and repeat forever.
This means a fairly small group of chords. Not sure it covers more than one key.


Nope, it can get anywhere in the western musical system.

A triad 1 3 5 can become 7 3 5, then 7 2 5, which is a 5th. Once you can move a 5th you can move anywhere because it's a move of 7 in the integers modulo 12 (numbering all the notes chromatically) which will get you back round to 0 in 12 moves.

Maj -> Min is only one note change, as is moving inversions or adding or removing a 4th note.


Seems like they are being slashdotted or whatever it's called these days.


The "HackerNews Hug" I believe it's called.. indeed being on the frontpage and being (or just looking) interesting does direct a huge amount of traffic at servers!

I'm just so glad that HN seems not to be getting paid (or even influenced much?) to direct that fire-hose (as far as I know anyway!) Killer job dang! Can't believe you get so much done, kudos!


That was frigging awesome!!!


Awesome! reminds me of the tight-audiovisual sync style of the demoscene, but in hardware? Hope it gets explored some more!


Somehow reminded me of Jean Michel Jarre


The early days of synth, I would have picked Klaus Schulze as a close analogy, or maybe Brian Eno, The Pearl/Late October.


My head went "Vangelis"

(And then it repeated "Albedo, zero point three nine"...)


Yes, I posted 'Soil Festivities' as well upthread.


I love nature, spend a lot of time in the forest. I find it all beautiful. Yet, sometimes, I am struck with disgust as somehow my image of trees swaps. Suddenly I imagine trees like an insidious growth on the surface of the planet. Like when you see fungi growing from a humans skin, I am involuntarily picturing trees through the same lens.

It is breif, but weird. Anyway, this is a really beautiful display, it's branches feel closer to tendrils, and I imagine if the music had picked minor chords predominantly this would be an experience closer to my negative view of trees. Thankfully the power of music prevails.


Imagine that trees sway on their own, rather than the wind moving them.


Perhaps think instead of human skin as a wretched slimy substrate on which poor, determined fungi have to somehow eke an existence.


What do I search for to find music/audio like this? It sounds so beautiful.



It reminded me a bit of Plastikman, for example https://www.youtube.com/watch?v=oQduttGOQSE

Probably because it uses the same 303's and 909's :)


I need one of these now! How much to make me one?


Not listed so far in replies to this question: "Contact the original artist and ask them if they'll sell it, or commission them to make another"

Hi, it's me, the original artist :-D and this thing is taking up a lot of space in my 1-room apartment.

I'm not sure if I would want to sell it or not, but I find it funny that the business bitches here are talking about costs to hire someone to clone it and/or set up a factory before suggesting to talk to the person who actually did it.


Parts would be somewhere between $100 and $200.

Someone with the right hardware skillset could put one together in a weekend pretty easily, maybe 10-15 hours work or so. Skills include RaspberryPi experience, Arduino experience, integration between RasPi and Arduino, addressable LED strip driven by Arduino experience, assembly (both electronics/soldering and artistic construction/sourcing of an enclosure and the "pretty looking led strip in aquarium tube with wire stiffeners" bits).

Software is another skill required here, and for this you'll need both RasPi programming and Arduino programming, plus music specific knowledge and skills. That'll be a harder task to become or find someone with both skill sets. I'd expect top maybe be able to get the basic software for the RasPi/Arduino running in a weekend, but that iterating over configurations or "compositions" that look and sound interesting to be a long term ongoing project.

If you don't have all or some those skills, you may find people at a local hackerspace/makerspace who'll help you out with this things, but I'd expect it to take at least 5-10 times as long to build it yourself with volunteer help than it'd take someone who already has all those skills.

If you wanted to just commission someone to build/program one for you as a one off, I know a few people who do that kind of work, and I'd expect them to charge you $5k - $10k for it, if they're expected to provide some sort of warranty and ongoing support to you.

(If you wanted small run production of then, I'd guess at something like $100-250k setup for scrappy startup style hardware manufacturing design, or closer to $250-$500k for contracted industrial design from an experienced industrial design firm. Then you might be able to manufacture them in production runs of 500-1000 for somewhere around $100 each, and six months later there'd be ripoffs on AliExpress for $49 plus shipping.)


I was also fascinated by the idea and thought to myself to build something similar.

I already got LEDs, except the wire and tubes. My LEDs are already in tubes (one can choose on Aliexpress).

I would take an esp32 and run WLED on it. LedFX also works with it, to illuminate according to sound. Not that fancy like addressing each pixel with your own rules, but nice enough to watch it for a while.

Without the pi but with the esp32 it’s about 70€ for the parts.


money kills art


If only art killed money


Woodie Guthrie’s guitar was a machine that kills fascists.


artists gotta eat


Generative audio-visual ambient light sculpture

WS2812B / Arduino / Raspberry Pi / C++


that's that shit i like


cheesy kitsch


Ok, but could you please stop posting unsubstantive comments to HN? You've unfortunately been doing it repeatedly. It's not what this site is for, and destroys what it is for.

If you wouldn't mind reviewing https://news.ycombinator.com/newsguidelines.html and taking the intended spirit of the site more to heart, we'd be grateful.


noted. just express myself for the record.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: