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 cookbook;
20pub mod daw;
21pub mod dx7;
22mod instrument;
23pub mod keyboard;
24pub mod modular;
25mod modular_fixture;
26pub mod param;
27pub mod piano_roll;
28pub mod placement;
29pub mod player_rack;
30pub mod poly;
31pub mod ps3300;
32pub mod specialized;
33pub mod stream;
34pub mod synth;
35pub mod system55;
36pub mod system700;
37
38pub use arranger::{
39    ARRANGER_OBJECT_ROLL_ACTIONS, ARRANGER_OBJECT_ROLL_DEMO_FIXTURE, ARRANGER_OBJECT_ROLL_VIEW_ID,
40    ArrangerDiagnostic, ArrangerDiagnosticKind, ArrangerLane, ArrangerObjectRollPlacement,
41    ArrangerObjectRollView, arranger_object_roll_demo_scene, arranger_object_roll_demo_view,
42    arranger_object_roll_view,
43};
44pub use component::{
45    COMPONENT_EDITOR_INVALID_VALUE_FIXTURE, COMPONENT_EDITOR_MANY_PARAM_FIXTURE,
46    COMPONENT_EDITOR_NO_PARAM_FIXTURE, COMPONENT_EDITOR_TRACE_ONLY_FIXTURE,
47    COMPONENT_EDITOR_VIEW_ID, component_editor_fixture, component_editor_fixture_names,
48    component_editor_snapshot, component_editor_view,
49};
50pub use cookbook::{
51    arranger_transform_filter_demo, descriptor_fixtures_demo, keyboard_rack_roll_demo,
52    timeline_descriptor_demo,
53};
54pub use daw::{DAW_LENS, daw_view};
55pub use dx7::{
56    DX7_EDITOR_ROUTE, DX7_EDITOR_VIEW, dx7_editor_fixture_names, dx7_editor_snapshot,
57    dx7_editor_view,
58};
59pub use keyboard::{
60    PERFORMANCE_KEYBOARD_DEMO_FIXTURE, PERFORMANCE_KEYBOARD_VIEW_ID, PerformanceKeyboardBinding,
61    PerformanceKeyboardState, performance_keyboard_demo_scene, performance_keyboard_view,
62};
63pub use modular::{
64    BuilderValidation, COMPONENT_BUILDER_ACTIONS, COMPONENT_BUILDER_CORD_EDIT_FIXTURE,
65    COMPONENT_BUILDER_GRAPH_EDIT_FIXTURE, COMPONENT_BUILDER_INVALID_PATCH_FIXTURE,
66    COMPONENT_BUILDER_PATCH_FORMAT, COMPONENT_BUILDER_SECTION_EDIT_FIXTURE,
67    COMPONENT_BUILDER_VALIDATION_CODES, COMPONENT_BUILDER_VIEW_ID, COMPONENT_CORD_VIEW_ID,
68    COMPONENT_GRAPH_VIEW_ID, COMPONENT_PALETTE_VIEW_ID, component_builder_fixture_names,
69    component_builder_snapshot, component_builder_view, component_cord_view, component_graph_view,
70    component_palette_view, validation_display,
71};
72pub use param::{apply_scrub, apply_set_param};
73pub use piano_roll::{
74    PIANO_ROLL_DEMO_FIXTURE, PIANO_ROLL_EDIT_ACTIONS, PIANO_ROLL_VIEW_ID, PianoRollEvent,
75    PianoRollLane, PianoRollLaneKind, PianoRollView, piano_roll_demo_scene, piano_roll_demo_view,
76    piano_roll_view,
77};
78pub use placement::{
79    PLACEMENT_BRIDGE_TABLE_VIEW_ID, PLACEMENT_BROWSER_DIAGNOSTICS_VIEW_ID,
80    PLACEMENT_DISCONNECT_FAULT, PLACEMENT_FAULT_TIMELINE_VIEW_ID, PLACEMENT_FORCED_REFUSAL_FAULT,
81    PLACEMENT_GRAPH_VIEW_ID, PLACEMENT_INSPECTOR_VIEW_ID, PLACEMENT_JITTER_SPIKE_FAULT,
82    PLACEMENT_LATENCY_BUDGET_VIEW_ID, PLACEMENT_REFUSAL_TABLE_VIEW_ID,
83    PLACEMENT_RUNTIME_DIAGNOSTICS_VIEW_ID, PLACEMENT_WORKER_STALL_FAULT, PlacementFaultFixture,
84    PlacementRuntimeDiagnostic, placement_fault_fixture, placement_fault_fixture_names,
85    placement_inspector_view, placement_inspector_view_with_diagnostics,
86};
87pub use player_rack::{
88    PLAYER_RACK_ACTIONS, PLAYER_RACK_VIEW_ID, PlayerRackDevice, PlayerRackView,
89    performance_workbench_demo_scene, player_rack_demo_scene, player_rack_demo_view,
90    player_rack_view,
91};
92pub use poly::{POLY_SECTION_VIEW_ID, poly_section_view};
93pub use ps3300::{
94    PS3300_EDITOR_ROUTE, PS3300_EDITOR_VIEW, ps3300_editor_fixture_names, ps3300_editor_snapshot,
95    ps3300_editor_view,
96};
97pub use specialized::{
98    ALGORITHM_ROUTING_FIXTURE, ALGORITHM_ROUTING_VIEW_ID, ENVELOPE_CURVE_FIXTURE,
99    ENVELOPE_CURVE_VIEW_ID, FILTER_RESPONSE_FIXTURE, FILTER_RESPONSE_VIEW_ID,
100    FIXED_FILTER_BANK_FIXTURE, FIXED_FILTER_BANK_VIEW_ID, POLYPHONY_ACTIVITY_FIXTURE,
101    POLYPHONY_ACTIVITY_VIEW_ID, RESONATOR_RESPONSE_FIXTURE, RESONATOR_RESPONSE_VIEW_ID,
102    SCOPE_SPECTRUM_FIXTURE, SCOPE_SPECTRUM_VIEW_ID, SEQUENCER_STEP_GRID_FIXTURE,
103    SEQUENCER_STEP_GRID_VIEW_ID, SPECIALIZED_COMPONENT_VIEW_IDS, SPECIALIZED_DECLARING_COMPONENTS,
104    SYSEX_COMPARISON_FIXTURE, SYSEX_COMPARISON_VIEW_ID, SpecializedComponentView,
105    WIRING_DIAGRAM_VIEW_ID, specialized_declaring_components, specialized_fixture_names,
106    specialized_snapshot, specialized_view_ids,
107};
108pub use stream::{
109    STREAM_DETAIL_VIEW_ID, STREAM_DIAGNOSTIC_TIMELINE_VIEW_ID, STREAM_LIST_VIEW_ID,
110    STREAM_PACKET_PREVIEW_VIEW_ID, stream_detail_view, stream_diagnostic_timeline_view,
111    stream_list_view, stream_packet_preview_view,
112};
113pub use synth::{SYNTH_LENS, modulation_matrix, spectrum_view, synth_panel, waveform_view};
114pub use system55::{
115    SYSTEM55_EDITOR_ROUTE, SYSTEM55_EDITOR_VIEW, system55_editor_fixture_names,
116    system55_editor_snapshot, system55_editor_view,
117};
118pub use system700::{
119    SYSTEM700_EDITOR_ROUTE, SYSTEM700_EDITOR_VIEW, system700_editor_fixture_names,
120    system700_editor_snapshot, system700_editor_view,
121};
122
123/// Stable symbol for the DAW timeline lens.
124pub const TIMELINE_LENS: &str = DAW_LENS;
125
126/// Embedded cookbook recipe books shipped with this library.
127pub static RECIPES: sim_cookbook::EmbeddedDir =
128    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));
129
130#[cfg(test)]
131mod arranger_tests;
132#[cfg(test)]
133mod instrument_tests;
134#[cfg(test)]
135mod keyboard_tests;
136#[cfg(test)]
137mod piano_roll_tests;
138#[cfg(test)]
139mod placement_tests;
140#[cfg(test)]
141mod recipe_tests;
142#[cfg(test)]
143mod tests;