1use emlite::*;
2
3fn main() {
4 #[allow(non_snake_case)]
5 let mut AudioContext = Val::global("AudioContext");
6 if !AudioContext.as_bool() {
7 println!("No global AudioContext, trying webkitAudioContext");
8 AudioContext = Val::global("webkitAudioContext");
9 }
10
11 println!("Got an AudioContext");
12 let context = AudioContext.new(&[]);
13 let oscillator = context.call("createOscillator", &[]);
14
15 println!("Configuring oscillator");
16 oscillator.set("type", "triangle");
17 oscillator.get("frequency").set("value", Val::from(261.63)); let document = Val::global("document");
20 let elem = document.call("createElement", &argv!["BUTTON"]);
21 elem.set("textContent", "Click");
22 let body = document.call("getElementsByTagName", &argv!["body"]).at(0);
23 elem.call(
24 "addEventListener",
25 &argv![
26 "click",
27 Val::make_fn(move |_| {
28 println!("Playing");
29 oscillator.call("connect", &argv![context.get("destination")]);
30 oscillator.call("start", &argv![0]);
31 println!("All done!");
32 Val::undefined()
33 })
34 ],
35 );
36 body.call("appendChild", &argv![elem]);
37}