<feed xmlns='http://www.w3.org/2005/Atom'>
<title>applause2, branch inputstream</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>InputStream(): work in progress</title>
<updated>2024-03-28T02:22:51+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2016-09-16T23:43:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=8d9361995e7123af8813753b10625dddda6d4fd6'/>
<id>8d9361995e7123af8813753b10625dddda6d4fd6</id>
<content type='text'>
 * It still results in gaps (???).
   Under FreeBSD, even the expression `InputStream():play()` produces noise.
   Apparently, there is some kind of data corruption.
 * it's probably necessary to increase the input buffer size
   and tell Jackd about the difference (output - input buffer size) as
   an additional latency.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * It still results in gaps (???).
   Under FreeBSD, even the expression `InputStream():play()` produces noise.
   Apparently, there is some kind of data corruption.
 * it's probably necessary to increase the input buffer size
   and tell Jackd about the difference (output - input buffer size) as
   an additional latency.
</pre>
</div>
</content>
</entry>
<entry>
<title>replaced Stream:foreach() with Stream:iter()</title>
<updated>2024-03-27T15:10:30+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-03-27T14:56:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=22f88459f2950eb163a8844badd884b3e1d193cd'/>
<id>22f88459f2950eb163a8844badd884b3e1d193cd</id>
<content type='text'>
* This allows the native syntax `for f in Stream:iter() do ... end` without using lambda
  functions.
  Also you can use `break` and `return` statements.
* On the other hand we cannot exploit the extended xpcall() semantics and had to introduce
  another lambda in Stream:play().
* In general the number of function calls per tick stays the same.
  Stream:gtick() itself could be used as an iterator, but Stream:iter() adds checking for CTRL+C,
  resetting of the sample cache and binding functions.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* This allows the native syntax `for f in Stream:iter() do ... end` without using lambda
  functions.
  Also you can use `break` and `return` statements.
* On the other hand we cannot exploit the extended xpcall() semantics and had to introduce
  another lambda in Stream:play().
* In general the number of function calls per tick stays the same.
  Stream:gtick() itself could be used as an iterator, but Stream:iter() adds checking for CTRL+C,
  resetting of the sample cache and binding functions.
</pre>
</div>
</content>
</entry>
<entry>
<title>Stream:gnuplot() now supports writing to an output file</title>
<updated>2024-03-16T10:54:14+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-03-16T10:54:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=476261186fb6ca6bccd752546d18b2bd63eb1a64'/>
<id>476261186fb6ca6bccd752546d18b2bd63eb1a64</id>
<content type='text'>
* Especially useful to generate PDF plots for my thesis.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Especially useful to generate PDF plots for my thesis.
</pre>
</div>
</content>
</entry>
<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>revised Stream:resample() - it takes a stream factor now, so you can control playpack speed</title>
<updated>2024-01-28T22:23:16+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-01-28T22:23:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=23e613456e9d1f1a109cedd9c6fa3b875ea5540c'/>
<id>23e613456e9d1f1a109cedd9c6fa3b875ea5540c</id>
<content type='text'>
* The old implementation was simple but severely limited:
  * the resample factor (playback speed) could only be scalar
  * for infinite source streams, the algorithm would require infinitely growing memory.
    The algorithm therefore also wasn't realtime-safe and quite slow (probably because of reallocations).
* This could be made to work with stream-factors if the source stream is infinite,
  but we couldn't get rid of the memory requirements due to being based on IndexStream.
* Instead, there is a custom ResampleStream now that backs Stream:resample().
  It also performs linear interpolation but has constant memory requirements and works with factor-streams.
  Even for finite source streams and constant factors this implementation will be faster and more
  real-time safe.
* You cannot play backwards, due to missing buffering.
  This can still be done manually using IndexStream if necessary.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* The old implementation was simple but severely limited:
  * the resample factor (playback speed) could only be scalar
  * for infinite source streams, the algorithm would require infinitely growing memory.
    The algorithm therefore also wasn't realtime-safe and quite slow (probably because of reallocations).
* This could be made to work with stream-factors if the source stream is infinite,
  but we couldn't get rid of the memory requirements due to being based on IndexStream.
* Instead, there is a custom ResampleStream now that backs Stream:resample().
  It also performs linear interpolation but has constant memory requirements and works with factor-streams.
  Even for finite source streams and constant factors this implementation will be faster and more
  real-time safe.
* You cannot play backwards, due to missing buffering.
  This can still be done manually using IndexStream if necessary.
</pre>
</div>
</content>
</entry>
<entry>
<title>evdev: access struct dirent via helper function applause_dirent_name() instead directly from Lua</title>
<updated>2024-01-24T16:29:42+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2024-01-24T16:29:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/applause2/commit/?id=d444a5d7405016a5094e26050cfb453bcd6f882a'/>
<id>d444a5d7405016a5094e26050cfb453bcd6f882a</id>
<content type='text'>
* the structure is highly platform-dependant and might even differ between 32-bit and 64-bit systems
* in particular this fixes EvdevStream on FreeBSD
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* the structure is highly platform-dependant and might even differ between 32-bit and 64-bit systems
* in particular this fixes EvdevStream on FreeBSD
</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>
</feed>
