<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>#music posts — Ben Crowder</title>
    <link>https://bencrowder.net/blog/tag/music/</link>
    <atom:link href="https://bencrowder.net/blog/tag/music/feed/" rel="self" />
    <description>Feed for blog posts tagged with #music.</description>
    <lastBuildDate>Sat, 04 Apr 2026 05:22:16 GMT</lastBuildDate>
    <language>en-US</language>
    <generator>https://bencrowder.net/</generator>

    <item>
      <title>Links #47</title>
      <link>https://bencrowder.net/blog/2021/links-47/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2021/links-47/</guid>
      <pubDate>Mon, 06 Sep 2021 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p><a href="https://moderncss.dev/practical-uses-of-css-math-functions-calc-clamp-min-max/">Stephanie Eckles on practical uses of CSS math functions</a>. Some great examples here.</p>
<p><a href="https://mattdesl.svbtle.com/pen-plotter-1">Matt DesLauriers on pen plotter art and algorithms</a>. I keep thinking about buying or building a plotter. Someday…</p>
<p><a href="https://codepen.io/plfstr/full/zYqQeRw">Paul Foster’s HTML tags memory test</a>. Got 70.</p>
<p><a href="https://svmusicology.com/mapa/?lang=en">Sakira Ventura’s world map of female composers</a>. Love this.</p>
<p><a href="https://thoughtbot.com/blog/an-introduction-to-macos-voice-control">Eric Bailey’s introduction to macOS Voice Control</a>. Both this and Head Pointer are really quite impressive.</p><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20Links #47">Reply via email</a></p>]]></description>
    </item>
    <item>
      <title>Links #35</title>
      <link>https://bencrowder.net/blog/2021/links-35/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2021/links-35/</guid>
      <pubDate>Thu, 07 Jan 2021 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<ul>
<li><a href="https://www.instagram.com/targz/">Targz’s plotting videos</a> — mesmerizing; at some point I want to build my own plotter though realistically I don’t know if I’ll ever get around to it</li>
<li><a href="https://www.youtube.com/watch?v=FO9mWvJAugQ">Jim Browning schooling scammers</a> — a delight</li>
<li><a href="https://www.pirateship.com/features">Pirate Ship</a> — cheap USPS postage you can print at home (and in spite of the name it does appear to be legal)</li>
<li><a href="https://www.youtube.com/watch?v=lCOB6iKpX04">The <i>Schindler’s List</i> theme played on theremin and piano</a> — how had I never heard of the theremin till now?</li>
<li><a href="https://twitter.com/blader/status/1330637658117181441">@jagarikin’s crazy reverse phi optical illusion</a> — also see <a href="https://twitter.com/blader/status/1330820024018223107">this one</a> and <a href="https://twitter.com/blader/status/1331282262084657153">this one</a></li>
</ul><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20Links #35">Reply via email</a></p>]]></description>
    </item>
    <item>
      <title>Links #17</title>
      <link>https://bencrowder.net/blog/2020/links-17/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2020/links-17/</guid>
      <pubDate>Fri, 18 Sep 2020 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<ul>
<li><a href="https://www.bryanbraun.com/2019/11/02/music-box-fun/">Bryan Braun on his Music Box Fun project</a> — quite enjoyed this (and it makes me want to make something similar, which is always a good sign)</li>
<li><a href="https://dougbelshaw.com/blog/2020/09/15/working-out-loud/">Doug Belshaw on working in public</a> — great thoughts</li>
<li><a href="https://mango.pdf.zone/finding-former-australian-prime-minister-tony-abbotts-passport-number-on-instagram">Alex Hope on finding Tony Abbott’s passport number on Instagram</a> — a long read but oh is it hilarious and delightful</li>
<li><a href="https://justinehsmith.substack.com/p/the-internet-is-not-what-you-think">Justin E. H. Smith on the philosophy of the Internet</a> — fascinating throughout</li>
<li><a href="https://www.bryanbraun.com/2020/08/31/how-searching-for-a-bundle-free-react-led-me-to-web-components/">Bryan Braun (again) on web components</a> — the past few years I’ve avoided frontend dev (I’m allergic to unnecessary stack complexity), but this post gives me hope</li>
</ul><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20Links #17">Reply via email</a></p>]]></description>
    </item>
    <item>
      <title>A year and a half ago I started working on a REPL-based music composition environment called Trill....</title>
      <link>https://bencrowder.net/blog/2020/900/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2020/900/</guid>
      <pubDate>Fri, 21 Aug 2020 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>A year and a half ago I started working on a REPL-based music composition environment called Trill. After a short amount of time I stashed the project for the time being, but since I can see myself working on it again someday, I figured it’s due a write-up.</p>
