use thiserror::Error;
#[derive(Debug, Error, Clone, PartialEq, Eq)]
pub enum MidiError {
#[error("tpq must be non-zero")]
ZeroTpq,
#[error("value {0} is out of u7 range")]
InvalidU7(u16),
#[error("value {0} is out of u14 range")]
InvalidU14(u16),
#[error("value {0} is out of channel range")]
InvalidChannel(u8),
#[error("invalid ratio {0}/{1}")]
InvalidRatio(i64, i64),
#[error("channel message data is truncated")]
TruncatedChannel,
#[error("status byte {0:#04x} is not a channel message")]
NotChannelStatus(u8),
#[error("inexact TPQ rebase")]
InexactRebase,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum PumpError<S, T> {
Source(S),
Sink(T),
}