Extending WordPress to Display Music Chords & Lyrics

It plan on extending WordPress to support creating music lead sheets using a ChordPro type syntax. This syntax uses square brackets to enclose tags describing music attributes of a song (eg. [Title], [Composer], [Tempo]) in addition to chord names (eg. [Amaj7]).

It appears that a plug-in can be created which will allow extending WordPress without hacking the source code. Requirements and questions to resolve:

  1. Songs must be easily linkable from multiple locations since songs are used repeatedly and I don’t want to have to cut/paste the song source every time it is used.
  2. Provide all the capability of the current custom PHP songs pages on TheRockBand.org:
    a. Allow display of songs for a given date showing sequence, etc.
    b. Associate with an MP3 file.
    c. Provide alternate displays, for example “List all songs alphabetically”

In addition to providing the existing functionality, it will be good to allow comments/discussions regarding each song, with searchability for previous comments made about a given song.

Plug-In creation steps:

  1. Create name to use for main .php file and folder for additional files
    How about “LeadSheet” or “ChordSheet”?
    This file and folder will need to be copied to wp-content/plugins/ during installation.
  2. Create a readme.txt if I want to publish to wordpress.org/extend/plugins.
  3. Create a homepage for distributing the plugin. Maybe on Lisles.net/LeadSheetPlugin?
  4. Modify main .php file to add plugin API hooks as needed.
  5. Adhere to the WordPress coding standards.
  6. Support Inline Documentation.
  7. Ensure unique names for all functions, etc. Alternatively, encapsulate them in a class.
  8. Do not hardcode “wp_” prefix. Use $spdb->prefix variable instead.
  9. Minimize DB writes.
  10. SELECT only what is needed.
  11. Use add_action in the global execution space to hook actions to new functions.
  12. Use add_filter in the global execution space to hook filters to new functions.
    Data is passed to the new function, and modified data or NULL returned.

It may be better to use a “Page” for each song. Need to investigate how to create and link to pages, etc. The down side may be that Pages don’t use the database, and I like the idea of keeping songs in the database instead of as separate files.

Another possibility is to use a Template Tag.

A plugin Filter might be used to format the ChordPro data prior to display.

A plugin Action might be used to syntax validate a new song upon entry.
This might include allowing cut/paste of existing chord sheets that put chords on a separate line above the lyric lines, and then converting them to ChordPro format.

Provide an Admin display to provide buttons for various chord types and song fields.

Music & Lyrics WordPress Theme

Following some additional study of WordPress, it appears that what I am trying to accomplish can be done by creating a Theme.

WordPress Themes

A Theme is simply a collection of custom Template files.

WordPress Templates

A Template file is simply a modified version of the wp-content/index.php file. Templates can be created to modify the way that specific categories are displayed.

So songs can be displayed in chord/lyric format by assigning them a specific category such as “Song”, and then creating a template for that category to format the chord/lyric display (category-X.php).

Similarly, I should be able to create a category and template for the weekly song lineup.

Thoughts on using WordPress for posting lyrics/chords

After further research and thinking, it appears that song sheets could be posted using a “Songs” category.

Posting Songs

A full song listing could then be displayed by selecting the “Songs” category. A custom template could be created to display them by title, artist, etc. and to also format them more compactly. MP3 files could be attached, and a plugin used to allow direct playback (like the 1-bit plugin).

The LeadSheet plugin will be needed to format lyrics/chords into a table to align and format them in ChordPro-like format.

Posting Lineups

Lineups can be handled in either of a couple ways:

  1. Create posts with the Lineup date in the title and category of “Lineups”. Like songs, these could be displayed using a custom template. A shortcode could be used to provide links to each associated song post. The benefit of this approach is that each lineup post could have discussions using comments.
  2. A custom page could be created to interface with a MySQL table to provide dynamic lineup data. I don’t think this approach would allow comments unless custom coded into the page template.

Action Items

I think I’ll pursue option 1. Items needed to implement this are:

  • Template for “Lineup” list and single category display.
    List could expand the upcoming date automatically, and optionally be used as the front page.
  • Plug-In to expand and format ChordPro.
  • ShortCode for use on Lineup posts to locate songs by name and display links to song posts.
    ShortCode could give song name, and an intelligent search used to locate song posts and MP3 media and provide one or more links to them. For example the shortcode [song name=”Here to Worship”] would result in <a href=”index.php?p=###>Lyrics</a> …
  • Page and template to display song usage:
    This would query to identify which songs have been played and how many times for any specified year. The CCLI # should be associated and displayed with each song also.

