<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.2">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2026-02-07T19:31:00+01:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">ms75</title><subtitle>Personal website.</subtitle><author><name>Markus Schnell</name></author><entry><title type="html">Connecting the dots</title><link href="http://localhost:4000/2024/04/16/connecting-the-dots.html" rel="alternate" type="text/html" title="Connecting the dots" /><published>2024-04-16T00:00:00+02:00</published><updated>2024-04-16T00:00:00+02:00</updated><id>http://localhost:4000/2024/04/16/connecting-the-dots</id><content type="html" xml:base="http://localhost:4000/2024/04/16/connecting-the-dots.html"><![CDATA[<h1 id="connecting-the-dots">Connecting the dots</h1>

<p>We often talk about the need to <em>connect the dots</em>. But what is a <em>dot?</em> A ‘dot’ is a singular event, fact or data point. You need them before you can <em>connect the dots</em>.</p>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Connecting the dots]]></summary></entry><entry><title type="html">Ping</title><link href="http://localhost:4000/2023/10/22/ping.html" rel="alternate" type="text/html" title="Ping" /><published>2023-10-22T00:00:00+02:00</published><updated>2023-10-22T00:00:00+02:00</updated><id>http://localhost:4000/2023/10/22/ping</id><content type="html" xml:base="http://localhost:4000/2023/10/22/ping.html"><![CDATA[<h1 id="ping">Ping</h1>

<p>I haven’t written a post in some time and wanted to give a life sign - a <em>ping</em>. Puh. Wasn’t even that hard.</p>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Ping]]></summary></entry><entry><title type="html">Circles interactive compare</title><link href="http://localhost:4000/2023/10/05/circles-interactive-compare.html" rel="alternate" type="text/html" title="Circles interactive compare" /><published>2023-10-05T00:00:00+02:00</published><updated>2023-10-05T00:00:00+02:00</updated><id>http://localhost:4000/2023/10/05/circles-interactive-compare</id><content type="html" xml:base="http://localhost:4000/2023/10/05/circles-interactive-compare.html"><![CDATA[<h1 id="circles-interactive-compare">Circles interactive compare</h1>

<p>Here are all version so far next to each other.</p>

<svg>
<circle cx="50" cy="50" r="40" fill="#000000" />
<circle id="outerCircle1" cx="50" cy="50" r="20" fill="#ffffff" />
<circle id="innerCircle1" cx="50" cy="50" r="10" fill="#000000" />
<circle cx="150" cy="50" r="40" fill="#000000" />
<circle id="outerCircle2" cx="150" cy="50" r="20" fill="#ffffff" />
<circle id="innerCircle2" cx="150" cy="50" r="10" fill="#000000" />
<circle cx="250" cy="50" r="40" fill="#000000" />
<circle id="outerCircle3" cx="250" cy="50" r="20" fill="#ffffff" />
<circle id="innerCircle3" cx="250" cy="50" r="10" fill="#000000" />
</svg>
<p><br /></p>

<p><label for="param1">heavyness</label>
<input type="range" id="param1" min="0" max="100" value="50" />
<span id="param1text">50%</span>
<br /></p>

<p><label for="param2">skew</label>
<input type="range" id="param2" min="0" max="100" value="50" />
<span id="param2text">50%</span></p>

<script>
    const param1Slider= document.getElementById('param1');
    const param2Slider= document.getElementById('param2');
    const param1text  = document.getElementById('param1text');
    const param2text  = document.getElementById('param2text');

    const outerCircle = document.getElementById('outerCircle');
    const innerCircle = document.getElementById('innerCircle');
    const radius = 40;

    param1Slider.addEventListener('input', update);
    param2Slider.addEventListener('input', update);
    update();

    function i(x) { return (1.0 - x); } 
    
    function update() {
        const nparam1 = param1Slider.value;
        const nparam2 = param2Slider.value;
        param1text.textContent = nparam1 + '%';
        param2text.textContent = nparam2 + '%';

        p1 = nparam1 / 100.0;
        p2 = nparam2 / 100.0;

        
        innerRadius1 = radius * p1;
        outerRadius1 = radius * p2;

        innerRadius2 = radius * p1 * i(p2);
        outerRadius2 = radius * (p1 * i(p2) + i(p1));


        innerRadius3 = radius * Math.sqrt(p1 * i(p2));
        outerRadius3 = radius * Math.sqrt(1 - p1 * p2);
        
        innerCircle1.setAttribute('r', innerRadius1);
        outerCircle1.setAttribute('r', outerRadius1);

        innerCircle2.setAttribute('r', innerRadius2);
        outerCircle2.setAttribute('r', outerRadius2);

        innerCircle3.setAttribute('r', innerRadius3);
        outerCircle3.setAttribute('r', outerRadius3);

    }

