Skip to main content

sim_lib_view_daw/
lib.rs

1//! DAW timeline, mixer, plugin rack, player, piano-roll, and synth lenses for
2//! the SIM Web-UI.
3//!
4//! This lens family brings the existing audio stack into the workspace with no
5//! second model: `scene/timeline` arrangement, mixer strips, `scene/meter` live
6//! meters, plugin-chain rack, synth parameter panels (`scene/knob`/
7//! `scene/slider`), modulation matrix (`scene/matrix`), `scene/waveform`, and
8//! `scene/spectrum`. Everything is driven through Intents committed via
9//! `realize` and backed by existing `sim-lib-daw-session` values.
10//!
11//! [`daw`] is the session lens (timeline/mixer/rack), [`synth`] the synth and
12//! signal lenses, and [`param`] the Intent-driven parameter and transport edits.
13
14#![forbid(unsafe_code)]
15#![deny(missing_docs)]
16
17pub mod arranger;
18pub mod component;
19pub mod daw;
20pub mod dx7;
21mod instrument;
22pub mod keyboard;
23pub mod modular;
24mod modular_fixture;
25pub mod param;
26pub mod piano_roll;
27pub mod placement;
28pub mod player_rack;
29pub mod poly;
30pub mod ps3300;
31pub mod specialized;
32pub mod stream;
33pub mod synth;
34pub mod system55;
35pub mod system700;
36
37pub use arranger::{
38    ARRANGER_OBJECT_ROLL_ACTIONS, ARRANGER_OBJECT_ROLL_DEMO_FIXTURE, ARRANGER_OBJECT_ROLL_VIEW_ID,
39    ArrangerDiagnostic, ArrangerDiagnosticKind, ArrangerLane, ArrangerObjectRollPlacement,
40    ArrangerObjectRollView, arranger_object_roll_demo_scene, arranger_object_roll_demo_view,
41    arranger_object_roll_view,
42};
43pub use component::{
44    COMPONENT_EDITOR_INVALID_VALUE_FIXTURE, COMPONENT_EDITOR_MANY_PARAM_FIXTURE,
45    COMPONENT_EDITOR_NO_PARAM_FIXTURE, COMPONENT_EDITOR_TRACE_ONLY_FIXTURE,
46    COMPONENT_EDITOR_VIEW_ID, component_editor_fixture, component_editor_fixture_names,
47    component_editor_snapshot, component_editor_view,
48};
49pub use daw::{DAW_LENS, daw_view};
50pub use dx7::{
51    DX7_EDITOR_ROUTE, DX7_EDITOR_VIEW, dx7_editor_fixture_names, dx7_editor_snapshot,
52    dx7_editor_view,
53};
54pub use keyboard::{
55    PERFORMANCE_KEYBOARD_DEMO_FIXTURE, PERFORMANCE_KEYBOARD_VIEW_ID, PerformanceKeyboardBinding,
56    PerformanceKeyboardState, performance_keyboard_demo_scene, performance_keyboard_view,
57};
58pub use modular::{
59    BuilderValidation, COMPONENT_BUILDER_ACTIONS, COMPONENT_BUILDER_CORD_EDIT_FIXTURE,
60    COMPONENT_BUILDER_GRAPH_EDIT_FIXTURE, COMPONENT_BUILDER_INVALID_PATCH_FIXTURE,
61    COMPONENT_BUILDER_PATCH_FORMAT, COMPONENT_BUILDER_SECTION_EDIT_FIXTURE,
62    COMPONENT_BUILDER_VALIDATION_CODES, COMPONENT_BUILDER_VIEW_ID, COMPONENT_CORD_VIEW_ID,
63    COMPONENT_GRAPH_VIEW_ID, COMPONENT_PALETTE_VIEW_ID, component_builder_fixture_names,
64    component_builder_snapshot, component_builder_view, component_cord_view, component_graph_view,
65    component_palette_view, validation_display,
66};
67pub use param::{apply_scrub, apply_set_param};
68pub use piano_roll::{
69    PIANO_ROLL_DEMO_FIXTURE, PIANO_ROLL_EDIT_ACTIONS, PIANO_ROLL_VIEW_ID, PianoRollEvent,
70    PianoRollLane, PianoRollLaneKind, PianoRollView, piano_roll_demo_scene, piano_roll_demo_view,
71    piano_roll_view,
72};
73pub use placement::{
74    PLACEMENT_BRIDGE_TABLE_VIEW_ID, PLACEMENT_BROWSER_DIAGNOSTICS_VIEW_ID,
75    PLACEMENT_DISCONNECT_FAULT, PLACEMENT_FAULT_TIMELINE_VIEW_ID, PLACEMENT_FORCED_REFUSAL_FAULT,
76    PLACEMENT_GRAPH_VIEW_ID, PLACEMENT_INSPECTOR_VIEW_ID, PLACEMENT_JITTER_SPIKE_FAULT,
77    PLACEMENT_LATENCY_BUDGET_VIEW_ID, PLACEMENT_REFUSAL_TABLE_VIEW_ID,
78    PLACEMENT_RUNTIME_DIAGNOSTICS_VIEW_ID, PLACEMENT_WORKER_STALL_FAULT, PlacementFaultFixture,
79    PlacementRuntimeDiagnostic, placement_fault_fixture, placement_fault_fixture_names,
80    placement_inspector_view, placement_inspector_view_with_diagnostics,
81};
82pub use player_rack::{
83    PLAYER_RACK_ACTIONS, PLAYER_RACK_VIEW_ID, PlayerRackDevice, PlayerRackView,
84    performance_workbench_demo_scene, player_rack_demo_scene, player_rack_demo_view,
85    player_rack_view,
86};
87pub use poly::{POLY_SECTION_VIEW_ID, poly_section_view};
88pub use ps3300::{
89    PS3300_EDITOR_ROUTE, PS3300_EDITOR_VIEW, ps3300_editor_fixture_names, ps3300_editor_snapshot,
90    ps3300_editor_view,
91};
92pub use specialized::{
93    ALGORITHM_ROUTING_FIXTURE, ALGORITHM_ROUTING_VIEW_ID, ENVELOPE_CURVE_FIXTURE,
94    ENVELOPE_CURVE_VIEW_ID, FILTER_RESPONSE_FIXTURE, FILTER_RESPONSE_VIEW_ID,
95    FIXED_FILTER_BANK_FIXTURE, FIXED_FILTER_BANK_VIEW_ID, POLYPHONY_ACTIVITY_FIXTURE,
96    POLYPHONY_ACTIVITY_VIEW_ID, RESONATOR_RESPONSE_FIXTURE, RESONATOR_RESPONSE_VIEW_ID,
97    SCOPE_SPECTRUM_FIXTURE, SCOPE_SPECTRUM_VIEW_ID, SEQUENCER_STEP_GRID_FIXTURE,
98    SEQUENCER_STEP_GRID_VIEW_ID, SPECIALIZED_COMPONENT_VIEW_IDS, SPECIALIZED_DECLARING_COMPONENTS,
99    SYSEX_COMPARISON_FIXTURE, SYSEX_COMPARISON_VIEW_ID, SpecializedComponentView,
100    WIRING_DIAGRAM_VIEW_ID, specialized_declaring_components, specialized_fixture_names,
101    specialized_snapshot, specialized_view_ids,
102};
103pub use stream::{
104    STREAM_DETAIL_VIEW_ID, STREAM_DIAGNOSTIC_TIMELINE_VIEW_ID, STREAM_LIST_VIEW_ID,
105    STREAM_PACKET_PREVIEW_VIEW_ID, stream_detail_view, stream_diagnostic_timeline_view,
106    stream_list_view, stream_packet_preview_view,
107};
108pub use synth::{SYNTH_LENS, modulation_matrix, spectrum_view, synth_panel, waveform_view};
109pub use system55::{
110    SYSTEM55_EDITOR_ROUTE, SYSTEM55_EDITOR_VIEW, system55_editor_fixture_names,
111    system55_editor_snapshot, system55_editor_view,
112};
113pub use system700::{
114    SYSTEM700_EDITOR_ROUTE, SYSTEM700_EDITOR_VIEW, system700_editor_fixture_names,
115    system700_editor_snapshot, system700_editor_view,
116};
117
118/// Stable symbol for the DAW timeline lens.
119pub const TIMELINE_LENS: &str = DAW_LENS;
120
121/// Embedded cookbook recipe books shipped with this library.
122pub static RECIPES: sim_cookbook::EmbeddedDir =
123    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));
124
125#[cfg(test)]
126mod arranger_tests;
127#[cfg(test)]
128mod instrument_tests;
129#[cfg(test)]
130mod keyboard_tests;
131#[cfg(test)]
132mod piano_roll_tests;
133#[cfg(test)]
134mod placement_tests;
135#[cfg(test)]
136mod recipe_tests;
137#[cfg(test)]
138mod tests;