Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
xasopheno committed Jan 14, 2023
1 parent ab2e4f7 commit a7c9d7a
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 27 deletions.
8 changes: 5 additions & 3 deletions core/src/manager/render_manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ pub struct RenderManagerSettings {

impl RenderManager {
pub fn init(
render_voices: Vec<RenderVoice>,
// render_voices: Vec<RenderVoice>,
visualization_channel: VisualizationChannel,
kill_channel: KillChannel,
once: bool,
Expand All @@ -89,7 +89,8 @@ impl RenderManager {
channel: visualization_channel,
normalizer: Normalizer::default(),
},
renders: [Some(render_voices), None],
// renders: [Some(render_voices), None],
renders: [None, None],
past_volume: 0.8,
current_volume: 0.8,
render_idx: 0,
Expand Down Expand Up @@ -272,7 +273,8 @@ impl RenderManager {
self.next_render().is_some()
}

pub fn push_render(&mut self, render: Vec<RenderVoice>) {
pub fn push_render(&mut self, render: Vec<RenderVoice>, once: bool) {
self.once = once;
*self.next_render() = Some(render);
}
}
Expand Down
15 changes: 15 additions & 0 deletions mocks/ops/overtone.socool
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{ f: 220, l: 1, g: 1, p: 0 }

main = {
Overlay [
{2, 2, 1/2, 1},
{1, -1, 2/3, -1},
]
}

expect = {
Overlay [
Fm 2 | Fa 2 | Gm 1/2 | Pa 1,
Fm 1 | Fa -1 | Gm 2/3 | Pa -1,
]
}
17 changes: 17 additions & 0 deletions parser/src/socool.lalrpop
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@ BaseOperation: Term = {
Term::Op(Length { m: length }),
]})
},
BracedOvertone
};


Expand All @@ -363,6 +364,22 @@ Overtone: Term = {
})
}

BracedOvertone: Term = {
"{"
<fm:Rational> ","
<fa:Rational> ","
<g:Rational> ","
<p:Rational>
"}"
=> Term::Op(Compose { operations: vec! [
Term::Op(TransposeM { m: fm }),
Term::Op(TransposeA { a: fa }),
Term::Op(Gain { m: g }),
Term::Op(PanA { a: p }),
]
})
}


Overtones = Comma<Overtone>;

Expand Down
5 changes: 3 additions & 2 deletions src/demo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ use weresocool::interpretable::InputType::Language;
use weresocool::manager::prepare_render_outside;

pub fn demo() -> Result<(), Error> {
let render_voices = prepare_render_outside(Language(DEMO), None);
play_once(render_voices?, "demo.socool".to_string())?;
// let render_voices = prepare_render_outside(Language(DEMO), None);
// play_once(render_voices?, "demo.socool".to_string())?;
todo!();
Ok(())
}

Expand Down
39 changes: 18 additions & 21 deletions src/play.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,26 +22,24 @@ pub fn play(filename: &String, cwd: PathBuf, play: Play) -> Result<(), Error> {

pub fn play_file(filename: String, working_path: PathBuf, play: Play) -> Result<(), Error> {
match play {
Play::Once => {
let render_voices = prepare_render_outside(Filename(&filename), Some(working_path));

play_once(render_voices?, filename)
}
Play::Once => play_once(filename, working_path),
Play::Watch => play_watch(filename, working_path),
}
}

pub fn play_once(render_voices: Vec<RenderVoice>, filename: String) -> Result<(), Error> {
were_so_cool_logo(Some("Playing"), Some(filename));
pub fn play_once(filename: String, working_path: PathBuf) -> Result<(), Error> {
were_so_cool_logo(Some("Playing"), Some(filename.clone()));

let (tx, rx) = std::sync::mpsc::channel::<bool>();
let render_manager = Arc::new(Mutex::new(RenderManager::init(
render_voices,
None,
Some(tx),
true,
None,
)));
let render_manager = Arc::new(Mutex::new(RenderManager::init(None, Some(tx), true, None)));

let render_voices = prepare_render_outside(Filename(&filename), Some(working_path))?;

render_manager
.lock()
.unwrap()
.push_render(render_voices, true);

let mut stream = real_time_render_manager(Arc::clone(&render_manager))?;

stream.start()?;
Expand All @@ -60,13 +58,12 @@ pub fn play_once(render_voices: Vec<RenderVoice>, filename: String) -> Result<()
}

fn play_watch(filename: String, working_path: PathBuf) -> Result<(), Error> {
let render_manager = Arc::new(Mutex::new(RenderManager::init(
vec![],
None,
None,
false,
None,
)));
let render_manager = Arc::new(Mutex::new(RenderManager::init(None, None, false, None)));
let render_voices = prepare_render_outside(Filename(&filename), Some(working_path.clone()))?;
render_manager
.lock()
.unwrap()
.push_render(render_voices, false);
watch(filename, working_path, render_manager.clone())?;
let mut stream = real_time_render_manager(Arc::clone(&render_manager))?;
stream.start()?;
Expand Down
6 changes: 6 additions & 0 deletions src/testing/expect_tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@ mod expect {
// fn __tags_generated_(resource: &str) {
// expect(resource);
// }
//

#[test_resources("mocks/ops/*.socool")]
fn __ops_generated_(resource: &str) {
expect(resource);
}

#[test_resources("mocks/data/*.socool")]
fn __data_generated_(resource: &str) {
Expand Down
2 changes: 1 addition & 1 deletion src/watch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ fn render(filename: &str, working_path: &Path, render_manager: &Arc<Mutex<Render
};

if let Some(voices) = render_voices {
render_manager.lock().unwrap().push_render(voices);
render_manager.lock().unwrap().push_render(voices, false);
let mut rng = rand::thread_rng();

print!(
Expand Down

0 comments on commit a7c9d7a

Please sign in to comment.