<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Manual on SergeantBiggs Blog</title><link>https://blog.sergeantbiggs.net/tags/manual/</link><description>Recent content in Manual on SergeantBiggs Blog</description><generator>Hugo -- 0.161.1</generator><language>en-us</language><copyright>CC-BY 4.0</copyright><lastBuildDate>Sat, 20 Jun 2026 22:10:25 +0200</lastBuildDate><atom:link href="https://blog.sergeantbiggs.net/tags/manual/index.xml" rel="self" type="application/rss+xml"/><item><title>Creating a Modern Version of the Kaossilator 2 Manual</title><link>https://blog.sergeantbiggs.net/posts/kaossilator-2-manual/</link><pubDate>Sat, 20 Jun 2026 22:10:25 +0200</pubDate><author>SergeantBiggs</author><guid>https://blog.sergeantbiggs.net/posts/kaossilator-2-manual/</guid><description>&amp;lt;no value&amp;gt;</description><content type="text/html" mode="escaped"><![CDATA[<p>I recently bought a <a href="https://en.wikipedia.org/wiki/Korg_Kaossilator#Kaossilator_2">kaossilator 2</a>,
a music synthesizer by Korg. It is played via a touchpad, making it incredibly
portable and versatile. I&rsquo;ve enjoyed using it, but there is one small
annoyance: the manual.</p>
<p>The manual primarily exists as a printed booklet which is kind of annoying to
use, because the only way to read it is to fold it out into a huge poster (you
probably know what I mean, right?).</p>
<p>It is quite easy to find a PDF of this manual on
<a href="https://www.korg.com/us/support/download/manual/0/130/1927/">Korg&rsquo;s website</a>,
but using it has its own annoyances. Because it is a PDF, it is &ldquo;identical&rdquo;
to the physical booklet so it&rsquo;s not optimised for screens. For example, the
pages I&rsquo;m interested in (the English version) are the second half of page 2,
the first half of page 3, the top quarter of page 4, and page 5.</p>
<p>The manual itself has quite a complicated layout, but this is a constraint of
the form of the printed manual, not of the content. Most of the content
is simple so I had a good feeling I could just transcribe it to markdown.
The most complicated figures are 2 tables: the &ldquo;program list&rdquo; and the &ldquo;scale
list&rdquo;. These are pretty self-explanatory: the program list describes
all instruments and sounds the kaossilator supports, the scale list
describes all built-in scales. For example, this is the program list in the
PDF:</p>





<figure class=""><img src="https://blog.sergeantbiggs.net/img/program_list.png" alt="Table with all programs"
            decoding="async" /><figcaption><p>Screenshot of the original table in the PDF</p></figcaption></figure>