</script>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Circles interactive compare]]></summary></entry><entry><title type="html">Circles interactive different</title><link href="http://localhost:4000/2023/10/03/circles-interactive-different.html" rel="alternate" type="text/html" title="Circles interactive different" /><published>2023-10-03T00:00:00+02:00</published><updated>2023-10-03T00:00:00+02:00</updated><id>http://localhost:4000/2023/10/03/circles-interactive-different</id><content type="html" xml:base="http://localhost:4000/2023/10/03/circles-interactive-different.html"><![CDATA[<h1 id="circles-interactive-different">Circles interactive different</h1>

<p>This version of the interactive circles uses the first parameter (heaviness) to scale linear with the area of the black part. The second parameter distributes the area between the outer ring and the inner circle.</p>

<svg>
<circle cx="50" cy="50" r="40" fill="#000000" />
<circle id="outerCircle" cx="50" cy="50" r="20" fill="#ffffff" />
<circle id="innerCircle" cx="50" cy="50" r="10" fill="#000000" />
</svg>
<p><br /></p>

<p><label for="param1">heavyness</label>
<input type="range" id="param1" min="0" max="100" value="50" />
<span id="param1text">50%</span>
<br /></p>

<p><label for="param2">skew</label>
<input type="range" id="param2" min="0" max="100" value="50" />
<span id="param2text">50%</span></p>

<script>
    const param1Slider= document.getElementById('param1');
    const param2Slider= document.getElementById('param2');
    const param1text  = document.getElementById('param1text');
    const param2text  = document.getElementById('param2text');

    const outerCircle = document.getElementById('outerCircle');
    const innerCircle = document.getElementById('innerCircle');
    const radius = 40;

    param1Slider.addEventListener('input', update);
    param2Slider.addEventListener('input', update);
    update();

    function i(x) { return (1.0 - x); } 
    
    function update() {
        const nparam1 = param1Slider.value;
        const nparam2 = param2Slider.value;
        param1text.textContent = nparam1 + '%';
        param2text.textContent = nparam2 + '%';

        p1 = nparam1 / 100.0;
        p2 = nparam2 / 100.0;

        innerRadius = radius * Math.sqrt(p1 * i(p2));
        outerRadius = radius * Math.sqrt(1 - p1 * p2);
        
        innerCircle.setAttribute('r', innerRadius);
        outerCircle.setAttribute('r', outerRadius);
    }

</script>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Circles interactive different]]></summary></entry><entry><title type="html">Circles interactive improved</title><link href="http://localhost:4000/2023/09/30/circles-interactive-improved.html" rel="alternate" type="text/html" title="Circles interactive improved" /><published>2023-09-30T00:00:00+02:00</published><updated>2023-09-30T00:00:00+02:00</updated><id>http://localhost:4000/2023/09/30/circles-interactive-improved</id><content type="html" xml:base="http://localhost:4000/2023/09/30/circles-interactive-improved.html"><![CDATA[<h1 id="circles-interactive-improved">Circles interactive improved</h1>

<p>Today I have a small update to the interactive circle.</p>

<svg>
<circle cx="50" cy="50" r="40" fill="#000000" />
<circle id="outerCircle" cx="50" cy="50" r="20" fill="#ffffff" />
<circle id="innerCircle" cx="50" cy="50" r="10" fill="#000000" />
</svg>
<p><br /></p>

<p><label for="param1">heavyness</label>
<input type="range" id="param1" min="0" max="100" value="50" />
<span id="param1text">50%</span>
<br /></p>

<p><label for="param2">skew</label>
<input type="range" id="param2" min="0" max="100" value="50" />
<span id="param2text">50%</span></p>

<script>
    const param1Slider= document.getElementById('param1');
    const param2Slider= document.getElementById('param2');
    const param1text  = document.getElementById('param1text');
    const param2text  = document.getElementById('param2text');

    const outerCircle = document.getElementById('outerCircle');
    const innerCircle = document.getElementById('innerCircle');
    const radius = 40;

    param1Slider.addEventListener('input', update);
    param2Slider.addEventListener('input', update);
    update();

    function i(x) { return (1.0 - x); } 
    
    function update() {
        const nparam1 = param1Slider.value;
        const nparam2 = param2Slider.value;
        param1text.textContent = nparam1 + '%';
        param2text.textContent = nparam2 + '%';

        p1 = nparam1 / 100.0;
        p2 = nparam2 / 100.0;

        innerRadius = radius * p1 * i(p2);
        outerRadius = radius * (p1 * i(p2) + i(p1));
        
        innerCircle.setAttribute('r', innerRadius);
        outerCircle.setAttribute('r', outerRadius);
    }

</script>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Circles interactive improved]]></summary></entry><entry><title type="html">Circles interactive</title><link href="http://localhost:4000/2023/09/29/circles-interactive.html" rel="alternate" type="text/html" title="Circles interactive" /><published>2023-09-29T00:00:00+02:00</published><updated>2023-09-29T00:00:00+02:00</updated><id>http://localhost:4000/2023/09/29/circles-interactive</id><content type="html" xml:base="http://localhost:4000/2023/09/29/circles-interactive.html"><![CDATA[<h1 id="circles-interactive">Circles interactive</h1>

<p>Inspired by the interactive diagrams that Amit Patel uses on his <a href="https://www.redblobgames.com">Red Blob Games</a>, as well as Bret Victor’s <a href="http://worrydream.com/#!/ExplorableExplanations">thoughts on <em>explorable explanations</em></a>, I decided to add some simple interactivity to the circles from my post earlier this week.</p>

<p>To help with the coding, I asked ChatGPT for help, which gave me a quick starting point.</p>

<p><input type="range" id="outerRadius" min="0" max="40" value="20" />
<input type="range" id="innerRadius" min="0" max="40" value="10" /></p>

<svg>
<circle cx="50" cy="50" r="40" fill="#000000" />
<circle id="outerCircle" cx="50" cy="50" r="20" fill="#ffffff" />
<circle id="innerCircle" cx="50" cy="50" r="10" fill="#000000" />
</svg>

<script>
    const outerSlider = document.getElementById('outerRadius');
    const innerSlider = document.getElementById('innerRadius');
    const outerCircle = document.getElementById('outerCircle');
    const innerCircle = document.getElementById('innerCircle');

    outerSlider.addEventListener('input', updateOuterCircle);
    innerSlider.addEventListener('input', updateInnerCircle);

    function updateOuterCircle() {
        const newRadius = outerSlider.value;
        outerCircle.setAttribute('r', newRadius);
    }

    function updateInnerCircle() {
        const newRadius = innerSlider.value;
        innerCircle.setAttribute('r', newRadius);
    }

</script>

<p>This is an extremely simple implementation, but you can already play around with the sliders to find a pleasing set for the values.</p>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Circles interactive]]></summary></entry><entry><title type="html">Circles</title><link href="http://localhost:4000/2023/09/26/circles.html" rel="alternate" type="text/html" title="Circles" /><published>2023-09-26T00:00:00+02:00</published><updated>2023-09-26T00:00:00+02:00</updated><id>http://localhost:4000/2023/09/26/circles</id><content type="html" xml:base="http://localhost:4000/2023/09/26/circles.html"><![CDATA[<h1 id="circles">Circles</h1>

<p>Visual exploration of a filled circle in a circle. The outer radius stays the same throughout.</p>

<p>We imagine a line from the center to the boundary of the enclosing circle. We mark two points on this line: The boundary between inner circle and the buffering space, and the boundary between buffering space and the outer circle. Let’s call them u and v.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>0% ####.......## 100%
   ----u
   -----------v
</code></pre></div></div>

<p>We see that $0 &lt;= u &lt;= v &lt;= 100%$.</p>

<svg width="500" height="500">
<circle cx="50" cy="50" r="40" fill="#000000" />
<circle cx="50" cy="50" r="4" fill="#ffffff" />
<circle cx="50" cy="50" r="0" fill="#000000" />

<circle cx="150" cy="50" r="40" fill="#000000" />
<circle cx="150" cy="50" r="4" fill="#ffffff" />
<circle cx="150" cy="50" r="1" fill="#000000" />

