ZW67OU7OPHAITCJS3GHQYFBRY5YGOIGRD7B4CKULAXAEXHM42KYQC E4G36G4GNFVRPS6PGBVULU7M5KGK4G7K6YYQPPYUFW5IANXFJUEQC C5GZASC2IIWFVVD2UTI2IKF7YDQYT3NHSUUUW66GSN4NCXTSPVIQC ZJ2DSL63RVPSNXIGTAZNPV6HLHOKLWC5RSK5EAAM3HIYUJ5Y3ISQC AUUFKRBPGLECPV3VVRWFZVNQYF4A47GBE2KIQW44X3XJFESVVAFQC KZU3YXA22IYIPZICQTMZ4XILKCWOI5O6W4H72PDXDUTZDFVMVGVQC 7FTW5AQKOO4W5AIHYZSAKLQR6LGVTXH7SKMSTA4ER4C4HP54VE4QC 5DFOVYVHNSGK7MPEEY3YZXIRXK6UNLVDVUQZ3SXGCXAU7C2CMJPAC LJJL6IBEQCCIVNJHDMXA7HBVI3CVROFUSFTXB3CSARCMJFM25Z5AC DBHCCY3W2DG4WYMXBZ2UCNYVGZ5PS5UUUNWCXVYJ4TMXQDIZT6GAC 5Y32O2B2GTH2UHFA3NO4ZY673XNHT3W4DQADFMK4LMKLSXMZKHGQC OQCI44VL3IROGBJ52MUI3AICPKEPAJVFL45PGQNNQRK4TKIK7HAAC ASIORORAPGGVNLR42J6PZRTG7JKK34GYXBYSKSTJFXSFW6YXBJJQC 7VX7JIJXYJBJOQDEXF66ZKSVGHFTNHN2DD2B367EA5OLKMEOZ5NQC ZQD7OQ6OQB2E6CPKKT5MILYDWSR2QDNYDPCUTG3DXGY25H6ANHZQC V3ZCQSUYAUIEGVAPAFEMLGQKPAVQND4IJRLT423EM2VKMKKIMK6QC OXRSNQE47DF5CNSZMLP5JUZPN3S5U4S62OLJCMZSALUYC66HHBJAC IZ722OQCK6KLKQF6YKJ7EN77RYIW7CLSKL2E53QSLANSAIG7MKIQC MIFVVYZGAWDXIXBG4YZ3ZCJSOTW52MJT52JZ674BTWWTWLAEPLJQC ARDP6NOUKONRWSRF3G67K5S4ZHAXKDJEVSMVNGE5P6TBDVVWYNJQC {use fundsp::hacker32::*;fundsp_output.play(&fundsp_kira::Machine::new(pink() * 0.2 * envelope(|t| exp(-0.1 * t)),// pink() * 0.5 * envelope(|t| exp(-10.0 * t)),// pink() * 0.2,),&mut track,);}
// {// use fundsp::hacker32::*;// fundsp_output.play(// &fundsp_kira::Machine::new(// pink() * 0.1 * envelope(|t| exp(-0.1 * t)),// // pink() * 0.5 * envelope(|t| exp(-10.0 * t)),// // pink() * 0.2,// ),// &mut track,// );// }
fn new(node: T, settings: MachinedSettings, trackable: Trackable<Track>) -> Self {
#[inline(always)]fn make_frame((left, right): (f32, f32)) -> kira::dsp::Frame {kira::dsp::Frame { left, right }}fn new(mut node: T,sample_rate: f64,settings: MachinedSettings,trackable: Trackable<Track>,) -> Self {
let (left, right) = self.node.get_stereo();// Process sampleslet left = self.monitor_left.filter_mono(left);let right = self.monitor_right.filter_mono(right);
// sample rate checklet frame = kira::dsp::interpolate_frame(self.buffer[0],self.buffer[1],self.buffer[2],self.buffer[3],(self.elapsed.as_secs_f32() / self.sample_time.as_secs_f32()).clamp(0.0, 1.0),);self.elapsed += Duration::from_secs_f64(dt);while self.elapsed > self.sample_time {self.elapsed -= self.sample_time;// push in a new frame, by shifting over everything elsefor i in 0..self.buffer.len() - 1 {self.buffer[i] = self.buffer[i + 1];}self.buffer[self.buffer.len() - 1] = Self::make_frame(self.node.get_stereo());}// Process samples (from frame)// Monitor samplesself.monitor_left.filter_mono(frame.left);self.monitor_right.filter_mono(frame.right);
self.trackable.left_channel.store_sample(left);self.trackable.right_channel.store_sample(right);kira::dsp::Frame { left, right }
self.trackable.left_channel.store_sample(frame.left);self.trackable.right_channel.store_sample(frame.right);frame
[build]public_url = "./"