csound-expression 4.4 → 4.4.1
raw patch · 4 files changed
+44/−43 lines, 4 filesdep ~csound-expression-typedPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: csound-expression-typed
API changes (from Hackage documentation)
- Csound.IO: instance (Sigs a, Sigs b) => RenderCsd (a -> b)
- Csound.IO: instance RenderCsd (SE (Sig, Sig))
- Csound.IO: instance RenderCsd (SE (Sig, Sig, Sig, Sig))
- Csound.IO: instance RenderCsd (SE (Sig, Sig, Sig, Sig, Sig, Sig))
- Csound.IO: instance RenderCsd (SE (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig))
- Csound.IO: instance RenderCsd (Sig, Sig)
- Csound.IO: instance RenderCsd (Sig, Sig, Sig, Sig)
- Csound.IO: instance RenderCsd (Sig, Sig, Sig, Sig, Sig, Sig)
- Csound.IO: instance RenderCsd (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)
- Csound.Options: WinmmMidi :: Rtmidi
+ Csound.IO: instance RenderCsd (SE (Sig8, Sig8))
+ Csound.IO: instance RenderCsd (SE (Sig8, Sig8, Sig8, Sig8))
+ Csound.IO: instance RenderCsd (SE Sig2)
+ Csound.IO: instance RenderCsd (SE Sig4)
+ Csound.IO: instance RenderCsd (SE Sig6)
+ Csound.IO: instance RenderCsd (SE Sig8)
+ Csound.IO: instance RenderCsd (Sig8, Sig8)
+ Csound.IO: instance RenderCsd (Sig8, Sig8, Sig8, Sig8)
+ Csound.IO: instance RenderCsd Sig2
+ Csound.IO: instance RenderCsd Sig4
+ Csound.IO: instance RenderCsd Sig6
+ Csound.IO: instance RenderCsd Sig8
+ Csound.IO: instance Sigs a => RenderCsd (a -> (Sig8, Sig8))
+ Csound.IO: instance Sigs a => RenderCsd (a -> (Sig8, Sig8, Sig8, Sig8))
+ Csound.IO: instance Sigs a => RenderCsd (a -> Sig)
+ Csound.IO: instance Sigs a => RenderCsd (a -> Sig2)
+ Csound.IO: instance Sigs a => RenderCsd (a -> Sig4)
+ Csound.IO: instance Sigs a => RenderCsd (a -> Sig6)
+ Csound.IO: instance Sigs a => RenderCsd (a -> Sig8)
+ Csound.Options: CoreMidi :: Rtmidi
+ Csound.Options: WinmmeMidi :: Rtmidi
Files
- csound-expression.cabal +2/−2
- src/Csound/Air/Wav.hs +3/−1
- src/Csound/IO.hs +39/−34
- src/Csound/Types.hs +0/−6
csound-expression.cabal view
@@ -1,5 +1,5 @@ Name: csound-expression-Version: 4.4+Version: 4.4.1 Cabal-Version: >= 1.6 License: BSD3 License-file: LICENSE@@ -68,7 +68,7 @@ Ghc-Options: -Wall Build-Depends: base >= 4, base < 5, process, data-default, Boolean >= 0.1.0, colour >= 2.0,- csound-expression-typed >= 0.0.7.0, csound-expression-opcodes >= 0.0.1+ csound-expression-typed >= 0.0.7.1, csound-expression-opcodes >= 0.0.1 Hs-Source-Dirs: src/ Exposed-Modules: Csound.Base
src/Csound/Air/Wav.hs view
@@ -182,13 +182,15 @@ deriving (Show, Eq, Enum) -- | Loads the sample in the table. The sample should be short. The size of the table is limited.--- It's up to 6 minutes for +-- It's up to 3 minutes for 44100 sample rate (sr), 2.9 minutes for 48000 sr, 1.4 minutes for 96000 sr. ramSnd :: LoopMode -> Sig -> String -> Sig2 ramSnd loopMode speed file = loscil3 1 speed t `withDs` [1, int $ fromEnum loopMode] where t | isMp3 file = mp3s file 0 | otherwise = wavs file 0 0 +-- | Loads the sample in the table. The sample should be short. The size of the table is limited.+-- It's up to 6 minutes for 44100 sample rate (sr), 5.9 minutes for 48000 sr, 2.8 minutes for 96000 sr. ramSnd1 :: LoopMode -> Sig -> String -> Sig ramSnd1 loopMode speed file | isMp3 file = (\(aleft, aright) -> 0.5 * (aleft + aright)) $ loscil3 1 speed (mp3s file 0) `withDs` [1, int $ fromEnum loopMode]
src/Csound/IO.hs view
@@ -44,10 +44,10 @@ import Data.Monoid import Data.Default import Csound.Typed-import Csound.Types(Sig2, Sig4)+import Csound.Types(Sig2, Sig4, Sig6, Sig8) import Csound.Control.Gui -import Csound.Options(setSilent, setMa)+import Csound.Options(setSilent, setMa, setDac) render :: Sigs a => Options -> SE a -> IO String render = renderOutBy @@ -64,61 +64,66 @@ instance RenderCsd Sig where renderCsdBy opt a = render opt (return a) -instance RenderCsd (Sig, Sig) where+instance RenderCsd Sig2 where renderCsdBy opt a = render opt (return a) -instance RenderCsd (Sig, Sig, Sig, Sig) where+instance RenderCsd Sig4 where renderCsdBy opt a = render opt (return a) -instance RenderCsd (Sig, Sig, Sig, Sig, Sig, Sig) where+instance RenderCsd Sig6 where renderCsdBy opt a = render opt (return a) -instance RenderCsd (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig) where+instance RenderCsd Sig8 where renderCsdBy opt a = render opt (return a)-{--instance RenderCsd - ( (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)- , (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig) ) where ++instance RenderCsd (Sig8, Sig8) where renderCsdBy opt a = render opt (return a) -instance RenderCsd - ( (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)- , (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)- , (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)- , (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig) ) where +instance RenderCsd (Sig8, Sig8, Sig8, Sig8) where renderCsdBy opt a = render opt (return a)--}+ instance RenderCsd (SE Sig) where renderCsdBy opt a = render opt a -instance RenderCsd (SE (Sig, Sig)) where+instance RenderCsd (SE Sig2) where renderCsdBy opt a = render opt a -instance RenderCsd (SE (Sig, Sig, Sig, Sig)) where+instance RenderCsd (SE Sig4) where renderCsdBy opt a = render opt a -instance RenderCsd (SE (Sig, Sig, Sig, Sig, Sig, Sig)) where+instance RenderCsd (SE Sig6) where renderCsdBy opt a = render opt a -instance RenderCsd (SE (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)) where+instance RenderCsd (SE Sig8) where renderCsdBy opt a = render opt a -{--instance RenderCsd (SE - ( (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)- , (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig) )) where +instance RenderCsd (SE (Sig8, Sig8)) where renderCsdBy opt a = render opt a -instance RenderCsd (SE - ( (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)- , (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)- , (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)- , (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig) )) where +instance RenderCsd (SE (Sig8, Sig8, Sig8, Sig8)) where renderCsdBy opt a = render opt a--}-instance (Sigs a, Sigs b) => RenderCsd (a -> b) where++instance (Sigs a) => RenderCsd (a -> Sig) where renderCsdBy opt f = renderEffBy opt (return . f) +instance (Sigs a) => RenderCsd (a -> Sig2) where+ renderCsdBy opt f = renderEffBy opt (return . f)++instance (Sigs a) => RenderCsd (a -> Sig4) where+ renderCsdBy opt f = renderEffBy opt (return . f)++instance (Sigs a) => RenderCsd (a -> Sig6) where+ renderCsdBy opt f = renderEffBy opt (return . f)++instance (Sigs a) => RenderCsd (a -> Sig8) where+ renderCsdBy opt f = renderEffBy opt (return . f)++instance (Sigs a) => RenderCsd (a -> (Sig8, Sig8)) where+ renderCsdBy opt f = renderEffBy opt (return . f)++instance (Sigs a) => RenderCsd (a -> (Sig8, Sig8, Sig8, Sig8)) where+ renderCsdBy opt f = renderEffBy opt (return . f)+ instance (Sigs a, Sigs b) => RenderCsd (a -> SE b) where renderCsdBy opt f = renderEffBy opt f @@ -211,7 +216,7 @@ where phi file = do runWithUserInterrupt $ player ++ " " ++ file --- | Renders csound code to file @tmp.csd@ and plays it with @-odac@ option+-- | Renders csound code to file @tmp.csd@ with flags set to @-odac@ and @-Ma@ -- (sound output goes to soundcard in real time). dac :: (RenderCsd a) => a -> IO () dac = dacBy def@@ -220,8 +225,8 @@ dacBy :: (RenderCsd a) => Options -> a -> IO () dacBy opt' a = do writeCsdBy opt "tmp.csd" a- runWithUserInterrupt $ "csound -odac " ++ "tmp.csd" - where opt = opt' <> setMa + runWithUserInterrupt $ "csound " ++ "tmp.csd" + where opt = opt' <> (setMa <> setDac) -- | Output to dac with virtual midi keyboard. vdac :: (RenderCsd a) => a -> IO ()
src/Csound/Types.hs view
@@ -78,12 +78,6 @@ import Data.Boolean import Csound.Typed.Types -type Sig2 = (Sig, Sig)-type Sig3 = (Sig, Sig, Sig)-type Sig4 = (Sig, Sig, Sig, Sig)-type Sig6 = (Sig, Sig, Sig, Sig, Sig, Sig)-type Sig8 = (Sig, Sig, Sig, Sig, Sig, Sig, Sig, Sig)- -- | Gets an init-rate value from the list by index. atArg :: (Tuple a, Arg a) => [a] -> D -> a atArg as ind = guardedArg (zip (fmap (\x -> int x ==* ind) [0 .. ]) as) (head as)