<div dir="ltr">Alas there is no CsdSco typeclass anymore.<div>The original idea was to implement score type with</div><div>the most basic type and give the user a chance to write converters</div><div>and use score playing functionality by the class CsdSco. </div><div>But I've noticed that this approach was preventing me from using</div><div>advanced score structures (they are implemented in the separate package).</div><div>And type signatures become scary for the novice.</div><div>So I've settled down the type. It's like choosing between Prelude.List</div><div>ListLike.List. I've decided to pick the simplest one.</div><div><br></div><div>You can write your own converter to the `Sco` type. </div><div><br></div><div>````</div><div><span class="" style="margin:0px;padding:0px;color:rgb(0,0,0);font-family:monospace;font-size:13px;line-height:16.1200008392334px">type</span><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;line-height:16.1200008392334px;background-color:rgb(240,240,240)"> </span><a name="t:Sco" class="" style="margin:0px;padding:0px;font-weight:bold;color:rgb(0,0,0);font-family:monospace;font-size:13px;line-height:16.1200008392334px">Sco</a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;line-height:16.1200008392334px;background-color:rgb(240,240,240)"> a = </span><a href="http://hackage.haskell.org/package/temporal-media-0.6.0/docs/Temporal-Media.html#t:Track" style="margin:0px;padding:0px;text-decoration:none;color:rgb(171,105,84);font-family:monospace;font-size:13px;line-height:16.1200008392334px">Track</a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;line-height:16.1200008392334px;background-color:rgb(240,240,240)"> </span><a href="http://hackage.haskell.org/package/csound-expression-4.8.2/docs/Csound-Types.html#t:D" style="margin:0px;padding:0px;text-decoration:none;color:rgb(171,105,84);font-family:monospace;font-size:13px;line-height:16.1200008392334px">D</a><span style="color:rgb(0,0,0);font-family:monospace;font-size:13px;line-height:16.1200008392334px;background-color:rgb(240,240,240)"> a</span><br></div><div>```</div><div><br></div><div>The `Track` comes from temporal-media package.</div><div>It's very easy to construct it from list of events.</div><div>One possible solution:</div><div><br></div><div>```</div><div>type Note = (Double, Double, a)</div><div><br></div><div>fromEvents :: [Note] -> Sco a</div><div>fromEvents = har . fmap f</div><div>     where f (start, duration, a) = del (double start) $ str (double duration) $ temp a</div><div>```</div><div><br></div><div>Notice the need for converting to csound doubles (`D`s). The `har` is parallel composition.</div><div>`del` is for delaying nd `str` is for stretching in time domain. `temp` creates an event</div><div>that lasts for one seconds and starts right away.</div><div>I don't know your type, but I think it can be rendered to a list of notes.</div><div><br></div><div>Then you can plug the converter to the functions: `sco` or `atSco` (used for patches).</div><div><br></div><div><br></div><div>Cheers,</div><div>Anton</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-09-15 22:11 GMT+03:00 Edward Lilley <span dir="ltr"><<a href="mailto:ejlilley@gmail.com" target="_blank">ejlilley@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi<br>
<br>
The most useful part of this (for me) is the ability to play midi-style<br>
instruments at arbitrary frequencies, so this looks great!<br>
<br>
To that end, I'm looking for the definition of the 'CsdSco' typeclass,<br>
as I want to write my own instance. It seems to be referenced in the<br>
csound-expression documentation, and once in a code comment, but is<br>
otherwise absent from the source. Indeed, installing temporal-csound<br>
from hackage fails with the error<br>
<br>
src/Csound.hs:135:10:<br>
    Not in scope: type constructor or class ‘CsdSco’<br>
<br>
Where do I find it?<br>
<br>
thanks,<br>
Edward<br>
<span class=""><br>
Anton Kholomiov <<a href="mailto:anton.kholomiov@gmail.com">anton.kholomiov@gmail.com</a>> writes:<br>
<br>
> Status update for my haskell synth csound-expression. The main point is<br>
> presence of many cool instruments. They are implemented in the package<br>
> csound-catalog. All packages are compiled with GHC-7.10 So the hackage<br>
> fails to build them and unfortunately docs a broken too. But you can look<br>
> at the source code of the module Csound.Patch to now  the names of the<br>
> instruments. The usage is pretty straightforward. It's described here:<br>
><br>
> <a href="https://github.com/spell-music/csound-expression/blob/master/tutorial/chapters/Patches.md" rel="noreferrer" target="_blank">https://github.com/spell-music/csound-expression/blob/master/tutorial/chapters/Patches.md</a><br>
><br>
> There is an mp3 file to listen to the instruments. <a href="http://ge.tt/1jNETqN2/v/0" rel="noreferrer" target="_blank">http://ge.tt/1jNETqN2/v/0</a><br>
><br>
</span>> *The 4.8.3 is out! New features:*<br>
<div class="HOEnZb"><div class="h5">><br>
> This is a very important release to me. It tries to solve the problem<br>
> present in the most open source music-production libraries. It's often the<br>
> pack of beautiful sounds/timbres is missing. User is presented with many<br>
> audio primitives but no timbres are present to show the real power of the<br>
> framework. This release solves this problem. See the friend package<br>
> csound-catalog on Hackage. It defines 200+ beautiful instruments ready to<br>
> be used.<br>
><br>
> The csound-expression defines a new type called Patch for description of an<br>
> instrument with a chain of effects. It's good place to start the journey to<br>
> the world of music production.<br>
><br>
> There are new functions for synchronized reaction on events. The triggering<br>
> of events can be synchronized with given BPM.<br>
><br>
> The library is updated for GHC-7.10!<br>
><br>
><br>
> github repo: <a href="https://github.com/spell-music/csound-expression" rel="noreferrer" target="_blank">https://github.com/spell-music/csound-expression</a><br>
><br>
> hackage: <a href="http://hackage.haskell.org/package/csound-expression" rel="noreferrer" target="_blank">http://hackage.haskell.org/package/csound-expression</a><br>
><br>
><br>
> Cheers!<br>
<br>
</div></div></blockquote></div><br></div>