Karya, built on Sun Nov 26 01:04:37 PST 2017 (patch 0a920b2bde70c0cbac8ee09d158064798b61bbe5)

Safe HaskellNone

Derive.Call.Make

Contents

Description

This is like Derive.Call, but higher level. It has templates for creating calls.

Synopsis

Documentation

data Calls d Source #

Bundle a generator and transformer together, so I can define them together. The rationale is described in CallMaps.

Constructors

Calls 

Fields

attributed_note :: Module.Module -> Attrs.Attributes -> Calls Note Source #

This is a specialization of transform_notes that adds Attributes.

environ_note :: Typecheck.ToVal a => Module.Module -> CallName -> Tags.Tags -> Doc.Doc -> Key -> a -> Calls Note Source #

This is a specialization of transform_notes that sets an environ value.

control_note :: Module.Module -> CallName -> Score.Control -> Signal.Y -> Calls Note Source #

This is a specialization of transform_notes that sets a control.

transform_notes :: Module.Module -> CallName -> Tags.Tags -> Doc.Doc -> Sig.Parser a -> (a -> NoteDeriver -> NoteDeriver) -> Calls Note Source #

The generator either derives subs or derives a new Call.note if there are no subs, and then applies the transform. The transformer call just applies the transform.

environ :: (Typecheck.ToVal val, Taggable d) => Module.Module -> Key -> Doc.Doc -> Sig.Parser a -> (a -> val) -> Transformer d Source #

Create a transformer that just sets an environ value. This is higher level and more concise than using the = transformer.

environ_val :: (ShowVal.ShowVal a, Typecheck.ToVal a, Taggable d) => Module.Module -> CallName -> Key -> a -> Doc.Doc -> Transformer d Source #

Make a call that sets an environ key to a specific value.

add_flag :: Module.Module -> CallName -> Doc.Doc -> Flags.Flags -> Transformer Score.Event Source #

Make a call that adds a flag.

modify

modify_generator :: Module.Module -> CallName -> Doc.Doc -> (Deriver (Stream.Stream a) -> Deriver (Stream.Stream a)) -> Generator a -> Generator a Source #

Make a modified version of an existing call. Args are the same.

modify_generator_ :: Doc.Doc -> (Deriver (Stream.Stream a) -> Deriver (Stream.Stream a)) -> Generator a -> Generator a Source #

Like modify_generator, but inherit metadata from the original call.

modify_transformer :: Module.Module -> CallName -> Doc.Doc -> (Deriver (Stream.Stream a) -> Deriver (Stream.Stream a)) -> Transformer a -> Transformer a Source #

Make a modified version of an existing call. Args are the same.

modify_calls_ :: Doc.Doc -> (Deriver (Stream.Stream a) -> Deriver (Stream.Stream a)) -> Calls a -> Calls a Source #

Modify a generator transformer pair, inheriting metadata.

modify_call :: Module.Module -> CallName -> Doc.Doc -> (a -> b) -> Call a -> Call b Source #

val calls

modify_vcall :: ValCall -> Module.Module -> CallName -> Doc.Doc -> (BaseTypes.Val -> BaseTypes.Val) -> ValCall Source #

Make a new ValCall from an existing one, by mapping over its output.