Hacker News new | past | comments | ask | show | jobs | submit login
Sonic Pi is a code-based music creation and performance tool (sonic-pi.net)
342 points by threeme3 on May 5, 2020 | hide | past | favorite | 66 comments



Sam Aaron [1], the creator of Sonic-Pi, just released v3.2.0 [2].

I've only played around with Sonic-Pi a bit but I find it exceptional. It has the sound quality that I would expect from a more professional tool while still being accessible to the beginner and being programmer friendly. It's also completely free/libre/open source.

There's a good community over at the discussion forum `in_thread` [3]. Sam Aaron also has many videos of him practicing, live streaming, etc., complete with code in the background to see what he's doing [4].

I'm a bit light on the details but I think Sonic-Pi uses `supercollider` [5] "underneath" as the audio synthesis engine.

I've heard that Sam Aaron offsets some of his income by doing live gigs and talks. COVID-19 has put a damper on that so I would encourage people to donate to his Patreon [6] if they can.

[1] http://sam.aaron.name/

[2] https://in-thread.sonic-pi.net/t/sonic-pi-v3-2-tau-released/...

[3] https://in-thread.sonic-pi.net/

[4] https://www.youtube.com/user/samaaronuk/videos

[5] https://github.com/samaaron/sonic-pi/wiki/Sonic-Pi-Internals

[6] https://www.patreon.com/samaaron


Seconding everything you say here

