Changeset 6716
- Timestamp:
- 07/02/09 13:37:13 (14 months ago)
- Location:
- trunk/liquidsoap/src
- Files:
-
- 5 modified
- 1 copied
-
Makefile (modified) (2 diffs)
-
formats/midiformat.ml (modified) (1 diff)
-
operators/midi_routing.ml (modified) (2 diffs)
-
stream/midi.ml (modified) (1 diff)
-
synth/synth_op.ml (modified) (1 diff)
-
tools/mutils.ml (copied) (copied from trunk/liquidsoap/src/tools/sutils.ml) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/liquidsoap/src/Makefile
r6706 r6716 158 158 lang/lang_types.ml lang/lang_values.ml \ 159 159 lang/lang_lexer.ml lang/lang_parser.ml lang/lang_pp.ml lang/lang.ml \ 160 tools/harbor.ml tools/ioRing.ml tools/file_decoder.ml \160 tools/harbor.ml tools/ioRing.ml tools/file_decoder.ml tools/mutils.ml \ 161 161 $(video_converters) $(audio_converters) \ 162 162 $(ogg_utils) $(protocols) $(sources) $(operators) $(outputs) $(io) \ … … 183 183 decoder.ml request.ml outputs/output.ml \ 184 184 lang/lang.ml tools/server.ml \ 185 tools/tutils.ml tools/sutils.ml \185 tools/tutils.ml tools/sutils.ml tools/mutils.ml \ 186 186 tools/ringbuffer.ml \ 187 187 tools/doc.ml tools/wav.ml \ -
trunk/liquidsoap/src/formats/midiformat.ml
r6713 r6716 290 290 (* Convert delta-times in delta-liquidsoap-ticks. *) 291 291 let track = 292 let tpq = 293 match division with 294 | Midi.Ticks_per_quarter tpq -> tpq 295 | _ -> assert false 296 in 297 let tpq = Int64.of_int tpq in 298 let tempo = ref (Int64.of_int 125000) in 299 let tps = Int64.of_int (Fmt.ticks_per_second ()) in 300 let ten = Int64.of_int 1000000 in 292 let tempo = ref 125000 in 301 293 List.map 302 294 (fun (d,(c,e)) -> 303 (* These computations sometimes overflow on 32 bits. *) 304 let d = Int64.of_int d in 305 let d = 306 let ( * ) = Int64.mul in 307 let ( / ) = Int64.div in 308 (((d * !tempo) / tpq) * tps) / ten 309 in 310 let d = Int64.to_int d in 295 let d = Mutils.ticks_of_delta division !tempo d in 311 296 ( 312 297 match e with 313 298 | Midi.Tempo t -> 314 tempo := Int64.of_intt299 tempo := t 315 300 | _ -> () 316 301 ); -
trunk/liquidsoap/src/operators/midi_routing.ml
r6706 r6716 70 70 (fun p _ -> 71 71 let f v = List.assoc v p in 72 let out = Lang.to_int(f "track_out") in72 let out = Mutils.to_chan (f "track_out") in 73 73 let src = Lang.to_source (f "") in 74 74 new merge src out) … … 84 84 (fun p _ -> 85 85 (* let f v = List.assoc v p in *) 86 let t = List.map Lang.to_int(Lang.to_list (Lang.assoc "" 1 p)) in86 let t = List.map Mutils.to_chan (Lang.to_list (Lang.assoc "" 1 p)) in 87 87 let src = Lang.to_source (Lang.assoc "" 2 p) in 88 88 new remove src t) -
trunk/liquidsoap/src/stream/midi.ml
r6694 r6716 48 48 | Custom of string 49 49 50 type header =51 {52 division : division53 }54 55 50 type track = (int * event) list 56 51 57 52 let create_track () = [] 58 59 (* TODO: !Fmt.ticks_per_second *)60 let ticks_per_second = 4410061 62 let ticks_of_delta division tempo delta =63 match division with64 | Ticks_per_quarter t ->65 (delta * 4 * 60 * ticks_per_second) / (t * tempo)66 | SMPTE (fps,res) ->67 (delta * ticks_per_second) / (fps * res)68 69 let take ticks track = () -
trunk/liquidsoap/src/synth/synth_op.ml
r6711 r6716 86 86 (fun p _ -> 87 87 let f v = List.assoc v p in 88 let chan = Lang.to_int(f "channel") in88 let chan = Mutils.to_chan (f "channel") in 89 89 let volume = Lang.to_float (f "volume") in 90 90 let adsr = -
trunk/liquidsoap/src/tools/mutils.ml
r6344 r6716 21 21 *****************************************************************************) 22 22 23 let lin_of_dB x = 10. ** (x /. 20.) 23 (** Convert a value into a channel number, checking that it actually exists. *) 24 let to_chan v = 25 let n = Lang.to_int v in 26 if n >= Fmt.midi_channels () then 27 raise (Lang.Invalid_value (v, "channel number too big (try increasing lang.midi.channels)")) 28 else 29 n 24 30 25 let dB_of_lin x = 20. *. log x /. log 10. 26 27 let clip x = min 1. (max (-.1.) x) 31 (** Convert delta-times to ticks. *) 32 let ticks_of_delta division tempo delta = 33 match division with 34 | Midi.Ticks_per_quarter tpq -> 35 (* These computations sometimes overflow on 32 bits. *) 36 let tpq = Int64.of_int tpq in 37 let tempo = Int64.of_int tempo in 38 let tps = Int64.of_int (Fmt.ticks_per_second ()) in 39 let ten = Int64.of_int 1000000 in 40 let delta = Int64.of_int delta in 41 let ( * ) = Int64.mul in 42 let ( / ) = Int64.div in 43 Int64.to_int ((((delta * tempo) / tpq) * tps) / ten) 44 | Midi.SMPTE (fps,res) -> 45 (delta * Fmt.ticks_per_second ()) / (fps * res)