Fish on the Ground

This is a rough, piano-only version. We’ll probably record it during church in July, 2008.
fish-on-the-ground-very-ro

Pastor Stella approached me about an idea for a song. She had heard a story by a Rabbi about a couple guys that followed Moses out of Egypt. They were so self-centered that they didn’t even see Moses perform any of the miracles. They were busy looking down, and only saw a bunch of fish laying on the ground. I was immediately taken with the idea, and wrote this within the next day.

This song is being written for the summer “water” theme,
and is currently scheduled for July 6th & 13th.

Partridge family feel with a boogey-woogey chorus. Mixolydian mode.

Fish on the Ground

Written by Ron Lisle

Copyright(c) 2008 by Ron Lisle

Intro

G C Gmaj7 C repeat as long as desired.

Verse 1

 
G 
A rabbi  
C 
told a  
G7 
story 
 
 
C 
about 
 
 
G 
two guys  
C 
long 
 
 
G7 
ago. 
 
 
C 
G 
They followed  
C 
Moses from  
G7 
Egypt, 
 
 
C 
fleeing 
 
 
G 
from old  
C 
Pha
G7 
roah. 
 
 
C 
G 
He chased them  
C 
to the  
G7 
Red Sea.  
C 
Things looked  
G 
bad, and  
C 
that’s no  
G7 
laugh. 
 
 
C 
G 
But God had  
C 
other 
 
 
G7 
plans. He  
C 
said “Now,  
G 
Moses 
 
 
C 
hold up your  
G7 
staff.” 
 
 
C 

Chorus

(boogey-woogey style)

C7 
They didn’t notice the miracles, ’cause they were  
G7 
too busy looking down.
C7 
They didn’t see Moses parting the sea, and walls of
G 
water, 
 
 
C/A 
rising, on  
G/B 
both sides, all  
C 
around.
C/A 
All they  
G/B 
saw was  
C 
mud and  
G/D 
fish on the  
C 
ground.

Verse 2

We all know the story, how Moses parted the sea.

They walked across to freedom leaving behind the enemy.
Pharoah’s army tried to follow, only to drown in misery.
When the road that they’d been on, turned back into sea.

Chorus

Bridge

Spoken. Loop on intro softly.

Ham it up! Maybe put on fake beards, Yamikas, those orthodix Jewish curly things, etc. Try to speak in a Yiddish accent, etc. Have fun with this, and feel free to ad lib.
Abe: “Hey Zeke”.
Zeke: “Yea, Abe.”
Abe: “Have you noticed how muddy everything is around here?”
Zeke: “You bet I did. I lost a sandal about a mile back in the muck.”
Abe: “And have you seen all the fish lying around?”
Zeke: “Yes, and they’re really grossing me out. The sun is starting to make them really stink.”
Abe: “Oh, you’ve noticed that too. (Turn away, whisper to congregation: I thought it was him)”
Zeke: “Abe, what do you suppose prompted Moses to pick this lousy road?”
Abe: “God only knows, Zeke, God only knows.”
Once done, bass line walk down from G to C to go into the chorus.

Chorus twice and out.

Birthday Vacation in Orlando

My beautiful wife Shelley surprised me with a secret birthday vacation. On Wednesday we headed out to the airport for destinations unknown. It turns out that she booked our HGVC timeshare in Orlando for 6 days.

Upon arrival, we checked into all of the different things to do here. I must admit that the amount of things to do here is overwhelming. I opted to get a 5 day pass for the Disney adventure parks.

The first day we went to the Epcot Center. They are having a Wildflower Festival. Of course Shelley was excited about that! One of the rides we took though showed how they are using new technologies to raise crops, including things like hanging plants upside down from high tech watering troughs, and bare root water/nutrient spray systems. They mentioned that there is a behind-the-scenes walking tour available, but we missed the last one. We plan on using our 5th day pass to go back and take the tour.

We had also left just prior to the fireworks, thinking that we’ve seen fireworks before. However, as we got on the tram to the car the fireworks started, and appeared to be unlike any we’d seen before. So we’re planning on going back later today to catch the seed tour and stay until after the fireworks.

