Changeset 511
- Timestamp:
- 10/16/07 18:18:01 (11 months ago)
- Files:
-
- ocaml-remix/trunk/plugin.ml (modified) (3 diffs)
- ocaml-remix/trunk/plugin.mli (modified) (1 diff)
- ocaml-remix/trunk/track_test_sins.ml (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
ocaml-remix/trunk/plugin.ml
r510 r511 4 4 5 5 exception InappropriatePlugin 6 7 let get_ports ladspa = 8 let ports = Ladspa_raw.port_count ladspa in 9 let rec _portdesc n = 10 if n = ports then [] 11 else (n, Ladspa_raw.port_descriptor ladspa n)::_portdesc (n + 1) in 12 _portdesc 0 13 14 let set_control_value plugin handle port value = 15 let v = Ladspa_raw.control_value_to_buffer value in 16 Ladspa_raw.connect_port plugin handle port v;; 17 18 let ladspa_init func ladspa handle = 19 let ports = get_ports ladspa in 20 let inControlPorts = List.filter (function (a,(b,c)) -> 21 b = Ladspa_raw.Input && c = Ladspa_raw.Control) ports in 22 List.iter (function p -> set_control_value ladspa handle p (func p)) 23 (List.map fst inControlPorts); 24 let outControlPorts = List.filter (function (a,(b,c)) -> 25 b = Ladspa_raw.Output && c = Ladspa_raw.Control) ports in 26 List.iter (function p -> set_control_value ladspa handle p 0.0) 27 (List.map fst outControlPorts);; 6 28 7 29 let from_ladspa_impl ladspa setup href insound remix extent render_extent = … … 32 54 ) 33 55 )) in 34 let ports = Ladspa_raw.port_count ladspa in 35 let rec _portdesc n = 36 if n = ports then [] 37 else (n, Ladspa_raw.port_descriptor ladspa n)::_portdesc (n + 1) in 38 let ports = _portdesc 0 in 56 let ports = get_ports ladspa in 39 57 let inAudioPorts = List.filter (function (a,(b,c)) -> 40 58 b = Ladspa_raw.Input && c = Ladspa_raw.Audio) ports in 41 59 let outAudioPorts = List.filter (function (a,(b,c)) -> 42 60 b = Ladspa_raw.Output && c = Ladspa_raw.Audio) ports in 43 if List.length inAudioPorts = 1 && List.length outAudioPorts = 1 then ( 61 let num_in = List.length inAudioPorts in 62 let num_out = List.length outAudioPorts in 63 let create_in_buffers n sound length = 64 let b = Array.init n (function _ -> Ladspa_raw.empty_buffer length) in 65 Ladspa_raw.raw_sound_to_buffers sound b length; b in 66 let create_out_buffers n length = 67 Array.init n (function _ -> Ladspa_raw.empty_buffer length) in 68 let connect portlist portpos h b i = 69 Ladspa_raw.connect_port ladspa h.(i) (fst (List.nth portlist portpos)) 70 b.(i) in 71 if num_in = 1 && num_out = 1 then ( 44 72 let raw_insound = insound remix extent render_extent in 45 73 let channels = Remix.channels remix in 46 let buffers = 47 Array.init channels (function _ -> Ladspa_raw.empty_buffer raw_length) in 48 Ladspa_raw.raw_sound_to_buffers raw_insound buffers raw_length; 49 let outbuffers = 50 Array.init channels (function _ -> Ladspa_raw.empty_buffer raw_length) in 74 let buffers = create_in_buffers channels raw_insound raw_length in 75 let outbuffers = create_out_buffers channels raw_length in 51 76 for i = 0 to (channels - 1) do ( 52 Ladspa_raw.connect_port ladspa handles.(i) (fst (List.hd inAudioPorts)) 53 buffers.(i); 54 Ladspa_raw.connect_port ladspa handles.(i) (fst (List.hd outAudioPorts)) 55 outbuffers.(i); 77 connect inAudioPorts 0 handles buffers i; 78 connect outAudioPorts 0 handles outbuffers i; 79 Ladspa_raw.run ladspa handles.(i) raw_length 80 ) done; 81 Ladspa_raw.buffers_to_raw_sound outbuffers raw_length 82 ) else if num_in = 0 && num_out = 1 then ( 83 let channels = Remix.channels remix in 84 let outbuffers = create_out_buffers channels raw_length in 85 for i = 0 to (channels - 1) do ( 86 connect outAudioPorts 0 handles outbuffers i; 56 87 Ladspa_raw.run ladspa handles.(i) raw_length 57 88 ) done; … … 63 94 from_ladspa_impl ladspa setup href;; 64 95 96 ocaml-remix/trunk/plugin.mli
r510 r511 5 5 val from_ladspa : Ladspa_raw.plugin -> 6 6 (Ladspa_raw.plugin -> Ladspa_raw.handle -> unit) -> plugin;; 7 8 val ladspa_init : (int -> float) -> Ladspa_raw.plugin -> Ladspa_raw.handle -> unit;; ocaml-remix/trunk/track_test_sins.ml
r510 r511 21 21 Layer.add_plugin layer1 a (Time.Seconds 6.0, Time.Seconds 4.0);; 22 22 Layer.add_plugin layer1 e (Time.Seconds 11.0, Time.Seconds 4.0);; 23 24 let noise = Ladspa_raw.open_plugin "noise:noise_white";; 25 let setup_noise _ = 1.0;; 26 let noise_p = Plugin.from_ladspa noise (Plugin.ladspa_init setup_noise);; 27 Layer.add_plugin layer1 noise_p (Time.Seconds 4.0, Time.Seconds 2.0);; 28 23 29 Layer.add_transparency layer1 trans1 (Time.Seconds 0.0, Time.Seconds 4.0);; 24 30 Layer.add_transparency layer1 trans1 (Time.Seconds 8.0, Time.Seconds 4.0);; … … 30 36 Layer.add_plugin layer2 a (Time.Seconds 12.0, Time.Seconds 4.0);; 31 37 32 let set_control_value plugin handle port value =33 let v = Ladspa_raw.control_value_to_buffer value in34 Ladspa_raw.connect_port plugin handle port v;;35 36 38 let layer3 = Layer.empty();; 37 39 let ladspa = Ladspa_raw.open_plugin "tap_vibrato:tap_vibrato";; 38 let setup_plugin plugin handle = 39 set_control_value plugin handle 0 5.0; 40 set_control_value plugin handle 1 5.0; 41 set_control_value plugin handle 2 (-90.0); 42 set_control_value plugin handle 3 (0.0); 43 set_control_value plugin handle 4 0.0;; 44 let plugin = Plugin.from_ladspa ladspa setup_plugin;; 40 let setup_plugin v = match v with 41 | 0 -> 5.0 42 | 1 -> 5.0 43 | 2 -> -90.0 44 | _ -> 0.0;; 45 let plugin = Plugin.from_ladspa ladspa (Plugin.ladspa_init setup_plugin);; 45 46 Layer.add_plugin layer3 plugin (Time.Seconds 2.0, Time.Seconds 7.0);; 46 47 let trans = Transparency.linear_ramp 1.0 1.0;;
