[HN Gopher] I need to grow away from these roots
       ___________________________________________________________________
        
       I need to grow away from these roots
        
       Author : HansardExpert
       Score  : 396 points
       Date   : 2024-01-28 19:29 UTC (1 days ago)
        
 (HTM) web link (www.vitling.xyz)
 (TXT) w3m dump (www.vitling.xyz)
        
       | HansardExpert wrote:
       | Generative audio-visual ambient light sculpture
       | 
       | WS2812B / Arduino / Raspberry Pi / C++
        
       | whitepaint wrote:
       | This is really cool, would be nice to get detailed instructions
       | how to build something like that.
        
         | rezmason wrote:
         | 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.
        
           | rezonant wrote:
           | Best use audio worklets for best performance to avoid buffer
           | underruns
        
       | blackqueeriroh wrote:
       | I need one of these now! How much to make me one?
        
         | hackernewds wrote:
         | money kills art
        
           | bickeringyokel wrote:
           | If only art killed money
        
             | jachee wrote:
             | Woodie Guthrie's guitar was a machine that kills fascists.
        
           | adzm wrote:
           | artists gotta eat
        
           | uwagar wrote:
           | wish we cud do art in communist society
        
         | bigiain wrote:
         | 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.)
        
         | ulf-77723 wrote:
         | 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 70EUR for the
         | parts.
        
         | vitling wrote:
         | 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.
        
       | fb03 wrote:
       | That was frigging awesome!!!
        
       | Lucasoato wrote:
       | That could be the intro for a Four Tet set :)
        
         | xanderlewis wrote:
         | Yes!
        
       | crawsome wrote:
       | 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.
        
       | j1elo wrote:
       | 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)
        
         | xyzzy123 wrote:
         | 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.
        
           | vitling wrote:
           | 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.
        
         | ryandrake wrote:
         | 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?
        
           | jacquesm wrote:
           | I think the Uno wouldn't have enough RAM for that, the Pi is
           | a lot more powerful in that sense.
        
       | semi-extrinsic wrote:
       | 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.
        
         | Noumenon72 wrote:
         | 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.
        
           | jacquesm wrote:
           | 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.
        
             | lukan wrote:
             | "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.
        
         | Tsiklon wrote:
         | This is a wonderful little toy. As an aside is it difficult to
         | pick up and use a 303 with no prior synth experience?
        
           | bowsamic wrote:
           | 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
        
             | speps wrote:
             | 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
        
               | semi-extrinsic wrote:
               | 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
        
             | munificent wrote:
             | A new TB-03 from Roland, which is a digital clone but quite
             | nice sounding, is only $400.
        
           | bloke_zero wrote:
           | 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!
        
         | joncrane wrote:
         | 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?
        
           | caseyohara wrote:
           | The beauty of synthesizers like this (and especially modular
           | synth setups) is everything is ephemeral. It's like a sand
           | mandala.
        
       | psynister wrote:
       | Seems like they are being slashdotted or whatever it's called
       | these days.
        
         | danwills wrote:
         | 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!
        
       | ruined wrote:
       | that's that shit i like
        
       | jameshart wrote:
       | 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.
        
         | xanderlewis wrote:
         | > 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.
        
         | sdenton4 wrote:
         | 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.
        
           | jameshart wrote:
           | 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.
        
           | recursive wrote:
           | Pretty sure that's a C sus4
        
             | sdenton4 wrote:
             | Ha, true. Derp.
        
           | uwagar wrote:
           | i thot it was c4 e4 g4?
        
         | joeblubaugh wrote:
         | 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/
        
         | jacquesm wrote:
         | It doesn't sound like there are open chords in there, just the
         | ones where the notes follow each other immediately without any
         | gaps.
        
           | jameshart wrote:
           | Right. But that's what you glean from listening to the
           | performance. Not what you can gather from reading the
           | 'score'.
        
         | vitling wrote:
         | 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.
        
           | jameshart wrote:
           | 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.
        
       | mrb wrote:
       | 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.
        
       | woliveirajr wrote:
       | Somehow reminded me of Jean Michel Jarre
        
         | jacquesm wrote:
         | The early days of synth, I would have picked Klaus Schulze as a
         | close analogy, or maybe Brian Eno, The Pearl/Late October.
        
           | bigiain wrote:
           | My head went "Vangelis"
           | 
           | (And then it repeated "Albedo, zero point three nine"...)
        
             | jacquesm wrote:
             | Yes, I posted 'Soil Festivities' as well upthread.
        
       | jacquesm wrote:
       | 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.
        
       | ehnto wrote:
       | 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.
        
         | bad_username wrote:
         | Imagine that trees sway on their own, rather than the wind
         | moving them.
        
         | riverdweller wrote:
         | Perhaps think instead of human skin as a wretched slimy
         | substrate on which poor, determined fungi have to somehow eke
         | an existence.
        
       | krick wrote:
       | 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).
        
         | rogerclark wrote:
         | 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).
        
           | jacquesm wrote:
           | > 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!
        
         | ghostpepper wrote:
         | 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.
        
         | yobbo wrote:
         | If you don't play, I suspect it's like trying to explain Tetris
         | to a blind person.
        
           | tazjin wrote:
           | Explaining Tetris to a blind person doesn't sound like an
           | intractable problem?!
        
             | AlecSchueler wrote:
             | 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."
        
         | RugnirViking wrote:
         | 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.
        
         | samvher wrote:
         | 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
        
       | uwagar wrote:
       | cheesy kitsch
        
         | dang wrote:
         | 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.
        
           | uwagar wrote:
           | noted. just express myself for the record.
        
       | paraph1n wrote:
       | What do I search for to find music/audio like this? It sounds so
       | beautiful.
        
         | jacquesm wrote:
         | Older ambient / minimal music / soundscapes.
         | 
         | Try this:
         | 
         | https://www.youtube.com/watch?v=x-OAHzyBIas
         | 
         | or this:
         | 
         | https://www.youtube.com/watch?v=8WGx5z9wVNY&list=PLfimnwaZdu...
        
         | martijnvds wrote:
         | 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 :)
        
       | danwills wrote:
       | Awesome! reminds me of the tight-audiovisual sync style of the
       | demoscene, but in hardware? Hope it gets explored some more!
        
       | yobbo wrote:
       | 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.
        
         | vitling wrote:
         | 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.
        
       ___________________________________________________________________
       (page generated 2024-01-29 23:01 UTC)