Velato: A programming language where source code must be a valid MIDI music file
velato.net
velato.net
No one has yet written a quine although I would love to see one -- perhaps outputting its representation in lilypond format.
I chose MIDI since it's a standard and leaves to the programmer the choice of tool to compose the program. There's an IDE in the works geared for live performance of the language (that will not be MIDI, but not ready to say yet how it will work; it has the same lexicon but is quite a different language in practice).
> “Velato offers an unusual challenge to programmer-musicians: to compose a musical piece that, in addition to expressing their aims musically, fills the constraints necessary to compile to a working Velato program.”
It seems like Velato’s purpose is to provide an unusual and interesting creative constraint for people who can both code and write music.
I do both on a professional level and have no idea what this sentence means; that's why I'm asking.
How about Sonic Pi? Or any modern audio toolset. So much possibility, where to start?
Creative constraint is about opening up pathways by restricting options.
You would create your tone rows and then write your composition. If you follow the rules, then it is also 12-tone serialism.
One obvious step is to try to make it bootstrapped. Have the velato compiler be a velato.mid file.
Every time I see alternative representations of knowledge/computer code/algorithms it comes to mind.
Would you expect a person to be able to achieve a mastery of this to the point where they could play and control something in an improvisation? Say something like to the character Agatha Heterodyne of Kaja and Phil Foglio's web comic _Girl Genius_ controlling an army of clanks (robots):
It would take a lot of practice to improvise Velato, but that would be amazing!
Fascinating project, xpointer!
Is the order of notes within a chord the _only_ extra info required on top of a musical score? If so, with some "tie-breaker" I think you could encode any Velato program unambiguously in sheet music.
For example, if notes in a chord were interpreted as commands from lowest to highest pitch, you could move notes up and down by octaves to determine the command order. Just a thought... I like the idea of piece-as-program.
But there could be a default ordering -- I would think reading a chord from bottom to top -- for a piece of music where the score came first and the MIDI representation or performance of that score second.
Similar note-based expression can be found on TidalCycles/Strudel. although it's not valid MIDI format anymore, you can use notation like c4, f3, and make them as "pattern". Samples are also supported in the same manner:
And in my project Glicol, I use only numbers in the seq node. So 60 means middle C. Underscore means rest.
But it's the same submission as this one which says it was submitted by me 4 hours ago.
I've been contacted a few times by HN moderation and was asked to re-submit some interesting link that didn't get traction on the first try, but it's the first time that I see a link be re-submitted on my behalf. Is that common on HN now?
Anyway, concerning Velato, I stumbled on it yesterday. I find this kind of esoteric languages (like Piet [1]) quite fun, and thought that others here may enjoy it!
Years later I interviewed David Morgan-Mar about Piet and his other languages https://esoteric.codes/blog/david-morgan-mar and wrote about the concept of multicoding, where a single text has readings in two systems that shape each other (an image and code, music and code etc) https://esoteric.codes/blog/chef-multicoding-esolang-aesthet...
Not resubmitted but re-upped. That is, we rolled back the clock on it and added some points so that it would get a placement on HN's front page. You can see the stories that get picked this way here: https://news.ycombinator.com/pool, and the system is described at https://news.ycombinator.com/item?id=26998309 and the links back from there.
When a post is older, we email an invite link (as you described) but when it's only a day or two old, we re-up the current submission. That's what happened in the present case. The timestamp munging is an artifact of this re-upping system (https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...).
Thanks for posting great submissions to Hacker News! Btw, if anyone sees a great submission that could use a re-up or a repost, please let us know at hn@ycombinator.com. (It's best when the article isn't your own stuff, but rather something that you just think is interesting.)
Can we get a port in F# please?