top | item 24289981

Show HN: Computer Music with Python

105 points| erikschoster | 5 years ago |github.com

32 comments

order
[+] sramsay|5 years ago|reply
This is very, very cool.

My problem with most music programming environments (in my humble, but very informed opinion) is that . . . they don't sound very good. That is, the oscillators, filters, envelopes, etc. don't sound anywhere near as good as what you can buy from UAD, SoftTube, PSP, U-he, etc.

The OP may be a DSP genius for all I know, and maybe it sounds incredible. I haven't tried it yet.

But it seems (just glancing over it) that there's an emphasis on manipulating existing audio files. This is actually huge. It's true that you can do that things like ChuCK and csound and whatever, but they never felt focused on that to me. The biggest player in this "let's mess with audio files" space was the Composer's Desktop Project. That thing was amazing, but it seems slightly moribund, and I haven't been able to get it to compile for years.

Anyway: I can't wait to dig in!

[+] indigochill|5 years ago|reply
Is the problem of the oscillators not sounding very good a fundamental problem of these programming environments?

I'm mostly ignorant of their specifics, but my assumption is that someone who understands the fundamentals of synth programming could patch oscs and filters into combinations that do sound nice just as well as they could in commercial synth software.

Is there something preventing that from being the case? Or are you just referring to available presets?

[+] erikschoster|5 years ago|reply
Thanks for checking it out! Trevor Wishart & CDP have been inspirations, I've incorporated some of his ideas surrounding waveset synthesis & transformations into pippi.

Primarily, pippi is the environment I use to compose my own music, and its features and approaches are driven mostly by my own compositional needs & wants. I work often from a "microsound" approach so pippi does have more of a focus on manipulating concrete sound than maybe other systems do.

Do the oscs sound good? I think they sound fine, but I haven't worked with any of the products you mentioned. Commercial synths & DSP I think tends to be focused on providing instruments via opinionated complexes of osc, filters, presets etc as you mentioned. General purpose systems like ChucK etc tend more toward facilitating the user in building their own opinionated instruments, so the path from oscs, filters to a sound you like might take more doing, and some more background in synthesis to arrive at.

That's not to say some opinionated complexes haven't made their way into pippi... but my goal is to allow myself to build instruments in a flexible way just as much as being able to have an expressive way to orchestrate their movements. I sometimes keep a small personal library of instruments I return to with pippi, but it never tends to last very long. I have a hard time fully disentangling the instrument building side of things from the compositional side of things in my own work.

That said, I want pippi to be fun, and useful for others, so including some more preset-like instruments along with the lower level building blocks is definitely in scope for the project!

Edit: FWIW the osc I use personally most often is `Pulsar2d` which is an opinionated implementation of Curtis Roads' pulsar synthesis, where both the wavetable and window stacks can be morphed over time. I often feed this with a stack derived via `wavesets.Waveset()` -- which will split a sound at zero crossings into wavesets, optionally at some interval, offset or some limit, so you can for example tap single cycles of some transforming sound over time, and reconstruct the movement of the spectrum of it in some way by morphing the stack as you like with the `Pulsar2d`...

The next set of tutorials is overdue and will cover synthesis (microsound and otherwise) in more detail!

[+] karlp|5 years ago|reply
This is amazing, it looks really useful to easily code new sounds, but it seems not in real time?

I would change the name though, with pypy, pypi and pip it seems it will lead to confusion.

[+] erikschoster|5 years ago|reply
Thanks! I’ve been performing with what I like to call a “just-in-real-time” approach with pippi now called Astrid, which allows for live coding (instrument modules reload when the file is saved) MIDI input, etc. It is in a works-for-me state though, and probably won’t be documented and packaged for others until after pippi itself is out of beta... if you are curious though it is here: https://github.com/luvsound/astrid

Edit: but to clarify yes pippi is meant primarily to facilitate writing generative musical scores in python. (Scores which produce sounds, not notation.) I have used it to perform from early on in its development, and IMHO it works fine for this, but the main use case is to render offline audio.

[+] djaychela|5 years ago|reply
I haven't found a library for Python that does real time sounds in the way that old home computers (BBC micro etc) used to do. I got loads of pleasure when I was a teenager making sounds on my computer and hearing them back in real time, and I'd like to get that immediacy back (I have a theory that fewer kids are interested in programming than might otherwise be as it's much less immediate and accessible than it used to be).

If anyone knows of one, I'd love to know about it.

[+] grecht|5 years ago|reply
An unfortunate name since "Pippi" means pee in German. But then again, there probably are many names that are unfortunate in some language.
[+] erikschoster|5 years ago|reply
That made my day, I had no idea. :-)

(It is named after Pippi Longstocking FWIW.)

[+] photon-torpedo|5 years ago|reply
Actually the German word is "Pipi".
[+] jwandborg|5 years ago|reply
A fortunate name since Pippi is an actual name in swedish.
[+] mhugo|5 years ago|reply
Same in French ("pipi")
[+] puranjay|5 years ago|reply
If you're interested in this, I highly encourage checking out Sonic Pi [0]. It's an open source music programming language. Also works very well as a tool to teach coding.

[0]: https://sonic-pi.net/

[+] intrepidhero|5 years ago|reply
This is really excellent! I've played around with Sonic Pi but always wished for something with more Python. I will definitely be playing with this.

I'm curious if anyone can point to a free library of samples or synths that would be good to pair with this? I can do without Sonic Pi's GUI but the included sample/synth library is a great jumping off point.

[+] sleazy_b|5 years ago|reply
I’ve been really interested in dsp for music and computer music for a while now but am kind of at a loss as to where to learn more after having gone through Xavier Serra’s excellent Coursers class. Can anyone recommend further resources for learning about the subject?
[+] mhh__|5 years ago|reply
For nitty-gritty DSP I would sit down and read a book like Proakis. It's quite dry but ultimately if you are able to handle the math it's worth it (for me at least, learning mathematical topics through the medium of python or similar is a distraction)
[+] aldanor|5 years ago|reply
Looks quite awesome, will surely check it out.

Wonder if there's any complex end-to-end examples or videos?

[+] erikschoster|5 years ago|reply
The closest thing I have right now are the first two tutorials in the docs: https://pippi.world/docs/tutorials/

These are meant to build toward a final example mixing aspects of all the tutorials into a more realistic project.

Having used pippi for my own music for about 9 years now I try to only move structures and patterns into pippi itself when I find myself writing the same things over and over in scores. In general each score tends to be structured very differently, depending on what it does. Hopefully I can communicate that in the tutorials by showing a variety of approaches, but it’s a work in progress!

[+] person_of_color|5 years ago|reply
Is there anyone making music with programming that sounds like it could be a pop song? i.e "good" - not glitchy, or experimental.