diff --git a/Bindings/AudioFile.hsc b/Bindings/AudioFile.hsc
new file mode 100644
--- /dev/null
+++ b/Bindings/AudioFile.hsc
@@ -0,0 +1,406 @@
+#include <bindings.dsl.h>
+#include <audiofile.h>
+
+module Bindings.AudioFile where
+#strict_import
+import Bindings.AudioFile.VFS
+import Bindings.AudioFile.PVList
+
+#opaque_t  _AFfilesetup
+#synonym_t AFfilesetup , Ptr <_AFfilesetup>
+
+#opaque_t  _AFfilehandle
+#synonym_t AFfilehandle, Ptr <_AFfilehandle>
+
+#callback AFerrfunc, CLong -> Ptr CChar -> IO ()
+
+#integral_t AFframecount
+#integral_t AFfileoffset
+
+#pointer AF_NULL_FILESETUP
+#pointer AF_NULL_FILEHANDLE
+
+#num AF_ERR_BASE
+
+#num AF_DEFAULT_TRACK
+
+#num AF_DEFAULT_INST
+
+#num AF_NUM_UNLIMITED
+
+#num AF_BYTEORDER_BIGENDIAN
+#num AF_BYTEORDER_LITTLEENDIAN
+
+#num AF_FILE_UNKNOWN
+#num AF_FILE_RAWDATA
+#num AF_FILE_AIFFC
+#num AF_FILE_AIFF
+#num AF_FILE_NEXTSND
+#num AF_FILE_WAVE
+#num AF_FILE_BICSF
+#num AF_FILE_IRCAM
+#num AF_FILE_MPEG1BITSTREAM
+#num AF_FILE_SOUNDDESIGNER1
+#num AF_FILE_SOUNDDESIGNER2
+#num AF_FILE_AVR
+#num AF_FILE_IFF_8SVX
+#num AF_FILE_SAMPLEVISION
+#num AF_FILE_VOC
+#num AF_FILE_NIST_SPHERE
+#num AF_FILE_SOUNDFONT2
+
+#num AF_LOOP_MODE_NOLOOP
+#num AF_LOOP_MODE_FORW
+#num AF_LOOP_MODE_FORWBAKW
+
+#num AF_SAMPFMT_TWOSCOMP
+#num AF_SAMPFMT_UNSIGNED
+#num AF_SAMPFMT_FLOAT
+#num AF_SAMPFMT_DOUBLE
+
+#num AF_INST_LOOP_OFF
+#num AF_INST_LOOP_CONTINUOUS
+#num AF_INST_LOOP_SUSTAIN
+
+#num AF_INST_MIDI_BASENOTE
+#num AF_INST_NUMCENTS_DETUNE
+#num AF_INST_MIDI_LONOTE
+#num AF_INST_MIDI_HINOTE
+#num AF_INST_MIDI_LOVELOCITY
+#num AF_INST_MIDI_HIVELOCITY
+#num AF_INST_NUMDBS_GAIN
+#num AF_INST_SUSLOOPID
+#num AF_INST_RELLOOPID
+#num AF_INST_SAMP_STARTFRAME
+#num AF_INST_SAMP_ENDFRAME
+#num AF_INST_SAMP_MODE
+#num AF_INST_TRACKID
+#num AF_INST_NAME
+#num AF_INST_SAMP_RATE
+#num AF_INST_PRESETID
+#num AF_INST_PRESET_NAME
+
+#num AF_MISC_UNRECOGNIZED
+#num AF_MISC_COPY
+#num AF_MISC_AUTH
+#num AF_MISC_NAME
+#num AF_MISC_ANNO
+#num AF_MISC_APPL
+#num AF_MISC_MIDI
+#num AF_MISC_PCMMAP
+#num AF_MISC_NeXT
+#num AF_MISC_IRCAM_PEAKAMP
+#num AF_MISC_IRCAM_COMMENT
+#num AF_MISC_COMMENT
+#num AF_MISC_ICMT
+#num AF_MISC_ICRD
+#num AF_MISC_ISFT
+
+#num AF_COMPRESSION_UNKNOWN
+#num AF_COMPRESSION_NONE
+#num AF_COMPRESSION_G722
+#num AF_COMPRESSION_G711_ULAW
+#num AF_COMPRESSION_G711_ALAW
+#num AF_COMPRESSION_APPLE_ACE2
+#num AF_COMPRESSION_APPLE_ACE8
+#num AF_COMPRESSION_APPLE_MAC3
+#num AF_COMPRESSION_APPLE_MAC6
+#num AF_COMPRESSION_G726
+#num AF_COMPRESSION_G728
+#num AF_COMPRESSION_DVI_AUDIO
+#num AF_COMPRESSION_IMA
+#num AF_COMPRESSION_GSM
+#num AF_COMPRESSION_FS1016
+#num AF_COMPRESSION_DV
+#num AF_COMPRESSION_MS_ADPCM
+
+#num AF_QUERYTYPE_INSTPARAM
+#num AF_QUERYTYPE_FILEFMT
+#num AF_QUERYTYPE_COMPRESSION
+#num AF_QUERYTYPE_COMPRESSIONPARAM
+#num AF_QUERYTYPE_MISC
+#num AF_QUERYTYPE_INST
+#num AF_QUERYTYPE_MARK
+#num AF_QUERYTYPE_LOOP
+
+#num AF_QUERY_NAME
+#num AF_QUERY_DESC
+#num AF_QUERY_LABEL
+#num AF_QUERY_TYPE
+#num AF_QUERY_DEFAULT
+#num AF_QUERY_ID_COUNT
+#num AF_QUERY_IDS
+#num AF_QUERY_IMPLEMENTED
+#num AF_QUERY_TYPE_COUNT
+#num AF_QUERY_TYPES
+#num AF_QUERY_NATIVE_SAMPFMT
+#num AF_QUERY_NATIVE_SAMPWIDTH
+#num AF_QUERY_SQUISHFAC
+#num AF_QUERY_MAX_NUMBER
+#num AF_QUERY_SUPPORTED
+
+#num AF_QUERY_TRACKS
+#num AF_QUERY_CHANNELS
+#num AF_QUERY_SAMPLE_SIZES
+#num AF_QUERY_SAMPLE_FORMATS
+#num AF_QUERY_COMPRESSION_TYPES
+
+#num AF_QUERY_VALUE_COUNT
+#num AF_QUERY_VALUES
+
+#num AF_BAD_NOT_IMPLEMENTED
+#num AF_BAD_FILEHANDLE
+#num AF_BAD_OPEN
+#num AF_BAD_CLOSE
+#num AF_BAD_READ
+#num AF_BAD_WRITE
+#num AF_BAD_LSEEK
+#num AF_BAD_NO_FILEHANDLE
+#num AF_BAD_ACCMODE
+#num AF_BAD_NOWRITEACC
+#num AF_BAD_NOREADACC
+#num AF_BAD_FILEFMT
+#num AF_BAD_RATE
+#num AF_BAD_CHANNELS
+#num AF_BAD_SAMPCNT
+#num AF_BAD_WIDTH
+#num AF_BAD_SEEKMODE
+#num AF_BAD_NO_LOOPDATA
+#num AF_BAD_MALLOC
+#num AF_BAD_LOOPID
+#num AF_BAD_SAMPFMT
+#num AF_BAD_FILESETUP
+#num AF_BAD_TRACKID
+#num AF_BAD_NUMTRACKS
+#num AF_BAD_NO_FILESETUP
+#num AF_BAD_LOOPMODE
+#num AF_BAD_INSTID
+#num AF_BAD_NUMLOOPS
+#num AF_BAD_NUMMARKS
+#num AF_BAD_MARKID
+#num AF_BAD_MARKPOS
+#num AF_BAD_NUMINSTS
+#num AF_BAD_NOAESDATA
+#num AF_BAD_MISCID
+#num AF_BAD_NUMMISC
+#num AF_BAD_MISCSIZE
+#num AF_BAD_MISCTYPE
+#num AF_BAD_MISCSEEK
+#num AF_BAD_STRLEN
+#num AF_BAD_RATECONV
+#num AF_BAD_SYNCFILE
+#num AF_BAD_CODEC_CONFIG
+#num AF_BAD_CODEC_STATE
+#num AF_BAD_CODEC_LICENSE
+#num AF_BAD_CODEC_TYPE
+#num AF_BAD_COMPRESSION
+#num AF_BAD_COMPTYPE
+
+#num AF_BAD_INSTPTYPE
+#num AF_BAD_INSTPID
+#num AF_BAD_BYTEORDER
+#num AF_BAD_FILEFMT_PARAM
+#num AF_BAD_COMP_PARAM
+#num AF_BAD_DATAOFFSET
+#num AF_BAD_FRAMECNT
+#num AF_BAD_QUERYTYPE
+#num AF_BAD_QUERY
+#num AF_WARNING_CODEC_RATE
+#num AF_WARNING_RATECVT
+
+#num AF_BAD_HEADER
+#num AF_BAD_FRAME
+#num AF_BAD_LOOPCOUNT
+#num AF_BAD_DMEDIA_CALL
+
+#num AF_BAD_AIFF_HEADER
+#num AF_BAD_AIFF_FORM
+#num AF_BAD_AIFF_SSND
+#num AF_BAD_AIFF_CHUNKID
+#num AF_BAD_AIFF_COMM
+#num AF_BAD_AIFF_INST
+#num AF_BAD_AIFF_MARK
+#num AF_BAD_AIFF_SKIP
+#num AF_BAD_AIFF_LOOPMODE
+
+#num AF_ERR_NOT_IMPLEMENTED
+#num AF_ERR_BAD_FILEHANDLE
+#num AF_ERR_BAD_READ
+#num AF_ERR_BAD_WRITE
+#num AF_ERR_BAD_LSEEK
+#num AF_ERR_BAD_ACCMODE
+#num AF_ERR_NO_WRITEACC
+#num AF_ERR_NO_READACC
+#num AF_ERR_BAD_FILEFMT
+#num AF_ERR_BAD_RATE
+#num AF_ERR_BAD_CHANNELS
+#num AF_ERR_BAD_SAMPCNT
+#num AF_ERR_BAD_WIDTH
+#num AF_ERR_BAD_SEEKMODE
+#num AF_ERR_BAD_LOOPID
+#num AF_ERR_BAD_SAMPFMT
+#num AF_ERR_BAD_FILESETUP
+#num AF_ERR_BAD_TRACKID
+#num AF_ERR_BAD_NUMTRACKS
+#num AF_ERR_BAD_LOOPMODE
+#num AF_ERR_BAD_INSTID
+#num AF_ERR_BAD_NUMLOOPS
+#num AF_ERR_BAD_NUMMARKS
+#num AF_ERR_BAD_MARKID
+#num AF_ERR_BAD_MARKPOS
+#num AF_ERR_BAD_NUMINSTS
+#num AF_ERR_BAD_NOAESDATA
+#num AF_ERR_BAD_MISCID
+#num AF_ERR_BAD_NUMMISC
+#num AF_ERR_BAD_MISCSIZE
+#num AF_ERR_BAD_MISCTYPE
+#num AF_ERR_BAD_MISCSEEK
+#num AF_ERR_BAD_STRLEN
+#num AF_ERR_BAD_RATECONV
+#num AF_ERR_BAD_SYNCFILE
+#num AF_ERR_BAD_CODEC_CONFIG
+#num AF_ERR_BAD_CODEC_TYPE
+#num AF_ERR_BAD_INSTPTYPE
+#num AF_ERR_BAD_INSTPID
+
+#num AF_ERR_BAD_BYTEORDER
+#num AF_ERR_BAD_FILEFMT_PARAM
+#num AF_ERR_BAD_COMP_PARAM
+#num AF_ERR_BAD_DATAOFFSET
+#num AF_ERR_BAD_FRAMECNT
+
+#num AF_ERR_BAD_QUERYTYPE
+#num AF_ERR_BAD_QUERY
+#num AF_ERR_BAD_HEADER
+#num AF_ERR_BAD_FRAME
+#num AF_ERR_BAD_LOOPCOUNT
+
+#num AF_ERR_BAD_AIFF_HEADER
+#num AF_ERR_BAD_AIFF_FORM
+#num AF_ERR_BAD_AIFF_SSND
+#num AF_ERR_BAD_AIFF_CHUNKID
+#num AF_ERR_BAD_AIFF_COMM
+#num AF_ERR_BAD_AIFF_INST
+#num AF_ERR_BAD_AIFF_MARK
+#num AF_ERR_BAD_AIFF_SKIP
+#num AF_ERR_BAD_AIFF_LOOPMODE
+
+#ccall afSetErrorHandler, <AFerrfunc> -> IO <AFerrfunc>
+
+#ccall afQuery       , CInt -> CInt -> CInt -> CInt -> CInt -> IO <AUpvlist>
+#ccall afQueryLong   , CInt -> CInt -> CInt -> CInt -> CInt -> IO CLong
+#ccall afQueryDouble , CInt -> CInt -> CInt -> CInt -> CInt -> IO CDouble
+#ccall afQueryPointer, CInt -> CInt -> CInt -> CInt -> CInt -> IO (Ptr ())
+
+#ccall afNewFileSetup   , IO <AFfilesetup>
+#ccall afFreeFileSetup  , <AFfilesetup> -> IO ()
+#ccall afIdentifyFD     , CInt -> IO CInt
+#ccall afIdentifyNamedFD, CInt -> Ptr CChar -> Ptr CInt -> IO CInt
+
+#ccall afOpenFile       , Ptr CChar -> Ptr CChar -> <AFfilesetup> -> IO <AFfilehandle>
+#ccall afOpenVirtualFile, Ptr <AFvirtualfile> -> Ptr CChar -> <AFfilesetup> -> IO <AFfilehandle>
+#ccall afOpenFD         , CInt -> Ptr CChar -> <AFfilesetup> -> IO <AFfilehandle>
+#ccall afOpenNamedFD    , CInt -> Ptr CChar -> <AFfilesetup> -> Ptr CChar -> IO <AFfilehandle>
+
+#ccall afSaveFilePosition   , <AFfilehandle> -> IO ()
+#ccall afRestoreFilePosition, <AFfilehandle> -> IO ()
+#ccall afSyncFile           , <AFfilehandle> -> IO CInt
+#ccall afCloseFile          , <AFfilehandle> -> IO CInt
+
+#ccall afInitFileFormat, <AFfilesetup> -> CInt -> IO ()
+#ccall afGetFileFormat , <AFfilehandle> -> Ptr CInt -> IO CInt
+
+#ccall afInitTrackIDs, <AFfilesetup> -> Ptr CInt -> CInt -> IO ()
+#ccall afGetTrackIDs , <AFfilehandle> -> Ptr CInt -> IO CInt
+
+#ccall afReadFrames         , <AFfilehandle> -> CInt -> Ptr () -> CInt -> IO CInt
+#ccall afWriteFrames        , <AFfilehandle> -> CInt -> Ptr () -> CInt -> IO CInt
+#ccall afSeekFrame          , <AFfilehandle> -> CInt -> <AFframecount> -> IO <AFframecount>
+#ccall afTellFrame          , <AFfilehandle> -> CInt -> IO <AFframecount>
+#ccall afGetTrackBytes      , <AFfilehandle> -> CInt -> IO <AFfileoffset>
+#ccall afGetFrameSize       , <AFfilehandle> -> CInt -> CInt -> IO CFloat
+#ccall afGetVirtualFrameSize, <AFfilehandle> -> CInt -> CInt -> IO CFloat
+
+#ccall afInitAESChannelData  , <AFfilesetup> -> CInt -> IO ()
+#ccall afInitAESChannelDataTo, <AFfilesetup> -> CInt -> CInt -> IO ()
+#ccall afGetAESChannelData   , <AFfilehandle> -> CInt -> Ptr CUChar -> IO CInt
+#ccall afSetAESChannelData   , <AFfilehandle> -> CInt -> Ptr CUChar -> IO ()
+
+#ccall afInitByteOrder      , <AFfilesetup> -> CInt -> CInt -> IO ()
+#ccall afGetByteOrder       , <AFfilehandle> -> CInt -> IO CInt
+#ccall afSetVirtualByteOrder, <AFfilehandle> -> CInt -> CInt -> IO CInt
+#ccall afGetVirtualByteOrder, <AFfilehandle> -> CInt -> IO CInt
+
+#ccall afInitChannels      , <AFfilesetup> -> CInt -> CInt -> IO ()
+#ccall afGetChannels       , <AFfilehandle> -> CInt -> IO CInt
+#ccall afSetVirtualChannels, <AFfilehandle> -> CInt -> CInt -> IO CInt
+#ccall afGetVirtualChannels, <AFfilehandle> -> CInt -> IO CInt
+#ccall afSetChannelMatrix  , <AFfilehandle> -> CInt -> Ptr CDouble -> IO ()
+
+#ccall afInitSampleFormat      , <AFfilesetup> -> CInt -> CInt -> CInt -> IO ()
+#ccall afGetSampleFormat       , <AFfilehandle> -> CInt -> Ptr CInt -> Ptr CInt -> IO ()
+#ccall afGetVirtualSampleFormat, <AFfilehandle> -> CInt -> Ptr CInt -> Ptr CInt -> IO ()
+#ccall afSetVirtualSampleFormat, <AFfilehandle> -> CInt -> CInt -> CInt -> IO CInt
+
+#ccall afInitRate, <AFfilesetup> -> CInt -> CDouble -> IO ()
+#ccall afGetRate , <AFfilehandle> -> CInt -> IO CDouble
+
+#ccall afInitCompression, <AFfilesetup> -> CInt -> CInt -> IO ()
+#ccall afGetCompression , <AFfilehandle> -> CInt -> IO CInt
+
+#ccall afInitPCMMapping      , <AFfilesetup> -> CInt -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
+#ccall afGetPCMMapping       , <AFfilehandle> -> CInt -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+#ccall afSetTrackPCMMapping  , <AFfilehandle> -> CInt -> CDouble -> CDouble -> CDouble -> CDouble -> IO CInt
+#ccall afSetVirtualPCMMapping, <AFfilehandle> -> CInt -> CDouble -> CDouble -> CDouble -> CDouble -> IO CInt
+#ccall afGetVirtualPCMMapping, <AFfilehandle> -> CInt -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()
+
+#ccall afInitDataOffset, <AFfilesetup> -> CInt -> <AFfileoffset> -> IO ()
+#ccall afGetDataOffset , <AFfilehandle> -> CInt -> IO <AFfileoffset>
+
+#ccall afInitFrameCount, <AFfilesetup> -> CInt -> <AFframecount> -> IO ()
+#ccall afGetFrameCount , <AFfilehandle> -> CInt -> IO <AFframecount>
+
+#ccall afInitLoopIDs , <AFfilesetup> -> CInt -> Ptr CInt -> CInt -> IO ()
+#ccall afGetLoopIDs  , <AFfilehandle> -> CInt -> Ptr CInt -> IO CInt
+#ccall afSetLoopMode , <AFfilehandle> -> CInt -> CInt -> CInt -> IO ()
+#ccall afGetLoopMode , <AFfilehandle> -> CInt -> CInt -> IO CInt
+#ccall afSetLoopCount, <AFfilehandle> -> CInt -> CInt -> CInt -> IO CInt
+#ccall afGetLoopCount, <AFfilehandle> -> CInt -> CInt -> IO CInt
+#ccall afSetLoopStart, <AFfilehandle> -> CInt -> CInt -> CInt -> IO ()
+#ccall afGetLoopStart, <AFfilehandle> -> CInt -> CInt -> IO CInt
+#ccall afSetLoopEnd  , <AFfilehandle> -> CInt -> CInt -> CInt -> IO ()
+#ccall afGetLoopEnd  , <AFfilehandle> -> CInt -> CInt -> IO CInt
+
+#ccall afSetLoopStartFrame, <AFfilehandle> -> CInt -> CInt -> <AFframecount> -> IO CInt
+#ccall afGetLoopStartFrame, <AFfilehandle> -> CInt -> CInt -> IO <AFframecount>
+#ccall afSetLoopEndFrame  , <AFfilehandle> -> CInt -> CInt -> <AFframecount> -> IO CInt
+#ccall afGetLoopEndFrame  , <AFfilehandle> -> CInt -> CInt -> IO <AFframecount>
+
+#ccall afSetLoopTrack, <AFfilehandle> -> CInt -> CInt -> CInt -> IO ()
+#ccall afGetLoopTrack, <AFfilehandle> -> CInt -> CInt -> IO CInt
+
+#ccall afInitMarkIDs    , <AFfilesetup> -> CInt -> Ptr CInt -> CInt -> IO ()
+#ccall afGetMarkIDs     , <AFfilehandle> -> CInt -> Ptr CInt -> IO CInt
+#ccall afSetMarkPosition, <AFfilehandle> -> CInt -> CInt -> <AFframecount> -> IO ()
+#ccall afGetMarkPosition, <AFfilehandle> -> CInt -> CInt -> IO <AFframecount>
+#ccall afInitMarkName   , <AFfilesetup> -> CInt -> CInt -> Ptr CChar -> IO ()
+#ccall afInitMarkComment, <AFfilesetup> -> CInt -> CInt -> Ptr CChar -> IO ()
+#ccall afGetMarkName    , <AFfilehandle> -> CInt -> CInt -> IO (Ptr CChar)
+#ccall afGetMarkComment , <AFfilehandle> -> CInt -> CInt -> IO (Ptr CChar)
+
+#ccall afInitInstIDs     , <AFfilesetup> -> Ptr CInt -> CInt -> IO ()
+#ccall afGetInstIDs      , <AFfilehandle> -> Ptr CInt -> IO CInt
+#ccall afGetInstParams   , <AFfilehandle> -> CInt -> <AUpvlist> -> CInt -> IO ()
+#ccall afSetInstParams   , <AFfilehandle> -> CInt -> <AUpvlist> -> CInt -> IO ()
+#ccall afGetInstParamLong, <AFfilehandle> -> CInt -> CInt -> IO CLong
+#ccall afSetInstParamLong, <AFfilehandle> -> CInt -> CInt -> CLong -> IO ()
+
+#ccall afInitMiscIDs , <AFfilesetup> -> Ptr CInt -> CInt -> IO ()
+#ccall afGetMiscIDs  , <AFfilehandle> -> Ptr CInt -> IO CInt
+#ccall afInitMiscType, <AFfilesetup> -> CInt -> CInt -> IO ()
+#ccall afGetMiscType , <AFfilehandle> -> CInt -> IO CInt
+#ccall afInitMiscSize, <AFfilesetup> -> CInt -> CInt -> IO ()
+#ccall afGetMiscSize , <AFfilehandle> -> CInt -> IO CInt
+#ccall afWriteMisc   , <AFfilehandle> -> CInt -> Ptr () -> CInt -> IO CInt
+#ccall afReadMisc    , <AFfilehandle> -> CInt -> Ptr () -> CInt -> IO CInt
+#ccall afSeekMisc    , <AFfilehandle> -> CInt -> CInt -> IO CInt
diff --git a/Bindings/AudioFile/PVList.hsc b/Bindings/AudioFile/PVList.hsc
new file mode 100644
--- /dev/null
+++ b/Bindings/AudioFile/PVList.hsc
@@ -0,0 +1,24 @@
+#include <bindings.dsl.h>
+#include <aupvlist.h>
+
+module Bindings.AudioFile.PVList where
+#strict_import
+
+#num AU_PVTYPE_LONG
+#num AU_PVTYPE_DOUBLE
+#num AU_PVTYPE_PTR
+
+#opaque_t  _AUpvlist
+#synonym_t AUpvlist, Ptr <_AUpvlist>
+
+#pointer AU_NULL_PVLIST
+
+#ccall AUpvnew        , CInt -> IO <AUpvlist>
+#ccall AUpvgetmaxitems, <AUpvlist> -> IO CInt
+#ccall AUpvfree       , <AUpvlist> -> IO CInt
+#ccall AUpvsetparam   , <AUpvlist> -> CInt -> IO CInt
+#ccall AUpvsetvaltype , <AUpvlist> -> CInt -> CInt -> IO CInt
+#ccall AUpvsetval     , <AUpvlist> -> CInt -> Ptr () -> IO CInt
+#ccall AUpvgetparam   , <AUpvlist> -> CInt -> Ptr CInt -> IO CInt
+#ccall AUpvgetvaltype , <AUpvlist> -> CInt -> Ptr CInt -> IO CInt
+#ccall AUpvgetval     , <AUpvlist> -> CInt -> Ptr () -> IO CInt
diff --git a/Bindings/AudioFile/VFS.hsc b/Bindings/AudioFile/VFS.hsc
new file mode 100644
--- /dev/null
+++ b/Bindings/AudioFile/VFS.hsc
@@ -0,0 +1,29 @@
+#include <bindings.dsl.h>
+#include <audiofile.h>
+#include <af_vfs.h>
+
+module Bindings.AudioFile.VFS where
+#strict_import
+import System.Posix.Types
+
+#starttype struct _AFvirtualfile
+#  field read   , FunPtr (<AFvirtualfile> -> Ptr () -> CSize -> IO CSsize)
+#  field length , FunPtr (<AFvirtualfile> -> IO CLong)
+#  field write  , FunPtr (<AFvirtualfile> -> Ptr () -> CSize -> IO CSsize)
+#  field destroy, FunPtr (<AFvirtualfile> -> IO ())
+#  field seek   , FunPtr (<AFvirtualfile> -> CLong -> CInt -> IO CLong)
+#  field tell   , FunPtr (<AFvirtualfile> -> IO CLong)
+#  field closure, Ptr ()
+#stoptype
+#synonym_t AFvirtualfile, <_AFvirtualfile>
+
+#ccall af_virtual_file_new         , IO (Ptr <AFvirtualfile>)
+#ccall af_virtual_file_new_for_file, Ptr CFile -> IO (Ptr <AFvirtualfile>)
+#ccall af_virtual_file_destroy     , Ptr <AFvirtualfile> -> IO ()
+
+#ccall af_fread  , Ptr () -> CSize -> CSize -> Ptr <AFvirtualfile> -> IO CSize
+#ccall af_fwrite , Ptr () -> CSize -> CSize -> Ptr <AFvirtualfile> -> IO CSize
+#ccall af_fclose , Ptr <AFvirtualfile> -> IO CInt
+#ccall af_flength, Ptr <AFvirtualfile> -> IO CLong
+#ccall af_fseek  , Ptr <AFvirtualfile> -> CLong -> CInt -> IO CInt
+#ccall af_ftell  , Ptr <AFvirtualfile> -> IO CLong
diff --git a/COPYING b/COPYING
new file mode 100644
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,29 @@
+<!-- -*- xml -*-
+
+bindings-audiofile はパブリックドメインに在ります。
+bindings-audiofile is in the public domain.
+
+See http://creativecommons.org/licenses/publicdomain/
+
+-->
+
+<rdf:RDF xmlns="http://web.resource.org/cc/"
+	     xmlns:dc="http://purl.org/dc/elements/1.1/"
+	     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+  <Work rdf:about="http://cielonegro.org/Bindings-AudioFile.html">
+	<dc:title>bindings-audiofile</dc:title>
+	<dc:rights>
+      <Agent>
+	    <dc:title>PHO</dc:title>
+	  </Agent>
+    </dc:rights>
+	<license rdf:resource="http://web.resource.org/cc/PublicDomain" />
+  </Work>
+      
+  <License rdf:about="http://web.resource.org/cc/PublicDomain">
+	<permits rdf:resource="http://web.resource.org/cc/Reproduction" />
+	<permits rdf:resource="http://web.resource.org/cc/Distribution" />
+	<permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+  </License>
+
+</rdf:RDF>
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,4 @@
+#!/usr/bin/env runghc
+
+import Distribution.Simple
+main = defaultMain
diff --git a/bindings-audiofile.cabal b/bindings-audiofile.cabal
new file mode 100644
--- /dev/null
+++ b/bindings-audiofile.cabal
@@ -0,0 +1,37 @@
+Name: bindings-audiofile
+Synopsis: Low level bindings to audiofile
+Description:
+        Bindings to audiofile: <http://www.68k.org/~michael/audiofile/>
+Version: 0.1
+License: PublicDomain
+License-File: COPYING
+Author: PHO <pho at cielonegro dot org>
+Maintainer: PHO <pho at cielonegro dot org>
+Stability: experimental
+Homepage: http://cielonegro.org/Bindings-AudioFile.html
+Category: FFI
+Tested-With: GHC == 6.12.3
+Cabal-Version: >= 1.6
+Build-Type: Simple
+Extra-Source-Files:
+    COPYING
+
+Source-Repository head
+    Type: git
+    Location: git://git.cielonegro.org/bindings-audiofile.git
+
+Library
+    Build-Depends:
+        base         == 4.2.*,
+        bindings-DSL == 1.0.*
+
+    PkgConfig-Depends:
+        audiofile >= 0.2.7
+
+    Exposed-Modules:
+        Bindings.AudioFile
+        Bindings.AudioFile.VFS
+        Bindings.AudioFile.PVList
+
+    Extensions:
+        ForeignFunctionInterface
