Karya, built on 2018-02-23T20:23:55 (patch cf8565b7ac832266878af99a942555d139065f12)

Safe HaskellNone




Quickcheck tests for derive.

This has never been used because it's not done yet. Maybe I should some day...

TODO complete

  • make Arbitrary for BlockSpecs + make a simple deriver that creates event and midi output skeletons
  • test simple deriver to make sure it's accurate itself
  • assert that the reduced deriver output equals the simple deriver output
  • basic pitches: If the score was created with notes aligned to note starts, then every NoteOn should have the appropriate key, there should be no pitch bends, and "same note" should be the only reason for a channel split
  • basic controls: Given randomly placed control events, notes have the correct control curves. Don't worry about times or midi.
  • slicing: Given some simple note parents (tuple, place, ...), pitches and controls are still associated with the right notes as above. Don't worry about times, just that the right notes and the right controls.
  • block call property: a couple levels of nesting for block calls, notes still have the expected pitches and controls as above
  • inversion: as 'basic pitches' and 'basic controls', but controls are below the note tracks, results should be the same



simple_pitch :: Gen Block Source #

Random length track of "" notes with pitches.

gevents :: Gen [Event.Event] Source #

Random list of non-overlapping events, some of which are adjacent.

simple derive

simple_derive :: [Block] -> [Score.Event] Source #

Simplified deriver.

derive_block :: State -> Blocks -> Skeleton.Skeleton -> [Track] -> [Score.Event] Source #

Derive a block. Use the skeleton to make a tree, then find the pitch and control tracks by looking up and down the tree.

data Sample Source #




type NoteTrack = (Events, [Sample]) Source #

(note track, pitch track, controls)

block1 :: [([Char], [(Integer, Integer, [Char])])] Source #

Orphan instances