

Skoar – A musical programming language - cidermonkey
https://github.com/sofakid/Skoarcery

======
duiker101
I am by no means, an expert in music, I can't even read it, so forgive me if
this comes as a silly question, but why this syntax? It looks very foreign to
me, but at the same time, being a programming language I would have expected
something more... verbose? is there any practical reason to for something like
this?

~~~
gtani
this is a live coding language, so trying to achieve what tidal and overtone
are. EDM type genres have recognizable formulas for the drum and bass, and
then for pads and leads above so all these environments are trying to abstract
over patterns at different levels of the music.

i can't find a real tutorial, but there's lots of material to look at:
[https://github.com/overtone/overtone/wiki/Getting-
Started](https://github.com/overtone/overtone/wiki/Getting-Started)

and this is the 1st ref:
[http://akustik.hfbk.net/publications/LiveCodingInLaptopPerfo...](http://akustik.hfbk.net/publications/LiveCodingInLaptopPerformance.pdf)

in this page:
[https://en.wikipedia.org/wiki/Live_coding](https://en.wikipedia.org/wiki/Live_coding)

___________

tidal: [http://yaxu.org/tidal/](http://yaxu.org/tidal/)

disclaimer: I've been playing synths a fair amount and i have a hard time
understanding a lot of stuff on the overtone cheat sheet

------
an_ko
I've seen so many "music programming languages" recently that I'm getting
really quite confused about which one was which and does what. Has anyone done
a comparison, or even just have a list of links?

~~~
kaoD
Keep in mind there are actually two domains in music: instruments (sound
synthesis) and orchestration. Both Skoar and Alda (which was linked yesterday)
are only orchestration languages.

I've been researching about this and narrowed down by these criteria: (1)
Modern and maintained (2) Open source (3) Multiplatform (4) Supports live
coding (5) Not MIDI-only output (6) Text-based (7) Not Java (sorry JSyn :P)

For me live coding is important since I prefer to compose music in an
exploratory fashion. Also, live performances are _cool_. Read more about live
coding and resources in [http://toplap.org](http://toplap.org)

The list in no particular order (beware of the brain dump):

·

## Overtone ([https://overtone.github.io/](https://overtone.github.io/))

The coolest kid on the block is actually a frontend to SuperCollider.

\- Clojure based.

\- VJ-ready. Integration with Processing via Quil
([https://github.com/quil/quil](https://github.com/quil/quil)) and GLSL
shaders via Shadertone
([https://github.com/overtone/shadertone](https://github.com/overtone/shadertone)).

\- Lots of tooling: [https://github.com/overtone](https://github.com/overtone)

·

## SuperCollider
([https://supercollider.github.io/](https://supercollider.github.io/))

\- Object-oriented functional language (similar to Smalltalk/Ruby/C/JS).

\- Basically Overtone minus Clojure minus VJ plus IDE.

\- Client-server architecture (which is what allows Overtone to use it as a
backend).

·

## Sonic Pi ([http://sonic-pi.net/](http://sonic-pi.net/))

\- Ruby DSL + IDE.

\- Built for Raspberry PI (but runs anywhere SuperCollider and Ruby are
available).

\- Another frontend to SuperCollider.

\- Designed to be suitable for teaching children. Teacher resources available
([http://www.sonicpiliveandcoding.com/](http://www.sonicpiliveandcoding.com/)
[http://www.raspberrypi.org/learning/sonic-pi-
lessons/](http://www.raspberrypi.org/learning/sonic-pi-lessons/))

·

## Extempore
([https://github.com/digego/extempore](https://github.com/digego/extempore))

\- Scheme-like.

\- Supports both audio and graphics.

\- Defines itself as a 'cyberphysical' programming environment
([http://dl.acm.org/citation.cfm?id=1869526](http://dl.acm.org/citation.cfm?id=1869526)).

·

## ChucK ([http://chuck.cs.princeton.edu/](http://chuck.cs.princeton.edu/))

\- Real-time sound synthesis and music creation (real-time meant it used to
take a real amount of CPU time in non-RT kernels, not sure if it's changed).

\- Time-based, concurrent programming model (they call it 'strongly-timed').

·

## Fluxus ([http://www.pawfal.org/fluxus/](http://www.pawfal.org/fluxus/))

\- Racket based.

\- Full-fledged environment.

\- Defined as 'a 3D game engine for livecoding worlds into existence', though
it supports sound too.

\- Doesn't seem to be actively maintained (most recent release dates from
April 2012).

·

## Nyquist
([https://www.cs.cmu.edu/afs/cs.cmu.edu/project/music/web/musi...](https://www.cs.cmu.edu/afs/cs.cmu.edu/project/music/web/music.software.html))

\- (Still researching...)

·

## Csound ([http://www.csounds.com/](http://www.csounds.com/))

\- (Still researching...)

\- Live coding added in a recent version.

\- Orchestration and synthesis are separate languages.

·

## Tidal ([http://yaxu.org/tidal/](http://yaxu.org/tidal/))

\- Haskell based.

\- Seems to support audio and graphics (defines itself as live coding of
patterns).

\- (Still researching... I just came to know it in a link here.)

·

## Skoar
([https://github.com/sofakid/Skoarcery](https://github.com/sofakid/Skoarcery))

\- Another SuperCollider frontend.

\- Only orchestration, though I guess it supports different instruments
created in SuperCollider.

\- Doesn't seem to support live coding? (Added to the list until I research
more.)

·

## MORE

I just found these in the TOPLAP wiki (and Googling around) but had no time to
comb through them. Listed in no particular order:

\- [https://github.com/edne/pineal](https://github.com/edne/pineal)

\-
[https://github.com/createuniverses/praxis](https://github.com/createuniverses/praxis)

\- [http://charlie-roberts.com/gibber/about-gibber/](http://charlie-
roberts.com/gibber/about-gibber/)

\- [https://github.com/LuaAV/LuaAV](https://github.com/LuaAV/LuaAV)

\-
[http://hyperyarn.criticalartware.net](http://hyperyarn.criticalartware.net)

\-
[http://www.renickbell.net/conductive/doku.php/](http://www.renickbell.net/conductive/doku.php/)

\- EXTRA: Live coding light shows
[https://github.com/brunchboy/afterglow](https://github.com/brunchboy/afterglow)

~~~
zebproj
Several months ago, I compared musical languages, writing essentially the same
thing in each one:

[https://www.safaribooksonline.com/blog/2014/11/07/making-
com...](https://www.safaribooksonline.com/blog/2014/11/07/making-computers-
sing/)

I also wrote one myself:

[http://paulbatchelor.github.io/proj/sporth](http://paulbatchelor.github.io/proj/sporth)

~~~
kaoD
Thanks! I ended moving the information to a Gist[0] for easier updating as I
research more (hope to eventually settle for a few environments and actually
try them). I'll check your links ASAP and add relevant info to the Gist.

Sporth reminds me a lot of
[https://forthsalon.appspot.com/](https://forthsalon.appspot.com/) They'd make
great partners :)

[0] [https://gist.github.com/alvaro-
cuesta/dc714c06a8e672bebd90](https://gist.github.com/alvaro-
cuesta/dc714c06a8e672bebd90)

~~~
zebproj
I got a lot of inspiration from forthsalon.

It was only after I built Sporth that I realized how expressive a Forth can be
for creative coding.

------
zebproj
Not going to lie, this seems like a terrible language for musicians to compose
in. Maybe I need time to get used to it, but it looks more like an esoteric
programming language to me. The amount of brackets needed for it to work is
just begging for typos.

Furthermore, the syntax doesn't feel "readable" like a music score. The
symbolic notation doesn't click for me. I'd like to be able to hear what is
going on in my head, and this just doesn't seem designed for that. By
contrast, Alda (a musical language posted yesterday) is very readable to me as
a musician. ABC notation and Lilypond were very good sources of inspiration.

There are some things I like about Skoar. The use of a really good audio
engine to produce the sound wins in my book (there doesn't seem to be any
obvious way to control the sound itself, though.) I think the way you express
dynamics using hashes is pretty novel. (May want to consider using decibel
scaling instead of linear scaling.) I like the fact that you have incorporated
programming elements like conditionals, loops, and variables.

Both Alda and Skoar basically focus on conventional western music notation,
which is perhaps the most boring part of computer generated music. Sound
design plays much greater importance, and it makes me sad to see no focus on
that whatsoever (Sound is uh... the part that actually makes the music).

I'm hesitant to share this on HN because it's not done yet, but I too, made
yet another musical language:

[http://paulbatchelor.github.io/proj/sporth](http://paulbatchelor.github.io/proj/sporth)

Here's the code:

[https://github.com/paulbatchelor/sporth](https://github.com/paulbatchelor/sporth)

And here's what it can sound like (everything minus the outdoor ambient sample
is synthesized in Sporth):

[https://soundcloud.com/thebatchelorlab/scheale](https://soundcloud.com/thebatchelorlab/scheale)

~~~
gtani
I'll watch that repo, i've been thinking of going down the maxforLive rabbit
hole. never heard of soundPipe before.

The tl'dr to these languages/dev environments/whatever is that they attempt to
give you textual control over some subset of what a DAW (ableton or FL studio
or logic Pro) can do, so that you can compose/perform/synthesize on the fly. I
think all of these would be hard to understnad for somebody that hasn't
actually read a manual for, say, Ableton, or some hard synth or VST that has a
lot of sound sources, LFO/envelope/delay/effects routing matrix.

___________________________

there's another notation/synthesis framework that was bandied about, audioKit

[https://news.ycombinator.com/item?id=9903760](https://news.ycombinator.com/item?id=9903760)
[https://news.ycombinator.com/item?id=8574558](https://news.ycombinator.com/item?id=8574558)

__________________________

also, one of those threads had a reference to music-N, which is a good (and
short!) historical reference page:
[https://en.wikipedia.org/wiki/MUSIC-N](https://en.wikipedia.org/wiki/MUSIC-N)

~~~
zebproj
I'm actually the creator of soundPipe, so it makes sense that you probably
haven't heard of it.

Sporth is definitely a language for people with experience with modular
synthesis and digital signal processing. People with experience in SC or
Csound should feel pretty comfortable (in fact, many Sporth modules utilize
algorithms taken directly from Csound opcodes)

Soundpipe is a library which takes a very modular approach as well (sporth is
a language built on top of SoundPipe).

I know the AK guys quite well, and we're actually working together to get
Soundpipe working with it.

People interested in how MUSIC-N languages work should look at Csound, which
is a direct descendent of the MUSIC-V language. Their syntax is very similar,
and many MUSIC-N files have been ported to Csound.

~~~
gtani
check. I'm looking for rubber bands, like on my mopho and ms2000 i like to
rubber band the filter, resonance, key tracking and other pots/encoders
together, so... exponential/log and inverse rubber bands.

~~~
zebproj
What exactly is a "rubber band"?

~~~
gtani
it's just a pot/fader/encoder that can send lots of CC's at the same time

------
weirdkid
I don't see a way to do triplets with this notation.

