NONPLUSSED
NONPLUSSED is a language for MIDI algorithmic composition, created by User:NoWhy, and inspired by false memories of Stockhausen's Kurzwellen score. The language is currently (October 8 2025, CET) a work in progress.
| Command | Description | 
|---|---|
| x | Play note | 
| _ | Rest | 
| ? | Chance to skip next character | 
| @ | Warp to random @ | 
| 5[] | Loop 5 times. Can be 0-9 | 
| + | Increase active counter | 
| - | Decrease active counter | 
| p | Switch to pitch counter | 
| d | Switch to duration counter | 
| v | Switch to velocity counter | 
| r | Randomize active counter | 
| o | Reset all values | 
| ~ | Increase speed | 
| ^ | Randomly pick between next two characters, skip the other. | 
| < | Reverse playback, until bracket or @ | 
| ! | Toggle (pause/resume) next MIDI channel. Rolls over. This means a mono score will pause itself | 
| % | Any random character, except [] (for now) | 
| * | Destructive note. Note: you will invite runtime errors. See section Notes on runtime errors | 
| t | Time Command. (Unimplemented) Effect is based on system clock. See section Time Command | 
| # | Comment | 
Default values for speed, pitch, duration and velocity, the meaning of speed, the meaning of destructive note and the increase/decrease amounts are purposefully left open to interpretation by the programmer. Each line corresponds to a MIDI channel.
Notes on runtime errors
If a runtime error occurs, three things can happen to the line that caused it:
- the MIDI line is terminated
- the MIDI line is restarted
- a randomly generated MIDI line replaces the culprit
Examples
A mono example using warps
5[r@x_xrx__x@xrxrxrx@_x_xrx_xx]
MIDI channel 0 and 1 use the same score
5[r@x_xrx__x@xrxrxrx@_x_xrx_xx] 5[r@x_xrx__x@xrxrxrx@_x_xrx_xx]
A longwinded example
v?-p7[r^36[x_x_x^_xxr]d9[+]px________?or]9[rx_xxx_x_x__x~5[~]] v?-p7[r^36[x_x_x^_xxr]d9[+]px________?or]9[rx_xxx_x_x__x~5[~]] v?-p7[r^36[x_x_x^_xxr]d9[+]px________?or]9[rx_xxx_x_x__x~5[~]]
using every v0.2 feature
v--9[?_]o7[d9[+++?+]prx____rx___________rx?<3[?_]v-p] v--9[?_]o7[d9[+++?+]prx____rx___________rx?<3[?_]v-p] v--9[?_]o7[d9[+++?+]prx____rx___________rx?<3[?_]v-p] v9[-]p2[9[?!_______?___?!_______^<!]] v9[-]p2[9[@xxxx@xxx?xxxxx@rxxxxxx@r@___?___@_______]] v9[-]p2[9[@xxxx@xxx?xxxxx@rxxxxxx@r@___?___@_______]]
Discovered constructs
"Features" that weren't planned.
The program will keep looping until p (random character) evaluates to @ (warp to random @)
9[~]vrdrpr9[~rx_+x___rx_%p+__+x___rx__x+<]@x+x++x----x+x
Time Command
| Hour | Effect | 
|---|---|
| 00 | Set duration to maximum value, velocity to minimum value, speed to minimum value | 
| 01 | tbd | 
| 02 | tbd | 
| 03 | Reverses any line | 
| 04 | tbd | 
| 05 | Spawns a malformed clone | 
| 06 | Spawns a clone | 
| 07 | tbd | 
| 08 | Each command executes twice | 
| 09 | Swaps +'s and -'s | 
| 10 | tbd | 
| 11 | tbd | 
| 12 | tbd | 
| 13 | tbd | 
| 14 | tbd | 
| 15 | tbd | 
| 16 | tbd | 
| 17 | tbd | 
| 18 | tbd | 
| 19 | tbd | 
| 20 | tbd | 
| 21 | tbd | 
| 22 | tbd | 
| 23 | tbd | 
Implementations
NONPLUSSED prototype. A hideous first prototype written in Processing 4.