<p>The core idea here is a text-based REPL for composing music (and by music I mean more things like hymns and movie scores and folk songs, not as much pop or rock or electronic), with a focus on making the composition experience more aural and less visual.</p>
<p>An example session will hopefully help anchor the ideas:</p>
<pre>
> score mysong
> staff piano             # add a piano staff
> keysig c
> timesig 4/4
> keytime c 4/4           # alternate
> play v. v. v. iii....   # plays the note sequence (. = quarter note, .. = half note, .... = whole note)
> play v. v. v. iii-....  # - = flat (and v, iii are based on the key signature)
> play v/ v// v///        # eighth, sixteenth, thirty-second notes
> add .                   # adds what was last played to the active staff
> play V IV^ IV_          # play a V chord and then a IV chord one octave up and again one octave down
> pm vi.                  # plays the last measure plus whatever notes are specified
> add vi.
> staff violin            # adds a violin staff
> play @arpeggiate piano  # plays two measures of violin arpeggiation based on the piano staff (where @arpeggiate is a generative method)
> save
</pre>
<p>And some miscellaneous, unordered notes:</p>
<ul>
<li>Rather than seeing the notes listed out (either in standard music notation or in text format), you basically only <em>hear</em> them (via <code>play</code>). This is the aural-over-visual part.</li>
<li>Duration is represented by the number of periods (cf. the <code>play</code> examples), as an experiment with making the length feel more visceral — a longer string of periods makes for a longer sound.</li>
<li>I’m also experimenting with using the relative scale notes (the Roman numeral notation) rather than absolute note names (C, D, E, etc.), to make transposing easier.</li>
<li>Not sure yet how dotted notes fit in here.</li>
<li>I threw in the idea of having some kind of generative functionality (<code>@arpeggiate</code>), but that’s pretty raw and not thought through at all yet.</li>
<li>The session transcript would also possibly function as the source for a song, and reloading it later would just skip the actual playing and instead just build the staff. Kind of nice to have the full history recorded, I think.</li>
<li>Influences that I’m aware of: <a href="https://en.wikipedia.org/wiki/ABC_notation">ABC notation</a>, <a href="https://lilypond.org">Lilypond</a>, and <a href="https://alda.io/">Alda</a>.</li>
</ul>
<p>To be clear, I have no idea if any of these ideas are actually good. They’re just half-baked thoughts at this point. I did implement a very small proof-of-concept using FluidSynth and Prompt Toolkit, with the <code>play</code> functionality working, but that’s where I left off. (Writing about it now, though, has me excited again. Maybe this will be my homework-avoidance project for the semester.)</p>
<p>The main things I need to sort out when next I work on Trill are how to navigate a score and how to manipulate notes using textual commands and this aural-first system. Basically, some way to say “go to this part and play this much” and “bump this note up this much” or “make this note a chord.” Seems doable; I just haven’t gotten that far yet.</p><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20A year and a half ago I started working on a REPL-based music composition environment called Trill&amp;#8230;.">Reply via email</a></p>]]></description>
    </item>
    <item>
      <title>abcjs is a JS library for turning abc music notation into SVG. Nice for embedding music on a web pag...</title>
      <link>https://bencrowder.net/blog/2018/597/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2018/597/</guid>
      <pubDate>Tue, 31 Jul 2018 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p><a href="https://abcjs.net/">abcjs</a> is a JS library for turning <a href="https://en.wikipedia.org/wiki/ABC_notation">abc music notation</a> into SVG. Nice for embedding music on a web page.</p><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20abcjs is a JS library for turning abc music notation into SVG. Nice for embedding music on a web pag...">Reply via email</a></p>]]></description>
    </item>
    <item>
      <title>One Quiet Night</title>
      <link>https://bencrowder.net/blog/2015/one-quiet-night/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2015/one-quiet-night/</guid>
      <pubDate>Thu, 01 Jan 2015 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>After a ten-year break, I’ve started writing music again. The new piece is called <a href="https://bencrowder.net/music/one-quiet-night/">“One Quiet Night”</a> and is a song about Christ that I wrote for a family Christmas party (I played piano, my wife played viola, and two of my wife’s siblings sang). At some point I’m hoping to record it, but until then, the sheet music will have to do. (It’s available in PDF, and the MusicXML is also available.)</p><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20One Quiet Night">Reply via email</a></p>]]></description>
    </item>
    <item>
      <title>Chiptune hymns</title>
      <link>https://bencrowder.net/blog/2013/chiptune-hymns/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2013/chiptune-hymns/</guid>
      <pubDate>Fri, 26 Jul 2013 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>Here’s an 8-bit chiptune rendition of the LDS hymn “The Spirit of God,” transcribed straight across from the hymnbook:</p>
