{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralisedNewtypeDeriving #-}

module Sound.OpenAL.FFI.AL where

import Foreign (FunPtr, Ptr, Storable)
import Foreign.C.Types
import Foreign.C.String (CString)

import Sound.OpenAL.FFI.Utils (Dynamic)

-- * Source

newtype Source = Source CUInt
  deriving stock (Source -> Source -> Bool
(Source -> Source -> Bool)
-> (Source -> Source -> Bool) -> Eq Source
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Source -> Source -> Bool
$c/= :: Source -> Source -> Bool
== :: Source -> Source -> Bool
$c== :: Source -> Source -> Bool
Eq, Eq Source
Eq Source
-> (Source -> Source -> Ordering)
-> (Source -> Source -> Bool)
-> (Source -> Source -> Bool)
-> (Source -> Source -> Bool)
-> (Source -> Source -> Bool)
-> (Source -> Source -> Source)
-> (Source -> Source -> Source)
-> Ord Source
Source -> Source -> Bool
Source -> Source -> Ordering
Source -> Source -> Source
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Source -> Source -> Source
$cmin :: Source -> Source -> Source
max :: Source -> Source -> Source
$cmax :: Source -> Source -> Source
>= :: Source -> Source -> Bool
$c>= :: Source -> Source -> Bool
> :: Source -> Source -> Bool
$c> :: Source -> Source -> Bool
<= :: Source -> Source -> Bool
$c<= :: Source -> Source -> Bool
< :: Source -> Source -> Bool
$c< :: Source -> Source -> Bool
compare :: Source -> Source -> Ordering
$ccompare :: Source -> Source -> Ordering
$cp1Ord :: Eq Source
Ord, Int -> Source -> ShowS
[Source] -> ShowS
Source -> String
(Int -> Source -> ShowS)
-> (Source -> String) -> ([Source] -> ShowS) -> Show Source
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Source] -> ShowS
$cshowList :: [Source] -> ShowS
show :: Source -> String
$cshow :: Source -> String
showsPrec :: Int -> Source -> ShowS
$cshowsPrec :: Int -> Source -> ShowS
Show)
  deriving newtype (Ptr b -> Int -> IO Source
Ptr b -> Int -> Source -> IO ()
Ptr Source -> IO Source
Ptr Source -> Int -> IO Source
Ptr Source -> Int -> Source -> IO ()
Ptr Source -> Source -> IO ()
Source -> Int
(Source -> Int)
-> (Source -> Int)
-> (Ptr Source -> Int -> IO Source)
-> (Ptr Source -> Int -> Source -> IO ())
-> (forall b. Ptr b -> Int -> IO Source)
-> (forall b. Ptr b -> Int -> Source -> IO ())
-> (Ptr Source -> IO Source)
-> (Ptr Source -> Source -> IO ())
-> Storable Source
forall b. Ptr b -> Int -> IO Source
forall b. Ptr b -> Int -> Source -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr Source -> Source -> IO ()
$cpoke :: Ptr Source -> Source -> IO ()
peek :: Ptr Source -> IO Source
$cpeek :: Ptr Source -> IO Source
pokeByteOff :: Ptr b -> Int -> Source -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> Source -> IO ()
peekByteOff :: Ptr b -> Int -> IO Source
$cpeekByteOff :: forall b. Ptr b -> Int -> IO Source
pokeElemOff :: Ptr Source -> Int -> Source -> IO ()
$cpokeElemOff :: Ptr Source -> Int -> Source -> IO ()
peekElemOff :: Ptr Source -> Int -> IO Source
$cpeekElemOff :: Ptr Source -> Int -> IO Source
alignment :: Source -> Int
$calignment :: Source -> Int
sizeOf :: Source -> Int
$csizeOf :: Source -> Int
Storable)

foreign import ccall unsafe "alGenSources"
  alGenSources :: CInt -> Ptr Source -> IO ()

foreign import ccall unsafe "alDeleteSources"
  alDeleteSources :: CInt -> Ptr Source -> IO ()

foreign import ccall unsafe "alIsSource"
  alIsSource :: Source -> IO CChar

foreign import ccall unsafe "alGetSourcefv"
  alGetSourcefv :: Source -> CInt -> Ptr CFloat -> IO ()

foreign import ccall unsafe "alSourcefv"
  alSourcefv :: Source -> CInt -> Ptr CFloat -> IO ()

foreign import ccall unsafe "alGetSourceiv"
  alGetSourceiv :: Source ->  CInt -> Ptr CInt -> IO ()

