Show
Ignore:
Timestamp:
11/19/07 15:39:53 (1 year ago)
Author:
shans
Message:

Replacing sound implementation - WAS ocaml int arrays, IS native float
arrays. This has not yet been completely been debugged!

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ocaml-remix/trunk/sound.ml

    r514 r529  
    11(* a raw sound is an array of int values *) 
    2 type raw_sound = int array;; 
     2type raw_sound = FB.buffer;; 
    33 
    44(* but sounds have a start, a rendered start, and a rendered length *) 
     
    66 
    77let silence r e (s,l) = 
    8   let raw_length = Time.time_to_raw_samples r l in 
    9   Array.create raw_length 0;; 
     8  let length = Time.time_to_raw_time r l in 
     9  FB.create length (Remix.channels r);; 
    1010 
    1111(* note: length applies to raw sounds *) 
    12 let length r s = (Array.length s) / (Remix.channels r);; 
     12let length = FB.length;; 
     13 
     14let size = FB.size;; 
    1315 
    1416(* note: ignore start time when writing raw sounds *) 
    1517let write_raw_sound r out snd = 
    1618  IO.nwrite out "RIFF"; 
    17   IO.write_i32 out ((Array.length snd) * 2 + 36); 
     19  IO.write_i32 out ((size snd) * 2 + 36); 
    1820  IO.nwrite out "WAVE"; 
    1921  IO.nwrite out "fmt "; (* format chunk *) 
     
    2628  IO.write_i16 out 16; (* bits per sample - always 16 *) 
    2729  IO.nwrite out "data"; (* data chunk *) 
    28   IO.write_i32 out ((Array.length snd) * 2); 
    29   for i = 0 to (Array.length snd - 1) do IO.write_i16 out snd.(i) done;; 
     30  IO.write_i32 out ((size snd) * 2); 
     31  for i = 0 to (size snd - 1) do IO.write_i16 out (FB.short_at snd i) done;; 
    3032 
    3133let write output remix snd start render_extent =