<audio controls="true">
<source src="https://cdn.bencrowder.net/downloads/music/chiptunes/SpiritOfGod.mp3" type="audio/mp3" />
</audio>
<p>Back story: A few years ago I heard about <a href="http://en.wikipedia.org/wiki/Music_Macro_Language">MML</a>, a way to write Nintendo chiptunes. Shaun Inman had put together an <a href="http://shauninman.com/archive/2010/02/13/an_mml_bundle_for_textmate">MML bundle for TextMate</a>, which came with <code>ppmck</code>, a command-line tool for converting MML to an NSF (Nintendo Sound File).</p>
<p>I was curious what hymns would sound like as chiptunes, so I transcribed the hymn to MML, converted it to NSF, used <a href="http://www.bannister.org/software/ao.htm">Audio Overload</a> to export it to WAV, then used <a href="http://audacity.sourceforge.net/">Audacity</a> to convert the WAV to MP3.</p>
<p>Because someone will probably bring it up: no, I don’t think it’s sacrilegious to do this. The 8-bit sound is morally neutral. I wouldn’t play this in a sacrament meeting — it wouldn’t be appropriate — but outside of church I see no problem with it.</p>
<p>Links:</p>
<ul>
<li><a href="https://cdn.bencrowder.net/downloads/music/chiptunes/SpiritOfGod.nsf">SpiritOfGod.nsf</a></li>
<li><a href="https://cdn.bencrowder.net/downloads/music/chiptunes/SpiritOfGod.mp3">SpiritOfGod.mp3</a></li>
<li><a href="http://shauninman.com/archive/2012/03/21/polished_mml_bundle">Polished MML Bundle</a> (Shaun’s updated bundle)</li>
<li><a href="http://shauninman.com/assets/downloads/ppmck_guide.html">Ultimate PPMCK MML Reference</a></li>
<li><a href="http://www.nullsleep.com/treasure/mck_guide/">MCK/MML Beginner’s Guide</a></li>
</ul>
<p>The MML code (and yes, you have to spell “PROGRAMER” that way):</p>
<pre><code>#TITLE The Spirit of God
#COMPOSER W. W. Phelps
#PROGRAMER Ben Crowder

@v0 = { 10 9 8 7 6 5 4 3 2 }

ABCDE t150

A l8 o4 @01 @v0
A f4 b-2 &amp;gt; c4 c4 d2 c4 &amp;lt; b-4 b-2 a4 g4 f4. g8 f4
A e-4 d4 f4 b-4 &amp;gt; d4 c4 &amp;lt; f4 g4 &amp;gt; e-4 d4 c4 &amp;lt; b-4 a4 b-2.
A f4 b-2 &amp;gt; c4 c4 d2 c4 &amp;lt; b-4 b-2 a4 g4 f4. g8 f4
A e-4 d4 f4 b-4 &amp;gt; d4 c4 &amp;lt; f4 g4 &amp;gt; e-4 d4 c4 &amp;lt; b-4 a4 b-2.
A f4 f2 d4 f4 f2 d4 f4 b-4 &amp;gt; d4 c4 &amp;lt; b-4 a4 g4 f8 g8
A a8 f8 b-2 &amp;gt; c4 d4 &amp;lt; g2 a4 b-4 &amp;gt; e-2 d4. c8 c2.
A c4 d4 &amp;lt; b-4 &amp;gt; c4 d4 &amp;lt; g2 &amp;gt; e-4 d4 c4. d8 c4 &amp;lt; b-4 a4 g4 f8 g8
A a8 f8 b-4. &amp;gt; c8 d8 c8 &amp;lt; b-8 a8 g4 &amp;gt; e-4 d4 c4 &amp;lt; b-2 a4 a4 b-2.