foreign import ccall unsafe "alSourcei"
  alSourcei :: Source -> CInt -> CInt -> IO ()

foreign import ccall unsafe "alSourceQueueBuffers"
  alSourceQueueBuffers :: Source -> CInt -> Ptr Buffer -> IO ()

foreign import ccall unsafe "alSourceUnqueueBuffers"
  alSourceUnqueueBuffers :: Source -> CInt -> Ptr Buffer -> IO ()

foreign import ccall unsafe "alSourcePlayv"
  alSourcePlayv :: CInt -> Ptr Source -> IO ()

foreign import ccall unsafe "alSourcePausev"
  alSourcePausev :: CInt -> Ptr Source -> IO ()

foreign import ccall unsafe "alSourceStopv"
  alSourceStopv :: CInt -> Ptr Source -> IO ()

foreign import ccall unsafe "alSourceRewindv"
  alSourceRewindv :: CInt -> Ptr Source -> IO ()

-- * Buffer

newtype Buffer = Buffer CUInt
  deriving stock (Buffer -> Buffer -> Bool
(Buffer -> Buffer -> Bool)
-> (Buffer -> Buffer -> Bool) -> Eq Buffer
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Buffer -> Buffer -> Bool
$c/= :: Buffer -> Buffer -> Bool
== :: Buffer -> Buffer -> Bool
$c== :: Buffer -> Buffer -> Bool
Eq, Eq Buffer
Eq Buffer
-> (Buffer -> Buffer -> Ordering)
-> (Buffer -> Buffer -> Bool)
-> (Buffer -> Buffer -> Bool)
-> (Buffer -> Buffer -> Bool)
-> (Buffer -> Buffer -> Bool)
-> (Buffer -> Buffer -> Buffer)
-> (Buffer -> Buffer -> Buffer)
-> Ord Buffer
Buffer -> Buffer -> Bool
Buffer -> Buffer -> Ordering
Buffer -> Buffer -> Buffer
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Buffer -> Buffer -> Buffer
$cmin :: Buffer -> Buffer -> Buffer
max :: Buffer -> Buffer -> Buffer
$cmax :: Buffer -> Buffer -> Buffer
>= :: Buffer -> Buffer -> Bool
$c>= :: Buffer -> Buffer -> Bool
> :: Buffer -> Buffer -> Bool
$c> :: Buffer -> Buffer -> Bool
<= :: Buffer -> Buffer -> Bool
$c<= :: Buffer -> Buffer -> Bool
< :: Buffer -> Buffer -> Bool
$c< :: Buffer -> Buffer -> Bool
compare :: Buffer -> Buffer -> Ordering
$ccompare :: Buffer -> Buffer -> Ordering
$cp1Ord :: Eq Buffer
Ord, Int -> Buffer -> ShowS
[Buffer] -> ShowS
Buffer -> String
(Int -> Buffer -> ShowS)
-> (Buffer -> String) -> ([Buffer] -> ShowS) -> Show Buffer
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Buffer] -> ShowS
$cshowList :: [Buffer] -> ShowS
show :: Buffer -> String
$cshow :: Buffer -> String
showsPrec :: Int -> Buffer -> ShowS
$cshowsPrec :: Int -> Buffer -> ShowS
Show)
  deriving newtype (Ptr b -> Int -> IO Buffer
Ptr b -> Int -> Buffer -> IO ()
Ptr Buffer -> IO Buffer
Ptr Buffer -> Int -> IO Buffer
Ptr Buffer -> Int -> Buffer -> IO ()
Ptr Buffer -> Buffer -> IO ()
Buffer -> Int
(Buffer -> Int)
-> (Buffer -> Int)
-> (Ptr Buffer -> Int -> IO Buffer)
-> (Ptr Buffer -> Int -> Buffer -> IO ())
-> (forall b. Ptr b -> Int -> IO Buffer)
-> (forall b. Ptr b -> Int -> Buffer -> IO ())
-> (Ptr Buffer -> IO Buffer)
-> (Ptr Buffer -> Buffer -> IO ())
-> Storable Buffer
forall b. Ptr b -> Int -> IO Buffer
forall b. Ptr b -> Int -> Buffer -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr Buffer -> Buffer -> IO ()
$cpoke :: Ptr Buffer -> Buffer -> IO ()
peek :: Ptr Buffer -> IO Buffer
$cpeek :: Ptr Buffer -> IO Buffer
pokeByteOff :: Ptr b -> Int -> Buffer -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> Buffer -> IO ()
peekByteOff :: Ptr b -> Int -> IO Buffer
$cpeekByteOff :: forall b. Ptr b -> Int -> IO Buffer
pokeElemOff :: Ptr Buffer -> Int -> Buffer -> IO ()
$cpokeElemOff :: Ptr Buffer -> Int -> Buffer -> IO ()
peekElemOff :: Ptr Buffer -> Int -> IO Buffer
$cpeekElemOff :: Ptr Buffer -> Int -> IO Buffer
alignment :: Buffer -> Int
$calignment :: Buffer -> Int
sizeOf :: Buffer -> Int
$csizeOf :: Buffer -> Int
Storable)

