42 Astoundingly Useful Scripts and Automations for the Macintosh

O Little Town of Bethlehem

How still we see thee lie. Play this song on your Mac’s command line with the piano script.

Jerry Stratton, December 16, 2020

Hopes and Fears

O Little Town of Bethlehem is a simple melody, perfect for playing on the piano built-in to your Macintosh using the piano script from 42 Astounding Scripts. O Little Town of Bethlehem was written as a one-off for a Christmas Sunday-school service in 1868. As far as I can tell, Phillips Brooks and Lewis Redner never expected it to last beyond 1868. A bookstore owner had the foresight to print it for sale, and from there it ended up in a Sunday-school hymn book many years later.

It makes me wonder, how many similarly wonderful songs have been lost?

This is an absolutely beautiful song, performed by just about everyone. When I was a kid, we had the album Christmas With the Lennon Sisters, and their version of the song remains one of my favorites. I can’t hear it without immediately thinking of home, Christmas with snow (something we don’t often get where I live in Texas), and waking up to brightly-colored boxes and tubes under the tree, grandma sleeping over on the couch to greet us in the morning!

I used the song in one of my books for a coming home of sorts. In It Isn’t Murder if They’re Yankees, currently unpublished (for my latest book, see The Dream of Poor Bazin), Carolyn Purcell arrives back in her hometown on Christmas Eve, coming over the hill into the valley that shields tiny Walkerville from the wider world that Virginia is a part of, after a very personal journey that has left her lost. She knows she cannot truly return home, but here she is, coming down the hill into the town she’s lived in all her life. Picture it. She’s cold, and hungry, and very tired. It’s night. She hasn’t bathed in weeks. Large snowflakes begin to fall from some invisible cloud overhead. In the valley she sees the lights of Walkerville, like a nativity against the stars. Midnight mass is about to begin in one of the churches below.

She stops, raises her arms, and begins to sing:

    • O little town of Bethlehem,
    • How still we see thee lie,
    • above thy deep and dreamless sleep,
    • the silent stars go by.
    • Yet in thy dark streets shineth,
    • the everlasting light…
    • the hopes and fears of all the years
    • are met in thee tonight.

Unlike most of what I write, It Isn’t Murder is very visual; I had a movie running through my mind for most of the writing. Music was also a big part of it, from the music I know should play over the end of the movie to the historical music that permeates the old south. When I did my reading of the book, I included the melody for Carry Me Back to Old Virginia, the state song of Virginia; it was, as I recall, a painstaking process. I don’t remember what software I used to create it. If I’d had the piano script, it would have been easy. Not only easy, it’d still be readable, since it would have been a text file with the notes as notes. As it is, all I have is the kazoo-like MIDI file created by whatever application I used over a decade ago.

One of the great benefits of text-based applications is that their data is far more likely to remain usable over the decades.

If I’d had something as easy to use as the piano script, I might have done O Little Town of Bethlehem for the reading, too.

Because the song is so simple, I decided to try something a little different this time. Instead of separating out just the treble and bass clefs, I separated out the two lines in each clef. There are obviously two separate melodies in both the treble and bass clef; they were easily broken up, and this made it possible to assign four instruments to the music in Garageband.

The highest line uses Garageband’s acoustic guitar; the second line in the treble clef is classical acoustic guitar. The highest line in the bass clef is an upright studio bass, and the lowest line is a finger style bass, which, judging from the icon that goes along with it in Garageband, is an electric bass guitar.

The result is a simple melody with subtly complex undertones. Enjoy!

I made the video in POV-Ray and QuickTime Player. I’ll have more about that later, on Christmas Eve, because POV-Ray is a wonderful toy to play with.

Here are the four tracks, two from the treble clef and two from the bass clef. You can download them, along with the midi files and the POV-Ray scene file, as a zip file (Zip file, 10.6 KB).

Top treble line:

  • # O Little Town of Bethlehem
  • # Lyrics Phillips Brooks, Music Lewis H. Redner
  • # 1868
  • # astoundingscripts.com
  • # top treble line
  • --key G
  • moderato
  • B | B B A+ B | D C E A | G 8 F G 4 A -D | 2 B. 4 B
  • B B +E D | D C E A | G 8 F G 4 B A | 2 G. 4 B
  • B B A G | 2 F 4 F F | E F G A | 2 B. 4 B
  • B B A+ B | D C E +E | D G B. 8 A | 2 G. 4 R

Bottom treble line:

  • # O Little Town of Bethlehem
  • # Lyrics Phillips Brooks, Music Lewis H. Redner
  • # 1868
  • # astoundingscripts.com
  • # bottom treble line
  • --key G
  • moderato
  • - D | D D C+ D | + F= E -C E | - D D D D | 2 D. 4 D
  • D + G G+ G+ | A E -C E | -D -D F F | 2 G. 4 G
  • G G F E | 2 -D+ 4 -D+ -D+ | E F G E | 2 F. 4 G
  • - D D C+ D | + E E -C 8 E F | 4 G - C+ D. 8 C= | 2 B.

Top bass line:

  • # O Little Town of Bethlehem
  • # Lyrics Phillips Brooks, Music Lewis H. Redner
  • # 1868
  • # astoundingscripts.com
  • # top bass line
  • --key G
  • moderato
  • G | G G G G | G+ A A C | B 8 A B 4 C C | 2 B. 4 G
  • G B B +E | +E +E +E C | B 8 A+ B 4 D C | 2 B. 4 D
  • D B C C+ | 2 D+ 4 D+ B | E F G +E | 2 D+. 4 D=
  • D B G G | G+ A A C | B 8 A G 4 G. 8 F | 2 G.

Bottom bass line:

  • # O Little Town of Bethlehem
  • # Lyrics Phillips Brooks, Music Lewis H. Redner
  • # 1868
  • # astoundingscripts.com
  • # bottom bass line
  • --key G
  • moderato
  • G | G G G G | - C C C C | D D D D | 2 G. 4 + G
  • G F= E E | A A - A C | D. 8 D 4 D D | + 2 G. 4 G
  • G G A A+ | 2 B 4 B -B | E F G C | 2 B. 4 G
  • G G G G | - C C C C | D +E D. 8 D | 2 G.
  1. <- Fiery gospel
  2. Star-Spangled Banner ->