NONPLUSSED

From Esolang
Jump to navigation Jump to search

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.

External resources