foreign import ccall unsafe "alGenBuffers"
  alGenBuffers :: CInt -> Ptr Buffer -> IO ()

foreign import ccall unsafe "alDeleteBuffers"
  alDeleteBuffers :: CInt -> Ptr Buffer -> IO ()

foreign import ccall unsafe "alBufferData"
  alBufferData :: Buffer -> CInt -> Ptr () -> CInt -> CInt -> IO ()

foreign import ccall unsafe "alGetBufferi"
  alGetBufferi :: Buffer -> CInt -> Ptr CInt -> IO ()

foreign import ccall unsafe "alIsBuffer"
  alIsBuffer :: Buffer -> IO CChar

-- * Errors

foreign import ccall unsafe "alGetError"
  alGetError :: IO CInt

pattern INVALID_NAME :: (Eq a, Num a) => a
pattern $bINVALID_NAME :: a
$mINVALID_NAME :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVALID_NAME = 0xA001

pattern INVALID_ENUM :: (Eq a, Num a) => a
pattern $bINVALID_ENUM :: a
$mINVALID_ENUM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVALID_ENUM = 0xA002

pattern INVALID_VALUE :: (Eq a, Num a) => a
pattern $bINVALID_VALUE :: a
$mINVALID_VALUE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVALID_VALUE = 0xA003

pattern INVALID_OPERATION :: (Eq a, Num a) => a
pattern $bINVALID_OPERATION :: a
$mINVALID_OPERATION :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVALID_OPERATION = 0xA004

pattern OUT_OF_MEMORY :: (Eq a, Num a) => a
pattern $bOUT_OF_MEMORY :: a
$mOUT_OF_MEMORY :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
OUT_OF_MEMORY = 0xA005

-- * Listener

foreign import ccall unsafe "alListenerf"
  alListenerf :: CInt -> CFloat -> IO ()

foreign import ccall unsafe "alListenerfv"
  alListenerfv :: CInt -> Ptr () -> IO ()

foreign import ccall unsafe "alGetListenerfv"
  alGetListenerfv :: CInt -> Ptr CFloat -> IO ()

-- * Queries

foreign import ccall unsafe "alGetEnumValue"
  alGetEnumValue :: CString -> IO CInt

foreign import ccall unsafe "alGetFloat"
  alGetFloat :: CInt -> IO CFloat

foreign import ccall unsafe "alGetIntegerv"
  alGetIntegerv :: CInt -> Ptr CInt -> IO ()

foreign import ccall unsafe "alDistanceModel"
  alDistanceModel :: CInt -> IO ()

-- ** Strings

foreign import ccall unsafe "alGetString"
  alGetString :: CInt -> IO CString

pattern VERSION :: (Eq a, Num a) => a
pattern $bVERSION :: a
$mVERSION :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
VERSION = 0xB002

pattern RENDERER :: (Eq a, Num a) => a
pattern $bRENDERER :: a
$mRENDERER :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
RENDERER = 0xB003

pattern VENDOR :: (Eq a, Num a) => a
pattern $bVENDOR :: a
$mVENDOR :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
VENDOR = 0xB001

pattern EXTENSIONS :: (Eq a, Num a) => a
pattern $bEXTENSIONS :: a
$mEXTENSIONS :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
EXTENSIONS = 0xB004

-- ** Extensions

foreign import ccall unsafe "alIsExtensionPresent"
  alIsExtensionPresent_ :: CString -> IO CBool

foreign import ccall unsafe "alGetProcAddress"
  alGetProcAddress :: CString -> IO (FunPtr a)

foreign import ccall unsafe "dynamic"
  invokeWithFloat :: Dynamic (CFloat -> IO ())

-- * Enums

pattern DISTANCE_MODEL :: (Eq a, Num a) => a
pattern $bDISTANCE_MODEL :: a
$mDISTANCE_MODEL :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
DISTANCE_MODEL = 0xD000