<p>This table is quite long and complicated, so I wasn&rsquo;t sure how to get it out.
Copying out the built-in text destroys the formatting information. I could try
to transform the extracted plaintext via &ldquo;classical&rdquo; text processing (e.g.
RegEx, tr, block editing in vim) but that seemed quite tedious and error-prone.</p>
<p>As an alternative I wanted to try an AI tool since I&rsquo;ve always been a bit
disappointed by &ldquo;classical&rdquo; OCR. After some searching I found
<a href="https://aistudio.baidu.com/paddleocr">PaddleOCR</a>. I threw in one page of the
PDF with the first table and was stunned by the great <a href="/img/table.html">result</a>
it gave me.</p>
<p>Don&rsquo;t get me wrong; it is by no means perfect. There are small some problems
with these tables. Some elements are not transcribed correctly: the arrows on
<em>Y-Assign</em> are horizontal, the scale marker is filled for some elements, the
double-minus gets converted into an em-dash. These are small problems that are
quite easy to fix. More annoyingly, the tables are in HTML. I&rsquo;m assuming this
is because the table is quite complicated and PaddleOCR does not really know
how to represent those elements in a markdown table and therefore tries to
approximate the table <em>visually</em> which can only be done via HTML. In this case,
I don&rsquo;t care about the look of the table at all. I just want to transport all
of the information that was in the original table, so a markdown table makes
more sense. Luckily it is quite easy to create a markdown table from an HTML
table with the venerable <a href="https://pandoc.org/">pandoc</a>. Since the table is
quite simple I was confident it would work well. After converting them, the
tables looked like this:</p>
<pre tabindex="0"><code class="language-gfm" data-lang="gfm">|      |        |                |            |                         |       |
|:----:|:------:|:--------------:|:----------:|:-----------------------:|:-----:|
|      |  No.   |  Program Name  | X-Assign ↔ |       Y-Assign ↔        | Scale |
| LEAD | LD.001 | Wide Dist Lead |    Note    |         Cutoff          |   ○   |
|      | LD.002 |   Pulse Verb   |    Note    |         Cutoff          |   ○   |
|      | LD.003 |   Unison Saw   |    Note    |      Reverb Depth       |   ○   |
|      | LD.004 |  Reverse Sine  |    Note    | Attack Time, Decay Time |   ○   |
|      | LD.005 |   Bleep Lead   |    Note    |     OSC Sync Pitch      |   ○   |
|      | LD.006 |  Air Spectrum  |    Note    |       Decay Time        |   ○   |
|      | LD.007 |   Paz Square   |    Note    |      Pitch EG Time      |   ○   |
|      | LD.008 | Acid Rez Lead  |    Note    |         Cutoff          |   ○   |
|      | LD.009 |  Ring Flutter  |    Note    |     Ring Mod Pitch      |   ○   |
|      | LD.010 |   Synth Lead   |    Note    |         Cutoff          |   ○   |
</code></pre><p>As we can see, it&rsquo;s not perfect: pandoc thinks the table has no header, and
sticks the actual header under the separator. This is easily fixed though.</p>
<p>After this initial success, I decided to just stick the complete PDF into
PaddleOCR and see what I got. After a few seconds I got back a
<a href="/img/kaossilator_parsed.md">markdown file</a> that I could download. While the
file is far from perfect and has a large number of errors, it was a great
starting point.</p>
<p>First I went through the file and downloaded the standalone graphics (in the
file itself they are included as links to some sort of CDN). I was very happy
to see that PaddleOCR tries to determine if text &ldquo;belongs&rdquo; to a graphic and
then creates an image which contains both the graphic and text. This doesn&rsquo;t
always work perfectly but most of the time it correctly identifies whether text
should be extracted out or kept as part of the image:</p>





<figure class=""><img src="https://blog.sergeantbiggs.net/img/connections.jpg" alt="Image of graphic, with text included"
            decoding="async" /><figcaption><p>Text is baked into graphic instead of extracted</p></figcaption></figure>
<p>Since the manual contains graphics and figures (e.g. the above-mentioned
tables) a pure markdown representation is not ideal for browsing and viewing. I
also wanted something that would work <em>reasonably</em> well on mobile screens.
There are a lot of static site generators that would work here, but I decided
to use <a href="https://zensical.org/">Zensical</a>. One advantage is that it allows using
certain formatting conventions that are often found in manuals but are not part
of default markdown (like
<a href="https://zensical.org/docs/authoring/admonitions/">admonitions</a>). The original
manual uses these in several places (to give additional information or
warnings).</p>





<figure class=""><img src="https://blog.sergeantbiggs.net/img/admonitions_manual.png" alt="Several admonitions (3 warnings and a tip) being displayed under each other"
            decoding="async" /><figcaption><p>Admonitions in the manual</p></figcaption></figure>





<figure class=""><img src="https://blog.sergeantbiggs.net/img/admonitions_zensical.png" alt="Several admonitions (3 warnings and a tip) being displayed under each other"
            decoding="async" /><figcaption><p>Admonitions in Zensical</p></figcaption></figure>
<p>Converting the whole thing took a few hours, which was a lot faster than I
expected. Converting everything manually would&rsquo;ve taken much longer.
Since the manual doesn&rsquo;t contain any personal information, I&rsquo;ve decided to make
it available publicly at <a href="https://kaossilator.sergeantbiggs.net">https://kaossilator.sergeantbiggs.net</a>. It will stay
there for the foreseeable future (at least until Korg tells me to take it
down). I hope it&rsquo;s useful for someone. If you end up using it, feel free to
let me know!</p>
]]></content></item></channel></rss>