So hard
This commit is contained in:
parent
bda18d8b46
commit
50e29abf03
19
src/piece.rs
19
src/piece.rs
@ -86,6 +86,10 @@ impl Track {
|
||||
pub fn add_silence(&mut self, duration: Tick) {
|
||||
self.current_tick += duration;
|
||||
}
|
||||
|
||||
pub fn current_beat(&self) -> f64 {
|
||||
self.current_tick.0 as f64 / crate::time::TICKS_PER_BEAT as f64
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Piece {
|
||||
@ -156,9 +160,22 @@ impl Piece {
|
||||
let start_time = event.start.0 as f64 * seconds_per_tick;
|
||||
let end_time = (event.start + event.duration).0 as f64 * seconds_per_tick;
|
||||
if t >= start_time && t < end_time {
|
||||
let factor = 1.0;
|
||||
|
||||
// Factor adds a little bit of fade in and fade out
|
||||
// I hate it, it sounds like a flute
|
||||
// let fade_time = Tick::sixteenth().0 as f64 * seconds_per_tick / 2.0;
|
||||
// let factor = if t < start_time + fade_time {
|
||||
// (t - start_time) / fade_time
|
||||
// } else if t > end_time - fade_time {
|
||||
// (end_time - t) / fade_time
|
||||
// } else {
|
||||
// 1.0
|
||||
// };
|
||||
|
||||
let freq = event.note.freq();
|
||||
// value += track.amplitude * track.wave.sample(&event.note, t);
|
||||
value += track.amplitude * track.wave.sample_from_phase(*phase);
|
||||
value += factor * track.amplitude * track.wave.sample_from_phase(*phase);
|
||||
|
||||
// Update phase
|
||||
*phase += freq / params.sampling_rate as f64;
|
||||
|
||||
@ -8,6 +8,7 @@ pub fn technology() -> Piece {
|
||||
piece.tracks.push(bass_track());
|
||||
piece.tracks.push(chords());
|
||||
piece.tracks.push(main_track());
|
||||
piece.tracks.push(harmony_track());
|
||||
// piece.add_metronome(Wave::Square, 0.05);
|
||||
|
||||
piece
|
||||
@ -15,7 +16,7 @@ pub fn technology() -> Piece {
|
||||
|
||||
pub fn bass_track() -> Track {
|
||||
let mut bass_track = Track::new(Wave::Triangle, 0.5);
|
||||
for _ in 0..4 {
|
||||
for _ in 0..8 {
|
||||
bass_track.add(A1, Tick::bar());
|
||||
bass_track.add(G0, Tick::beats(2));
|
||||
bass_track.add(A1, Tick::beats(2));
|
||||
@ -65,7 +66,7 @@ pub fn chords() -> Track {
|
||||
track.add(B3, Tick::sixteenth());
|
||||
};
|
||||
|
||||
for _ in 0..4 {
|
||||
for _ in 0..6 {
|
||||
track.add_silence(Tick::half());
|
||||
add_e_minor(&mut track);
|
||||
|
||||
@ -124,6 +125,7 @@ pub fn main_track() -> Track {
|
||||
let mut track = Track::new(Wave::Square, 0.075);
|
||||
track.add_silence(Tick::bars(4));
|
||||
|
||||
for _ in 0..2 {
|
||||
// Lick 1
|
||||
track.add(A4, Tick::half());
|
||||
track.add(E4, Tick::quarter());
|
||||
@ -131,10 +133,11 @@ pub fn main_track() -> Track {
|
||||
track.add(G3, Tick::half());
|
||||
track.add(E4, Tick::quarter());
|
||||
track.add(G3, Tick::quarter());
|
||||
track.add(E3, Tick::beat());
|
||||
track.add(E3, Tick::beat() - Tick::eighth());
|
||||
track.add(A3, Tick::half() + Tick::eighth());
|
||||
|
||||
track.add_silence(Tick::half());
|
||||
track.add(A4, Tick::beat());
|
||||
track.add(G3, Tick::eighth());
|
||||
track.add(A4, Tick::beat() - Tick::eighth());
|
||||
track.add(G3, Tick::beat());
|
||||
track.add(E3, Tick::half());
|
||||
track.add(E3, Tick::quarter());
|
||||
@ -144,21 +147,26 @@ pub fn main_track() -> Track {
|
||||
track.add(E3, Tick::half());
|
||||
|
||||
track.add(C3, Tick::half());
|
||||
track.add(E3, Tick::beat());
|
||||
track.add(C3, Tick::half()); // 0.33);
|
||||
track.add(D3, Tick::half()); // 0.42);
|
||||
track.add(E3, Tick::beat() + Tick::half()); // 1.75);
|
||||
track.add(E3, Tick::beat() - Tick::quarter());
|
||||
track.add(C3, Tick::half());
|
||||
track.add(D3, Tick::quarter());
|
||||
track.add_silence(Tick::quarter());
|
||||
track.add(D3, Tick::eighth());
|
||||
track.add(E3, Tick::beat() + Tick::half() + Tick::eighth());
|
||||
|
||||
track.add(C3, Tick::half());
|
||||
track.add(E3, Tick::beat());
|
||||
track.add(D3, Tick::eighth());
|
||||
track.add(E3, Tick::beat() - Tick::quarter() - Tick::eighth());
|
||||
track.add(C3, Tick::half());
|
||||
track.add(E2, Tick::half());
|
||||
track.add(D2, Tick::beat() + Tick::quarter());
|
||||
track.add(D2, Tick::beat() + Tick::half());
|
||||
|
||||
track.add(G2, Tick::quarter());
|
||||
track.add(C3, Tick::quarter());
|
||||
track.add(G3, Tick::quarter());
|
||||
|
||||
println!("{}", track.current_beat());
|
||||
|
||||
// Lick 2
|
||||
track.add(A4, Tick::half());
|
||||
track.add(E4, Tick::quarter());
|
||||
@ -166,10 +174,11 @@ pub fn main_track() -> Track {
|
||||
track.add(G3, Tick::half());
|
||||
track.add(E4, Tick::quarter());
|
||||
track.add(G3, Tick::quarter());
|
||||
track.add(E3, Tick::beat());
|
||||
track.add(E3, Tick::beat() - Tick::eighth());
|
||||
track.add(A3, Tick::half() + Tick::eighth());
|
||||
|
||||
track.add_silence(Tick::half());
|
||||
track.add(A4, Tick::beat());
|
||||
track.add(G3, Tick::eighth());
|
||||
track.add(A4, Tick::beat() - Tick::eighth());
|
||||
track.add(G3, Tick::beat());
|
||||
track.add(E3, Tick::half());
|
||||
track.add(B4, Tick::quarter());
|
||||
@ -179,16 +188,83 @@ pub fn main_track() -> Track {
|
||||
track.add(B4, Tick::half());
|
||||
|
||||
track.add(C3, Tick::half());
|
||||
track.add(E3, Tick::beat());
|
||||
track.add(E3, Tick::beat() - Tick::quarter());
|
||||
track.add(C3, Tick::half());
|
||||
track.add(D3, Tick::half());
|
||||
track.add(E3, Tick::beat() + Tick::half());
|
||||
track.add(D3, Tick::quarter());
|
||||
track.add_silence(Tick::quarter());
|
||||
track.add(D3, Tick::eighth());
|
||||
track.add(E3, Tick::beat() + Tick::half() + Tick::eighth());
|
||||
|
||||
track.add(C3, Tick::half());
|
||||
track.add(E3, Tick::beat());
|
||||
track.add(D3, Tick::eighth());
|
||||
track.add(E3, Tick::beat() - Tick::quarter() - Tick::eighth());
|
||||
track.add(C3, Tick::half());
|
||||
track.add(E2, Tick::half());
|
||||
track.add(D2, Tick::beats(2));
|
||||
track.add(D2, Tick::beats(2) + Tick::quarter());
|
||||
}
|
||||
|
||||
track
|
||||
}
|
||||
|
||||
pub fn harmony_track() -> Track {
|
||||
let mut track = Track::new(Wave::Square, 0.075);
|
||||
track.add_silence(Tick::bars(12));
|
||||
|
||||
// Lick 1
|
||||
track.add(C4, Tick::beat());
|
||||
track.add(B4, Tick::beat());
|
||||
track.add(G3, Tick::beat());
|
||||
track.add_silence(Tick::half());
|
||||
|
||||
track.add(B4, Tick::eighth());
|
||||
track.add(C4, Tick::beat() - Tick::eighth());
|
||||
track.add(B4, Tick::beat());
|
||||
track.add(G3, Tick::beat());
|
||||
track.add_silence(Tick::beat() + Tick::half());
|
||||
|
||||
track.add(G3, Tick::beat() - Tick::quarter());
|
||||
track.add(E3, Tick::half());
|
||||
track.add(F3, Tick::quarter());
|
||||
track.add_silence(Tick::quarter());
|
||||
track.add(F3, Tick::eighth());
|
||||
track.add(G3, Tick::beat() + Tick::half() + Tick::eighth());
|
||||
|
||||
track.add(E3, Tick::half());
|
||||
track.add(F3, Tick::eighth());
|
||||
track.add(G3, Tick::beat() - Tick::quarter() - Tick::eighth());
|
||||
track.add(E3, Tick::half());
|
||||
track.add(C3, Tick::half());
|
||||
track.add(B3, Tick::beat() + Tick::half() + Tick::quarter());
|
||||
|
||||
track.add_silence(Tick::half());
|
||||
|
||||
// Lick 2
|
||||
track.add(C4, Tick::beat());
|
||||
track.add(B4, Tick::beat());
|
||||
track.add(G3, Tick::beat());
|
||||
track.add_silence(Tick::half());
|
||||
|
||||
track.add(B4, Tick::eighth());
|
||||
track.add(C4, Tick::beat() - Tick::eighth());
|
||||
track.add(B4, Tick::beat());
|
||||
track.add(G3, Tick::beat());
|
||||
track.add_silence(Tick::beat() + Tick::half());
|
||||
|
||||
track.add(G3, Tick::beat() - Tick::quarter());
|
||||
track.add(E3, Tick::half());
|
||||
track.add(F3, Tick::quarter());
|
||||
track.add_silence(Tick::quarter());
|
||||
track.add(F3, Tick::eighth());
|
||||
track.add(G3, Tick::beat() + Tick::half() + Tick::eighth());
|
||||
|
||||
track.add(E3, Tick::half());
|
||||
track.add(F3, Tick::eighth());
|
||||
track.add(G3, Tick::beat() - Tick::quarter() - Tick::eighth());
|
||||
track.add(E3, Tick::half());
|
||||
track.add(C3, Tick::half());
|
||||
track.add(B3, Tick::beat() + Tick::half() + Tick::quarter());
|
||||
|
||||
track.add_silence(Tick::half());
|
||||
|
||||
track
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user