Sonic Pi v5

(patreon.com)

274 points | by samaaron 3 days ago

17 comments

  • fitsumbelay 0 minutes ago
    Since my first pi I've always been blown away by sonic pi's capacity and it's price. Surely worth the cost of the Pi itself and then some.

    It's so good I feel the rare guilt of not using it enough especially as I see myself as lifelong musically-inclined (skill level is another topic tho ...)

    Genuinely grateful to Aaron and everyone who helps keep this project going. Damn near a public good IMHO

  • harwoodr 6 hours ago
    For those wondering what it actually is, as I was:

    https://sonic-pi.net/

    "Sonic Pi is your free code-based music creation and performance tool."

  • xrd 4 hours ago
    I love Sonic Pi. I am a terrible musician but I really enjoy finding chords for a song and then putting them into a sonic pi buffer and messing around. U2 started as a cover band, right, so maybe this is a path to becoming musical someday.

    The one thing that confuses me about Sonic Pi is the buffers/editor. I always wish I could replace the UI with my own embedded editor (emacs in my case). I would then be able to manage all my songs as files. Right now I hunt for "least crowded" buffer window, comment out the code for the song or songs, and then add my new song. If I had my own embedded editor (like emacs), I could rename buffers to be songs, have an unlimited amount (rather than just ten), integrated version control, etc.

    Am I missing something simple about how others use sonic pi?

    The big breakthrough of sonic pi is representing music as a highly readable text file. I assume I don't know how to use the built in editor and buffer system because I feel a lot of friction there.

    • Tcepsa 1 hour ago
      You can save/load the contents of a single buffer or all buffers. For a single buffer, select the buffer you want to save, then go to the Live menu and choose "Save Buffer As". To load a file into a buffer, choose the buffer you want to load it into and then go to the Live menu and select "Load into Buffer"

      You can also save off all the buffers together (e.g. if you've put different parts of the same song into different buffers) by going to the Live menu and choosing "Save Set As" (or just "Save Set" if you want to overwrite what was previously in your last saved set e.g. you made changes to your song and you want to replace the previous version).

      So to achieve a workflow similar to what you're describing, you construct your song (in up to ten buffers) and then save the set and clear the buffers or load a different set to work on another song. True, it doesn't give you infinite buffers, but it does give you a way to "manage all [your] songs as files".

      You can then use e.g. Magit to version control the files just as you would if you were working in Emacs itself.

      The sets are also saved as text files in a very human readable format; basically just all of the buffers dumped out one after another with some delimiters. You could even use Emacs to edit them and then load them into Sonic Pi to run them! (That said, I'm not sure there's a good sonic-pi-mode for things like indentation and autocomplete yet. Hopefully someday; I would love to have my custom evil-mode Emacs keybindings while working in Sonic Pi, but I get that it's not really a priority right now ;) )

    • samaaron 4 hours ago
      If you look in the source code you’ll find an example REPL which serves as a great minimal example of how you can build your own interface.

      You essentially need to spawn a process, read the session’s port numbers and then send messages via OSC over the local network loopback.

      This could easily done from your favourite editor of choice (e.g. Emacs).

      • xrd 4 hours ago
        Hi Sam, big fan of you and your work!

        Does this mean I just don't understand how to use the existing UI? I'm often messing around with a bunch of chords and sounds and I quickly run out of scratch space. Does that mean I'm doing it wrong?

        • samaaron 4 hours ago
          What do you mean by “running out of scratch space?”

          Do you mean your code was too long that Sonic Pi refused to run it? If so this has been addressed in v5 with much larger buffer sizes supported.

          Or do you mean you ran out of buffer? In which case v5 helps again as you can now save and load all the buffers to and from a single save-file :-)

  • samaaron 3 days ago
    Sonic Pi v5 is released.

    Sonic Pi is now more friendly, more accessible, more powerful and more fun.

    There's something to excite everyone - from the friendlier error messages, to the pro-audio config, to the new dynamic visuals for performance.

    Enjoy!

    • specproc 5 hours ago
      I've been playing with it the last few weeks, great software and really fun to use. Fantastic timing. Thanks for all the hard work that went into the release.

      I'm particularly happy to see keyboard shortcut preferences in the release notes, that's been a real pain point.

      Thanking you kindly, sir.

    • Fervicus 5 hours ago
      Congrats on the release Sam! Looking forward to checking it out. What's your favorite new feature?
      • samaaron 4 hours ago
        I love the new Link Audio which lets you stream and receive audio on the local network with any other Link Audio capable software such as Ableton Live.

        I also like the new QuickStart Cards as a way to get started that doesn’t require reading the built-in tutorial.

    • Lapel2742 2 hours ago
      I tried it. but the Flatpak seems to be missing some of the documentation.
      • samaaron 2 hours ago
        Apologies but I’m not the maintainer of the Sonic Pi Flatpak.

        Instead v5 officially supports AppImage builds.

    • pzo 3 hours ago
      if you want to attract more userbase that's probably the least meaningful copy-text someone can provide. Not only doesn't even in one sentence what sonic pi v5 is but also doesn't explain whats difference between v4 and v5 - I mean what it means more friendly/accessible/fun really?
      • samaaron 3 hours ago
        Not sure if it’s possible to explain this in one sentence - I was just explaining the goals.

        As a summary - friendly as in better autocomplete, better error messages. There are vast accessibility improvements for those with low vision and those that use screen readers. It’s more fun for many reasons but stand out ones are support for game controller input, interactive docs and low-friction QuickStart cards.

        The post linked goes into more detail and the release notes go even further: https://github.com/sonic-pi-net/sonic-pi/releases/tag/v5.0.0

  • nazgulsenpai 6 hours ago
    Every time I click a HN post with the Something Pi naming convention my graybeard brain expects to see an SBC. This is something just about as interesting! I grew up on (and still use) trackers for sequencing. It might be fun to try a similar workflow in this!
    • pdpi 4 hours ago
      The SBC in question here is the Raspberry Pi — Sonic Pi was one of the early pieces of educational that made up the RPi ecosystem, and Sam Aaron was sponsored by the Raspberry Pi Foundation to write it.
      • strbean 4 hours ago
        A bit confusing that `<something> Pi` developed two meanings:

        - `<brand/line> Pi` as a brand/line of SBCs, with Raspberry Pi being the original

        - `<anything> Pi` as a software package targeting Raspberry Pis or SBCs generally

    • thenthenthen 5 hours ago
      Oh my pi! (Same here, yesterday I came to the conclusion that I dont understand any of the front page links. Thanks for commenters clearing it up also!)
    • minraws 5 hours ago
      I blame Mario for ruining me until a year ago Pi was RPi or 3.142... but yeah this is nice, I have been using daws and have written my own small piano roll app because bosca ceoil vanished a couple years ago, but this is nice too.

      I think that app(bosca ceoil) is now back around among us, though I don't recall what had happened back in the day.

  • zaphar 2 hours ago
    I donate to this software because it's so much fun to play around with. My wife (of 30 years as of today) knows way more about music than I do and this is one way for me to connect a little bit with her hobby.
    • samaaron 1 hour ago
      Congratulations on you anniversary! I’m so happy to hear that Sonic Pi helps you connect together with music. It makes me smile :-)

      Thanks also for your kind support.

    • fuklief 2 hours ago
      Congrats on the 30 years of marriage!
  • hiccuphippo 6 hours ago
    How does it compare to https://strudel.cc/ ?
    • Fervicus 5 hours ago
      For starters, strudel runs in the browser while Sonic Pi is a stand alone application.
    • herpdyderp 5 hours ago
      The primary difference to me is that strudel's license is so restrictive that it's impossible to use on anything. This is MIT.
      • throwaway89201 1 hour ago
        I don't know what you mean with this. Strudel is AGPL, which is hardly "impossible to use on anything". The default sound banks are CC-by(-sa), CC0 and unspecified. The unspecified ones might indeed be a problem, but the other ones are fine.

        As long as you allow anyone to get the source code of any derivative work you make of the Strudel code, and you take some measures to keep the distribution of the two works somewhat separate, you're should be good. And yes, there's a lot of FUD by the FSF, but your pet projects shouldn't be encumbered by such a narrow reading of 'derivative work'.

      • spacechild1 4 hours ago
        How exactly does the license matter if you just want to make music?
        • herpdyderp 4 hours ago
          I want to embed the player into standalone video game binaries that don't require internet access to download the restrictively licensed files. I'm not looking to embed music file outputs, I want the music to remain customizable on the fly.
          • fn-mote 4 hours ago
            Seems like a pretty special use-case.
            • herpdyderp 2 hours ago
              I don't think it'd be that special if the licenses allowed it. (Meaning I believe it'd be normal already if it were possible.)
      • glimshe 5 hours ago
        I think the underlying Supercollider sound engine uses the more restrictive GPL, though...
        • samaaron 4 hours ago
          Actually v5 no longer uses SuperCollider’s scsynth engine.

          I completely replaced it with my own port called SuperSonic - which targets native (used in this Sonic Pi release), WASM and embedded.

          See https://github.com/samaaron/supersonic

          • skor 12 minutes ago
            Hi! why a port and not contribution to the original project? What were the reasons? Will this be 100% compatible in the future? Thanks!!
          • spacechild1 3 hours ago
            Hi, Sam! I have to say that's a strange statement. SuperSonic still uses scsynth as its synthesis engine. How is that a "complete replacement"?

            I see that you are trying to circumvent the GPL, with somewhat dubious arguments. I'm pretty sure that running scsynth in an AudioWorklet creates a combined program and not an aggregate. (I'm not the only one who has raised this concern.)

            Since scsynth is the foundation of Sonic Pi, why not respect the intention of its author?

            • samaaron 2 hours ago
              Sorry if it came across as strange. I’m just making sure people don’t confuse the two as SuperSonic isn’t an official SuperCollider project and I don’t want to cause any confusion.

              I’m also definitely not wanting to circumnavigate the GPL! I have wholeheartedly embraced it as whilst I would argue it isnt scsynth it is most definitely a derivative work with a lot of shared code. There’s also a lot that is different/new.

              Instead I’m only attempting to uphold the same network boundary that has existed since v3 of SuperCollider. When used over a network using an open and documented protocol that doesn’t tend to be considered a derivative work. This is observed in other software is such as databases.

              Oh and in Sonic Pi’s case I am not running anything in an audioworklet. SuperSonic is built and shipped in its native form as a totally separate process. No js or browsers involved.

              Sorry for any confusion.

              • spacechild1 15 minutes ago
                Thanks for the kind response!

                > I’m also definitely not wanting to circumnavigate the GPL!

                You are going to great lengths to make sure that SuperSonic (and thus scsynth) can be used from non-GPL code. You are explicitly advertising in the README:

                > Your application code interacts only with the MIT-licensed client APIs and is not intended to be a derivative work of the GPL components.

                https://github.com/samaaron/supersonic#license

                Or in the LICENSE file:

                > SuperSonic is deliberately designed with a strict execution boundary between the GPL-licensed audio engine and application-level code.

                https://github.com/samaaron/supersonic/blob/2652a28eb6cb51a4...

                What's the point of this if not circumventing the GPL?

                ---

                Running scsynth (or a derived application) as a separate process and communicating via sockets should be fine, at least from a legal standpoint. This is what Sonic Pi resp. the native SuperSonic clients do.

                The SuperSonic JS client, however, lives in the same process as the scsynth WASM module. The fact that the two modules communicate via OSC messages is not really relevant. They clearly form a single combined program and therefore must comply with the GPL.

                I'm pretty sure the same applies to the Erlang module. According to the LICENSE file, the scsynth engine is implemented as a shared library that the client calls into. This would be a textbook case of a combined program.

                I would ask you to change the licenses accordingly.

          • glimshe 3 hours ago
            It seems that SuperSonic also uses GPL, no?
            • samaaron 3 hours ago
              Yep, as it’s a derivative work. But I have put effort into making the interface purely network shaped so it’s possible to use it from non-gpl projects without them being considered a derivative work and triggering the gpl.
              • spacechild1 2 hours ago
                Careful! Just because you are exchanging messages via sockets does not necessarily make it a mere aggregate! Quoting the official GPL FAQ:

                > By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.

                https://www.gnu.org/licenses/gpl-faq.html#MereAggregation

                • samaaron 2 hours ago
                  Oh that sounds like the official SuperCollider stance might be that any use of scsynth from an existing project via the network OSC API is considered an aggregate. Is this the case?

                  I definitely don’t want to create any issues and it would be great to get some clarity here.

                  • spacechild1 11 minutes ago
                    I don't think that the SuperCollider team has an official stance on this and I can't really speak for all developers. Legally, I think you're on the safe side as long as scsynth runs in a separate process (which is the case for Sonic Pi). However, it's probably against the intentions of James McCartney. If he wanted scsynth to be used by non-GPL programs, he would have released it under the LGPL. But that's just my assumption. If you're in doubt, just ask him :)
                  • fl0id 1 hour ago
                    also keep in mind that the gnu.org want gpl to apply as widely as possible. Generally, your approach should be fine imo
                • gamblor956 1 hour ago
                  that too could be a basis to consider the two parts as combined into a larger program.

                  That would not stand up in court. This battle has been fought before. Interoperability is not a trojan horse to spread the GPL anymore than it is a trojan horse to impose copyright restrictions by private software.

        • herpdyderp 4 hours ago
          Darn, you're right. Looks like there's still no hope here.
  • olivia-banks 2 hours ago
    I remember years and years ago getting a Raspberry Pi from my father. We were going to use it for something or other, but that plan fell through, and I ended up using it to "deploy" my first programming project when I was around 12 or so, which was a home assistant that I was really proud of. I remember using Sonic Pi to come up with what I think was an excessive 30 or so different sounds and indicator tones for it, and a little startup jingle. Good times.
    • samaaron 2 hours ago
      Awesome to hear! So glad you had fun with it :-)
  • stets 6 hours ago
    This looks like a lot of fun. I wish they'd name it better though, the name makes me think it's a raspberry pi related thing. or a piece of hardware.
    • samaaron 5 hours ago
      Sonic Pi was originally written for the Raspberry Pi and shipped on their OS for many years - hence the name :-)
    • Zetaphor 5 hours ago
      In the defense of Sonic Pi, the first version of it and the Raspberry Pi were released in the same year. Obviously one went on to become more popular
      • samaaron 4 hours ago
        That’s because Sonic Pi was originally built specifically for and in collaboration with Raspberry Pi :-)
    • kwanbix 5 hours ago
      Was thinking the same.
  • fmo91 4 hours ago
    This is one of my favorite software projects. I have played a bit with it a few years ago, and I often recommend others to play with it. I would love to have more musical knowledge, but even with my limited resources, I can do some cool stuff.

    Congratulations and thank you for your hard work all these years!

  • ironmanszombie 54 minutes ago
    Someone needs to introduce this to an AI model. Have agents recreate music from scratch! :)
  • alin23 3 hours ago
    I was just working on a music improv app for the MacBook trackpad [1] and tried to use Sonic Pi 4 for the backing track (muse) generator but it was too clunky to run a full fledged second GUI alongside the app and control it through OSC.

    I had to do sample retrieval, decoding, native CoreAudio logic to get acceptable latency. A programmable synth would have made my life so much easier.

    supersonic-scsynth in Pi 5 feels more fit now, it’s the first time I tried a JS frontend for a macOS app but if it lets me import this and use it so easily, it already paid its dividends.

    [1] https://lowtechguys.com/meander

  • oceansky 3 hours ago
    Sonic Pi or Strudel? Which is better for a music noob?
  • glimshe 5 hours ago
    I keep wanting to learn Supercollider but I never get to. Maybe I'm more enamored of the idea of live coding than actually wanting to play this way. Sonic Pi could finally convince me!
    • gizajob 5 hours ago
      Get Claude to come up with ideas and generate .scd files which you can launch with supercollider. Ask it to build a gui with parameters. It’s pretty good at it.
  • WithinReason 3 hours ago
    I tried it for a few seconds but there is a huge lag between pressing a button and the sound, and half the time the button press does nothing. It's basically unusable.
    • samaaron 3 hours ago
      By default there’s a 500ms latency as this gives all target platforms sufficient breathing space for system pauses and other work not to affect the scheduling.

      Multiple presses spawn multiple threads which layer over each other - unless you’re using Live Loops in which case it triggers hot code swapping.

      What was the code you were running? Happy to help.

      We also have a friendly forum to ask questions and get help: https://in-thread.sonic-pi.net

      • WithinReason 2 hours ago
        Thanks I appreciate the response but this is not for me. I clicked "your first note" and got a runtime error "Promise timed out after 3 seconds".
        • samaaron 2 hours ago
          Sounds like a possible bug which I’d be only too happy to support you with should you open a github issue. Sorry your experience wasn’t smooth.
  • juliend2 5 hours ago
    Is there any (somewhat) known artist who uses Sonic Pi in their actual work?
  • gizajob 5 hours ago
    why is the Amen Brother breakbeat included in this software as if it's open source and GPL / MIT license? Just because something has been stolen a million times, that doesn't make it public domain, it's still under copyright and owned by its publisher, who I'm pretty certain has never given it away under a free license.
    • kyle-rb 3 hours ago
      It's worth noting that the particular recording they include[0] is not the original performance, it's a CC0 (public domain) recreation of the sample.

      So the recording itself has no copyright attached, but yes, there's still a question of the copyright on the composition.

      [0] https://freesound.org/people/Dolfeus/sounds/43389/

    • noman-land 5 hours ago
      I'd be really curious for this particular sample to go to court because unless The Winstons have been aggressively enforcing this copyright they may have already lost it to the public domain.
      • amiga386 3 hours ago
        That's not how copyright works. There is no "use it or lose it". You legally retain control of licensing for copying and distribution, including derivative works (samples) for the full copyright duration.

        In this case, it's a music recording published in the USA between 1957 and 1972, so the copyright expires on 15 February 2067: https://library.mi.edu/musiccopyright/duration

        There's a limit of 3 years for you to bring a copyright infringement case after a specific infringement takes place, but that doesn't stop you from bringing further cases against further infringements. You don't "lose" copyright if you fail to self-police it, as you might lose a trademark.

        It gets very complicated around this specific 1969 sound recording and suing for copyright infringement, because prior to 1972, sound recordings were subject to US state law (presumably Georgia as the Holly Bee Music Co. was incorporated in Atlanta?) rather than federal law.

        Ultimately, no samplers paid The Winstons any royalties. https://en.wikipedia.org/wiki/Amen_break#Royalties

        The drummer, Gregory Coleman, died homeless and penniless. Some UK DJs raised money for the bandleader, Richard Lewis Spencer, in 2015. He died in 2020. So there's probably not going to be anyone suing you for infringing the copyright on Amen, Brother, but it's not not infringement.

      • aduty 5 hours ago
        Pretty sure that aggressive defense is required for trademarks and not copyright. However it may be interesting whether or not it's still protected by copyright.
      • gizajob 5 hours ago
        It would need to be defended in court yeah, but the absence of that defence doesn't automatically make it so it falls under the GPL and can be included in MIT licensed code just because the copyright holder doesn't know about it to defend it or refuse to be part of your software. Maybe you can argue the technicality but certainly not in the spirit of open source. There would be hundreds of other breakbeats you could include and give away under your MIT license if that were the case.