Time to get ready for Christmas! There are a lot of amazing Christmas songs in the public domain. Among my favorite—and many others’ as well, especially gospel singers—is Hark! The Herald Angels Sing. It’s an uplifting song as befits a song about angels heralding the birth of the Son of God.
I pulled this from song 213 in Hymns of Praise, Number Two, which I pulled from my mother’s yard sale pile several years ago. I modified two notes: on the line “with angelic hosts proclaim”, in the treble clef, I turned the first two quarter notes into a quarter and a half plus an eighth. It’s more in line with what I remember, for one, and computerized music is too even when it comes to repeated notes of the same value and duration.
I typed this into two files. One for the treble clef, and one for the bass clef. That way, it’s even easier to create separate MIDI files for use with GarageBand.
Save these files as “Herald treble.txt” and “Herald bass.txt”.
The treble clef:
# Hark! the Herald Angels Sing # Charles Wesley/Mendelssohn #treble clef --key G 4 "-D -D" "-D G" | "-D. G." 8 "-D F" 4 "-D G" "G B" | "G B" "F A" "G D" "F D" | [D. 8 C] E A "G B" "F A" | 2 "G B" 4 "-D -D" "-D G" | "-D. G." 8 "-D F" 4 "-B G" "G B" | [2 G] B A "F D" "E A" | "F. A." 8 "-D F" 4 "-d F" "-C+ E" | 2 "-D -D" 4 "-D D" "-D D" | "-D D" "G G" "A C" "G B" | "G B" "F A" "-D D" "-D D" | "-D D" "G G" "A C" "G B" | "G B" "F A" 4 "C. +E." 8 "C +E" | 4 "C +E" "B D" "A C" "G+ B" | 2 "A C" 4 "F A" [8 B C] F | "G. D." 8 "-D G" 4 "-D G" "F A" | 2 "G B" 4 [+ E. 8 E] C C | "C +E" "B D" "A C" "G+ B" | 2 "A C" 4 "-D A" [8 B C] F | "G. D." 8 "-D G" 4 "-D G" "F A" | 2 "-D G" R
And the bass:
# Hark! the Herald Angels Sing # Charles Wesley/Mendelssohn #bass clef --key G 4 - "G B" "G B" | [B. 8 A] G -D "-B G" "-G D" | 2 "-D D" 4 "-B D" "-B D" | "-C +E" "-C +E" "-D D" "-D D" | 2 "-G D" 4 "G B" "G B" | [B. 8 A] G D "E G" "-D D" | 2 "-C+ +E" 4 "-B B" "-C+ A" | [A. 8 A] D -F "-G B" "-A G" | 2 "D F" 4 "D D" "D D" | "D D" "B D" "F D" "G D" | 2 "-D D" 4 "D D" "D D" | "D D" "B D" "F D" "G D" | 2 "-D D" 4 "-C +C" "-C +C" | "-C +C" "-C +C" "-C +C" "E +C" | 2 "A +C" 4 "C D" "C D" | [D. 8 B] B G "-D B" "-D C" | 2 "-G B" 4 [2 -C] "C +E" "C +E" | [2 -C] "C +E" "B D" "-C A C" "E G+ B" | [2 C] A G "F D" "C D" | [D. 8 B] B G "-D B" "-D C" | 2 "G B" R
Turn them into midi files using the piano script from the book:
- ~/bin/piano Herald\ treble.txt --save treble
- ~/bin/piano Herald\ bass.txt --save bass
And you’ve got two files, treble.midi and bass.midi.
In GarageBand, I considered some of the orchestral organs first, but eventually went for simpler instruments and chose the Classical Acoustic Guitar for the treble clef, and the Steinway Grand Piano for the bass clef. I exported to iTunes and then made a simple slideshow in Photos using some Christmas photos I have. Don’t worry, there’s only one verse, so it’s short.
I did run into one problem in my piano script. Combining these two files to play them on the command line should have been easy. I designed the program to use a file just as if it were typed on the command line. So, surrounding one file with brackets should have played it at exactly the same time as the file after the brackets:
- ~/bin/piano [ Herald\ bass.txt ] Herald\ treble.txt
Imagine my surprise when it played the treble clef, and then followed up with the bass clef. In other words, while working on the song I discovered a bug in the code. I’ve fixed it for the next release of the book. If you want to fix it before then, it’s in the line:
- arguments += splitTextToNotes(text:fileText)
That line should be replaced with:
- arguments = splitTextToNotes(text:fileText) + arguments
The former puts any included file at the end of the list of arguments; the latter inserts the included file at the point where it appears on the command line.
- Hark, the Herald Angels Sing Christmas slide show: Jerry Stratton at Mimsy@YouTube
- Hark, The Herald Angels Sing; the music was created using the piano script in 42 Astoundingly Useful Scripts and Automations for the Macintosh, then imported into GarageBand. The slide show from Photos on macOS.
- Hymns of Praise Number Two at Hymnary.org
- This is a very nice general purpose collection of hymns, and includes great Christmas songs.
More Christmas music
- Light a candle for Christmas hymns
- While the holidays brought more examples of bowdlerized lyrics they also brought, at least to our church, a lit candle for the darkness, in the form of a new hymnal that retains sound Catholic theology.
- The Soul Felt It’s Worth
- “A thrill of hope, the weary world rejoices…” What is a soul worth? For God, a soul is worth his son.
- Have yourself a musical command line…
- …Make your scripting gay. From now on your errors will be miles away!
- 8 (bit) Days of Christmas: Day 1 (Do You Hear What I Hear?)
- For day 1 of the 8 (bit) days of Christmas, John Mosley’s “Do You Hear What I Hear?” from the December, 1987, Rainbow Magazine. Mosley coaxes four-voice music out of the CoCo 1 and 2 using a machine-language program.
- O Little Town of Bethlehem
- How still we see thee lie. Play this song on your Mac’s command line with the piano script.
- Two more pages with the topic Christmas music, and other related pages
More Garageband
- How Great Thou Art
- Then sings my soul…
- Tidings of Comfort and Joy
- One of my favorite Christmas songs. Save us all from Satan’s power, and tidings of comfort and joy.
More MIDI
- The Star-Spangled Banner in MIDI
- What could be more appropriate for the fireworks of the Fourth of July than a song about bombs bursting in air, illuminating a great flag rippling defiantly to a hostile world?
- O Little Town of Bethlehem
- How still we see thee lie. Play this song on your Mac’s command line with the piano script.
- I have read a fiery gospel
- “Be swift my soul to answer him, be jubilant my feet.” Written a hundred and fifty-nine years ago today, this rousing abolitionist song remains a fiery call for freedom from tyranny.
- How Great Thou Art
- Then sings my soul…
- Tidings of Comfort and Joy
- One of my favorite Christmas songs. Save us all from Satan’s power, and tidings of comfort and joy.
- One more page with the topic MIDI, and other related pages