<feed xmlns='http://www.w3.org/2005/Atom'>
<title>applause2/TODO, branch v0.1</title>
<subtitle>Luajit-based synthesizer based on a stream algebra</subtitle>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/'/>
<entry>
<title>ilua-wrapper: FreeBSD compatibility</title>
<updated>2024-02-20T09:12:25+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-02-20T09:12:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=1a12f69466d29721f8fa12c92850096339088f8c'/>
<id>1a12f69466d29721f8fa12c92850096339088f8c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>updated README and TODO</title>
<updated>2024-01-28T22:32:00+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-01-28T22:32:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=9e0da3df9c46cf1825ecf2674cc2ef521d3a8b57'/>
<id>9e0da3df9c46cf1825ecf2674cc2ef521d3a8b57</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>README: mention some useful programs</title>
<updated>2024-01-24T15:13:53+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-01-24T15:08:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=b45726451da90bba61d75f817982d2abdfbb0542'/>
<id>b45726451da90bba61d75f817982d2abdfbb0542</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>README: documented some FreeBSD tweaks</title>
<updated>2024-01-22T15:27:41+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-01-22T15:27:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=22df158af031a5bb0a126ce148e44d7fa4b5ad63'/>
<id>22df158af031a5bb0a126ce148e44d7fa4b5ad63</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Stream:gnuplot() supports plotting into Kitty terminals now</title>
<updated>2024-01-12T18:52:11+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-01-12T18:52:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=189a34d24326d2838c3dcd9ec7e9915c480e8873'/>
<id>189a34d24326d2838c3dcd9ec7e9915c480e8873</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>updated TODO</title>
<updated>2023-12-19T16:39:42+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2023-12-19T16:39:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=7059fffa6e55cb0fc406307122dd0688f34ee4fc'/>
<id>7059fffa6e55cb0fc406307122dd0688f34ee4fc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>improved interruption (SIGINT, CTRL+C) support</title>
<updated>2023-11-16T14:50:24+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2023-11-16T14:50:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=ebd9c3c4ec2cfe2f08b4f700dcc5bcb2a8b4b847'/>
<id>ebd9c3c4ec2cfe2f08b4f700dcc5bcb2a8b4b847</id>
<content type='text'>
* Just like the original LuaJIT interpreter, this will use a hook to automatically
  raise an error from Lua code.
* Unfortunately, as long as Jit compilation is enabled, this cannot reliably work.
  Therefore we still set an `interrupted` flag that must be
  polled from tight loops.
* Instead of polling via applause_push_sample() which gave interruption-support only
  to Stream:play(), we now have a separate checkint() function.
* checkint() should be manually added to all tight loops.
* Stream:foreach() and everthing based on it is now also supporting interruptions
  (via checkint()).
* This internally works via applause_is_interrupted().
  A C function was exposed only because LuaJIT does not support volatile-qualifiers and
  would optimize away reads to the interrupted-flag.
  As a side effect, we can also reset the hook.
* Flags set in signal handlers should be `volatile`.
* Added likely() and unlikely() macros to C code.
* Updated sample.ipynb Jupyter notebook: Everything important is now supported, albeit
  requiring custom ILua patches.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Just like the original LuaJIT interpreter, this will use a hook to automatically
  raise an error from Lua code.
* Unfortunately, as long as Jit compilation is enabled, this cannot reliably work.
  Therefore we still set an `interrupted` flag that must be
  polled from tight loops.
* Instead of polling via applause_push_sample() which gave interruption-support only
  to Stream:play(), we now have a separate checkint() function.
* checkint() should be manually added to all tight loops.
* Stream:foreach() and everthing based on it is now also supporting interruptions
  (via checkint()).
* This internally works via applause_is_interrupted().
  A C function was exposed only because LuaJIT does not support volatile-qualifiers and
  would optimize away reads to the interrupted-flag.
  As a side effect, we can also reset the hook.
* Flags set in signal handlers should be `volatile`.
* Added likely() and unlikely() macros to C code.
* Updated sample.ipynb Jupyter notebook: Everything important is now supported, albeit
  requiring custom ILua patches.
</pre>
</div>
</content>
</entry>
<entry>
<title>Jupyter integration improvements: support $APPLAUSE_OPTS and document how to display graphics and rich text</title>
<updated>2023-11-14T21:00:56+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2023-11-14T19:22:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=864f19750c3b58c8c09cfd57ef7622f6bdd38b04'/>
<id>864f19750c3b58c8c09cfd57ef7622f6bdd38b04</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>documented how to run Applause in Jupyter Consoles and Notebooks</title>
<updated>2023-11-11T21:44:04+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2023-11-11T21:44:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=93596df1755400c3eac5686668fd4a5d5728b474'/>
<id>93596df1755400c3eac5686668fd4a5d5728b474</id>
<content type='text'>
* This is at the very least cool to have and will be worthwile to write about in the dissertation.
* Added ilua-wrapper.sh script which can be used as the ILua interpreter and/or can be symlinked to `lua` in PATH,
  so ILua will pick up Applause even in Notebooks without any additional tweaks.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* This is at the very least cool to have and will be worthwile to write about in the dissertation.
* Added ilua-wrapper.sh script which can be used as the ILua interpreter and/or can be symlinked to `lua` in PATH,
  so ILua will pick up Applause even in Notebooks without any additional tweaks.
</pre>
</div>
</content>
</entry>
<entry>
<title>Stream:CC14() added, Stream:CC() outputs normalized values, got rid of Stream:ccscale()</title>
<updated>2023-09-26T15:44:43+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2023-09-26T15:44:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=132dd6354c0d264b4fa2000aac02c9bffc88278a'/>
<id>132dd6354c0d264b4fa2000aac02c9bffc88278a</id>
<content type='text'>
* Stream:CC14() allows reading 14-bit CCs (split over two 7-bit MIDI messages).
  It's actually capable to handle regular 7-bit controllers just fine.
  The question is whether we still need a distinction between Stream:CC() and Stream:CC14().
  Stream:CC14() has a slight overhead, but only when actually receiving MIDI messages.
* Stream:CC14() and Stream:CC() output values normalized to [-1,+1] now.
  We actually never made use of raw CC values and the scaling can be done only once whenever
  a matching MIDI message is received, so the runtime overhead is irrelevant.
* This means we could also get rid of Stream:ccscale() now.
  Just use Stream:scale() from nowon.
* Use Stream:scan() now whenever relying on previous values.
  That way, you can often avoid having to keep an accumulator variable in the closure.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Stream:CC14() allows reading 14-bit CCs (split over two 7-bit MIDI messages).
  It's actually capable to handle regular 7-bit controllers just fine.
  The question is whether we still need a distinction between Stream:CC() and Stream:CC14().
  Stream:CC14() has a slight overhead, but only when actually receiving MIDI messages.
* Stream:CC14() and Stream:CC() output values normalized to [-1,+1] now.
  We actually never made use of raw CC values and the scaling can be done only once whenever
  a matching MIDI message is received, so the runtime overhead is irrelevant.
* This means we could also get rid of Stream:ccscale() now.
  Just use Stream:scale() from nowon.
* Use Stream:scan() now whenever relying on previous values.
  That way, you can often avoid having to keep an accumulator variable in the closure.
</pre>
</div>
</content>
</entry>
</feed>
