Skip to content

Latest commit

 

History

History
56 lines (47 loc) · 2.72 KB

TODO.md

File metadata and controls

56 lines (47 loc) · 2.72 KB

TO DO

Priority Triage

  • Better logging. Needs to be compile-out, multiple loggers, efficient output, separate loglevel per logger, compile-out by loglevel
    • Logger::asyncLog to be called from isr to run in loop to avoid disrupting isr
  • Efficient print lib
  • Finish nailing down global musicality parameters
    • Range, Deviation, Tonality, Coherence?

Scale/Temperament

MIDI scheduler

  • priority queue of messages based on their intended tick time?
  • abstract "pitch+duration" and "articulation" structs instead, from which messages are derived?
    • getting there, but how to abstract it? What's useful to have on the abstract Performer, vs. in a specific concrete performer implementation?

MIDI clock resilience

  • The highest bpm that I can reach without dropping notes and locking up the serial is about 160 (on a Leonardo).
  • This is with resolution of 1000us. I hate to take away resolution further than that.
  • polyphonic composition doesn't seem to play all notes at once

To Triage

  • Doxygen
  • Instead of the current nested model, what if modules were chained. Then, for instance, a module that produces a composition could feed a module that arpeggiates in some way based on that composition.
  • replace all byte with uint8_t bc actually Arduino.h's "friendly" things are terrible.
  • PerformPolyphonic creates too busy of lines. It should use its polyphony to allow holds and chords, not just to play four overlapping melodies.

Features Requiring Additional Hardware

  • Auto-reset, in case of hang
    • Some kinds of "hang"-like behaviour could be under interrupt monitor, such as an interrupt that sets a "ms since a note was processed" global, which is updated when sending MIDI notes.

RNG

Core Featureset

  • EEPROM storage of parameters
  • Rotary encoder and switch hardware interface
    • Optional potentiometer interface module
  • ToneRowComposer
  • Euclidean rhythms
  • Markov (reads transition tables from SD)
  • Separate composer classes for poly and mono
  • Multitimbral
    • Performers can use this for multiple voice parts, or more precise articulation

Expanded Featureset