B l8 o4 @01 @v0
B d4 d2 f4 f4 f2 e-4 d4 g2 f4 e-4 d4. e-8 d4
B c4 &amp;lt; b-4 &amp;gt; d4 d4 f4 f2 e-4 e-4 f4 g4 f4 f4 f2.
B d4 d2 f4 f4 f2 e-4 d4 g2 f4 e-4 d4. e-8 d4
B c4 &amp;lt; b-4 &amp;gt; d4 d4 f4 f2 e-4 e-4 f4 g4 f4 f4 f2.
B d4 d2 &amp;lt; b-4 &amp;gt; d4 d2 &amp;lt; b-4 &amp;gt; d4 d4 f4 f4 e4 f2 f8 g8
B e-4 d4 f4 f4 f4 e-2 f4 f4 f2 f4. f8 f2.
B f4 f2 f4 f4 e-2 f4 f4 f2 f4 e4 f2 f8 g8
B f4 f2 f4 d4 e-2 f4 e-4 d2 c4 e-4 d2.

C l8 o2 @01 @v0
C b-4 b-2 &amp;gt; f4 f4 b-2 f4 g4 e-2. e-4 &amp;lt; b-2 b-4
C a4 b-2 b-4 b-4 &amp;gt; f4 d4 e-4 c4 d4 e-4 f4 f4 &amp;lt; b-2.
C b-4 b-2 &amp;gt; f4 f4 b-2 f4 g4 e-2. e-4 &amp;lt; b-2 b-4
C a4 b-2 b-4 b-4 &amp;gt; f4 d4 e-4 c4 d4 e-4 f4 f4 &amp;lt; b-2.
C b-4 b-2 b-4 b-4 b-2 b-4 b-4 b-2 &amp;gt; c4 c4 f4 e-4 d4
C c4 &amp;lt; b-4 &amp;gt; d4 c4 &amp;lt; b-4 &amp;gt; e-2 c4 &amp;lt; b-4 a2 b-4. &amp;gt; f8 f2.
C f4 b-4 d4 f4 b-4 e-2 c4 &amp;lt; b-4 &amp;gt; f2 f4 c4 f4 e-4 d4
C c4 &amp;lt; b-2 b-4 b-4 &amp;gt; e-4 c4 d4 e-4 f2 &amp;lt; f4 f4 b-2.
</code></pre><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20Chiptune hymns">Reply via email</a></p>]]></description>
    </item>
    <item>
      <title>Responsive sheet music</title>
      <link>https://bencrowder.net/blog/2012/responsive-sheet-music/</link>
      <guid isPermaLink="true">https://bencrowder.net/blog/2012/responsive-sheet-music/</guid>
      <pubDate>Fri, 21 Dec 2012 12:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Ben Crowder]]></dc:creator>
      <description><![CDATA[<p>First, a couple premises:</p>
<ul>
<li>The web is now the best document delivery platform, and that will become even more true as time goes on.</li>
<li>Documents need to be flexible so you can view them on any size device — desktop, tablet, mobile, anything.</li>
</ul>
<p>As I’ve been doing more responsive web design, I’ve been thinking that this principle of reflowable content could apply to sheet music. For example, here’s a normal page of sheet music (from the <a href="http://www.mutopiaproject.org/cgibin/piece-info.cgi?id=108">Mutopia project</a>):</p>
<figure class="border"><a href="https://cdn.bencrowder.net/images/2012/12/RSM-01.png" rel="shadowbox"><img src="https://cdn.bencrowder.net/images/2012/12/RSM-01-630.png" alt="" /></a></figure>
<p>If you were to view this music on a smartphone, you’d either have to zoom all the way out (making it super small), or zoom in on just one section of the page and pan around, which can be a lot of two-dimensional panning — not too great if you’re trying to actually play the music.</p>
<figure><a href="https://cdn.bencrowder.net/images/2012/12/RSM-02.png" rel="shadowbox"><img src="https://cdn.bencrowder.net/images/2012/12/RSM-02-630.png" alt="" /></a></figure>
<p>Neither is ideal. So I’m thinking maybe sheet music should automatically reflow to fit your viewport — the way both text and responsive websites do:</p>
<figure><a href="https://cdn.bencrowder.net/images/2012/12/RSM-03.png" rel="shadowbox"><img src="https://cdn.bencrowder.net/images/2012/12/RSM-03-630.png" alt="" /></a></figure>
<p>(This is just a quick copy-and-paste mockup — in reality you’d keep the clefs on each line and probably make things a little smaller and so on — but you get the idea.)</p>
<p>So as the viewport shrinks, you would drop the space between notes until you hit an unacceptable squishiness, then drop the number of measures per line by one and set the space between notes to be wider to fill the space again. Rinse and repeat. By the time you’re down to smartphone size, you’d probably be at two measures per line as in the above mockup.</p>
<h3>Implementation</h3>
<p>In a perfect world, there’d be a set of tags in HTML for typesetting music, and the browser would do the rendering, and CSS media queries would take care of the rest. That will almost certainly never happen, though, since it’s too domain-specific. I think the best we can hope for is a JavaScript rendering engine that uses SVG — something like <a href="http://vexflow.com">Vexflow</a>.</p>
<p>One other thought: jumps (repeats, codas) should be hyperlinks, so the player doesn’t have to think about where to go. (And when it jumps to the location, it could flash a highlight or marker or something on the measure you should start at.) Or, even better, since we aren’t really worried about taking up space, just flatten repeats and codas altogether — take the repeated section and write it out. Space isn’t as much of an issue on the web. The disadvantage is that it’s not as easy to know that the repeated section is in fact identical.</p>
<h3>Disadvantages</h3>
<p>If you’re only seeing one or two measures per line on, say, a smartphone, and if you’re playing something with more than one staff (piano music, for example), then you’re going to be doing a lot of scrolling. So you probably wouldn’t want to go down quite this much.</p>
<p>There’s also a slight loss of familiarity. When you play a page of music over and over again, you get familiarity grooves etched into your mind; with responsive sheet music, you wouldn’t really get that as much. (If you used the same device every time in the same orientation, then it’d be a little more stable, but you’d be scrolling instead of flipping pages, which anchors things less.)</p>
<h3>Ticker-style sheet music</h3>
<p>Another idea that came to mind when I was mulling this over was reducing the music to one line and automatically scrolling it like a ticker. (This probably already exists. Responsive sheet music may exist as well, but I couldn’t find it — if someone has already implemented it, let me know. I want to use it.)</p>
<figure><a href="https://cdn.bencrowder.net/images/2012/12/RSM-04.png" rel="shadowbox"><img src="https://cdn.bencrowder.net/images/2012/12/RSM-04-630.png" alt="" /></a></figure>
<p>Advantages:</p>
<ul>
<li>Focus. Since the music is one-dimensional, the player doesn’t have to think about other dimensions (down and up, where the end of the page is, etc.).</li>
<li>Linearity. With this style it really would be better to flatten out repeats and codas, so it’s just one long line of sheet music. Then you don’t have to spend any mental cycles thinking about jumping around.</li>
</ul>
<p>The disadvantages are pretty much the same as with responsive:</p>
<ul>
<li>You lose some familiarity — with a full page of music, you get used to its layout and it reminds you of things, whereas a scrolling ticker would always feel somewhat new.</li>
<li>Flattening repeats makes you lose the knowledge that the repeated section you’re starting to play is the exact same as the previous section.</li>
</ul><hr class="feed-extra" style="margin-top: 48pt;" /><p class="feed-extra feed-mail"><a href="mailto:ben.crowder@gmail.com?subject=Re%3A%20Responsive sheet music">Reply via email</a></p>]]></description>
    </item>
    
  </channel>
</rss>