We had eaten at the English pub, and ordered the fish-and-chips and a cheese platter. We were intrigued by the Bangers And Mash we saw other diners eating. So we’re planning on making reservations for dinner to give that a try also.

Unfortunately we overdid the walking, and my new sneakers caused a blister on the bottom of each foot. So we started out the day yesterday stopping by Target to pick up some sandals and blister pads. We then took it easy at the Disney MGM/Hollywood Studios park. The main things we saw were the car stunt show and the Tower of Terror. We got rained on several times, but had with us a couple Disney ponchos we had bought the first day. We then finished up the day with a nice dinner at the Out Back. Altogether it was a wonderful day.

They Just Can't Take It Away

I woke up this morning with a song stuck in my head. I had dreamed about a group of old folks dressed in Bavarian costumes playing in our church. The song was such high energy that I wanted to get up on the stage with them and play drums.

<!–more–>

The song is a basic C, F, G song with the melody:
[C]E, E, F, F#, G, E,  E, E, F, F#, G, G
[F]F, F, A, Bb, C, F,  F, F, A, Bb, C, F

The lyrics to the last line of the chorus are something like:

[?Jesus gave us some thing] they just can’t take it away
A, A, A, A, A, A, G, A, A, A, G, F, G, D, E, C.

Once again I’m worried that I might be plagiarizing some existing song. I need to record a rough take of it and run it past a few folks to see if it sounds familiar to them.

Cloud of Angels

cloud-of-angels

Cloud of Angels

Written by Ron Lisle

Key Gm
TimeSignature 4/4
Tempo 110

Intro

Gm C

Verse 1

 
Gm 
We had ex
F 
pected the news would be  
Eb 
good. 
 
 
F/D 
 
D/F# 
 
Gm 
And it was  
F 
clear at the start that the  
Eb 
doctor 
 
 
F/D 
thought 
D/F# 
the 
 
 
Gm 
same
 
but the  
F 
look on his face when he  
Eb 
saw it said 
F/D 
all he  
D/F# 
needed to  
Gm 
say

Intro 

Gm C/G 

Verse 2

 

Gm 
A flash of e
F 
motion spread through the  
Eb 
room. 
 
 
F/D 
 
D/F# 
 
Gm 
Intense 
 
con
F 
fusion, shock, disbe
Eb 
lief, 
 
 
F/D 
anger, 
 
 
D/F# 
dread, or 
 
 
Gm 
fear?
 
This was a  
F 
day that would change every
Eb 
thing.
F/D 
Starting down a  
D/F# 
long, scary  
Gm 
road.

Chorus 1

 
Gm 
I’m so sorry that you  
C/G 
had to travel down that  
Gm 
road. 
Gm 
But I thank God that He  
C/G 
would not let you go alone. 
Eb 
He sent so  
F/D 
many to  
D 
help 
 
a
D/F# 
long the  
Gm 
way 
Gm/F 
that 
 
it 
Eb 
felt like we’d been  
D 
wrapped in a  
D/F# 
cloud of  
Gm 
Angels.

Intro

Gm C/G

Verse 3

 

Gm 
So many  
F 
new things to learn we would  
Eb 
never 
 
 
F/D 
ever 
 
have 
D/F# 
chosen to  
Gm 
know.
 
We had to  
F 
get good at schedules and  
Eb 
things. 
 
 
F/D 
Appointments, 
D/F# 
treatments, but  
Gm 
then
 
you were a
F 
mazing, your faith was so  
Eb 
strong  it  
F/D 
help 
 
us 
D/F# 
all to hang  
Gm 
on.

Chorus 2

 
Gm 
And I’m sorry that you  
C/G 
had to travel down that  
Gm 
road.
Gm 
But I thank God that he  
C/G 
would not let you go alone.
Eb 
He sent so  
F/D 
many to  
D 
help 
 
a
D/F# 
long the  
Gm 
way
Gm/F 
that 
 
it
Eb 
felt like we’d been  
D 
wrapped in a  
D/F# 
cloud of  
Gm 
Angels.

Gm C/G

Verse 4

 
Gm 
They say that af
F 
ter five years that you’ve  
Eb 
made it, the
F/D 
danger 
 
 
D/F# 
is finally  
Gm 
past.
 
We’re over  
F 
half way there now and I  
Eb 
know that  
F/D 
we’re
D/F# 
going to  
Gm 
make 
 
it.
 
‘Cause the  
F 
One that sends us those  
Eb 
angels  is  
F/D 
still 
 
