Synthesizers with feedback can create some unbelievably beautiful sounds.
https://www.native-instruments.com/en/products/komplete/synths/reaktor-sp...
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 <https://msu.edu/~brown202/> | Facebook
<https://www.facebook.com/mejeff.younotjeff> | LinkedIn
<https://www.linkedin.com/in/jeffreybenjaminbrown>(spammy, so I often miss
messages here) | Github <https://github.com/jeffreybenjaminbrown>

TOPLAP Live Coding Moot
Access Space, Sheffield UK
pre-events: 1st Sept 2018
moot: 2nd-3rd Sept 2018
Full info: https://toplap.org/moot2018/
Tickets: https://tickets.partyforthepeople.org/events/3823-toplap-moot
A “moot” is an assembly, for an exchange of thoughts and ideas on
speculative topics. This moot is designed for active practitioners,
from occasional tinkerers to regular performers, to promote open
exchange of ideas, techniques and software.
Imposters welcome, we're keen to make this an opportunity for those on
the fringes of the live coding community to get more involved!
We’ll start with associated events on 1st September – a SONA workshop
for women and non-binary people by day, and (of course) an Algorave
into the night.
Then the moot will begin on 2nd September with talks and workshops
over two days. See here for the emerging schedule:
https://toplap.org/moot2018/
If you'd like to contribute a talk, workshop, or performance please
fill out this short form, and we'll get back to you.
https://goo.gl/forms/DNybCk3GaRZwnUV33
This event has grown out of cultural exchange programme between live
coders in Tokyo Japan, and Yorkshire UK, funded by Daiwa
Anglo-Japanese Foundation, Great Britain Sasakawa Foundation, and Arts
Council, England.

Composers reuse melodic material across different instruments. I would like
to do that in Vivid. I would keep a sequence of values and send it
sometimes to one parameter of one synth, sometimes to a different parameter
of a different synth.
To do that I would have to coerce those numbers to values of type `I a`,
where the string `a` is known only at runtime. I tried to write a function
to do that:
import GHC.TypeLits
toIOf :: (Real n, GHC.TypeLits.KnownSymbol a) => String -> n -> I a
toIOf "freq" n = toI n :: I "freq"
toIOf "amp" n = toI n :: I "amp"
but it won't compile, because the outputs of `toIOf "freq"` and `toIOf
"amp"` have different types.
Is this possible?
--
Jeff Brown | Jeffrey Benjamin Brown
Website <https://msu.edu/~brown202/> | Facebook
<https://www.facebook.com/mejeff.younotjeff> | LinkedIn
<https://www.linkedin.com/in/jeffreybenjaminbrown>(spammy, so I often miss
messages here) | Github <https://github.com/jeffreybenjaminbrown>