Skip to content

Commit

Permalink
Update version bounds, move to new conduit syntax
Browse files Browse the repository at this point in the history
  • Loading branch information
mtolly committed Jun 22, 2018
1 parent 8010021 commit 2d102bf
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 13 deletions.
6 changes: 3 additions & 3 deletions jammittools.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,15 @@ library
, filepath >= 1.3.0.1 && < 1.5
, containers >= 0.5.0.0 && < 0.6
, process >= 1.1.0.2 && < 1.7
, temporary >= 1.1.2.5 && < 1.3
, temporary >= 1.1.2.5 && < 1.4
, transformers >= 0.3.0.0 && < 0.6
, JuicyPixels >= 3.2.7 && < 3.3
, HPDF >= 1.4.9 && < 1.5
, bytestring >= 0.10.4.0 && < 0.11
, conduit >= 1.2.3.1 && < 1.3
, conduit >= 1.2.3.1 && < 1.4
, vector >= 0.10.12.2 && < 0.13
, conduit-audio >= 0.1 && < 0.3
, resourcet >= 1.1.7.2 && < 1.2
, resourcet >= 1.1.7.2 && < 1.3
ghc-options: -Wall -O2
c-sources: cbits/ima4.c

Expand Down
2 changes: 1 addition & 1 deletion src/Sound/Jammit/Export.hs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ getSheetParts lib = do
ht' = case ht of
0 -> case identifier trk of
"20C25A80-BFF2-43C6-959A-E284349542CE" -> 129 -- B Vocals for Walking In Memphis
_ -> 129 -- dunno lol, but assume something so that it's not 0! (eats all memory)
_ -> 129 -- dunno lol, but assume something so that it's not 0! (eats all memory)
_ -> ht
in if elem (partToInstrument p) [Guitar, Bass]
then [sheet, tab]
Expand Down
3 changes: 2 additions & 1 deletion src/Sound/Jammit/Internal/Audio.hs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import Control.Monad.Trans.Resource (MonadResource)
import qualified Data.ByteString as B
import Data.ByteString.Char8 ()
import qualified Data.ByteString.Unsafe as B
import Data.Conduit ((.|))
import qualified Data.Conduit as C
import qualified Data.Conduit.Audio as A
import qualified Data.Conduit.List as CL
Expand Down Expand Up @@ -117,7 +118,7 @@ clamp (vmin, vmax) v
| otherwise = v

writeWAV :: (MonadResource m) => FilePath -> A.AudioSource m Int16 -> m ()
writeWAV fp (A.AudioSource s r c _) = s C.$$ C.bracketP
writeWAV fp (A.AudioSource s r c _) = C.runConduit $ s .| C.bracketP
(IO.openBinaryFile fp IO.WriteMode)
IO.hClose
(\h -> do
Expand Down
15 changes: 8 additions & 7 deletions src/Sound/Jammit/Internal/Image.hs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import Control.Monad (forM_, replicateM)
import Control.Monad.IO.Class (MonadIO)
import Control.Monad.Trans.Class (lift)
import qualified Data.ByteString.Lazy as BL
import Data.Conduit ((.|))
import qualified Data.Conduit as C
import Data.Maybe (catMaybes)
import qualified Data.Vector.Storable as V
Expand All @@ -21,28 +22,28 @@ loadPNG fp = do
return $ P.convertRGB8 dyn

pngChunks :: (MonadIO m) =>
Int -> [FilePath] -> C.Source m (P.Image P.PixelRGB8)
Int -> [FilePath] -> C.ConduitT () (P.Image P.PixelRGB8) m ()
pngChunks h fps = let
raw :: (MonadIO m) => C.Source m (P.Image P.PixelRGB8)
raw :: (MonadIO m) => C.ConduitT () (P.Image P.PixelRGB8) m ()
raw = mapM_ (\fp -> liftIO (loadPNG fp) >>= C.yield) fps
chunk :: (Monad m) =>
C.Conduit (P.Image P.PixelRGB8) m (P.Image P.PixelRGB8)
C.ConduitT (P.Image P.PixelRGB8) (P.Image P.PixelRGB8) m ()
chunk = C.await >>= \x -> case x of
Nothing -> return ()
Just page -> case span (\c -> P.imageHeight c == h) $ vertSplit h page of
(full, [] ) -> mapM_ C.yield full >> chunk
(full, part) -> mapM_ C.yield full >> C.await >>= \y -> case y of
Nothing -> mapM_ C.yield part
Just page' -> C.leftover (vertConcat $ part ++ [page']) >> chunk
in raw C.=$= chunk
in raw .| chunk

chunksToPages :: (Monad m) =>
Int -> C.Conduit [P.Image P.PixelRGB8] m (P.Image P.PixelRGB8)
Int -> C.ConduitT [P.Image P.PixelRGB8] (P.Image P.PixelRGB8) m ()
chunksToPages n = fmap catMaybes (replicateM n C.await) >>= \systems -> case systems of
[] -> return ()
_ -> C.yield (vertConcat $ concat systems) >> chunksToPages n

sinkJPEG :: C.Sink (P.Image P.PixelRGB8) TempIO [FilePath]
sinkJPEG :: C.ConduitT (P.Image P.PixelRGB8) C.Void TempIO [FilePath]
sinkJPEG = go [] where
go jpegs = C.await >>= \x -> case x of
Nothing -> return jpegs
Expand All @@ -57,7 +58,7 @@ partsToPages
-> TempIO [FilePath]
partsToPages parts n = let
sources = map (\(imgs, h) -> pngChunks (fromIntegral h) imgs) parts
in C.sequenceSources sources C.$$ chunksToPages n C.=$= sinkJPEG
in C.runConduit $ C.sequenceSources sources .| chunksToPages n .| sinkJPEG

saveJPEG :: FilePath -> P.Image P.PixelRGB8 -> IO ()
saveJPEG fp img = BL.writeFile fp $ P.encodeJpegAtQuality 100 $ convertImage img
Expand Down
2 changes: 1 addition & 1 deletion stack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ packages:
- '.'
extra-deps:
- conduit-audio-0.2.0.3
resolver: nightly-2017-12-30
resolver: nightly-2018-06-21

0 comments on commit 2d102bf

Please sign in to comment.