It takes a while to get it but it is very powerful. Docs could be a bit better (they're not bad) but in the end it is Ruby code. I would also be happier if I had a CLI because the IDE editor has (minor) issues but it also helps a lot with its integration with the rest of the system

But those are minor issues in a great project.

Yes it uses supercollider (too bad that API is much more complicated than Sonic-Pi)


I created a command line interface for Sonic Pi which can be found here -> https://github.com/lpil/sonic-pi-tool/

Due to some security related changes in Sonic Pi it does not work with the latest version, but hopefully Sam and I can resolve this in future.


I haven't used it but apparently there's a `sonic-pi-cli` project that has a command line interface to Sonic Pi [1]. It's unclear to me whether the Sonic Pi IDE has to be running to use it, though.

I agree the documentation could be better but, in it's favor, there's a built in tutorial/examples along with built in documentation in the IDE that gets you most of the way there. I find it hard to track down what some of the options do on effects and other functions but these are minor complaints of mine.

[1] https://github.com/Widdershin/sonic-pi-cli


If I might be so cheeky I would suggest my Rust alternative, it is much faster and has a greater feature set -> https://github.com/lpil/sonic-pi-tool/


Sonic Pi is an instrument designed for optimal usability by a ten year old, while using text-based syntax just like a normal programming language.

I have seen a 9-year old reinventing nested loops with it, just because that's what she needed to make a tune.

The install and learning curve is as flat as it gets, there's no excuse for not trying it if you are curious.


I'm upvoting because I agree it is a great tool for kids, and a fun way to introduce some coding. But people might misinterpret what you are saying as meaning it is dumbed down, or too simple for real work. It is just well designed IMO, great for a 10 year old, but equally great for sophisticated technical user. I.e., this is not Scratch.


I know Sam (the creator) and can vouch that he's a good guy and a bit of a legend.

He hasn't had the easiest of rides when it comes to sustainable support for his work. I'd encourage folks to contribute here: https://www.patreon.com/samaaron (he'll certainly do wonderful things with such support).


Did anyone get this running on Ubuntu/Mint? When I `sudo apt get install sonic-pi` and start sonic-pi (even with root privileges) the loading screen appears and nothing happens. There are no logged error-messages in the terminal either.


Robin Newman has just released today a Sonic Pi 3.2.2 deb file for Ubuntu 20.04, see: https://twitter.com/rbnman/status/1257673599755915265

He notes this deb will NOT be suitable for Ubuntu 18.04.


After mucking around a bit, I found this doc[1] which worked pretty well for me on Ubuntu 19.10. There is also some effort underway to build an appimage on their forums[2].

[1] https://github.com/samaaron/sonic-pi/blob/master/INSTALL-LIN...

[2] https://in-thread.sonic-pi.net/t/sonic-pi-as-an-appimage/274...


I second this. I tried a few months ago to get it working and was really frustrated with the state of the build scripts on Ubuntu and variants.


There's also a _great_ talk from the creator (Sam Aaron) on Sonic Pi, including live-coding examples and some wonderful insights on how computer science is taught in schools:

https://www.youtube.com/watch?v=OLLwG_SN8oo


This reminds me a great deal of Supercollider, which is pretty robust and time-tested.

One of the things that bothers me about Supercollider is its weird server architecture and esoteric language. I'll take Ruby over that, but these things really beg for APIs that let you hook in with other languages.


In Sonic Pi you can send and receive MIDI messages and OSC messages to interoperate with external synthesiser hardware and software.

Sonic Pi comes bundled with SuperCollider. The Sonic Pi server calls out to SuperCollider to play samples, synth tones, and apply FX. See the slightly out of date diagram here for details: https://delftswa.gitbooks.io/desosa2016/content/sonicpi/chap...


You can handle midi in/out/thru natively in supercollider, too.


Sonic Pi is a friendly Ruby face on the Supercollider engine, so the family resemblance is no coincidence. I'm not sure what a universal API would look like, but you can easily build Sonic Pi sketches to take in things like OSC or MIDI from other programs or peripherals.


Looks really nice, I'll be sure to try it out!

For people interested in this, there's also a recent project https://github.com/overtone/overtone which looks similar, using Clojure though (which seems to deem itself better to live programming).


In addition to Sonic Pi, I've also enjoyed experimenting with @neauoire's [0] Orca[1] and @yaxu's [2] TidalCycles[3].

Orca[1] is like a moving 2D functional programming crossword puzzle for generating sequences, be sure to watch some tutorial videos to get started.

TidalCycles[3] is a lovely way to very concisely and quickly generate looping patterns of samples and tones, still getting my head around it.

[0] https://twitter.com/neauoire

[1] https://hundredrabbits.itch.io/orca examples on twitter: https://twitter.com/hashtag/ORC%CE%9B

[2] https://twitter.com/yaxu

[3] https://tidalcycles.org/ examples on twitter: https://twitter.com/hashtag/TidalCycles


Oh, the main contributor to Overtone is actually also the main contributor to Sonic Pi!


Yeah, he started out with Overtone + a special emacs configuration (emacs-live) and had a short-lived duo called Meta-eX playing music using that setup: https://meta-ex.com/


There is also Andrew Sorenson's [1] Extempore [2] which is also a Lisp.

[1] https://twitter.com/digego

[2] https://extemporelang.github.io/


Yep. In fact, lisps tend to pop up quite a bit in livecoding (and in other places, really).

https://github.com/toplap/awesome-livecoding is a nice curated list of live coding languages and tools.


> Powerful enough for professional musicians.

Having worked with professional electronic musicians, I will say this is likely really useful for getting some interesting layers, but is not a professional environment in and of itself.

I don't mean to say this isn't fun, or that you can't make some really cool stuff. It's just not that there's wayyy more programmers involved with VSTs and DAWs than in this one project, and there's ultimately no competition from a professional perspective.


I will definitely show that to my daughter.

It looks like a nice way to introduce kids to coding.

Specially if you are into IDM.


My 8 year old enjoys it.


I would feel remiss not pointing out Sam Aaron’s prior project Overtone which while similar in spirit to Sonic-Pi is much more oriented toward the programmer/musician and less to the musician/programmer. It’s interface language is Clojure which probably tells a lot.

Both projects are amazing, but, after playing with Sonic-Pi, I’ve stuck with Overtone as my coded music synthesis toolset.


Other than programming language, what are the main differences?


The main difference to me is that Overtone is closer to the “medal”, where medal in this case is Supercollider.


Sonic Pi is really fun to play around. However, the editor is fucking abysmal and turns me off every time I try to use it, since I can't use my muscle memory to copy/paste/multiselect and have to otherwise learn another set of keybinding that make no sense whatsoever (instead of CTRL-X to cut you have ALT-X, for example). I wish I were able to use VSCode. I know an extension exists, but it only sends the current file to the Sonic Pi session and has no autocompletion, which is fairly necessary during a live-coding music session to keep the tunes flowing. If I'll ever get around to understand how to develop an extension I'll try my hand at it, I guess.

But otherwise yeah, it's some good stuff and has lots of unexplored potential.

https://www.youtube.com/watch?v=KJPdbp1An2s


They are working on different setups apparently, I was able to use ctrl+c/v to copy paste and next versions promises different selectable profiles. Sadly it defaults to your system language (swedish) and the menu shortcuts collide with some of the commands. I can't use alt+r for running the music for example, it just gets stuck in the menu for "Redigera". Only way I can find to start is by clicking run with the mouse. Can't find a way to switch language either.

Really great program, daughter really loved the few minutes we had before bedtime. Not that it's only for kids, it's nothing like scratch where you can get started but the next step up is gigantic to programming. It seems to nicely scale up with your learning level. I'm no musician though so can't say how far we get with it :-)


For those using Atom, I've had some success using this Atom editor plugin: https://atom.io/packages/sb-atom-sonic-pi


What's the advantage of a "code-based" music creation respect of the classic one musicians use?


One of the advantages is teaching people how to code. In it's early days of development, Sam worked with a CS teacher to investigate ways making music with code could help children to learn some computing fundamentals.

We still use it to teach about code and computer science. Last week we released two videos, both using Sonic Pi.

https://rpf.io/home


Musicians don’t use ‘one’ music creation mechanism. Musicians use instruments, sure, and musical scores, and they also use audio processing and production systems and digital audio workstations and MIDI controllers...

Some musicians use woodworking tools and materials science to manufacture new instruments to make new sounds. Others use CNC machines and 3D printers. Some use soldering irons and electronic components to build audio processing units and tone generators.

There’s a very active community of modular-synthesizer musicians who take electronic devices and patch them together, adjusting knobs and flicking switches to create music.

And there’s others who build all those same capabilities in software.

And Sonic pi sits on that tradition - of bringing more powerful programmatic tools to bear on the configurability of signal generators and sequencers and audio processing chains as a means to create music.


It's suberb for experimenting with ideas quickly, and serendipitous discovery. The speed at which you can transform an existing idea into a new one can be very inspiring.

Or you can fall down a rabbit hole and end up programming forever without making real music again (what happened to me).


Coding music let's you think about music composition in new ways.

I've found it easy to experiment with looping audio samples at different speeds with Sonic Pi (including backwards) and applying FX effects. Syncing the timing of loops playing is easy with Sonic Pi's `live_loop` cues.

Composing with audio samples has long traditions in magnetic tape manipulation, and later in the isolated beat loops in hip-hop.

Musique Concrète - beginning in the early 1940s - is a type of music composition that utilizes recorded sounds as raw material.

Delia Derbyshire used tape manipulation to create the original electronic realisation of the Doctor Who theme score in 1963, and in many other compositions from that decade.


This can be considered another interface to making music. You can “code” to make music, live if you wish.


you can translate your thoughts into sound without having to have any sort of manual dexterity or years of practice


I agree.

I spent years of my childhood learning to play the piano. I did not have the patience to practice four hours a day , so I never became more than moderately proficient.

And learning to play an instrument does not necessarily mean learning to create music. While playing off sheet music and focusing on dexterity exercises can be rewarding, they are not creative activities.

With Sonic Pi you can focus on music creation and simple programming concepts. It is rewarding in a different way.


> While playing off sheet music and focusing on dexterity exercises can be rewarding, they are not creative activities.

Of all the idiotic things written in the comments of HN (there are plenty...) this has to be, hands down, the most idiotic. There are literally an infinite number of possible expressions in terms of muscle movement & hand / eye coordination involved in an activity like playing the piano & this is BEFORE discussing the activity of using that infinite set of expressions to actually interpret music played from memory, by ear, or from a page. The fact that you think it's not a "creative activity" says more about your lack of creativity than anything else.


Ok. Not the person you're quoting, but I _do_ have ~20yrs experience playing piano, and got to a _decent_ level when I was still pursuing tutoring/classes.

There definitely is a creative aspect to interpretation, and I agree it is big (in potential if not how much it is exploited often). However you're playing with fundamentally different building blocks for your artistic expression. Interpretation is much more subtle; you're leaving your own mark on something someone else originally made whereas composition can feel much more like conjuring art out of the ether/your mind. The infinite variations on a piece one can produce are still bounded by the original melody, and are vastly inferior in count/number than the variations of music that can be created "from scratch".

In any case, the parent comment author did not seem to me to have reached a level where they felt comfortable experimenting with interpretation - and may in fact not have achieved the requisite level to begin to be able to actively choose how they interpret pieces beyond "trying to be as accurate to the sheet music as possible". In contrast, if you're improvising, or composing with some kind of software, it is much more approachable to attempt to translate a random idea into music that can be listened to (to judge how close or off the mark our attempt is from our idea).

Basically you can skip the lengthy manual skill acquisition and jump right into playing around with the entire range of sounds and melodies that can be made.


I don't disagree with anything you said. I also understand that the "skip" you refer to probably is fun for people that don't have traditional musical experience. That's fine. However, anyone who thinks that typing start & stop into a terminal or text editor to trigger loops is MORE CREATIVE than playing a musical instrument is wrong.


You can do that with a traditional notation music program like Musescore. You just need to learn music notation.


Probably similar to using dreamweaver visual editor vs. writing code to make a website.


It is just another instrument. Your question is similar to "what are the adavantages of the piano over the guitar for music creation?".


The is doing a/some sessions for githubs conference in a couple of days.



The entire second stream has a pretty solid lineup of creative/live coding. It’s a horrible TZ to make from Australia, but I’ll be up mainly for that.


FYI: "Every session will be recorded and made available soon after it ends. If you’re double-booked or tuning in from a different time zone after the live session time, you can catch up by clicking on past session titles in the Schedule once they are uploaded."


Oo! I will maybe check this out. I've explored Supercollider and thought that was v interesting, though a bit tedious to jump into actual music making with for me personally.


Please do check it out. Supercollider is like walking into a fully-stocked machine shop with a comprehensive 9000-step guide to building your own car. Sonic Pi is like a go-kart with the engine already running. It's very approachable, and with Supercollider on the back end, incredibly capable.


It seems really fun watching others, but I guess my lacking music theory knowledge makes everything I try to result in awful noise instead of anything resembling music

Anyone out there have any good resources for using Sonic-Pi (or anything else) as a hands on way to to learn more about music theory?

Do you think doing any MOOC in music theory can help? Or is it something that I just have to put hours on and just keep fiddling and trying?


Didn't Joe Armstorng use this to DJ at a Erlang User Conference? Can't find it now, but at least there is this talk from a years ago: https://www.youtube.com/watch?v=4SUdnOUKGmo


This is another keynote from CodeMesh in memory of Joe joining together the tiddly wiki and the SonicPi, by Sam, Erlang co-inventor Robert Virding and tiddly wiki inventor Jeremy Rushton: https://www.youtube.com/watch?v=aUji_DlXjm8


It was a keynote he did together with Sam. Loved it....


For those who are interested in making music with Java Programming, check out : http://www.jfugue.org


How does it compare to csound?


One wonders what the great classical composers would have done with these tools?


They would have had tool fatigue :)


Has anyone had any luck getting this running on a non-Raspbian Linux distro?


IIRC he has at least one YT video where he bemoans the lack of Linux support for sound, sounded like it was non-trivial in many cases.


This is awesome - I have it set up to play my synth over midi


I really hope that it has python api


There's a number of SuperCollider wrappers that use python for scripting, FoxDot is the most well known in live coding I think

For reference Id say the most mature ones other than sonic pi are tidalcycles (haskell) and overtone (clojure)

tidalcycles is my favourite out of the bunch


Can you program tempo envelopes?




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

Search: