mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
50 lines
2.3 KiB
Rust
50 lines
2.3 KiB
Rust
// ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
|
|
//██Let me play the world's tiniest piano for you. ██
|
|
//█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
|
|
//█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙█▙▙█▙▙▙██
|
|
//█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
|
|
//███████████████████████████████████████████████████
|
|
//█ ▀ ▀ ▀ █
|
|
#![allow(unused)]
|
|
#![allow(clippy::unit_arg)]
|
|
#![feature(adt_const_params)]
|
|
#![feature(associated_type_defaults)]
|
|
#![feature(if_let_guard)]
|
|
#![feature(impl_trait_in_assoc_type)]
|
|
#![feature(type_alias_impl_trait)]
|
|
#![feature(trait_alias)]
|
|
#![feature(type_changing_struct_update)]
|
|
mod cli; pub use self::cli::*;
|
|
mod audio; pub use self::audio::*;
|
|
mod device; pub use self::device::*;
|
|
mod keys; pub use self::keys::*;
|
|
mod model; pub use self::model::*;
|
|
mod view; pub use self::view::*;
|
|
/// Standard result type.
|
|
pub type Usually<T> = std::result::Result<T, Box<dyn std::error::Error>>;
|
|
/// Standard optional result type.
|
|
pub type Perhaps<T> = std::result::Result<Option<T>, Box<dyn std::error::Error>>;
|
|
pub use ::tek_time::{self, *};
|
|
pub use ::tek_jack::{self, *, jack::*};
|
|
pub use ::tek_midi::{self, *, midly::{MidiMessage, num::*, live::*}};
|
|
pub use ::tek_sampler::{self, *};
|
|
pub use ::tek_plugin::{self, *};
|
|
pub use ::tengri::{
|
|
dsl::*,
|
|
input::*,
|
|
output::*,
|
|
tui::{
|
|
*,
|
|
ratatui::{
|
|
self,
|
|
prelude::{Color::{self, *}, Style, Stylize, Buffer, Modifier}, buffer::Cell
|
|
},
|
|
crossterm::{
|
|
self,
|
|
event::{
|
|
Event, KeyEvent, KeyEventKind, KeyEventState, KeyModifiers, KeyCode::{self, *},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
pub(crate) use std::sync::{Arc, RwLock, atomic::{AtomicBool, Ordering::Relaxed}};
|