csound-expression 1.0.3 → 1.0.4
raw patch · 5 files changed
+106/−35 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Csound.Opcode.Data: cent :: Nums a => a -> a
+ Csound.Opcode.Data: cpsmidinn :: Nums a => a -> a
+ Csound.Opcode.Data: cpsoct :: Nums a => a -> a
+ Csound.Opcode.Data: octave :: Nums a => a -> a
+ Csound.Opcode.Data: octcps :: Nums a => a -> a
+ Csound.Opcode.Data: octmidinn :: Nums a => a -> a
+ Csound.Opcode.Data: octpch :: Nums a => a -> a
+ Csound.Opcode.Data: pchmidinn :: Nums a => a -> a
+ Csound.Opcode.Data: pchoct :: Nums a => a -> a
+ Csound.Opcode.Data: semitone :: Nums a => a -> a
Files
- csound-expression.cabal +1/−1
- src/Csound/Exp.hs +1/−1
- src/Csound/Exp/Wrapper.hs +1/−1
- src/Csound/Opcode/Data.hs +97/−7
- src/Csound/Render/Pretty.hs +6/−25
csound-expression.cabal view
@@ -1,5 +1,5 @@ Name: csound-expression-Version: 1.0.3+Version: 1.0.4 Cabal-Version: >= 1.6 License: BSD3 License-file: LICENSE
src/Csound/Exp.hs view
@@ -212,7 +212,7 @@ | Ceil | Floor | Frac | Round | IntOp | Abs | ExpOp | Log | Log10 | Logbtwo | Sqrt | Ampdb | Ampdbfs | Dbamp | Dbfsamp - | Cpspch+ | Cent | Cpsmidinn | Cpsoct | Cpspch | Octave | Octcps | Octmidinn | Octpch | Pchmidinn | Pchoct | Semitone deriving (Show, Eq, Ord) -------------------------------------------------------
src/Csound/Exp/Wrapper.hs view
@@ -161,7 +161,7 @@ tabMap es ps = M.fromList $ zip (nub $ (concat $ mapM (getScoreTabs =<< ) ps) ++ (getInstrTabs =<< es)) [1 ..] getInstrTabs :: E -> [LowTab]-getInstrTabs = cata $ \re -> case fmap fromPrimOr $ ratedExpExp re of +getInstrTabs = cata $ \re -> (maybe [] id $ ratedExpDepends re) ++ case fmap fromPrimOr $ ratedExpExp re of ExpPrim p -> getPrimTabs p Tfm _ as -> concat as ConvertRate _ _ a -> a
src/Csound/Opcode/Data.hs view
@@ -46,7 +46,7 @@ ampdb, ampdbfs, dbamp, dbfsamp, -- ** Pitch conversions- cpspch,+ cent, cpsmidinn, cpsoct, cpspch, octave, octcps, octmidinn, octpch, pchmidinn, pchoct, semitone, -- ** Integer and fractional parts fracD, floorD, ceilD, intD, roundD,@@ -374,14 +374,22 @@ -- amplitude conversions -- | Floating number types: 'Sig' or 'D'.-class Val a => Nums a -instance Nums Sig-instance Nums D+class Val a => Nums a where+ isSig :: a -> Bool + +instance Nums Sig where isSig = const True+instance Nums D where isSig = const False conv :: Nums a => NumOp -> a -> a conv op a = noRate $ ExpNum $ PreInline op [toPrimOr $ toE a] +convKr :: Nums a => NumOp -> a -> a+convKr op a = conv op $ phi a+ where phi+ | isSig a = setRate Kr + | otherwise = id + -- | Returns the amplitude equivalent of the decibel value x. Thus: -- -- * 60 dB = 1000@@ -420,7 +428,7 @@ -- doc: <http://www.csounds.com/manual/html/dbamp.html> dbamp :: Nums a => a -> a-dbamp = conv Dbamp+dbamp = convKr Dbamp -- | Returns the decibel equivalent of the raw amplitude x, relative to full scale amplitude. Full scale is assumed to be 16 bit. New is Csound version 4.10. --@@ -428,18 +436,100 @@ -- -- doc: <http://www.csounds.com/manual/html/dbfsamp.html> dbfsamp :: Nums a => a -> a -dbfsamp = conv Dbfsamp +dbfsamp = convKr Dbfsamp ------------------------------------------------------------------------------------------ -- pitch conversions +-- | Calculates a factor to raise/lower a frequency by a given amount of cents. +--+-- > cent(x) (no rate restriction)+--+-- doc: <http://www.csounds.com/manual/html/cent.html>+cent :: Nums a => a -> a+cent = conv Cent++-- | Converts a Midi note number value to cycles-per-second. +--+-- > cpsmidinn (MidiNoteNumber) (init- or control-rate args only)+--+-- doc: <http://www.csounds.com/manual/html/cpsmidinn.html>+cpsmidinn :: Nums a => a -> a+cpsmidinn = convKr Cpsmidinn++-- | Converts an octave-point-decimal value to cycles-per-second. +--+-- > cpsoct(oct) (no rate restriction)+--+-- doc: <http://www.csounds.com/manual/html/cpsoct.html>+cpsoct :: Nums a => a -> a+cpsoct = conv Cpsoct+ -- | Converts a pitch-class value to cycles-per-second. -- -- > cpspch (pch) (init- or control-rate args only) -- -- doc: <http://www.csounds.com/manual/html/cpspch.html> cpspch :: Nums a => a -> a-cpspch = conv Cpspch+cpspch = convKr Cpspch+++-- | Calculates a factor to raise/lower a frequency by a given amount of octaves. +--+-- > octave(x) (no rate restriction)+--+-- doc: <http://www.csounds.com/manual/html/octave.html>+octave :: Nums a => a -> a+octave = conv Octave++-- | Converts a cycles-per-second value to octave-point-decimal. +--+-- > octcps (cps) (init- or control-rate args only)+--+-- doc: <http://www.csounds.com/manual/html/octcps.html>+octcps :: Nums a => a -> a+octcps = convKr Octcps++-- | Converts a Midi note number value to octave-point-decimal. +--+-- > octmidinn (MidiNoteNumber) (init- or control-rate args only)+--+-- doc: <http://www.csounds.com/manual/html/octmidinn.html>+octmidinn :: Nums a => a -> a+octmidinn = convKr Octmidinn+++-- | Converts a pitch-class value to octave-point-decimal. +--+-- > octpch (pch) (init- or control-rate args only)+--+-- doc: <http://www.csounds.com/manual/html/octpch.html>+octpch :: Nums a => a -> a+octpch = convKr Octpch++-- | Converts a Midi note number value to octave point pitch-class units. +--+-- > pchmidinn (MidiNoteNumber) (init- or control-rate args only)+--+-- doc: <http://www.csounds.com/manual/html/pchmidinn.html>+pchmidinn :: Nums a => a -> a+pchmidinn = convKr Pchmidinn++-- | Converts an octave-point-decimal value to pitch-class. +--+-- > pchoct (oct) (init- or control-rate args only)+--+-- doc: <http://www.csounds.com/manual/html/pchoct.html>+pchoct :: Nums a => a -> a+pchoct = convKr Pchoct++-- | Calculates a factor to raise/lower a frequency by a given amount of semitones. +--+-- > semitone(x) (no rate restriction)+--+-- doc: <http://www.csounds.com/manual/html/semitone.html>+semitone :: Nums a => a -> a+semitone = conv Semitone ----------------------------------------------------- -- * Printing and Strings
src/Csound/Render/Pretty.hs view
@@ -188,36 +188,17 @@ Mul -> bi "*" Div -> bi "/" Neg -> uno "-" - Pow -> bi "^"+ Pow -> bi "^" Mod -> bi "%"- Sin -> fun "sin"- Cos -> fun "cos"- Sinh -> fun "sinh" - Cosh -> fun "cosh"- Tan -> fun "tan"- Tanh -> fun "tanh" - Sininv -> fun "sininv"- Cosinv -> fun "cosinv"- Taninv -> fun "taninv" - Abs -> fun "abs" - Ceil -> fun "ceil" + ExpOp -> fun "exp"- Floor -> fun "floor" - Frac -> fun "frac" IntOp -> fun "int" - Log -> fun "log" - Log10 -> fun "log10" - Logbtwo -> fun "logbtwo" - Round -> fun "round"- Sqrt -> fun "sqrt" -- Ampdb -> fun "ampdb" - Ampdbfs -> fun "ampdbfs" - Dbamp -> fun "dbamp"- Dbfsamp -> fun "dbfsamp" - Cpspch -> fun "cpspch"+ + x -> fun (firstLetterToLower $ show x) where bi = binaries uno = unaries fun = funcs+ firstLetterToLower (x:xs) = toLower x : xs+