⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fader.hs

📁 Cores are generated from Confluence a modern logic design language. Confluence is a simple, yet high
💻 HS
字号:
-- | Fades one signal to another.module Language.Atom.Common.Fader  ( Fader  , FaderInit (..)  , fader  , fadeToA  , fadeToB  , fadeToCenter  ) whereimport Language.Atom-- | Fader object.data Fader = Fader (Var Int)-- | Fader initalization.data FaderInit = OnA | OnB | OnCentertoA = 0toB = 1toCenter = 2-- | Fader construction.  Name, fade rate, fader init, and signal A and B.fader :: Name -> Double -> FaderInit -> Term Double -> Term Double -> System (Fader, Term Double)fader name rate init a b = scope name $ do  assert "positiveRate" $ rate >= 0  target <- int "target" (case init of {OnA -> toA; OnB -> toB; OnCenter -> toCenter})  perA <- double "perA"  (case init of {OnA -> 1;   OnB -> 0;   OnCenter -> 0.5})  rule "toA" $ do    when $ value target ==. intC toA    when $ value perA <. 1    perA <== mux (1 - value perA <. doubleC rate) 1 (value perA + doubleC rate)  rule "toB" $ do    when $ value target ==. intC toB    when $ value perA >. 0    perA <== mux (value perA <. doubleC rate) 0 (value perA - doubleC rate)  rule "toCenterFrom0" $ do    when $ value target ==. intC toCenter    when $ value perA <. 0.5    perA <== mux (0.5 - value perA <. doubleC rate) 0.5 (value perA + doubleC rate)  rule "toCenterFrom1" $ do    when $ value target ==. intC toCenter    when $ value perA >. 0.5    perA <== mux (value perA - 0.5 <. doubleC rate) 0.5 (value perA - doubleC rate)  return (Fader target, (a * value perA + b * (1 - value perA)) / 2)-- | Fade to signal A.fadeToA :: Fader -> Action ()fadeToA (Fader target) = target <== intC toA-- | Fade to signal B.fadeToB :: Fader -> Action ()fadeToB (Fader target) = target <== intC toB-- | Fade to center, ie average of signal A and B.fadeToCenter :: Fader -> Action ()fadeToCenter (Fader target) = target <== intC toCenter

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -