summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Lee <jacob@unabridgedsoftware.com>2021-12-04 10:59:14 -0500
committerJacob Lee <jacob@unabridgedsoftware.com>2021-12-04 10:59:14 -0500
commit4924c965542392fe5d092c84f3eddc35afd8f7e2 (patch)
tree7f2eb74d67893156aa41fb70936e88ef4bdf0a34
parente91c02971c08a180a3b1dc3dee9a0b035a79fa95 (diff)
Remove hacky trick for instrument and update the instrument in the trigger method on the synth instead
-rw-r--r--klangfarb/Main.tscn2
-rw-r--r--klangfarbrs/src/instrument.rs5
-rw-r--r--klangfarbrs/src/lib.rs6
3 files changed, 4 insertions, 9 deletions
diff --git a/klangfarb/Main.tscn b/klangfarb/Main.tscn
index 4d3e135..c7c5939 100644
--- a/klangfarb/Main.tscn
+++ b/klangfarb/Main.tscn
@@ -10,4 +10,6 @@ volume_db = -13.216
script = ExtResource( 2 )
play_instrument = true
continuous = false
+decay = 1000
+release = 500
fm_index = 100.0
diff --git a/klangfarbrs/src/instrument.rs b/klangfarbrs/src/instrument.rs
index 6fc797b..bf08fe4 100644
--- a/klangfarbrs/src/instrument.rs
+++ b/klangfarbrs/src/instrument.rs
@@ -2,7 +2,6 @@ use super::{ Partial, Sample, Hz, SamplesPerSecond };
pub struct Instrument {
pub partials: Vec<Partial>,
- pub complete: bool,
}
impl Instrument {
@@ -10,8 +9,7 @@ impl Instrument {
Self {
partials: partial_multipliers.iter()
.map(|&p| Partial::new(1.0, 1.0, p, 0.0, sample_rate, 2000, base_freq))
- .collect(),
- complete: false,
+ .collect()
}
}
@@ -34,7 +32,6 @@ impl Iterator for Instrument {
.map(|i| i.unwrap()).collect();
if filtered.is_empty() {
- self.complete = true;
None
} else {
Some(filtered.iter().sum())
diff --git a/klangfarbrs/src/lib.rs b/klangfarbrs/src/lib.rs
index e60e7b3..de3322a 100644
--- a/klangfarbrs/src/lib.rs
+++ b/klangfarbrs/src/lib.rs
@@ -215,6 +215,7 @@ impl MonoSynth {
#[export]
fn trigger(&mut self, _owner: &Node,
) {
+ self.instrument = Instrument::new(self.frequency, vec![0.56, 0.92, 1.19, 1.7, 2.0, 2.74, 3.0, 3.76, 4.07], self.sample_rate);
self.envelope = Envelope::new(self.attack, self.decay, self.sustain, self.release, self.sample_rate);
}
@@ -250,11 +251,6 @@ impl MonoSynth {
}
}
- // TODO: For now this enables the instrument to be played multiple times. Would like to find a cleaner way to do this.
- if self.instrument.complete {
- self.instrument = Instrument::new(self.frequency, vec![0.56, 0.92, 1.19, 1.7, 2.0, 2.74, 3.0, 3.76, 4.07], self.sample_rate)
- }
-
frames.push(Vector2::new(sample, sample));
}