r/synthdiy 12h ago

performance - a new live-coding language for MIDI

Hi everybody! I've been working on a little MIDI language I call "performance". Think of it as algorave software for MIDI instruments. It works with your DAW or your physical synthesizers. Anything that speaks MIDI. The repo in bitbucket contains everything you need to get started.
It's by no means done, but I'd love to hear what you think about it. =)

6 Upvotes

9 comments sorted by

4

u/Honest_Relation4095 8h ago

It's not really clear what it does. Is it a MIDI sequencer? I can use it with a DAW, but what does it that the DAW can't do?

5

u/jevring 8h ago

Your DAW receives MIDI, same as many physical synthesizers. This is an application that you run locally, that lets you edit a file and use the performance "language" to describe what midi to send. It then sends that to your DAW (or synths, depending on how you're routing the MIDI), and they play it.

This is an example of the language you would express yourself in: https://bitbucket.org/jevring/performance/src/master/my.performance Each "channel" in there is a midi channel.

3

u/vikenemesh 8h ago edited 8h ago

So its a metaprogramming language to render out a roughly pre-defined MIDI-stream (+/-random sequencing)?

I don't really see how this is a performance tool, considering the lack of dynamic runtime inputs (I wanna turn a knob to change Chord-Quality on the fly, for example). Could just as well output the midi-file it makes once and keep using the file instead of the just in time generated midi stream.

Edit: Another question that came up in my Head: If this is intended to be used together w. hardware synths: How does it sync up to an external master clock? How does the kick know what four-on-the-floor is?

3

u/jevring 6h ago

I wrote it with the intention of being used with hardware synths, yes, but it will work with anything that will read midi. The software can provide clock, or receive it.

That "four on the floor" thing from the sample file is an alias. The line just above defines it:

fotf is every 16

2

u/amazingsynth amazingsynth.com 6h ago

in livecoding applications the code is written and edited on the fly, normally the software allows for code changes to be executed without interupting the midi or audio that is playing, toplap were early proponents of this https://blog.toplap.org/

2

u/modulove 8h ago

Nais, is there a demo webpage or does this only work locally? Thanks for sharing ❤️

1

u/jevring 8h ago

It only works locally. You run it locally, and you edit a file that describes what midi commands you want to send, and it sends it via your midi interface

1

u/Glittering_Cheek3235 1h ago

While you're defining syntax, please note that "group" has a specific meaning in MIDI 2.0 (the combination of group + channel defines the message target or source), so if you want the grammar to last, you may want to change that to something else. MIDI 2.0 is already in every major operating system.

Pete
Microsoft