pattern DOPPLER_FACTOR :: (Eq a, Num a) => a
pattern $bDOPPLER_FACTOR :: a
$mDOPPLER_FACTOR :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
DOPPLER_FACTOR = 0xC000

pattern SPEED_OF_SOUND :: (Eq a, Num a) => a
pattern $bSPEED_OF_SOUND :: a
$mSPEED_OF_SOUND :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SPEED_OF_SOUND = 0xC003


pattern INVERSE_DISTANCE :: (Eq a, Num a) => a
pattern $bINVERSE_DISTANCE :: a
$mINVERSE_DISTANCE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVERSE_DISTANCE = 0xD001

pattern INVERSE_DISTANCE_CLAMPED :: (Eq a, Num a) => a
pattern $bINVERSE_DISTANCE_CLAMPED :: a
$mINVERSE_DISTANCE_CLAMPED :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INVERSE_DISTANCE_CLAMPED = 0xD002

pattern LINEAR_DISTANCE :: (Eq a, Num a) => a
pattern $bLINEAR_DISTANCE :: a
$mLINEAR_DISTANCE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
LINEAR_DISTANCE = 0xD003

pattern LINEAR_DISTANCE_CLAMPED :: (Eq a, Num a) => a
pattern $bLINEAR_DISTANCE_CLAMPED :: a
$mLINEAR_DISTANCE_CLAMPED :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
LINEAR_DISTANCE_CLAMPED = 0xD004

pattern EXPONENT_DISTANCE :: (Eq a, Num a) => a
pattern $bEXPONENT_DISTANCE :: a
$mEXPONENT_DISTANCE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
EXPONENT_DISTANCE = 0xD005

pattern EXPONENT_DISTANCE_CLAMPED :: (Eq a, Num a) => a
pattern $bEXPONENT_DISTANCE_CLAMPED :: a
$mEXPONENT_DISTANCE_CLAMPED :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
EXPONENT_DISTANCE_CLAMPED = 0xD006


pattern POSITION :: (Eq a, Num a) => a
pattern $bPOSITION :: a
$mPOSITION :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
POSITION = 0x1004

pattern VELOCITY :: (Eq a, Num a) => a
pattern $bVELOCITY :: a
$mVELOCITY :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
VELOCITY = 0x1006

pattern GAIN :: (Eq a, Num a) => a
pattern $bGAIN :: a
$mGAIN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GAIN = 0x100A


pattern ORIENTATION :: (Eq a, Num a) => a
pattern $bORIENTATION :: a
$mORIENTATION :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
ORIENTATION = 0x100F


pattern SOURCE_RELATIVE :: (Eq a, Num a) => a
pattern $bSOURCE_RELATIVE :: a
$mSOURCE_RELATIVE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SOURCE_RELATIVE = 0x0202

pattern SOURCE_TYPE :: (Eq a, Num a) => a
pattern $bSOURCE_TYPE :: a
$mSOURCE_TYPE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SOURCE_TYPE = 0x1027

pattern LOOPING :: (Eq a, Num a) => a
pattern $bLOOPING :: a
$mLOOPING :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
LOOPING = 0x1007

pattern BUFFER :: (Eq a, Num a) => a
pattern $bBUFFER :: a
$mBUFFER :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
BUFFER = 0x1009

pattern BUFFERS_QUEUED :: (Eq a, Num a) => a
pattern $bBUFFERS_QUEUED :: a
$mBUFFERS_QUEUED :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
BUFFERS_QUEUED = 0x1015

pattern BUFFERS_PROCESSED :: (Eq a, Num a) => a
pattern $bBUFFERS_PROCESSED :: a
$mBUFFERS_PROCESSED :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
BUFFERS_PROCESSED = 0x1016

pattern MIN_GAIN :: (Eq a, Num a) => a
pattern $bMIN_GAIN :: a
$mMIN_GAIN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
MIN_GAIN = 0x100D

pattern MAX_GAIN :: (Eq a, Num a) => a
pattern $bMAX_GAIN :: a
$mMAX_GAIN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_GAIN = 0x100E

pattern REFERENCE_DISTANCE :: (Eq a, Num a) => a
pattern $bREFERENCE_DISTANCE :: a
$mREFERENCE_DISTANCE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
REFERENCE_DISTANCE = 0x1020

pattern ROLLOFF_FACTOR :: (Eq a, Num a) => a
pattern $bROLLOFF_FACTOR :: a
$mROLLOFF_FACTOR :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
ROLLOFF_FACTOR = 0x1021

