Bubobubobubobubo/sardine

Rewrite SPL

Closed this issue · 1 comments

SPL is too complex and not effective enough. Some changes are needed to make the language more expressive but also more discoverable for users. I believe that it could be much better just by adding a few more functions and by correcting the grammar to really embrace the list processing model Sardine currently follows:

  • removing numbers before sample names. It just breaks everything.
  • supporting global scale and scale function for user friendly melodies
  • support for variables using (set id val) and (get id)
  • real euclidian rhythms (durations, not boolean mask) using the (e steps nb_steps rotation) function
  • removing some operators ($, replaced by the (time), (phase), (beat), (unix) function, etc...)
  • Octave down is _, silence is still .. Repaired '.
    • Limiting MIDI up and down when using ' and _.
  • some goodies like (drunk)
  • Updating process.py to line up with SuperDirt changes.
  • Fixed the new LFOs: (ulsaw), (ultri) and (ulsin).
  • Adding a new binary rhythm generator with rotation (br number rot)
    • Adding a variant for generating binary lists (bl number rot)

Some bugs still remain:

  • Polyphony is wonky, things revert back to list very easily

Documentation is important. I don't want to push these changes to the user without documenting everything properly. I guess that it is time to rework the poor Function Library section to make it obvious that you can do more than just lining numbers.

URGENT: I need to finish the update of the function library part of the documentation.