There are lots of options here, but they're straight from SC. Simplest:

delay1 - gives you the value of "in" from one sample ago
delay2 - same, but 2 samples
delayN - can specify number of seconds of delay, but don't modulate the amount (there'll be aliasing artifacts)
delayC or delayL - can modulate the amount

There's also "combC"/"combL"/"combN" which is closer to the electronic music definition of "delay" (a delay line with feedback).

so you might do something like

s3 <- s1 ~+ (delay1 (in_ s1) ~* s2
out 0 [s3,s3]


El 8 jul 2018, a las 11:53, Jeffrey Brown <> escribió:

Synthesizers with feedback can create some unbelievably beautiful sounds.

I wrote a tiny program (below) to try to make feedback. I knew it would not work, because once I tried to learn how to do feedback in SC, and it's more complicated than what I wrote. I never understood how to do it in SC. I'm hoping maybe it's easier in Vivid?

Below is an example of what I'm trying to do.

  {-# LANGUAGE DataKinds, ExtendedDefaultRules #-}
  import Vivid
  boop :: SynthDef '["f1","f2"]
  boop = sd (400::I"f1", 300::I"f2") $ do
     s1 <- 0.1 ~* sinOsc (freq_ (V::V"f1"))
     s2 <- s1 ~- (0.1 ~* sinOsc (freq_ (V::V"f2")) )
     s1 <- s1 ~* s2 -- This line does not do what is intended. Instead
       -- it creates a new signal called `s1` that masks the old one.
       -- (That's a property of do-notation, not a problem with Vivid.)
     out 0 [s1, s1]
  main :: IO ()
  main = do
     s <- synth boop ()
     wait 1
     free s

Jeff Brown | Jeffrey Benjamin Brown
Website   |   Facebook   |   LinkedIn(spammy, so I often miss messages here)   |   Github   
Livecode mailing list --
To unsubscribe send an email to