;; AudioBuffer created with b64 is always malloc'd
;; and expected to live for the duration of the session
(bind-func AudioBuffer
(lambda (frames chans samplerate phase root loopstart loopframes b64:String*)
(let ((ab (AudioBuffer_malloc frames chans samplerate)))
(AudioBuffer_set_phase ab phase)
(AudioBuffer_set_root_pitch ab root)
(AudioBuffer_set_loop_start ab loopstart)
(AudioBuffer_set_loop_frames ab loopframes)
(AudioBuffer_set_data_b64 ab b64)
ab)))