module Sound.Libcdio.Track
(
Foreign.Track ( .. )
, Foreign.minTrack
, Foreign.maxTrack
, Foreign.TrackNum
, Foreign.TrackFormat ( .. )
, firstDiscTrack
, lastDiscTrack
, tracks
, trackAt
, pregap
, offset
, offsetEnd
, totalLength
, format
, isGreen
, hasPreemphasis
, copyPermit
, quadAudio
) where
import qualified Foreign.Libcdio.Disc as Foreign
import qualified Foreign.Libcdio.Track as Foreign
import Sound.Libcdio.Read.Data
import Sound.Libcdio.Types.Cdio
firstDiscTrack :: Cdio (Maybe Foreign.Track)
firstDiscTrack :: Cdio (Maybe Track)
firstDiscTrack = (Cdio -> IO (Maybe Track)) -> Cdio (Maybe Track)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio Cdio -> IO (Maybe Track)
Foreign.firstTrackNum
lastDiscTrack :: Cdio (Maybe Foreign.Track)
lastDiscTrack :: Cdio (Maybe Track)
lastDiscTrack = (Cdio -> IO (Maybe Track)) -> Cdio (Maybe Track)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio Cdio -> IO (Maybe Track)
Foreign.lastTrackNum
tracks :: Cdio (Maybe Foreign.Track)
tracks :: Cdio (Maybe Track)
tracks = (Cdio -> IO (Maybe Track)) -> Cdio (Maybe Track)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio Cdio -> IO (Maybe Track)
Foreign.numTracks
trackAt :: Lsn -> Cdio (Maybe Foreign.Track)
trackAt :: Lsn -> Cdio (Maybe Track)
trackAt = (Cdio -> IO (Maybe Track)) -> Cdio (Maybe Track)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe Track)) -> Cdio (Maybe Track))
-> (Lsn -> Cdio -> IO (Maybe Track)) -> Lsn -> Cdio (Maybe Track)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Cdio -> Lsn -> IO (Maybe Track))
-> Lsn -> Cdio -> IO (Maybe Track)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Cdio -> Lsn -> IO (Maybe Track)
Foreign.trackAt
pregap :: Foreign.Track -> Cdio (Maybe Lsn)
pregap :: Track -> Cdio (Maybe Lsn)
pregap = (Cdio -> IO (Maybe Lsn)) -> Cdio (Maybe Lsn)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe Lsn)) -> Cdio (Maybe Lsn))
-> (Track -> Cdio -> IO (Maybe Lsn)) -> Track -> Cdio (Maybe Lsn)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Cdio -> Track -> IO (Maybe Lsn))
-> Track -> Cdio -> IO (Maybe Lsn)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Cdio -> Track -> IO (Maybe Lsn)
Foreign.pregapLsn
offset :: Foreign.Track -> Cdio (Maybe Lsn)
offset :: Track -> Cdio (Maybe Lsn)
offset = (Cdio -> IO (Maybe Lsn)) -> Cdio (Maybe Lsn)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe Lsn)) -> Cdio (Maybe Lsn))
-> (Track -> Cdio -> IO (Maybe Lsn)) -> Track -> Cdio (Maybe Lsn)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Cdio -> Track -> IO (Maybe Lsn))
-> Track -> Cdio -> IO (Maybe Lsn)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Cdio -> Track -> IO (Maybe Lsn)
Foreign.trackLsn
offsetEnd :: Foreign.Track -> Cdio (Maybe Lsn)
offsetEnd :: Track -> Cdio (Maybe Lsn)
offsetEnd = (Cdio -> IO (Maybe Lsn)) -> Cdio (Maybe Lsn)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe Lsn)) -> Cdio (Maybe Lsn))
-> (Track -> Cdio -> IO (Maybe Lsn)) -> Track -> Cdio (Maybe Lsn)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Cdio -> Track -> IO (Maybe Lsn))
-> Track -> Cdio -> IO (Maybe Lsn)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Cdio -> Track -> IO (Maybe Lsn)
Foreign.trackLastLsn
totalLength :: Foreign.Track -> Cdio (Maybe Word)
totalLength :: Track -> Cdio (Maybe Word)
totalLength = (Cdio -> IO (Maybe Word)) -> Cdio (Maybe Word)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe Word)) -> Cdio (Maybe Word))
-> (Track -> Cdio -> IO (Maybe Word)) -> Track -> Cdio (Maybe Word)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Cdio -> Track -> IO (Maybe Word))
-> Track -> Cdio -> IO (Maybe Word)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Cdio -> Track -> IO (Maybe Word)
Foreign.sectorCount
format :: Foreign.Track -> Cdio (Maybe Foreign.TrackFormat)
format :: Track -> Cdio (Maybe TrackFormat)
format = (Cdio -> IO (Maybe TrackFormat)) -> Cdio (Maybe TrackFormat)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe TrackFormat)) -> Cdio (Maybe TrackFormat))
-> (Track -> Cdio -> IO (Maybe TrackFormat))
-> Track
-> Cdio (Maybe TrackFormat)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Cdio -> Track -> IO (Maybe TrackFormat))
-> Track -> Cdio -> IO (Maybe TrackFormat)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Cdio -> Track -> IO (Maybe TrackFormat)
Foreign.trackFormat
isGreen :: Foreign.Track -> Cdio (Maybe Bool)
isGreen :: Track -> Cdio (Maybe Bool)
isGreen = (Cdio -> IO (Maybe Bool)) -> Cdio (Maybe Bool)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe Bool)) -> Cdio (Maybe Bool))
-> (Track -> Cdio -> IO (Maybe Bool)) -> Track -> Cdio (Maybe Bool)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Cdio -> Track -> IO (Maybe Bool))
-> Track -> Cdio -> IO (Maybe Bool)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Cdio -> Track -> IO (Maybe Bool)
Foreign.isGreen
hasPreemphasis :: Foreign.Track -> Cdio (Maybe Bool)
hasPreemphasis :: Track -> Cdio (Maybe Bool)
hasPreemphasis = (Cdio -> IO (Maybe Bool)) -> Cdio (Maybe Bool)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe Bool)) -> Cdio (Maybe Bool))
-> (Track -> Cdio -> IO (Maybe Bool)) -> Track -> Cdio (Maybe Bool)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Cdio -> Track -> IO (Maybe Bool))
-> Track -> Cdio -> IO (Maybe Bool)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Cdio -> Track -> IO (Maybe Bool)
Foreign.hasPreemphasis
copyPermit :: Foreign.Track -> Cdio (Maybe Bool)
copyPermit :: Track -> Cdio (Maybe Bool)
copyPermit = (Cdio -> IO (Maybe Bool)) -> Cdio (Maybe Bool)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe Bool)) -> Cdio (Maybe Bool))
-> (Track -> Cdio -> IO (Maybe Bool)) -> Track -> Cdio (Maybe Bool)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Cdio -> Track -> IO (Maybe Bool))
-> Track -> Cdio -> IO (Maybe Bool)
forall a b c. (a -> b -> c) -> b -> a -> c
flip Cdio -> Track -> IO (Maybe Bool)
Foreign.copyPermit
quadAudio :: Foreign.Track -> Cdio (Maybe Bool)
quadAudio :: Track -> Cdio (Maybe Bool)
quadAudio Track
t = (Cdio -> IO (Maybe Bool)) -> Cdio (Maybe Bool)
forall a. (Cdio -> IO a) -> Cdio a
liftCdio ((Cdio -> IO (Maybe Bool)) -> Cdio (Maybe Bool))
-> (Cdio -> IO (Maybe Bool)) -> Cdio (Maybe Bool)
forall a b. (a -> b) -> a -> b
$ \Cdio
c -> (Word -> Bool) -> Maybe Word -> Maybe Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Word -> Word -> Bool
forall a. Ord a => a -> a -> Bool
> Word
2) (Maybe Word -> Maybe Bool) -> IO (Maybe Word) -> IO (Maybe Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Cdio -> Track -> IO (Maybe Word)
Foreign.numChannels Cdio
c Track
t