Karya, built on Mon Jul 24 11:39:07 PDT 2017 (patch 33511aca01257b76b88de7c7a2763b7a965c084e)

Derive.DeriveQuickCheck

Contents

Description

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

Synopsis

# Documentation

Random length track of "" notes with pitches.

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 #

Constructors

 Sample Fieldssample_name :: Text* for pitchsample_pos :: RealTime.RealTime sample_val :: Text

Instances

 # MethodsshowsPrec :: Int -> Sample -> ShowS #showList :: [Sample] -> ShowS #

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

(note track, pitch track, controls)

data State Source #

Constructors

 State Fields

Instances

 # MethodsshowsPrec :: Int -> State -> ShowS #show :: State -> String #showList :: [State] -> ShowS #

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

# Orphan instances

 # Methods