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

Safe HaskellNone

Cmd.Msg

Contents

Synopsis

Documentation

data Msg Source #

Constructors

Ui UiMsg.UiMsg

Message from the UI.

Midi Midi.ReadMessage

Incoming midi message.

InputNote InputNote.Input

Incoming abstract note. This is meant to enter a note and is not a MIDI NoteOn, though NoteOns may very well be translated into these. These are not generated from any subsystem, but instead translated from other msgs (such as Midi).

Transport Transport.Status

Message from the transport/play thread.

DeriveStatus BlockId DeriveStatus

Message about the derivation status, from the background derivation threads.

Socket Handle ReplProtocol.Query

Message from the REPL socket, includes the socket handle than can be used to write a response. Whoever responds to it should close the handle.

Instances

data DeriveStatus Source #

Constructors

OutOfDate

The current derivation is out of date, but work has not yet started on a replacement. The new Performance is already in state_current_performance but not in state_performance yet.

Deriving 
DeriveComplete !Performance !ImStatus 
ImComplete 

data ImStatus Source #

Constructors

ImStarted

im subprocess in progress

ImUnnecessary

no im notes, so no subprocesses started

Instances

data Performance Source #

This holds the final performance for a given block. It is used to actually play music, and poked and prodded in a separate thread to control its evaluation.

This is basically the same as Result. I could make them be the same, but Performance wasn't always the same and may not be the same in the future.

Unlike other records, the fields here are all lazy. This is because I need to put an unevaluated Performance into Cmd.state_current_performances, and then force the fields in a separate thread. Also I need to modify perf_damage without forcing any of the others.

Constructors

Performance 

Fields

force_performance :: Performance -> () Source #

Force a Performance so that it can be used without a lag.

views

text :: Msg -> Maybe (Key.Key, Maybe Char) Source #

The text that this keydown wants to enter, if any.

char :: Msg -> Maybe (UiMsg.KbdState, Char) Source #

Printable keycap down. This is different from text because it should be just the keycap, not taking shift or alt or anything into account.