Velato

From Esolang
Jump to: navigation, search

Velato is an esoteric programming language by User:Rottytooth, which uses MIDI files as source code. Programs in Velato, like in Fugue, are defined by the pitch and order of notes. Velato is intended to allow for flexibility in composition, so functional programs will not necessarily sound like random notes. There is a tendency for Velato programs to have jazz-like harmonies.


Language overview[edit]

All statements in Velato begin with a "command root" note; intervals from this note are translated into commands and expressions. The command root can be changed between statements, to allow for more musical (or at least less repetitive) progressions. Notes played as chords are interpreted in the order the notes appear within the MIDI track, regardless of a zero duration between them.

Commands[edit]

All statements begin with the current command root, and are followed by one of these sequences of notes:


Command Second note Third note Followed by / Notes
Change Root Note Major 2nd New root note
Let (assignment) Minor 3rd Variable as single note, then expression
Declare variable Minor 6th Variable as single note, then type
Blocks Major 3rd
While Major 3rd Expression
End While Perfect 4th
If Perfect 5th Expression
Else Major 6th
End If Major 7th
Special Commands Major 6th
Print to screen Perfect 5th Expression to print


Commands can be followed by any number of expressions. Notes used for expressions don't differentiate between major/minor or perfect/diminished. To avoid ambiguity, no augmented intervals can be used. So a tritone is always interpreted as a diminished 5th, not an augmented 4th.


Expression First note Second note Third note Followed by / Notes
value 3rd
variable 2nd Name of variable (single note)
pos. (+) int 5th Single note for each digit, ending with Perfect 5th to mark end of number
neg. (-) int 3rd Single note for each digit, ending with Perfect 5th to mark end of number
char 4th Char as ASCII int: single note for each digit, ending with Perfect 5th to mark end of number
pos. (+) double 6th Single note for each digit, first Perfect 5th to mark decimal point, second Perfect 5th marking end of number
neg. (-) double 7th Single note for each digit, first Perfect 5th to mark decimal point, second Perfect 5th marking end of number
conditional 2nd
= 2nd
> 3rd
< 4th
NOT 5th Also used for NOT < (indicating greater than or equal to) and NOT =
AND 6th
OR 7th
procedural 6th
grouping 6th
( 6th
) 2nd
math operation 5th
simple 5th
+ 3rd
- 2nd
* 5th
/ 4th
% (mod) 6th
exponential / other 7th
power 2nd
log 3rd

Types:

int = 2nd
char = 3rd
double = 4th

Examples[edit]

Hello, world![edit]

This is a sheet music representation of one possible "Hello, World" program:

Velato HelloWorld.gif

Keep in mind that the order the concurrent notes in this representation appear in the actual MIDI file will affect the program.

See also[edit]

Musical notes, another esolang based on music.

External resources[edit]

  • [1] .NET Velato compiler
  • [2] Accordion March of the Data Transmission: recording of a Velato program that copies input to output
  • [3] "Hello, World" source code in MIDI format
  • [4] "Hello, World" MIDI source code converted into a jazzy MP3
  • [5] Tutorial on constructing a "Hello, World" program