<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">As usual the library is available on Hackage:</p>
<p style="margin:0px 0px 1.2em!important"><a href="http://hackage.haskell.org/package/csound-expression">http://hackage.haskell.org/package/csound-expression</a></p>
<p style="margin:0px 0px 1.2em!important">The github repo is at</p>
<p style="margin:0px 0px 1.2em!important"><a href="https://github.com/spell-music/csound-expression">https://github.com/spell-music/csound-expression</a></p>
<p style="margin:0px 0px 1.2em!important">Other useful libraries that go with csound-expression are</p>
<p style="margin:0px 0px 1.2em!important">csound-sampler, and csound-catalog:</p>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important"><a href="http://hackage.haskell.org/package/csound-sampler">csound-sampler</a></p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important"><a href="http://hackage.haskell.org/package/csound-catalog">csound-catalog</a></p>
</li>
</ul>
<div title="MDH:QXMgdXN1YWwgdGhlIGxpYnJhcnkgaXMgYXZhaWxhYmxlIG9uIEhhY2thZ2U6PGRpdj48YnI+PC9k
aXY+PGRpdj5odHRwOi8vaGFja2FnZS5oYXNrZWxsLm9yZy9wYWNrYWdlL2Nzb3VuZC1leHByZXNz
aW9uPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhlIGdpdGh1YiByZXBvIGlzIGF0PC9k
aXY+PGRpdj48YnI+PC9kaXY+PGRpdj5odHRwczovL2dpdGh1Yi5jb20vc3BlbGwtbXVzaWMvY3Nv
dW5kLWV4cHJlc3Npb248YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5PdGhlciB1c2VmdWwg
bGlicmFyaWVzIHRoYXQgZ28gd2l0aCBjc291bmQtZXhwcmVzc2lvbiBhcmU8L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2PmNzb3VuZC1zYW1wbGVyLCBhbmQgY3NvdW5kLWNhdGFsb2c6PC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj4qIFtjc291bmQtc2FtcGxlcl0oaHR0cDovL2hhY2thZ2UuaGFza2Vs
bC5vcmcvcGFja2FnZS9jc291bmQtc2FtcGxlcik8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Piog
W2Nzb3VuZC1jYXRhbG9nXShodHRwOi8vaGFja2FnZS5oYXNrZWxsLm9yZy9wYWNrYWdlL2Nzb3Vu
ZC1jYXRhbG9nKTxicj48L2Rpdj4=" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-10-30 17:41 GMT+03:00 Anton Kholomiov <span dir="ltr"><<a href="mailto:anton.kholomiov@gmail.com" target="_blank">anton.kholomiov@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><p style="margin:0px 0px 1.2em!important"><strong>The 4.9.0 is out! New features:</strong></p>
<p style="margin:0px 0px 1.2em!important">csound-expression</p>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Functions for creation of FM-synthesizers. We can create<br>the whole graph of FM-units (with feedback). Check out the module <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)"><a href="http://Csound.Air.Fm" target="_blank">Csound.Air.Fm</a></code></p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Support for Monosynth patches. See atMono in the module <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">Csound.Air.Patch</code><br>see the function <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">atMono</code> and <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">atMonoSharp</code>. </p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Easy to use Binaural panning. See the module <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">Csound.Air.Pan</code><br>It’s like:</p>
</li>
</ul>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)"><span style="color:rgb(153,0,0);font-weight:bold">headPan</span> :: (<span style="color:rgb(68,85,136);font-weight:bold">Sig</span>, <span style="color:rgb(68,85,136);font-weight:bold">Sig</span>) -> <span style="color:rgb(68,85,136);font-weight:bold">Sig</span> -> <span style="color:rgb(68,85,136);font-weight:bold">Sig2</span>
<span style="color:rgb(153,0,0);font-weight:bold">headPan</span> (azimuth, elevation) asig = (aleft, aright)
</code></pre>
<p style="margin:0px 0px 1.2em!important">the compiler can supply the right extra files by reading the header of .csd</p>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Construction of patches for sound fonts (<code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">sfPatch</code>, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">sfPatchHall</code>). </p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Table of tables. We can create a table that contains tables.</p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Harmonic oscillators for subtractive synth: <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">buz</code> and <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">gbuz</code><br>(the functions are adapted from the Csound ones)</p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Reverbs for patches. It’s very easy to add a reverb to your  patch<br>(<code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">withSmallHall patch</code>, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">withLargeHall patch</code>, etc)</p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Some bug-fixes</p>
</li>
</ul>
<p style="margin:0px 0px 1.2em!important">csound-catalog</p>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px">Many mono-synth were added. You can use them with function <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">atMono</code><br>in place of <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">atMidi</code>. The mono versions of patches have suffix <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">m</code>.<br>Like <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">hammonOrganm</code> or <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">nightPadm</code>. We can use it like this:</li>
</ul>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">> dac $ atMono nightPadm
</code></pre>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px">SHARC instruments. SHARC db contains a FFT-samples for sustain notes.<br> It includes many orchestra instruments. There are many new patches that<br> use natural sounding timbres taken from the SHARC library.<br> Check out functions <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">soloSharc</code>, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">padSharc</code>, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">dreamSharc</code>.</li>
</ul>
<p style="margin:0px 0px 1.2em!important">We can use it like this:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important;display:block;overflow-x:auto;padding:0.5em;color:rgb(51,51,51);background:rgb(248,248,248)">> dac $ atMidi $ padSharc shCello
</code></pre>
<p style="margin:0px 0px 1.2em!important">csound-sampler</p>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Handy function <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">withBpm</code> allows to query current bpm with in the scope<br>of expression.</p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Sampler mappers were generalized.</p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0px 0px 1.2em!important;margin:0.5em 0px!important">Char trigering functions are synchronized with bpm.</p>
</li>
</ul>
<p style="margin:0px 0px 1.2em!important">Cheers!<br>Anton</p>
<div title="MDH:PGRpdj4qKlRoZSA0LjkuMCBpcyBvdXQhIE5ldyBmZWF0dXJlczoqKjwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+Y3NvdW5kLWV4cHJlc3Npb248L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiogRnVu
Y3Rpb25zIGZvciBjcmVhdGlvbiBvZiBGTS1zeW50aGVzaXplcnMuIFdlIGNhbiBjcmVhdGU8L2Rp
dj48ZGl2PnRoZSB3aG9sZSBncmFwaCBvZiBGTS11bml0cyAod2l0aCBmZWVkYmFjaykuIENoZWNr
IG91dCB0aGUgbW9kdWxlIGBDc291bmQuQWlyLkZtYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
KiBTdXBwb3J0IGZvciBNb25vc3ludGggcGF0Y2hlcy4gU2VlIGF0TW9ubyBpbiB0aGUgbW9kdWxl
IGBDc291bmQuQWlyLlBhdGNoYDwvZGl2PjxkaXY+Jm5ic3A7IHNlZSB0aGUgZnVuY3Rpb24gYGF0
TW9ub2AgYW5kIGBhdE1vbm9TaGFycGAuJm5ic3A7PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4q
IEVhc3kgdG8gdXNlIEJpbmF1cmFsIHBhbm5pbmcuIFNlZSB0aGUgbW9kdWxlIGBDc291bmQuQWly
LlBhbmA8L2Rpdj48ZGl2PiZuYnNwO0l0J3MgbGlrZTo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2
Pn5+fmhhc2tlbGw8L2Rpdj48ZGl2PmhlYWRQYW4gOjogKFNpZywgU2lnKSAtJmd0OyBTaWcgLSZn
dDsgU2lnMjwvZGl2PjxkaXY+aGVhZFBhbiAoYXppbXV0aCwgZWxldmF0aW9uKSBhc2lnID0gKGFs
ZWZ0LCBhcmlnaHQpPC9kaXY+PGRpdj5+fn48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PnRoZSBj
b21waWxlciBjYW4gc3VwcGx5IHRoZSByaWdodCBleHRyYSBmaWxlcyBieSByZWFkaW5nIHRoZSBo
ZWFkZXIgb2YgLmNzZDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+KiBDb25zdHJ1Y3Rpb24gb2Yg
cGF0Y2hlcyBmb3Igc291bmQgZm9udHMgKGBzZlBhdGNoYCwgYHNmUGF0Y2hIYWxsYCkuJm5ic3A7
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4qIFRhYmxlIG9mIHRhYmxlcy4gV2UgY2FuIGNyZWF0
ZSBhIHRhYmxlIHRoYXQgY29udGFpbnMgdGFibGVzLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
KiBIYXJtb25pYyBvc2NpbGxhdG9ycyBmb3Igc3VidHJhY3RpdmUgc3ludGg6IGBidXpgIGFuZCBg
Z2J1emA8L2Rpdj48ZGl2PiZuYnNwOyAodGhlIGZ1bmN0aW9ucyBhcmUgYWRhcHRlZCBmcm9tIHRo
ZSBDc291bmQgb25lcyk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiogUmV2ZXJicyBmb3IgcGF0
Y2hlcy4gSXQncyB2ZXJ5IGVhc3kgdG8gYWRkIGEgcmV2ZXJiIHRvIHlvdXIgJm5ic3A7cGF0Y2g8
L2Rpdj48ZGl2PiZuYnNwOyhgd2l0aFNtYWxsSGFsbCBwYXRjaGAsIGB3aXRoTGFyZ2VIYWxsIHBh
dGNoYCwgZXRjKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+KiBTb21lIGJ1Zy1maXhlczwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+Y3NvdW5kLWNhdGFsb2c8L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2PiogTWFueSBtb25vLXN5bnRoIHdlcmUgYWRkZWQuIFlvdSBjYW4gdXNlIHRoZW0gd2l0aCBm
dW5jdGlvbiBgYXRNb25vYDwvZGl2PjxkaXY+Jm5ic3A7IGluIHBsYWNlIG9mIGBhdE1pZGlgLiBU
aGUgbW9ubyB2ZXJzaW9ucyBvZiBwYXRjaGVzIGhhdmUgc3VmZml4IGBtYC48L2Rpdj48ZGl2PiZu
YnNwOyBMaWtlIGBoYW1tb25Pcmdhbm1gIG9yIGBuaWdodFBhZG1gLiBXZSBjYW4gdXNlIGl0IGxp
a2UgdGhpczo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pn5+fmhhc2tlbGw8L2Rpdj48ZGl2PiZn
dDsgZGFjICQgYXRNb25vIG5pZ2h0UGFkbTwvZGl2PjxkaXY+fn5+PC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj4qIFNIQVJDIGluc3RydW1lbnRzLiBTSEFSQyBkYiBjb250YWlucyBhIEZGVC1zYW1w
bGVzIGZvciBzdXN0YWluIG5vdGVzLiZuYnNwOzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwO0l0IGlu
Y2x1ZGVzIG1hbnkgb3JjaGVzdHJhIGluc3RydW1lbnRzLiBUaGVyZSBhcmUgbWFueSBuZXcgcGF0
Y2hlcyB0aGF0PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7dXNlIG5hdHVyYWwgc291bmRpbmcgdGlt
YnJlcyB0YWtlbiBmcm9tIHRoZSBTSEFSQyBsaWJyYXJ5LiZuYnNwOzwvZGl2PjxkaXY+Jm5ic3A7
ICZuYnNwO0NoZWNrIG91dCBmdW5jdGlvbnMgYHNvbG9TaGFyY2AsIGBwYWRTaGFyY2AsIGBkcmVh
bVNoYXJjYC48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+V2UgY2FuIHVzZSBpdCBsaWtl
IHRoaXM6PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5+fn5oYXNrZWxsPC9kaXY+PGRpdj4mZ3Q7
IGRhYyAkIGF0TWlkaSAkIHBhZFNoYXJjIHNoQ2VsbG88L2Rpdj48ZGl2Pn5+fjwvZGl2PjwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+Y3NvdW5kLXNhbXBsZXI8L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2PiogSGFuZHkgZnVuY3Rpb24gYHdpdGhCcG1gIGFsbG93cyB0byBxdWVyeSBjdXJyZW50IGJw
bSB3aXRoIGluIHRoZSBzY29wZTwvZGl2PjxkaXY+Jm5ic3A7IG9mIGV4cHJlc3Npb24uPC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj4qIFNhbXBsZXIgbWFwcGVycyB3ZXJlIGdlbmVyYWxpemVkLjwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+KiBDaGFyIHRyaWdlcmluZyBmdW5jdGlvbnMgYXJlIHN5
bmNocm9uaXplZCB3aXRoIGJwbS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2PkNoZWVycyE8L2Rpdj48ZGl2PkFudG9uPC9kaXY+" style="min-height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div>
</blockquote></div><br></div>