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) {
|
pub fn add_silence(&mut self, duration: Tick) {
|
||||||
self.current_tick += duration;
|
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 {
|
pub struct Piece {
|
||||||
@ -156,9 +160,22 @@ impl Piece {
|
|||||||
let start_time = event.start.0 as f64 * seconds_per_tick;
|
let start_time = event.start.0 as f64 * seconds_per_tick;
|
||||||
let end_time = (event.start + event.duration).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 {
|
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();
|
let freq = event.note.freq();
|
||||||
// value += track.amplitude * track.wave.sample(&event.note, t);
|
// 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
|
// Update phase
|
||||||
*phase += freq / params.sampling_rate as f64;
|
*phase += freq / params.sampling_rate as f64;
|
||||||
|
|||||||
@ -8,6 +8,7 @@ pub fn technology() -> Piece {
|
|||||||
piece.tracks.push(bass_track());
|
piece.tracks.push(bass_track());
|
||||||
piece.tracks.push(chords());
|
piece.tracks.push(chords());
|
||||||
piece.tracks.push(main_track());
|
piece.tracks.push(main_track());
|
||||||
|
piece.tracks.push(harmony_track());
|
||||||
// piece.add_metronome(Wave::Square, 0.05);
|
// piece.add_metronome(Wave::Square, 0.05);
|
||||||
|
|
||||||
piece
|
piece
|
||||||
@ -15,7 +16,7 @@ pub fn technology() -> Piece {
|
|||||||
|
|
||||||
pub fn bass_track() -> Track {
|
pub fn bass_track() -> Track {
|
||||||
let mut bass_track = Track::new(Wave::Triangle, 0.5);
|
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(A1, Tick::bar());
|
||||||
bass_track.add(G0, Tick::beats(2));
|
bass_track.add(G0, Tick::beats(2));
|
||||||
bass_track.add(A1, Tick::beats(2));
|
bass_track.add(A1, Tick::beats(2));
|
||||||
@ -65,7 +66,7 @@ pub fn chords() -> Track {
|
|||||||
track.add(B3, Tick::sixteenth());
|
track.add(B3, Tick::sixteenth());
|
||||||
};
|
};
|
||||||
|
|
||||||
for _ in 0..4 {
|
for _ in 0..6 {
|
||||||
track.add_silence(Tick::half());
|
track.add_silence(Tick::half());
|
||||||
add_e_minor(&mut track);
|
add_e_minor(&mut track);
|
||||||
|
|
||||||
@ -124,71 +125,146 @@ pub fn main_track() -> Track {
|
|||||||
let mut track = Track::new(Wave::Square, 0.075);
|
let mut track = Track::new(Wave::Square, 0.075);
|
||||||
track.add_silence(Tick::bars(4));
|
track.add_silence(Tick::bars(4));
|
||||||
|
|
||||||
// Lick 1
|
for _ in 0..2 {
|
||||||
track.add(A4, Tick::half());
|
// Lick 1
|
||||||
track.add(E4, Tick::quarter());
|
track.add(A4, Tick::half());
|
||||||
track.add(A4, Tick::quarter());
|
track.add(E4, Tick::quarter());
|
||||||
track.add(G3, Tick::half());
|
track.add(A4, Tick::quarter());
|
||||||
track.add(E4, Tick::quarter());
|
track.add(G3, Tick::half());
|
||||||
track.add(G3, Tick::quarter());
|
track.add(E4, Tick::quarter());
|
||||||
track.add(E3, Tick::beat());
|
track.add(G3, Tick::quarter());
|
||||||
|
track.add(E3, Tick::beat() - Tick::eighth());
|
||||||
|
track.add(A3, Tick::half() + Tick::eighth());
|
||||||
|
|
||||||
track.add_silence(Tick::half());
|
track.add(G3, Tick::eighth());
|
||||||
track.add(A4, Tick::beat());
|
track.add(A4, Tick::beat() - Tick::eighth());
|
||||||
track.add(G3, Tick::beat());
|
track.add(G3, Tick::beat());
|
||||||
track.add(E3, Tick::half());
|
track.add(E3, Tick::half());
|
||||||
track.add(E3, Tick::quarter());
|
track.add(E3, Tick::quarter());
|
||||||
track.add(F3, Tick::quarter());
|
track.add(F3, Tick::quarter());
|
||||||
track.add(E3, Tick::quarter());
|
track.add(E3, Tick::quarter());
|
||||||
track.add(D3, Tick::quarter());
|
track.add(D3, Tick::quarter());
|
||||||
track.add(E3, Tick::half());
|
track.add(E3, Tick::half());
|
||||||
|
|
||||||
track.add(C3, Tick::half());
|
track.add(C3, Tick::half());
|
||||||
track.add(E3, Tick::beat());
|
track.add(E3, Tick::beat() - Tick::quarter());
|
||||||
track.add(C3, Tick::half()); // 0.33);
|
track.add(C3, Tick::half());
|
||||||
track.add(D3, Tick::half()); // 0.42);
|
track.add(D3, Tick::quarter());
|
||||||
track.add(E3, Tick::beat() + Tick::half()); // 1.75);
|
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(C3, Tick::half());
|
||||||
track.add(E3, Tick::beat());
|
track.add(D3, Tick::eighth());
|
||||||
track.add(C3, Tick::half());
|
track.add(E3, Tick::beat() - Tick::quarter() - Tick::eighth());
|
||||||
track.add(E2, Tick::half());
|
track.add(C3, Tick::half());
|
||||||
track.add(D2, Tick::beat() + Tick::quarter());
|
track.add(E2, Tick::half());
|
||||||
|
track.add(D2, Tick::beat() + Tick::half());
|
||||||
|
|
||||||
track.add(G2, Tick::quarter());
|
track.add(G2, Tick::quarter());
|
||||||
track.add(C3, Tick::quarter());
|
track.add(C3, Tick::quarter());
|
||||||
track.add(G3, Tick::quarter());
|
track.add(G3, Tick::quarter());
|
||||||
|
|
||||||
// Lick 2
|
println!("{}", track.current_beat());
|
||||||
track.add(A4, Tick::half());
|
|
||||||
track.add(E4, Tick::quarter());
|
|
||||||
track.add(A4, Tick::quarter());
|
|
||||||
track.add(G3, Tick::half());
|
|
||||||
track.add(E4, Tick::quarter());
|
|
||||||
track.add(G3, Tick::quarter());
|
|
||||||
track.add(E3, Tick::beat());
|
|
||||||
|
|
||||||
track.add_silence(Tick::half());
|
// Lick 2
|
||||||
track.add(A4, Tick::beat());
|
track.add(A4, Tick::half());
|
||||||
track.add(G3, Tick::beat());
|
track.add(E4, Tick::quarter());
|
||||||
track.add(E3, Tick::half());
|
track.add(A4, Tick::quarter());
|
||||||
track.add(B4, Tick::quarter());
|
track.add(G3, Tick::half());
|
||||||
track.add(C4, Tick::quarter());
|
track.add(E4, Tick::quarter());
|
||||||
track.add(B4, Tick::quarter());
|
track.add(G3, Tick::quarter());
|
||||||
track.add(A4, Tick::quarter());
|
track.add(E3, Tick::beat() - Tick::eighth());
|
||||||
track.add(B4, Tick::half());
|
track.add(A3, Tick::half() + Tick::eighth());
|
||||||
|
|
||||||
track.add(C3, Tick::half());
|
track.add(G3, Tick::eighth());
|
||||||
track.add(E3, Tick::beat());
|
track.add(A4, Tick::beat() - Tick::eighth());
|
||||||
track.add(C3, Tick::half());
|
track.add(G3, Tick::beat());
|
||||||
track.add(D3, Tick::half());
|
track.add(E3, Tick::half());
|
||||||
track.add(E3, Tick::beat() + Tick::half());
|
track.add(B4, Tick::quarter());
|
||||||
|
track.add(C4, Tick::quarter());
|
||||||
|
track.add(B4, Tick::quarter());
|
||||||
|
track.add(A4, Tick::quarter());
|
||||||
|
track.add(B4, Tick::half());
|
||||||
|
|
||||||
track.add(C3, 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(C3, Tick::half());
|
||||||
track.add(E2, Tick::half());
|
track.add(D3, Tick::quarter());
|
||||||
track.add(D2, Tick::beats(2));
|
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(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) + 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
|
track
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user