summaryrefslogtreecommitdiff
path: root/src/Csound/Catalog/Wave/Sharc.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Csound/Catalog/Wave/Sharc.hs')
-rw-r--r--src/Csound/Catalog/Wave/Sharc.hs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Csound/Catalog/Wave/Sharc.hs b/src/Csound/Catalog/Wave/Sharc.hs
index 49b9096..8824b29 100644
--- a/src/Csound/Catalog/Wave/Sharc.hs
+++ b/src/Csound/Catalog/Wave/Sharc.hs
@@ -7,6 +7,9 @@ module Csound.Catalog.Wave.Sharc(
PadSharcSpec(..), padsynthSharcOsc, padsynthSharcOsc2,
padsynthSharcOsc', padsynthSharcOsc2',
+ -- * Padsynth and granular
+ morphsynthSharcOsc, morphsynthSharcOsc', quadMorphsynthSharcOsc, quadMorphsynthSharcOsc',
+
-- * Instriments
SharcInstr(..),
shViolin, shViolinPizzicato, shViolinMuted, shViolinMarteleBowing, shViolinsEnsemble, shViola, shViolaPizzicato, shViolaMuted,
@@ -123,6 +126,18 @@ padsynthSharcOsc2' spec instr freq = padsynthOscMultiCps2 (getSpecIntervals spec
padsynthSharcOsc' :: PadSharcSpec -> SharcInstr -> D -> SE Sig
padsynthSharcOsc' spec instr freq = padsynthOscMultiCps (getSpecIntervals spec instr) freq
+morphsynthSharcOsc :: MorphSpec -> SharcInstr -> D -> SE Sig2
+morphsynthSharcOsc = morphsynthSharcOsc' def
+
+morphsynthSharcOsc' :: PadSharcSpec -> MorphSpec -> SharcInstr -> D -> SE Sig2
+morphsynthSharcOsc' spec morphSpec instr freq = morphsynthOscMultiCps morphSpec (getSpecIntervals spec instr) freq
+
+quadMorphsynthSharcOsc :: MorphSpec -> [SharcInstr] -> (Sig, Sig) -> D -> SE Sig2
+quadMorphsynthSharcOsc = quadMorphsynthSharcOsc' def
+
+quadMorphsynthSharcOsc' :: PadSharcSpec -> MorphSpec -> [SharcInstr] -> (Sig, Sig) -> D -> SE Sig2
+quadMorphsynthSharcOsc' spec morphSpec instr (x, y) freq = quadMorphsynthOscMultiCps morphSpec (fmap (getSpecIntervals spec) instr) (x, y) freq
+
getSpecIntervals spec (SharcInstr instr) = zip borderFreqs specs
where
groups = splitTo (padSharcSize spec) (Sh.instrNotes instr)