我正在写关于Haskell中反应式编程的学士论文.我正在使用Euterpea开发简单的音频应用程序.我几乎完成了Paul Hudak的Haskell音乐学院.
但是,正如你们中的一些人所知,Hudak先生今年早些时候去世了,这本书现在已经完成了 - 关于调频的章节只完成了一半.物理建模章节有很多空白空间.如果没有解释,我无法理解那里出现的想法:(
有没有关于这本书是否会完成的信息?我甚至不知道如何获得这些信息.
除了Paul Hudak之外,还有人参与编写Haskell音乐学院吗?
我正在尝试使用Euterpea实现最简单的Karplus-Strong算法:
我的代码:0.7秒的白噪声爆发
burst :: AudSF () Double
burst = proc () -> do
burstEnv <- envLineSeg [1,1,0,0] [0.7, 0, 9.3] -< ()
noise <- noiseWhite 42 -< ()
outA -< burstEnv * noise
Run Code Online (Sandbox Code Playgroud)
有问题的部分:
karplus :: AudSF Double Double
karplus = proc input -> do
rec filtered <- filterLowPass -< (delayed, 2000)
delayed <- delayLine 0.7 -< filtered + input
outA -< filtered + input
Run Code Online (Sandbox Code Playgroud)
test1函数应该用几个周期创建一个10秒的文件:
test1 = outFile "test1.wav" 10 $ burst >>> karplus
Run Code Online (Sandbox Code Playgroud)
据我所知,反馈循环应该继续运行. …
标题可能不是最清楚的,但说实话,我不知道我不知道的是什么:(
有这个Clock类:
class Clock c where
rate :: c ? Double
data AudRate
data CtrRate
Run Code Online (Sandbox Code Playgroud)
和实例:
instance Clock AudRate where
rate _ = 44100
instance Clock CtrRate where
rate _ = 4410
Run Code Online (Sandbox Code Playgroud)
我的功能:
burst :: Clock p => Double -> SigFun p () Double
burst m = proc () -> do
burstEnv <- envLineSeg [1,1,0,0] [(m/(rate (undefined :: p))), (1/4410), (m+1/4410) ] -< ()
noise <- noiseWhite 51 -< ()
outA -< noise * burstEnv
Run Code Online (Sandbox Code Playgroud)
GHC告诉我:(率(undefined :: p))
Could not …Run Code Online (Sandbox Code Playgroud) 这是我的第一篇帖子:)
我正在尝试学习haskell的基础知识,甚至还有一些东西在我的屏幕上显示(͡°͜ʖ͡°)但是说真的.我正在尝试实施Caesar的Cipher,但我不知道为什么我的舞蹈ord和chr不起作用.我意识到答案很简单,但我发现很难理解GHCI的错误信息.
Run Code Online (Sandbox Code Playgroud)import Data.Char cipher :: [char] -> Int -> [char] cipher [] _ = [] cipher ch n = (chr(( (ord (head ch)) - n) `mod` 26)) : (cipher (tail ch) n) cipher.hs:4:16: Couldn't match expected type `char' with actual type `Char' `char' is a rigid type variable bound by the type signature for cipher :: [char] -> Int -> [char] at cipher.hs:2:11 In the return type of a call of `chr' In the first …