<circle cx="250" cy="50" r="40" fill="#000000" />
<circle cx="250" cy="50" r="4" fill="#ffffff" />
<circle cx="250" cy="50" r="2" fill="#000000" />

<circle cx="350" cy="50" r="40" fill="#000000" />
<circle cx="350" cy="50" r="4" fill="#ffffff" />
<circle cx="350" cy="50" r="2" fill="#000000" />

<circle cx="450" cy="50" r="40" fill="#000000" />
<circle cx="450" cy="50" r="4" fill="#ffffff" />
<circle cx="450" cy="50" r="3" fill="#000000" />

<circle cx="50" cy="150" r="40" fill="#000000" />
<circle cx="50" cy="150" r="12" fill="#ffffff" />
<circle cx="50" cy="150" r="1" fill="#000000" />

<circle cx="150" cy="150" r="40" fill="#000000" />
<circle cx="150" cy="150" r="12" fill="#ffffff" />
<circle cx="150" cy="150" r="3" fill="#000000" />

<circle cx="250" cy="150" r="40" fill="#000000" />
<circle cx="250" cy="150" r="12" fill="#ffffff" />
<circle cx="250" cy="150" r="6" fill="#000000" />

<circle cx="350" cy="150" r="40" fill="#000000" />
<circle cx="350" cy="150" r="12" fill="#ffffff" />
<circle cx="350" cy="150" r="8" fill="#000000" />

<circle cx="450" cy="150" r="40" fill="#000000" />
<circle cx="450" cy="150" r="12" fill="#ffffff" />
<circle cx="450" cy="150" r="10" fill="#000000" />

<circle cx="50" cy="250" r="40" fill="#000000" />
<circle cx="50" cy="250" r="20" fill="#ffffff" />
<circle cx="50" cy="250" r="2" fill="#000000" />

<circle cx="150" cy="250" r="40" fill="#000000" />
<circle cx="150" cy="250" r="20" fill="#ffffff" />
<circle cx="150" cy="250" r="6" fill="#000000" />

<circle cx="250" cy="250" r="40" fill="#000000" />
<circle cx="250" cy="250" r="20" fill="#ffffff" />
<circle cx="250" cy="250" r="10" fill="#000000" />

<circle cx="350" cy="250" r="40" fill="#000000" />
<circle cx="350" cy="250" r="20" fill="#ffffff" />
<circle cx="350" cy="250" r="14" fill="#000000" />

<circle cx="450" cy="250" r="40" fill="#000000" />
<circle cx="450" cy="250" r="20" fill="#ffffff" />
<circle cx="450" cy="250" r="18" fill="#000000" />

<circle cx="50" cy="350" r="40" fill="#000000" />
<circle cx="50" cy="350" r="28" fill="#ffffff" />
<circle cx="50" cy="350" r="2" fill="#000000" />

<circle cx="150" cy="350" r="40" fill="#000000" />
<circle cx="150" cy="350" r="28" fill="#ffffff" />
<circle cx="150" cy="350" r="8" fill="#000000" />

<circle cx="250" cy="350" r="40" fill="#000000" />
<circle cx="250" cy="350" r="28" fill="#ffffff" />
<circle cx="250" cy="350" r="14" fill="#000000" />

<circle cx="350" cy="350" r="40" fill="#000000" />
<circle cx="350" cy="350" r="28" fill="#ffffff" />
<circle cx="350" cy="350" r="19" fill="#000000" />

<circle cx="450" cy="350" r="40" fill="#000000" />
<circle cx="450" cy="350" r="28" fill="#ffffff" />
<circle cx="450" cy="350" r="25" fill="#000000" />

<circle cx="50" cy="450" r="40" fill="#000000" />
<circle cx="50" cy="450" r="36" fill="#ffffff" />
<circle cx="50" cy="450" r="3" fill="#000000" />

<circle cx="150" cy="450" r="40" fill="#000000" />
<circle cx="150" cy="450" r="36" fill="#ffffff" />
<circle cx="150" cy="450" r="10" fill="#000000" />

<circle cx="250" cy="450" r="40" fill="#000000" />
<circle cx="250" cy="450" r="36" fill="#ffffff" />
<circle cx="250" cy="450" r="18" fill="#000000" />

<circle cx="350" cy="450" r="40" fill="#000000" />
<circle cx="350" cy="450" r="36" fill="#ffffff" />
<circle cx="350" cy="450" r="25" fill="#000000" />

<circle cx="450" cy="450" r="40" fill="#000000" />
<circle cx="450" cy="450" r="36" fill="#ffffff" />
<circle cx="450" cy="450" r="32" fill="#000000" />


</svg>

<p>The SVG code for this exploration was generated by the following code:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># circles.py

def c(x, y, r, u, v):
	dark  = '#000000'
	light = '#ffffff'

	string = f'&lt;circle cx="{x}" cy="{y}" r="{int(r)}" fill = "{dark}" /&gt;\n'
	string = string + f'&lt;circle cx="{x}" cy="{y}" r="{int(v * r)}" fill = "{light}" /&gt;\n'
	string = string + f'&lt;circle cx="{x}" cy="{y}" r="{int(u * r)}" fill = "{dark}" /&gt;\n'
	return string

content = ""
y = 50
for v in [10, 30, 50, 70, 90]:
	x = 50
	for u in [10, 30, 50, 70, 90]:
		content = content + c(x, y, 40, (u / 100.0) * (v / 100.0), v / 100.0)
		content = content + "\n"
		x = x + 100
	y = y + 100

svg = f"""
&lt;svg width="500" height="500"&gt;
{content}
&lt;/svg&gt;
"""

print(svg)
</code></pre></div></div>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Circles]]></summary></entry><entry><title type="html">Ukulele chords table</title><link href="http://localhost:4000/2023/09/25/ukulele-chords-table-extended.html" rel="alternate" type="text/html" title="Ukulele chords table" /><published>2023-09-25T00:00:00+02:00</published><updated>2023-09-25T00:00:00+02:00</updated><id>http://localhost:4000/2023/09/25/ukulele-chords-table-extended</id><content type="html" xml:base="http://localhost:4000/2023/09/25/ukulele-chords-table-extended.html"><![CDATA[<h1 id="ukulele-chords-table">Ukulele chords table</h1>

<p>These are the basic shapes for chords on the Ukulele. The number code designates the fret on each string in the order G-C-e-a.</p>

<table>
  <thead>
    <tr>
      <th>Chord</th>
      <th>Fingering</th>
      <th>Tones</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>C</td>
      <td>0003</td>
      <td>5RMR</td>
    </tr>
    <tr>
      <td>Gm</td>
      <td>0231</td>
      <td>R5Rm</td>
    </tr>
    <tr>
      <td>G</td>
      <td>0232</td>
      <td>R5RM</td>
    </tr>
    <tr>
      <td>Em</td>
      <td>0432</td>
      <td>mRm5</td>
    </tr>
    <tr>
      <td>Am</td>
      <td>2000</td>
      <td>Rm5R</td>
    </tr>
    <tr>
      <td>F</td>
      <td>2010</td>
      <td>M5RM</td>
    </tr>
    <tr>
      <td>A</td>
      <td>2100</td>
      <td>RM5R</td>
    </tr>
    <tr>
      <td>Dm</td>
      <td>2210</td>
      <td>5Rm5</td>
    </tr>
    <tr>
      <td>D</td>
      <td>2220</td>
      <td>5RM5</td>
    </tr>
  </tbody>
</table>

<p>R - Root
M - major 3
m - minor 3
5 - Fifth</p>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Ukulele chords table]]></summary></entry><entry><title type="html">Ukulele chords table</title><link href="http://localhost:4000/2023/09/24/ukulele-chords-table.html" rel="alternate" type="text/html" title="Ukulele chords table" /><published>2023-09-24T00:00:00+02:00</published><updated>2023-09-24T00:00:00+02:00</updated><id>http://localhost:4000/2023/09/24/ukulele-chords-table</id><content type="html" xml:base="http://localhost:4000/2023/09/24/ukulele-chords-table.html"><![CDATA[<h1 id="ukulele-chords-table">Ukulele chords table</h1>

<p>These are the basic shapes for chords on the Ukulele. The number code designates the fret on each string in the order G-C-e-a.</p>

<table>
  <thead>
    <tr>
      <th>Chord</th>
      <th>Fingering</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>C</td>
      <td>0003</td>
    </tr>
    <tr>
      <td>Gm</td>
      <td>0231</td>
    </tr>
    <tr>
      <td>G</td>
      <td>0232</td>
    </tr>
    <tr>
      <td>Em</td>
      <td>0432</td>
    </tr>
    <tr>
      <td>C</td>
      <td>1103</td>
    </tr>
    <tr>
      <td>Am</td>
      <td>2000</td>
    </tr>
    <tr>
      <td>F</td>
      <td>2010</td>
    </tr>
    <tr>
      <td>A</td>
      <td>2100</td>
    </tr>
    <tr>
      <td>F</td>
      <td>2120</td>
    </tr>
    <tr>
      <td>Dm</td>
      <td>2210</td>
    </tr>
    <tr>
      <td>D</td>
      <td>2220</td>
    </tr>
  </tbody>
</table>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Ukulele chords table]]></summary></entry><entry><title type="html">Ukulele chord shapes</title><link href="http://localhost:4000/2023/09/23/ukulele-chord-shapes.html" rel="alternate" type="text/html" title="Ukulele chord shapes" /><published>2023-09-23T00:00:00+02:00</published><updated>2023-09-23T00:00:00+02:00</updated><id>http://localhost:4000/2023/09/23/ukulele-chord-shapes</id><content type="html" xml:base="http://localhost:4000/2023/09/23/ukulele-chord-shapes.html"><![CDATA[<h1 id="ukulele-chord-shapes">Ukulele chord shapes</h1>

<p>These are the basic shapes for chords on the Ukulele. The number code designates the fret on each string in the order G-C-e-a.</p>

<h2 id="the-c-chord">The C chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a -|---|---|-o-|---|
e o|---|---|---|---|
C o|---|---|---|---|
G o|---|---|---|---|
</code></pre></div></div>

<p>0003</p>

<h2 id="the-gm-chord">The Gm chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a -|-o-|---|---|---|
e -|---|---|-o-|---|
C -|---|-o-|---|---|
G o|---|---|---|---|
</code></pre></div></div>

<p>0231</p>

<h2 id="the-g-chord">The G chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a -|---|-o-|---|---|
e -|---|---|-o-|---|
C -|---|-o-|---|---|
G o|---|---|---|---|
</code></pre></div></div>

<p>0232</p>

<h2 id="the-em-chord">The Em chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a -|---|-o-|---|---|
e -|---|---|-o-|---|
C -|---|---|---|-o-|
G o|---|---|---|---|
</code></pre></div></div>

<p>0432</p>

<h2 id="the-cmdm-chord">The C#m/D#m chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a -|---|---|-o-|---|
e o|---|---|---|---|
C -|-o-|---|---|---|
G -|-o-|---|---|---|
</code></pre></div></div>

<p>1103</p>

<h2 id="the-am-chord">The Am chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a o|---|---|---|---|
e o|---|---|---|---|
C o|---|---|---|---|
G -|---|-o-|---|---|
</code></pre></div></div>

<p>2000</p>

<h2 id="the-f-chord">The F chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a o|---|---|---|---|
e -|-o-|---|---|---|
C o|---|---|---|---|
G -|---|-o-|---|---|
</code></pre></div></div>

<p>2010</p>

<h2 id="the-a-chord">The A chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a o|---|---|---|---|
e o|---|---|---|---|
C -|-o-|---|---|---|
G -|---|-o-|---|---|
</code></pre></div></div>

<p>2100</p>

<h2 id="the-fmgbm-chord">The F#m/Gbm chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a o|---|---|---|---|
e -|---|-o-|---|---|
C -|-o-|---|---|---|
G -|---|-o-|---|---|
</code></pre></div></div>

<p>2120</p>

<h2 id="the-dm-chord">The Dm chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a o|---|---|---|---|
e -|-o-|---|---|---|
C -|---|-o-|---|---|
G -|---|-o-|---|---|
</code></pre></div></div>

<p>2210</p>

<h2 id="the-d-chord">The D chord</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>a o|---|---|---|---|
e -|---|-o-|---|---|
C -|---|-o-|---|---|
G -|---|-o-|---|---|
</code></pre></div></div>

<p>2220</p>]]></content><author><name>Markus Schnell</name></author><summary type="html"><![CDATA[Ukulele chord shapes]]></summary></entry></feed>