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.