that's a nice idea. You could provide sliders happy/sad, slow/fast to influence trends. I've heard someone on the csound mailing list having programmed an automated radio without interaction except the kind of music trance/jazz/... see https://algorythmradio.com/ . Maybe you could exchange together
Hello! I am a beginner in Haskell, coming more from mathematics, Overtone/Supercollider and composing with modular synthesizers. csound-expression
so far seems very promising to me, and I would like to thank you for creating this wonderful library! I have a few questions which I was unable to answer with the tutorial: I would like to do function composition to create effect chains (and perhaps also branch effects). However some effects have signatures like ... -> Sig -> SE Sig2
while others have ... -> Sig -> SE Sig
. How do I deal with this specific case and a function to put the Sig
into a Sig2
or the other way around? As an example of such an attempt at function composition which does not work:
snare = at (hp 1000 10 . chorus 0.1 0.2 0.1) $ mul (adsr 0.01 0.4 0 0) pink
Also (I may simply have missed this), is there a way to have buses or use things like Jack with csound-expression
?
snare = at (hp 1000 10) . at (chorus 0.1 0.2 0.1) $ mul (adsr 0.01 0.4 0 0) pink
fromMono :: Sig -> Sig2
what is the best way to combine scores and playback of samples? My current approach is:
clap :: D -> SE Sig2
clap _ = runSam bpm $ wav1 "clap.wav"
mkpattern :: [Int] -> Sco D
mkpattern lst = mel $ map (\i -> if i == 0 then rest 1 else temp (double 1.0)) lst
clapp :: Sco (Mix Sig2)
clapp = sco clap $ mkpattern [0,0,1,0,0,0,1,1]
-- then run `dac $ mix clapp`
but I would ideally like to work with samples like with Csound.Sam
like I can do with scores? Maybe there is a good way scores and samples are separated in this way?
like this one:
loopRam, readRam :: Fidelity -> TempoSig -> PitchSig -> String -> Sig2
though they expose a bit more params than wav1
dac $ testDrone $ cpspch 4.02
works. There is sound.ticks
doesn`t work, no sound. And no error:
dac $ nticks [3,2,3] 135
0dBFS level = 32768.0
--Csound version 6.10 (double samples) 2018-01-27
[commit: none]
libsndfile-1.0.28
UnifiedCSD: tmp.csd
STARTING FILE
Creating options
Creating orchestra
closing tag
Creating score
rtaudio: ALSA module enabled
rtmidi: ALSA Raw MIDI module enabled
csound command: Segmentation fault
end of score. overall amps: 0.0
overall samples out of range: 0
0 errors in performance
Elapsed time at end of performance: real: 0.253s, CPU: 0.002s
What should i do to hear sound from ticks
?
dac $ repeatSnd 3 $ leg 1 2 0 0 * osc 220
0dBFS level = 32768.0
--Csound version 6.10 (double samples) 2018-01-27
[commit: none]
libsndfile-1.0.28
UnifiedCSD: tmp.csd
STARTING FILE
Creating options
Creating orchestra
closing tag
Creating score
rtaudio: ALSA module enabled
rtmidi: ALSA Raw MIDI module enabled
csound command: Segmentation fault
end of score. overall amps: 0.0
overall samples out of range: 0
0 errors in performance
Elapsed time at end of performance: real: 0.252s, CPU: 0.002s
Hi, Vladislav! Sorry for late reply I was away in the mountains, no computers available.
I've tried nticks and it works for me. I guess that problem is with version of Csound compiler that you use.
The code indicates: csound command: Segmentation fault
I'm using:
--Csound version 6.10 (double samples) Dec 18 2017
[commit: 63b19f63a8d41005747f5d41fef3d82f23bf1d3c]
right now and all your code snippets work with it
If you compile Csound from sources it's better to compile from master branch,
not develop
The module Csound.Patch
is a part of the library csound-catalog
so if we install only csound-expression
this module is not available for us.
I guess you can try to update cabal source list and install csound-catalog:
cabal update
cabal install csound-catalog
for beginner
there is tutorial of the lib:
https://github.com/spell-music/csound-expression/blob/master/tutorial/Index.md
to learn csound:
http://write.flossmanuals.net/csound/preface/
http://www.codemist.co.uk/AmsterdamCatalog/
Hi Anton! Thanks for the awesome library. It is exactly what I was looking for for my new project. (I'm reading osc-data generated from cell-phone sensors to drive synthesizers and produce different sounds.) I particularly appreciate the tutorial, which really is a good introduction and shows how simple it is to generate complex sound with just a few lines.
I was wondering, is there a way to use external audio sources (in particular microphones)? I've seen something in Csound.Options about PulseAudio, Jack, adc etc., but it is not clear to me how this can be used to actually get a Sig
type for further processing. Idealy I am looking for something like
getInp :: SE Sig
effect :: Sig -> SE Sig
main = dac $ getInp >>= effect
where getInp
provides the microphone input and effect
is the function that I want to apply to the microphone input.
Currently I'm running the whole thing on a Debian with Pulse Audio, but Jack is an option.
dac
also accepts functions SigN -> SigM
or SigN -> SE SigM
. It will pass all needed flags to read the input. Be sure to match the number of inputs of your card. For example if you have 2x2 card. You should pass to dac
Sig2 -> SE Sig2
and use only channel that you want.