#[cfg(feature = "std")]
#[macro_export]
macro_rules! dynamic {
([$sample:expr; $frames:literal]; $channels:literal) => {
$crate::buf::Dynamic::from_array([[$sample; $frames]; $channels])
};
([$sample:expr; $frames:expr]; $channels:expr) => {{
let value = $sample;
let mut buf = $crate::buf::Dynamic::with_topology($channels, $frames);
for mut chan in buf.iter_mut() {
for f in chan.iter_mut() {
*f = value;
}
}
buf
}};
([$($value:expr),* $(,)?]; $channels:expr) => {
$crate::buf::Dynamic::from_frames([$($value),*], $channels)
};
($($channel:expr),* $(,)?) => {
$crate::buf::Dynamic::from_array([$($channel),*])
};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! sequential {
([$sample:expr; $frames:expr]; $channels:expr) => {
$crate::buf::Sequential::from_vec(vec![$sample; $channels * $frames], $channels, $frames)
};
([$($value:expr),* $(,)?]; $channels:expr) => {
$crate::buf::Sequential::from_frames([$($value),*], $channels)
};
($($channel:expr),* $(,)?) => {
$crate::buf::Sequential::from_array([$($channel),*])
};
}
#[cfg(feature = "std")]
#[macro_export]
macro_rules! interleaved {
([$sample:expr; $frames:expr]; $channels:expr) => {
$crate::buf::Interleaved::from_vec(vec![$sample; $channels * $frames], $channels, $frames)
};
([$($value:expr),* $(,)?]; $channels:expr) => {
$crate::buf::Interleaved::from_frames([$($value),*], $channels)
};
($($channel:expr),* $(,)?) => {
$crate::buf::Interleaved::from_array([$($channel),*])
};
}