Safe Haskell | Safe-Inferred |
---|
Lilypond compiles are always kicked off manually.
I used to have some support for automatically reinvoking lilypond after changes to a block, but it didn't seem too useful, since any useful amount of lilypond score takes quite a while to compile.
Set 1t to equal one quarter note, quantize to 16th notes. Configure "inst" with short and long names, then change them.
LLily.set_quarter_duration 1 LLily.set_quantize Lilypond.D16 LLily.modify_config =<< LLily.set_staves [("inst", "long", "short")] LLily.modify_staff "inst" $ Lilypond.short #= "a" . Lilypond.long #= "b"
Synopsis
- get_config :: Ui.M m => m Config
- modify_config :: Ui.M m => (Config -> Config) -> m ()
- with_config :: Cmd.M m => Config -> m a -> m a
- set_quarter_duration :: Ui.M m => RealTime -> m ()
- set_quantize :: Ui.M m => Duration -> m ()
- set_dotted_rests :: Ui.M m => Bool -> m ()
- toggle_display :: Ui.M m => Util.Instrument -> m ()
- set_code :: Ui.M m => Util.Instrument -> [Text] -> m ()
- modify_staff :: Ui.M m => Util.Instrument -> (StaffConfig -> StaffConfig) -> m ()
- set_staves :: Ui.M m => [(Text, Instrument, Instrument)] -> m (Config -> Config)
- blocks :: Title -> [(Title, Id.BlockId)] -> Cmd.CmdL Text
- block :: Id.BlockId -> Cmd.CmdL Text
- block_inst :: Maybe Text -> Util.Instrument -> Id.BlockId -> Cmd.CmdT IO Text
- solo_instrument :: ScoreT.Instrument -> Config -> Config
- block_title :: Title -> Id.BlockId -> Cmd.CmdT IO Text
- current :: Cmd.CmdL Text
- view_block :: Id.BlockId -> Cmd.CmdL ()
- view :: Cmd.CmdL ()
- from_events :: [Score.Event] -> Cmd.CmdL Text
- compile_explicit :: Title -> [Movement] -> Cmd.CmdL Text
- compile_extract :: Title -> [Score.Event] -> Cmd.CmdT IO Text
- block_id_title :: Id.BlockId -> Title
- block_ly :: Cmd.M m => Id.BlockId -> m Lazy.Text
- convert :: Cmd.M m => Id.BlockId -> m [Event]
- e_note :: Event -> (Time, Time, Text)
- derive :: Cmd.M m => Id.BlockId -> m [LEvent.LEvent Score.Event]
- block_events :: Cmd.M m => Id.BlockId -> m [LEvent.LEvent Score.Event]
- block_events_unnormalized :: Cmd.M m => Id.BlockId -> m [LEvent.LEvent Score.Event]
- sel_events :: Cmd.M m => m [LEvent.LEvent Score.Event]
- root_sel_events :: Cmd.M m => m [LEvent.LEvent Score.Event]
- filter_logs :: [LEvent.LEvent a] -> [LEvent.LEvent a]
- get_sel :: Cmd.M m => Bool -> (Id.BlockId -> m [LEvent.LEvent Score.Event]) -> m [LEvent.LEvent Score.Event]
config
get_config :: Ui.M m => m Config Source #
with_config :: Cmd.M m => Config -> m a -> m a Source #
set_quarter_duration :: Ui.M m => RealTime -> m () Source #
set_quantize :: Ui.M m => Duration -> m () Source #
set_dotted_rests :: Ui.M m => Bool -> m () Source #
toggle_display :: Ui.M m => Util.Instrument -> m () Source #
modify_staff :: Ui.M m => Util.Instrument -> (StaffConfig -> StaffConfig) -> m () Source #
set_staves :: Ui.M m => [(Text, Instrument, Instrument)] -> m (Config -> Config) Source #
Set staff config, [(instrument, long_name, short_name)]. The order determines the order of the staves on the page.
If there is no staff config, all instruments get staves. Otherwise, only
instruments with StaffConfig
s and staff_display
are
displayed.
compile
blocks :: Title -> [(Title, Id.BlockId)] -> Cmd.CmdL Text Source #
Compile multiple blocks, with an explicit movement structure.
block :: Id.BlockId -> Cmd.CmdL Text Source #
Compile the given block as lilypond. If there are movements, they are extracted from the events.
block_inst :: Maybe Text -> Util.Instrument -> Id.BlockId -> Cmd.CmdT IO Text Source #
Compile the given block, but only with a single instrument.
solo_instrument :: ScoreT.Instrument -> Config -> Config Source #
block_title :: Title -> Id.BlockId -> Cmd.CmdT IO Text Source #
view_block :: Id.BlockId -> Cmd.CmdL () Source #
Show the output of the lilypond for the given block.
from events
from_events :: [Score.Event] -> Cmd.CmdL Text Source #
compile_ly
compile_explicit :: Title -> [Movement] -> Cmd.CmdL Text Source #
Run lilypond with explicit movements.
compile_extract :: Title -> [Score.Event] -> Cmd.CmdT IO Text Source #
Extract movements from the events and run lilypond. Return any error.
block_id_title :: Id.BlockId -> Title Source #
debugging
LPerf
derive :: Cmd.M m => Id.BlockId -> m [LEvent.LEvent Score.Event] Source #
Run a lilypond derive and return score events.
block_events :: Cmd.M m => Id.BlockId -> m [LEvent.LEvent Score.Event] Source #
block_events_unnormalized :: Cmd.M m => Id.BlockId -> m [LEvent.LEvent Score.Event] Source #
sel_events :: Cmd.M m => m [LEvent.LEvent Score.Event] Source #
Like LPerf.sel_events
, but use the lilypond derive.
root_sel_events :: Cmd.M m => m [LEvent.LEvent Score.Event] Source #
Like sel_events
but take the root derivation.
filter_logs :: [LEvent.LEvent a] -> [LEvent.LEvent a] Source #
:: Cmd.M m | |
=> Bool | from root |
-> (Id.BlockId -> m [LEvent.LEvent Score.Event]) | |
-> m [LEvent.LEvent Score.Event] |