6 ms·
Live Coding in Sporth: A Stack-Based Language for Audio Synthesis [pdf]
- mud_dauber 8y agoYay! Somebody else has discovered Forth's principles.
- unixhero 8y agoWhere would one read about Forth's principles? Colour me intrigued.
- macintux 8y agoI don't know the best resource, but Thinking in Forth should get you started. http://thinking-forth.sourceforge.net http://thinking-forth.sourceforge.net
- mud_dauber 8y agoYou beat me to it. Thinking in Forth is indeed the place to start.
- jdmoreira 8y agoStarting FORTH might be a better introduction. It's also from Leo Brodie. https://www.forth.com/starting-forth/ https://www.forth.com/starting-forth/
- dogprez 8y agoI played around with Forth last year and found it very fun. Similar to Lisp it has a simple ruleset with which you can build up abstractions that almost look like a DSL. I'd say it sits somewhere between Assembly and C. It's like writing assembly but you don't have to worry about register assignment.
- sitkack 8y agoI recommend playing with a postscript repl, either ghostscript or couple of the online ones. http://logand.com/sw/wps/index.html#sec-1 http://logand.com/sw/wps/index.html#sec-1
- protomyth 8y agoIf you go the PostScript route then check out the PostScript Language Tutorial and Cookbook (blue book). It is available in a lot of places on the net and quite a nice tutorial.
- sitkack 8y agoGreat recommendation. https://www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF https://www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF fnal.gov is the largest, most complete trove of postscript language material on the net.
- lake99 8y agoWas the pun on colorForth intended? Just in case it wasn't, colorForth was also created by the creator of Forth, and color has syntactic significance here.
- nickpsecurity 8y agoSince the others gave you promotional material, I'll give you a write-up that discusses the good and weird sides of it: https://news.ycombinator.com/item?id=1680149 https://news.ycombinator.com/item?id=1680149 The weird stuff makes a lot of people decide not to use it. So, they should know ahead of time. I do think there's potential for a Forth with less weird stuff or more compatible with C. There could even be one already given a benefit of Forth is it's easy to write interpreters for it. On that note, here's a tutorial series illustrating that: http://blog.asrpo.com/forth_tutorial_part_1 http://blog.asrpo.com/forth_tutorial_part_1
- jkrukowski 8y agoI love it, I used it in my project https://bitbucket.org/jkru/synthesthesia/src https://bitbucket.org/jkru/synthesthesia/src
- zebproj 8y agocool! any video demos of this in action?
- jarmitage 8y agoSaw Paul present this last year at the International Conference on Live Coding, really cool project. He has some more excellent work here: https://github.com/PaulBatchelor https://github.com/PaulBatchelor A see also: https://github.com/mollerse/ait-lang https://github.com/mollerse/ait-lang
- markatkinson 8y agoAwesome! I just started getting into FM synthesis using the Korg Volca series, and this seems like a really neat compliment to that as a developer.
- adamnemecek 8y agoPaul is a beast. His work is central to AudioKit https://github.com/AudioKit/AudioKit https://github.com/AudioKit/AudioKit
- andyonthewings 8y agoIs there any live coding video recording that demonstrates this? I am a noob to live coding performance and I am curious how this work in practice.
- pierrec 8y agoThese days I've been working on a side project based on Sporth. I found the stack-based system is a really efficient way of representing audio graphs, and if you know a bit of DSP you can get the sound you want pretty quickly. I haven't even started using PolySporth, which seems like an important feature/complement to the language, but I'm still having lots of fun with plain Sporth. I wrote lots of Sporth scripts while learning the language, here's a couple: Drone spirit - code (this one has comments): https://gist.github.com/pac-dev/af6f7b7b1786bf102c88592183de0f59 https://gist.github.com/pac-dev/af6f7b7b1786bf102c88592183de... audio: http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60.r16.cf2.rackcdn.com/spirit.mp3 http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60... Harmo - code: https://gist.github.com/pac-dev/f4c4cfdb1fb03bf6ede81aac40870586 https://gist.github.com/pac-dev/f4c4cfdb1fb03bf6ede81aac4087... audio: http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60.r16.cf2.rackcdn.com/harmo.mp3 http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60... Monk voice - code: https://gist.github.com/pac-dev/76660a90406c4d8fe923fbb030944df6 https://gist.github.com/pac-dev/76660a90406c4d8fe923fbb03094... audio: http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60.r16.cf2.rackcdn.com/monk.mp3 http://007ee821dfb24ea1133d-f5304285da51469c5fdbbb05c1bdfa60...
- zebproj 8y agoThese are quite beautiful. If you are willing, I would to add these examples to the Sporth distribution. To be honest, you're not missing too much with PolySporth. Actually, you're better off pretending it doesn't exist for now ;) It was an experiment that tried to add concepts like polyphony and note events in time. Despite the serious time investments I put into it, I have never seriously used it. Maybe someday I'll re-examine it and do something interesting with it. Happy Sporthing, -P
- pierrec 8y agoThanks! That's interesting, I've been unsure about the importance of PolySporth. It seems important if you want to create generative compositions in the traditional sense, by which I mean focusing more on the sequence of notes rather than the timbre. But for me, I think I'll always return to manual sequencing if I want to get this kind of traditional result. Whenever notes are generated, I just want to manually re-arrange them. I guess that's one of the reasons I still haven't learned PolySporth. But if I want to create a piece where timbre is central (or if I want to work on the timbral portion of a piece that has both), then programming is actually a super effective tool, and that's where Sporth nails it for creative exploration. As for using my examples, yes, you can totally use and modify them with attibution (I should probably add a proper licence :)
- jancsika 8y ago> There is no concept of a control rate signal, a traditional feature in other computer-music languages like Csound, SuperCollider, MaxMSP, or PD. Hm... what is a control rate signal in Pd?
- pierrec 8y ago"As with most DSP software, there are two primary rates at which data is passed: sample (audio) rate, usually at 44,100 samples per second, and control rate, at 1 block per 64 samples" (https://en.wikipedia.org/wiki/Pure_Data https://en.wikipedia.org/wiki/Pure_Data) This is actually kind of annoying with Pd as it's not always clear what rate an object is running at.
- jancsika 8y agoCan you give an example? I maintain a fork of Pd, and I'm still not clear what the Sporth author, that Wikipedia article, nor you are talking about.
- jdmoreira 8y agoI've never used Pd or any of the others so I'm guessing here. Could it be the equivalent to an 'lfo input'. The rate at which it controls parameters?
- jancsika 8y agoThat could be the implication, but it's not the way Pd works. For example, when you make a signal connection (thick wires) in Pd you immediately get a signal "flowing" through that part of the diagram. It is similar to making a connection between two modules on a Buchla synthesizer. That is very useful for prototyping because you immediately get aural feedback as you connect things together. (It's also efficient because you are doing computation on vectors of data.) That doesn't happen with control objects in Pd. When you make a control connection (thin wires) no function gets called until you somehow trigger an event that causes the object to output some data. That is very useful for prototyping because you can make arbitrary turing-complete scripts full of branches of heterogeneous data which only get computed sporadically. I guess someone could write a library cloning the core DSP objects and have them do "control rate" computations. That is, have them do a single computation per block, and copy that value for the remaining samples of the block. I imagine no one has done that for the same reason Pd only has a single numeric (float) type-- it's good enough as is.
- merongivian 8y agoNot entirely related to sporth, but i created a small dsl for live coding with ruby in the browser: https://negasonic.herokuapp.com/ https://negasonic.herokuapp.com/
- zphds 8y agoHere's another similar library for Clojure. https://github.com/overtone/overtone https://github.com/overtone/overtone Recommend this talk that made Music 'click' for me. Also fun if you are trying to read GEB and generate cannons. https://www.youtube.com/watch?v=Mfsnlbd-4xQ https://www.youtube.com/watch?v=Mfsnlbd-4xQ
- zebproj 8y agoI am the developer of Sporth. It's nice to see this project listed here. Happy to answer any questions here or on GH. --- Here are some Sporth links, for those interested: The main Sporth project page: http://paulbatchelor.github.io/proj/sporth http://paulbatchelor.github.io/proj/sporth Sporthlings: a collection of Sporth compositional etudes: http://paulbatchelor.github.io/sporthlings/ http://paulbatchelor.github.io/sporthlings/ Sporthlings audio as a youtube playlist: https://www.youtube.com/playlist?list=PLgEE92LPHEljTLN9gFZr21ETOBxQueoTQ https://www.youtube.com/playlist?list=PLgEE92LPHEljTLN9gFZr2... The Sporth Cookbook: documentation on Sporth, as well as some analysis of Sporth patches: http://paulbatchelor.github.io/proj/cook/ http://paulbatchelor.github.io/proj/cook/
- garb_ 8y agoHi! I'm trying to install Spigot and it looks like the github for Runt no longer exists? Is it available elsewhere?