pattern MAX_DISTANCE :: (Eq a, Num a) => a
pattern $bMAX_DISTANCE :: a
$mMAX_DISTANCE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
MAX_DISTANCE = 0x1023

pattern PITCH :: (Eq a, Num a) => a
pattern $bPITCH :: a
$mPITCH :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
PITCH = 0x1003

pattern DIRECTION :: (Eq a, Num a) => a
pattern $bDIRECTION :: a
$mDIRECTION :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
DIRECTION = 0x1005

pattern CONE_INNER_ANGLE :: (Eq a, Num a) => a
pattern $bCONE_INNER_ANGLE :: a
$mCONE_INNER_ANGLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
CONE_INNER_ANGLE = 0x1001

pattern CONE_OUTER_ANGLE :: (Eq a, Num a) => a
pattern $bCONE_OUTER_ANGLE :: a
$mCONE_OUTER_ANGLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
CONE_OUTER_ANGLE = 0x1002

pattern CONE_OUTER_GAIN :: (Eq a, Num a) => a
pattern $bCONE_OUTER_GAIN :: a
$mCONE_OUTER_GAIN :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
CONE_OUTER_GAIN = 0x1022

pattern SEC_OFFSET :: (Eq a, Num a) => a
pattern $bSEC_OFFSET :: a
$mSEC_OFFSET :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SEC_OFFSET = 0x1024

pattern SAMPLE_OFFSET :: (Eq a, Num a) => a
pattern $bSAMPLE_OFFSET :: a
$mSAMPLE_OFFSET :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SAMPLE_OFFSET = 0x1025

pattern BYTE_OFFSET :: (Eq a, Num a) => a
pattern $bBYTE_OFFSET :: a
$mBYTE_OFFSET :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
BYTE_OFFSET = 0x1026

pattern SOURCE_STATE :: (Eq a, Num a) => a
pattern $bSOURCE_STATE :: a
$mSOURCE_STATE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SOURCE_STATE = 0x1010


pattern UNDETERMINED :: (Eq a, Num a) => a
pattern $bUNDETERMINED :: a
$mUNDETERMINED :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
UNDETERMINED = 0x1030

pattern STATIC :: (Eq a, Num a) => a
pattern $bSTATIC :: a
$mSTATIC :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
STATIC = 0x1028

pattern STREAMING :: (Eq a, Num a) => a
pattern $bSTREAMING :: a
$mSTREAMING :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
STREAMING = 0x1029


pattern INITIAL :: (Eq a, Num a) => a
pattern $bINITIAL :: a
$mINITIAL :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
INITIAL = 0x1011

pattern PLAYING :: (Eq a, Num a) => a
pattern $bPLAYING :: a
$mPLAYING :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
PLAYING = 0x1012

pattern PAUSED :: (Eq a, Num a) => a
pattern $bPAUSED :: a
$mPAUSED :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
PAUSED  = 0x1013

pattern STOPPED :: (Eq a, Num a) => a
pattern $bSTOPPED :: a
$mSTOPPED :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
STOPPED = 0x1014


pattern FREQUENCY :: (Eq a, Num a) => a
pattern $bFREQUENCY :: a
$mFREQUENCY :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
FREQUENCY = 0x2001

pattern SIZE :: (Eq a, Num a) => a
pattern $bSIZE :: a
$mSIZE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
SIZE = 0x2004

pattern BITS :: (Eq a, Num a) => a
pattern $bBITS :: a
$mBITS :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
BITS = 0x2002

pattern CHANNELS :: (Eq a, Num a) => a
pattern $bCHANNELS :: a
$mCHANNELS :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
CHANNELS = 0x2003


pattern FORMAT_MONO8 :: (Eq a, Num a) => a
pattern $bFORMAT_MONO8 :: a
$mFORMAT_MONO8 :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
FORMAT_MONO8 = 0x1100

pattern FORMAT_MONO16 :: (Eq a, Num a) => a
pattern $bFORMAT_MONO16 :: a
$mFORMAT_MONO16 :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
FORMAT_MONO16 = 0x1101

pattern FORMAT_STEREO8 :: (Eq a, Num a) => a
pattern $bFORMAT_STEREO8 :: a
$mFORMAT_STEREO8 :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
FORMAT_STEREO8 = 0x1102

pattern FORMAT_STEREO16 :: (Eq a, Num a) => a
pattern $bFORMAT_STEREO16 :: a
$mFORMAT_STEREO16 :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
FORMAT_STEREO16 = 0x1103