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", Val::from("triangle"));
17 oscillator.get("frequency").set("value", Val::from(261.63)); Val::global_this().set("oscillator", oscillator);
20 Val::global_this().set("context", context);
21
22 let document = Val::global("document");
23 let elem = document.call("createElement", &argv!["BUTTON"]);
24 elem.set(&"textContent", Val::from("Click"));
25 let body = document.call("getElementsByTagName", &argv!["body"]).at(0);
26 elem.call(
27 "addEventListener",
28 &argv![
29 "click",
30 Val::make_js_function(|_| {
31 let oscillator = Val::global("oscillator");
32 let context = Val::global("context");
33 println!("Playing");
34 oscillator.call("connect", &argv![context.get("destination")]);
35 oscillator.call("start", &argv![0]);
36 println!("All done!");
37 Val::undefined().as_handle()
38 })
39 ],
40 );
41 body.call("appendChild", &argv![elem]);
42}