audiofile_aiff_read_samples   xtlang


Defined in:  https://github.com/digego/extempore/tree/v0.8.9/libs/core/audiobuffer.xtm

Implementation

;; currently, this will crash out if the AIFF sub-chunks are bad (it
;; doesn't know where the end of the file). It will gracefully handle
;; non AIFF files, though. Only corrupted ones would be a problem
(bind-func audiofile_aiff_read_samples
  (lambda (filepath dest:SAMPLE*)
    (let ((filedata (sys_slurp_file filepath)))
      (if (null? filedata)
          (begin (println "aiff file error: could not open file")
                 #f)
          (let ((common (iffchunk_find_dumb filedata "COMM"))
                (sounddata (iffchunk_find_dumb filedata "SSND")))
            ;; pull the data out of the common chunk
            (let ((nchan (i16toi64 (swapi16 (pref (cast (pref-ptr common IFF_CHUNK_HEADER_SIZE) i16*) 0))))
                  (nframes (i32toi64 (swapi32 (pref (cast (pref-ptr common (+ IFF_CHUNK_HEADER_SIZE 2)) i32*) 0))))
                  (bitdepth (i16toi64 (swapi16 (pref (cast (pref-ptr common (+ IFF_CHUNK_HEADER_SIZE 6)) i16*) 0))))
                  (res (audiofile_copy_samples (pref-ptr sounddata (+ IFF_CHUNK_HEADER_SIZE 8))
                                               dest
                                               (* nchan nframes)
                                               bitdepth
                                               WAVE_FORMAT_PCM ;; AIFF is always PCM
                                               #f)))           ;; AIFF is *not* little-endian
              (free filedata)
              res))))))


Back to Index

Similar Entries

  • AudioBuffer_from_aiff    xtlang
  • AudioBuffer_read    xtlang
  • AudioBuffer_read    xtlang
  • AudioBuffer_read_interp    xtlang
  • AudioBuffer_read_interp_mix    xtlang
  • AudioBuffer_read_interp_pw    xtlang
  • AudioBuffer_read_looped    xtlang
  • AudioBuffer_read_looped    xtlang
  • aiff_validate    xtlang
  • astra_readX    xtlang
  • astra_reader    xtlang
  • audiofile_16bitPCM_to_sample_be    xtlang
  • audiofile_16bitPCM_to_sample_le    xtlang
  • audiofile_24bitPCM_to_sample_be    xtlang
  • audiofile_24bitPCM_to_sample_le    xtlang
  • audiofile_copy_samples    xtlang
  • audiofile_float_to_sample_be    xtlang
  • audiofile_float_to_sample_le    xtlang
  • audiofile_read_samples    xtlang
  • audiofile_wave_read_samples    xtlang
  • clock->samples    scheme
  • impc:compiler:print-already-bound-error    scheme
  • midi_read_loop    xtlang
  • midi_read_msg    xtlang
  • nonblocking_read_loop    xtlang
  • nonblocking_read_loop    xtlang
  • nonblocking_read_loop    xtlang
  • nonblocking_read_loop    xtlang
  • ocv_imread    xtlang
  • ocv_imread    xtlang
  • ocv_imread    scheme
  • ocv_imread1    xtlang
  • ocv_imread2    xtlang
  • ocv_read    xtlang
  • ocv_read    xtlang
  • ocv_read    scheme
  • ocv_read1    xtlang
  • ocv_read2    xtlang
  • read_and_write_frame    xtlang
  • samples->clock    scheme
  • sf_read_file_into_buffer    xtlang
  • sf_samples_from_file    xtlang
  • svm_read_line    xtlang
  • svm_read_problem    xtlang
  • sys_file_read    xtlang
  • thread_native_call    xtlang
  • thread_native_call_with_zone    xtlang
  • xhid_read    xtlang