8 ms·
Velato: A programming language where source code must be a valid MIDI music file
- hoosieree 3y agoGlad to see it's written in C#. Can we get a port in F# please? https://github.com/rottytooth/Velato https://github.com/rottytooth/Velato
- tgv 3y agoThat's called a modulation.
- Optimal_Persona 3y agoWay to B# !
- Rochus 3y ago[flagged]
- tsbinz 3y agoFun :) The point of esoteric languages isn't to be practical, another example of a "strange" language is https://en.wikipedia.org/wiki/Esoteric_programming_language#Piet https://en.wikipedia.org/wiki/Esoteric_programming_language#... / https://esolangs.org/wiki/Piet https://esolangs.org/wiki/Piet
- Rochus 3y agoMaybe. But why should someone take the time to build a technolgoy intentionally without a practical use? With the same effort one can build a useful language, even adding new ideas that will advance development, which is also fun. But actually concluding from the article it seems the author was rather serious about his language; there is no indication he considered it not practical. But unfortunately there is no rationale or reference use case. EDIT: I cannot believe my top comment was flagged. So have we already reached the point on HN where you are no longer even allowed to ask about the purpose of something or express an opinion?
- AlecSchueler 3y agoYes, other things can be fun, they can even be fun while being practically useful, but this was still created for fun.
- Rochus 3y ago> but this was still created for fun Why/how do you know this was created for fun? Are you the author?
- AlecSchueler 3y agoI'm not the author. I thought you were asking the people of HN since you asked here rather than emailing the author. I've been interested in the esoteric programming language scene since 2009 and in my experience most of the work is done for the joy of it, and the joy of exploring intellectual curiosity. It's true that the author here could be an exception but, as I say, you should contact them directly if it's very important that you understand their motivation.
- Rochus 3y agoWell, it's posted here by someone for some reason. I didn't search for it, but was curious what the purpuse is of this idea, since I have a lot to do with MIDI, algorithmic composition and programming languages.
- reactordev 3y agoYour definition of usefulness and mine differ. What you find useful, I find contrived. What I find useful, you find dull. The author was indeed serious about it, in the fact that it's a thing you can play with. Brainfuck doesn't need usefulness to exist. Typescript either. It doesn't always have to be advancing the art of programming. I'd say these fun projects advance the art of mankind.
- Rochus 3y ago
- asimpletune 3y agoI can't comment directly under the OC's thread anymore, but the music he makes on his website is legitimately cool http://rochus-keller.ch/?p=237 http://rochus-keller.ch/?p=237
- Rochus 3y agoThis music is forty years old now; if you wan't to hear something more recent, here it is: http://rochus-keller.ch/?p=1268 http://rochus-keller.ch/?p=1268
- deleted 3y ago[deleted]
- throwaway0665 3y agoPerhaps it is impossible but I'd love to see a Quine in this language
- suphisys 3y agoI'm a professional composer and amateur programmer. I've been trying to write a Quine in Velato, but seems impossible to me. Source code in Velato are MIDI files, but output is plain text. In order to create a Quine you must design a MIDI that outputs text pseudo code (in Guido, Lilypond, etc. notation) which, when converted back to MIDI will yield the original Midi file. However every print char command in Velato requires at least 8 notes (in MIDI). So there's not a 1 to 1 correspondence like in other programming languages Quines. I'm no computer scientist here but this seems impossible to me.
- Y_Y 3y agoI believe all but severely limited languages are forced to admit quines, see e.g. https://math.stackexchange.com/questions/3982278/the-fixed-point-theorem-predicts-the-existence-of-quines https://math.stackexchange.com/questions/3982278/the-fixed-p...
- xpointer 3y agoHi, I'm the creator of Velato. I will be reworking the website to include more examples later this year. In the mean time, the latest version of the compiler is on github: https://github.com/rottytooth/Velato https://github.com/rottytooth/Velato No one has yet written a quine although I would love to see one -- perhaps outputting its representation in lilypond format.
- Rochus 3y agoSince you're the author I can ask you directly, what the purpose is of the language. Why did you choose MIDI as a form of representation? What kind of programs are you implementing with it? Where are these programs supposed to be executed, on MIDI instruments?
- 3y ago
- p4bl0 3y agoStrange: I submitted this more than 24 hours ago and it still says so on my list of submissions here: https://news.ycombinator.com/submitted?id=p4bl0 https://news.ycombinator.com/submitted?id=p4bl0 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! [1] https://www.dangermouse.net/esoteric/piet.html https://www.dangermouse.net/esoteric/piet.html
- Levitating 3y agoHow did you stumble on it?
- xpointer 3y agoIt's funny you link to Piet; I began Velato by asking what would Piet be as music. Some programs are instantly recognizable as Piet while others are hardly recognizable as such; the language has its own aesthetic and yet programmers bring their own style to its set of visual constraints, all through fairly basic rules. In Velato, all notes are read in relation to a root note that can change between commands, even in the middle of a single chord. That was meant to allow for more choice in how a programmer constructs a piece of music. Years later I interviewed David Morgan-Mar about Piet and his other languages https://esoteric.codes/blog/david-morgan-mar 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-aesthetics https://esoteric.codes/blog/chef-multicoding-esolang-aesthet...
- mb7733 3y ago> Keep in mind that this set of notes is not the actual program; if a MIDI file is created from this progression of notes, the concurrent notes might be interpreted in a different order in the file, and create an invalid program. 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.
- xpointer 3y agoI favored the flexibility of ordering concurrent notes differently in MIDI over having the sheet music uniquely define a program. It gives the programmer more choices in how notes can be combined. 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.
- lifthrasiir 3y agoMeta: for some reason, dates on almost all comments in this submission have been reset minutes ago and the submission resurfaced back to the front page. Possibly an HN bug? (cc: dang)
- jessekv 3y agoalternatively, python files can be interpreted as music https://github.com/vdwees/tone_trace https://github.com/vdwees/tone_trace
- chaosprint 3y agoInteresting! 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: https://strudel.cc/ https://strudel.cc/ And in my project Glicol, I use only numbers in the seq node. So 60 means middle C. Underscore means rest. https://glicol.org/ https://glicol.org/