From 44c04dbdc2861e7bcfc448068941e1d540dd0178 Mon Sep 17 00:00:00 2001 From: polsevev Date: Sun, 5 Mar 2023 04:13:02 +0100 Subject: [PATCH] small sound improvement --- src/GuiHookVec.rs | 2 +- src/soundGenerator.rs | 64 +++---------------------------------------- 2 files changed, 5 insertions(+), 61 deletions(-) diff --git a/src/GuiHookVec.rs b/src/GuiHookVec.rs index 32bc8c5..8dd6393 100644 --- a/src/GuiHookVec.rs +++ b/src/GuiHookVec.rs @@ -237,7 +237,7 @@ impl SortingList for GuiVec{ if time::get_time() + 0.05 >= self.lastPlayed{ play_sound(self.sounds[ (self.list[i].position * 1000 / self.list.len()) ], PlaySoundParams{ looped:false, - volume:0.5 + volume:1. }); self.lastPlayed = time::get_time()+0.05; } diff --git a/src/soundGenerator.rs b/src/soundGenerator.rs index 7ebd7aa..7470044 100644 --- a/src/soundGenerator.rs +++ b/src/soundGenerator.rs @@ -63,11 +63,12 @@ pub async fn generateTone(frequency: f32, duration:f32) -> Sound{ let startAudio = soundFileBytes.len(); let mut collect = Vec::new(); + let lim = ((SAMPLE_RATE as f32 * duration) as usize); for i in 0..((SAMPLE_RATE as f32 * duration) as usize){ let amplitude = 500. * f32::sin((i as f32 - 300.) / 1200.); let value = f32::sin((2. * PI * (i as f32) * (frequency as f32)) / SAMPLE_RATE as f32); - let channel = (amplitude * value); - + let channel = (amplitude * if i+100 > lim {0.} else {value}); + println!("{}", value); collect.push(channel); soundFileBytes.append(&mut (channel as i16).to_le_bytes().to_vec()); @@ -91,63 +92,6 @@ pub async fn generateTone(frequency: f32, duration:f32) -> Sound{ let sound = load_sound_from_bytes(&soundFileBytes).await.expect("Failed to load"); - play_sound_once(sound); - let frequency = 1200.0; - soundFileBytes.clear(); - - soundFileBytes.append(&mut CHUNK_ID.clone().as_bytes().to_vec()); - - soundFileBytes.append(&mut CHUNK_SIZE.clone().as_bytes().to_vec()); - - soundFileBytes.append(&mut FORMAT.clone().as_bytes().to_vec()); - - soundFileBytes.append(&mut SUBCHUNK_1_ID.clone().as_bytes().to_vec()); - - write_as_bytes(&mut soundFileBytes, SUBCHUNK_1_SIZE, 4); - - write_as_bytes(&mut soundFileBytes, AUDIO_FORMAT, 2) ; - - write_as_bytes(&mut soundFileBytes, NUM_CHANNELS, 2); - - write_as_bytes(&mut soundFileBytes, SAMPLE_RATE, 4); - - write_as_bytes(&mut soundFileBytes, BYTE_RATE, 4); - - write_as_bytes(&mut soundFileBytes, BLOACK_ALIGN, 2); - write_as_bytes(&mut soundFileBytes, BITS_PR_SAMPLE, 2); - - soundFileBytes.append(&mut SUBCHUNK_2_ID.clone().as_bytes().to_vec()); - - soundFileBytes.append(&mut SUBCHUNK_2_SIZE.clone().as_bytes().to_vec()); - - - let startAudio = soundFileBytes.len(); - - let mut collect = Vec::new(); - for i in 0..((SAMPLE_RATE as f32 * duration) as usize){ - let amplitude = 500. * f32::sin((i as f32 - 300.) / 1200.); - let value = f32::sin((2. * PI * (i as f32) * (frequency as f32)) / SAMPLE_RATE as f32); - let channel = (amplitude * value); - - collect.push(channel); - soundFileBytes.append(&mut (channel as i16).to_le_bytes().to_vec()); - - - } - let endAudio = soundFileBytes.len(); - - - let mut holder = Vec::new(); - write_as_bytes(&mut holder, endAudio-startAudio, 4); - for i in 0..4{ - soundFileBytes[(startAudio-4)+i] = holder[i]; - } - holder.clear(); - write_as_bytes(&mut holder, 36+endAudio-startAudio, 4); - - for i in 0..4{ - soundFileBytes[4+i] = holder[i]; - } - play_sound_once(sound); + sound }