watching
D/F# 
over 
 
 
Gm 
you.

Repeat Chorus

Intro

Gm C/G

WordPress Links Not Working

The category links, among others, are not working. I believe that the problem is related to permalinks, which require .htaccess be modified. This appears to only be happening on my local server and not on the remote server. I need to look into this, but it’s a low priority since the remote server appears to be working ok.

Tailgating SUVs

This is a fairly negative song, so I probably won’t ever do much with it. The idea came to me while driving to work, seeing some SUVs tailgating these other little cars. It occurred to me that they’d probably get really angry if some larger vehicle (like a semi-truck) tailgated them. The hypocrisy and self-centeredness bothers me.

It is a pretty standard I-IV-V song with VI minor thrown into the chorus.  

[Title]Tailgating SUVs

[Verse 1]
[C]Tailgating SUVs, [F]putting my life at [G]risk.
[C]You’re bigger so you don’t care if you [F]crash into me tsk, [G]tsk!
[Am]I’d like to see you get tail[F]gated yourself one [G]day
by a [Am]big mac truck, much bigger than you. Would [F]you think that is [G]ok?

[Verse 2]
Tailgating SUVs, now you’re making me shudder.
You’ve got a hot cup of coffee in one hand, and your cellphone in the other.
I sure hope you don’t spill that coffee in your lap.
You’ll be jumping and screaming and crash into me, and …

… something about the price of gas?

… something about the environment?

A Place In Sin City

A Place In Sin City
This song came to me after writing Cloud of Angels. I had asked Matt Welch to come over and help me with the drum parts of it. We were talking between takes, and I was explaining to him how I was telling him the story about how I hadn’t finished the lyrics to my first song “Why not pray?”, and I felt like God was telling me that I needed to write about things that I really had something to say about. Anyways, then I started telling him about this great church I had visited in Las Vegas (“Central Christian”), and all the cool stuff they’re doing there. It hit me then that here was something that I had “something to say about” 🙂

The references to “strippers” is right our of a book written by the pastor there. Many of the other lines are also from the pastor that I copied from their website. I’ve taken a bit of artistic license with the exact working to fit the song a bit better. I apologize if I’ve changed the meaning in any way. It is not intended. What an amazing place Central Christian Church is! Thank you. I aspire to bringing that sort of open acceptance to our church, The Rock UMC in Cedar Park TX.

[Title]A Place In Sin City

[Composer]Ron Lisle

[Key]D

[Tempo]80

[Intro]

[D] [E/D] [G/D] [D]

[Verse 1]
[D]There’s a [E/D]place in the [G/D]heart of sin [D]city
[D]Full of [E/D]people from [G/D]all walks of [D]life.
[D]There are [E/D]strippers, and [G/D]boozers, and [D]gamblers.
[D]And they’re [E/D]looking for a [G/D]change in their [D]lives.
And it’s [C/D]happening. [G/D] [D]
By God, it’s [C/D]happening. [G/D] [D]

[Verse 2]
First time I went to that place in sin city
I saw things I did not expect to see, and I thought
Hmm, something strange is going on here.
I’ll bet the unexpected happens here a lot.
Yes it’s happening. By God, it’s happening.

[Chorus 1]
[C6]Come as you [D]are, with your [C6]past, pain, and [G/B]struggles. You don’t
[C6]have to pre[D]tend to be [C6]something you’re [G/B]not.
[C6]The man up[D]stairs will meet you [C6]right where you’re [G/B]standing,
but [Bb]He won’t [C/A]leave you [G]there.

[Verse 3]
The people gathering at this place in sin city
they’ve seen many lives changed through grace.
So they call this town of theirs “Grace City”.
Hard to believe but grace happens here a lot.
And it’s happening. By God, it’s happening.

[Chorus/bridge]
Come as you are, with your past, pain, and struggles. You don’t
have to pretend to be something you’re not.
The man upstairs will meet you right where you’re standing.
It’s ok, to not be ok.

Come as you are, with your past, pain, and struggles. You don’t
have to pretend to be something you’re not.
He promises to meet you right where you standing,
and He won’t leave you there.

[Final Verse (repeat v1)]

There’s a place in the heart of Grace City
Full of people whose lives have changed.
Some were strippers, boozers, and gamblers.
Some have found big changes in their lives.
And it’s happening. By God, it’s happening.

ÂÂ