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

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

 # MethodsshowsPrec :: Int -> Msg -> ShowS #show :: Msg -> String #showList :: [Msg] -> ShowS # # MethodsformatList :: [Msg] -> Doc 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

Instances

 # MethodsshowList :: [DeriveStatus] -> ShowS # # MethodsformatList :: [DeriveStatus] -> Doc Source #

data ImStatus Source #

Constructors

 ImStarted im subprocess in progress ImUnnecessary no im notes, so no subprocesses started

Instances

 # MethodsshowList :: [ImStatus] -> ShowS #

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 Fieldsperf_derive_cache :: Cache perf_events :: Vector.Vector Score.EventThis is the forced result of a derivation.perf_logs :: [Log.Msg]Logs from the derivation are written separately.perf_logs_written :: BoolThe logs are only written on the first play, to minimize error spam. So there's a flag which says whether these logs have been written or not. I don't clear the logs, so cache_stats can inspect them.perf_track_dynamic :: TrackDynamic perf_integrated :: [Integrated] perf_damage :: ScoreDamageScoreDamage is normally calculated automatically from the UI diff, but Cmds can also intentionally inflict damage to cause a rederive.perf_warps :: [TrackWarp.TrackWarp] perf_track_signals :: Track.TrackSignals perf_ui_state :: Ui.StateThis is the score state at the time of the performance. It's needed to interpret perf_track_signals, because at the time signals are sent (in cmd_play_msg), the Ui.State may have unsynced changes.

Instances

 # MethodsshowList :: [Performance] -> ShowS # # MethodsformatList :: [Performance] -> Doc Source #

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

# views

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

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