mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
wip(p67,e0): whew!
This commit is contained in:
parent
faf7576ad8
commit
132093f14a
8 changed files with 64 additions and 59 deletions
|
|
@ -8,21 +8,21 @@ tek_core = { path = "../tek_core" }
|
||||||
tek_api = { path = "../tek_api" }
|
tek_api = { path = "../tek_api" }
|
||||||
tek_tui = { path = "../tek_tui" }
|
tek_tui = { path = "../tek_tui" }
|
||||||
|
|
||||||
[[bin]]
|
#[[bin]]
|
||||||
name = "tek_mixer"
|
#name = "tek_mixer"
|
||||||
path = "src/cli_mixer.rs"
|
#path = "src/cli_mixer.rs"
|
||||||
|
|
||||||
[[bin]]
|
#[[bin]]
|
||||||
name = "tek_track"
|
#name = "tek_track"
|
||||||
path = "src/cli_track.rs"
|
#path = "src/cli_track.rs"
|
||||||
|
|
||||||
[[bin]]
|
#[[bin]]
|
||||||
name = "tek_sampler"
|
#name = "tek_sampler"
|
||||||
path = "src/cli_sampler.rs"
|
#path = "src/cli_sampler.rs"
|
||||||
|
|
||||||
[[bin]]
|
#[[bin]]
|
||||||
name = "tek_plugin"
|
#name = "tek_plugin"
|
||||||
path = "src/cli_plugin.rs"
|
#path = "src/cli_plugin.rs"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "tek_sequencer"
|
name = "tek_sequencer"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
use tek_core::clap::{self, Parser};
|
use tek_api::{JackActivate, ArrangerTracksApi, HasScenes};
|
||||||
|
use tek_core::{*, clap::{self, Parser}};
|
||||||
|
|
||||||
pub fn main () -> Usually<()> {
|
pub fn main () -> Usually<()> {
|
||||||
ArrangerCli::parse().run()
|
ArrangerCli::parse().run()
|
||||||
|
|
@ -22,14 +23,14 @@ impl ArrangerCli {
|
||||||
/// Run the arranger TUI from CLI arguments.
|
/// Run the arranger TUI from CLI arguments.
|
||||||
fn run (&self) -> Usually<()> {
|
fn run (&self) -> Usually<()> {
|
||||||
Tui::run(JackClient::new("tek_arranger")?.activate_with(|jack|{
|
Tui::run(JackClient::new("tek_arranger")?.activate_with(|jack|{
|
||||||
let mut app = TransportApp::try_from(jack)?;
|
let mut app = tek_tui::ArrangerTui::try_from(jack)?;
|
||||||
if let Some(name) = self.name.as_ref() {
|
if let Some(name) = self.name.as_ref() {
|
||||||
*arrangement.name.write().unwrap() = name.clone();
|
*app.name.write().unwrap() = name.clone();
|
||||||
}
|
}
|
||||||
let track_color_1 = ItemColor::random();
|
let track_color_1 = ItemColor::random();
|
||||||
let track_color_2 = ItemColor::random();
|
let track_color_2 = ItemColor::random();
|
||||||
for i in 0..self.tracks {
|
for i in 0..self.tracks {
|
||||||
let _track = arrangement.track_add(
|
let _track = app.track_add(
|
||||||
None,
|
None,
|
||||||
Some(track_color_1.mix(track_color_2, i as f32 / self.tracks as f32))
|
Some(track_color_1.mix(track_color_2, i as f32 / self.tracks as f32))
|
||||||
)?;
|
)?;
|
||||||
|
|
@ -37,13 +38,13 @@ impl ArrangerCli {
|
||||||
let scene_color_1 = ItemColor::random();
|
let scene_color_1 = ItemColor::random();
|
||||||
let scene_color_2 = ItemColor::random();
|
let scene_color_2 = ItemColor::random();
|
||||||
for i in 0..self.scenes {
|
for i in 0..self.scenes {
|
||||||
let _scene = arrangement.scene_add(
|
let _scene = app.scene_add(
|
||||||
None,
|
None,
|
||||||
Some(scene_color_1.mix(scene_color_2, i as f32 / self.scenes as f32))
|
Some(scene_color_1.mix(scene_color_2, i as f32 / self.scenes as f32))
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
Ok(app)
|
Ok(app)
|
||||||
})?)?
|
})?)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
use tek_core::clap::{self, Parser};
|
use tek_api::JackActivate;
|
||||||
|
use tek_core::{*, clap::{self, Parser}};
|
||||||
|
|
||||||
pub fn main () -> Usually<()> {
|
pub fn main () -> Usually<()> {
|
||||||
SequencerCli::parse().run()
|
SequencerCli::parse().run()
|
||||||
|
|
@ -20,7 +21,7 @@ pub struct SequencerCli {
|
||||||
impl SequencerCli {
|
impl SequencerCli {
|
||||||
fn run (&self) -> Usually<()> {
|
fn run (&self) -> Usually<()> {
|
||||||
Tui::run(JackClient::new("tek_sequencer")?.activate_with(|jack|{
|
Tui::run(JackClient::new("tek_sequencer")?.activate_with(|jack|{
|
||||||
let mut app = SequencerApp::try_from(jack)?;
|
let mut app = tek_tui::SequencerTui::try_from(jack)?;
|
||||||
if let Some(_) = self.name.as_ref() {
|
if let Some(_) = self.name.as_ref() {
|
||||||
// TODO: sequencer.name = Arc::new(RwLock::new(name.clone()));
|
// TODO: sequencer.name = Arc::new(RwLock::new(name.clone()));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
use tek_core::clap::{self, Parser};
|
use tek_api::JackActivate;
|
||||||
|
use tek_core::{*, clap::{self, Parser}};
|
||||||
|
|
||||||
/// Application entrypoint.
|
/// Application entrypoint.
|
||||||
pub fn main () -> Usually<()> {
|
pub fn main () -> Usually<()> {
|
||||||
Tui::run(JackClient::new("tek_transport")?.activate_with(TransportApp::try_from)?)?
|
Tui::run(JackClient::new("tek_transport")?.activate_with(|jack|{
|
||||||
|
tek_tui::TransportTui::try_from(jack)
|
||||||
|
})?)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use tek_core::clap::{self, Parser};
|
use tek_core::{*, clap::{self, Parser}};
|
||||||
|
|
||||||
pub fn main () -> Usually<()> {
|
pub fn main () -> Usually<()> {
|
||||||
MixerCli::parse().run()
|
MixerCli::parse().run()
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use tek_core::clap::{self, Parser};
|
use tek_core::{*, clap::{self, Parser}};
|
||||||
|
|
||||||
pub fn main () -> Usually<()> {
|
pub fn main () -> Usually<()> {
|
||||||
PluginCli::parse().run()
|
PluginCli::parse().run()
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use tek_core::clap::{self, Parser};
|
use tek_core::{*, clap::{self, Parser}};
|
||||||
|
|
||||||
pub fn main () -> Usually<()> {
|
pub fn main () -> Usually<()> {
|
||||||
SamplerCli::parse().run()
|
SamplerCli::parse().run()
|
||||||
|
|
@ -2,51 +2,51 @@ use crate::*;
|
||||||
|
|
||||||
/// Stores and displays time-related info.
|
/// Stores and displays time-related info.
|
||||||
pub struct TransportTui {
|
pub struct TransportTui {
|
||||||
pub(crate) jack: Arc<RwLock<JackClient>>,
|
pub jack: Arc<RwLock<JackClient>>,
|
||||||
pub(crate) state: TransportModel,
|
pub state: TransportModel,
|
||||||
pub(crate) size: Measure<Tui>,
|
pub size: Measure<Tui>,
|
||||||
pub(crate) cursor: (usize, usize),
|
pub cursor: (usize, usize),
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Root view for standalone `tek_sequencer`.
|
/// Root view for standalone `tek_sequencer`.
|
||||||
pub struct SequencerTui {
|
pub struct SequencerTui {
|
||||||
pub(crate) jack: Arc<RwLock<JackClient>>,
|
pub jack: Arc<RwLock<JackClient>>,
|
||||||
pub(crate) transport: TransportModel,
|
pub transport: TransportModel,
|
||||||
pub(crate) phrases: PhrasesModel,
|
pub phrases: PhrasesModel,
|
||||||
pub(crate) player: PhrasePlayerModel,
|
pub player: PhrasePlayerModel,
|
||||||
pub(crate) editor: PhraseEditorModel,
|
pub editor: PhraseEditorModel,
|
||||||
pub(crate) size: Measure<Tui>,
|
pub size: Measure<Tui>,
|
||||||
pub(crate) cursor: (usize, usize),
|
pub cursor: (usize, usize),
|
||||||
pub(crate) split: u16,
|
pub split: u16,
|
||||||
pub(crate) entered: bool,
|
pub entered: bool,
|
||||||
/// MIDI output buffer
|
/// MIDI output buffer
|
||||||
pub(crate) note_buf: Vec<u8>,
|
pub note_buf: Vec<u8>,
|
||||||
/// MIDI output buffer
|
/// MIDI output buffer
|
||||||
pub(crate) midi_buf: Vec<Vec<Vec<u8>>>,
|
pub midi_buf: Vec<Vec<Vec<u8>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Root view for standalone `tek_arranger`
|
/// Root view for standalone `tek_arranger`
|
||||||
pub struct ArrangerTui {
|
pub struct ArrangerTui {
|
||||||
pub(crate) jack: Arc<RwLock<JackClient>>,
|
pub jack: Arc<RwLock<JackClient>>,
|
||||||
pub(crate) transport: TransportModel,
|
pub transport: TransportModel,
|
||||||
pub(crate) phrases: PhrasesModel,
|
pub phrases: PhrasesModel,
|
||||||
pub(crate) tracks: Vec<ArrangerTrack>,
|
pub tracks: Vec<ArrangerTrack>,
|
||||||
pub(crate) scenes: Vec<ArrangerScene>,
|
pub scenes: Vec<ArrangerScene>,
|
||||||
pub(crate) name: Arc<RwLock<String>>,
|
pub name: Arc<RwLock<String>>,
|
||||||
pub(crate) splits: [u16;2],
|
pub splits: [u16;2],
|
||||||
pub(crate) selected: ArrangerSelection,
|
pub selected: ArrangerSelection,
|
||||||
pub(crate) mode: ArrangerMode,
|
pub mode: ArrangerMode,
|
||||||
pub(crate) color: ItemColor,
|
pub color: ItemColor,
|
||||||
pub(crate) entered: bool,
|
pub entered: bool,
|
||||||
pub(crate) size: Measure<Tui>,
|
pub size: Measure<Tui>,
|
||||||
pub(crate) cursor: (usize, usize),
|
pub cursor: (usize, usize),
|
||||||
pub(crate) menu_bar: Option<MenuBar<Tui, Self, ArrangerCommand>>,
|
pub menu_bar: Option<MenuBar<Tui, Self, ArrangerCommand>>,
|
||||||
pub(crate) status_bar: Option<ArrangerStatus>,
|
pub status_bar: Option<ArrangerStatus>,
|
||||||
pub(crate) history: Vec<ArrangerCommand>,
|
pub history: Vec<ArrangerCommand>,
|
||||||
/// MIDI output buffer
|
/// MIDI output buffer
|
||||||
pub(crate) note_buf: Vec<u8>,
|
pub note_buf: Vec<u8>,
|
||||||
/// MIDI output buffer
|
/// MIDI output buffer
|
||||||
pub(crate) midi_buf: Vec<Vec<Vec<u8>>>,
|
pub midi_buf: Vec<Vec<Vec<u8>>>,
|
||||||
/// MIDI editor state
|
/// MIDI editor state
|
||||||
pub(crate) editor: PhraseEditorModel,
|
pub editor: PhraseEditorModel,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue