diff --git a/booklet/all-for-me-grog.md b/booklet/all-for-me-grog.md index 335b42a..b2b2d1e 100644 --- a/booklet/all-for-me-grog.md +++ b/booklet/all-for-me-grog.md @@ -1,3 +1,7 @@ +--- +key: C +--- + # All For Me Grog {chorus} diff --git a/booklet/barretts-privateers.md b/booklet/barretts-privateers.md index b061370..3fa7571 100644 --- a/booklet/barretts-privateers.md +++ b/booklet/barretts-privateers.md @@ -1,3 +1,7 @@ +--- +key: C +--- + # Barrett's Privateers *Stan Rogers, 1976* diff --git a/booklet/bully-boys.md b/booklet/bully-boys.md index 1c41f6a..1a53ac3 100644 --- a/booklet/bully-boys.md +++ b/booklet/bully-boys.md @@ -1,3 +1,7 @@ +--- +key: C +--- + # Bully Boys {chorus} diff --git a/booklet/bully-in-the-alley.md b/booklet/bully-in-the-alley.md index 6f10cab..de65c92 100644 --- a/booklet/bully-in-the-alley.md +++ b/booklet/bully-in-the-alley.md @@ -1,3 +1,7 @@ +--- +key: G +--- + # Bully in the Alley Sally is the girl that I love dearly, diff --git a/booklet/drunken-sailor.md b/booklet/drunken-sailor.md index f99e307..fb8f58c 100644 --- a/booklet/drunken-sailor.md +++ b/booklet/drunken-sailor.md @@ -1,3 +1,7 @@ +--- +key: Dm +--- + # Drunken Sailor What will we do with a drunken sailor? diff --git a/booklet/health-to-the-company.md b/booklet/health-to-the-company.md index 8fb5bdb..01a2ef2 100644 --- a/booklet/health-to-the-company.md +++ b/booklet/health-to-the-company.md @@ -1,3 +1,7 @@ +--- +key: Am +--- + # Health to the Company Kind friends and companions, come join me in rhyme diff --git a/booklet/joli-rouge.md b/booklet/joli-rouge.md index 6cb0c00..f7efa7b 100644 --- a/booklet/joli-rouge.md +++ b/booklet/joli-rouge.md @@ -1,10 +1,15 @@ +--- +key: Dm +--- + # Joli Rouge *The Dreadnoughts, 2019* From [Dm]France we get the [Am]Brandy, from [Dm]Martinique the [Am]rum [Dm]Sweet red [C]Cabernet from [Dm]Italy does [C]come -But the [Dm]fairest of them [C]all, me boys, the [F]one to beat the [C]day… +But the [Dm]fairest of them [C]all, me boys, +the [F]one to beat the [C]day… …is [Dm]made from [F]apples up the [C7]mighty [F]Saguenay. {chorus} @@ -17,21 +22,24 @@ But the [Dm]fairest of them [C]all, me boys, the [F]one to beat the [C]day… She's called the Dreadnought Cider, she's proper and she's fine And when the day is over sure I wish that she were mine -Or in the dark of winter, or on a summer's eve… +Or in the dark of winter, +or on a summer's eve… …One hand giveth and the other does receive. [Chorus] So turn your sails over and bring her hard to port Find that little star and fly straight into the North -The wild sun upon your back the wind a-blowing free… +The wild sun upon your back +the wind a-blowing free… …You're rolling up the river boys to old Chicoutimi. [Chorus] So you can have a Magners and pour it over ice Or you can have a Strongbow if it's sadness that you like -Or join us up the river and we'll set your heart aglow… +Or join us up the river +and we'll set your heart aglow… …And how you'll feel when the real cider starts to flow. [Chorus] diff --git a/booklet/leave-her-johnny.md b/booklet/leave-her-johnny.md index 110fdf6..4aa650a 100644 --- a/booklet/leave-her-johnny.md +++ b/booklet/leave-her-johnny.md @@ -1,3 +1,7 @@ +--- +key: C +--- + # Leave Her Johnny I [C]thought I heard the old man say diff --git a/booklet/mingulay-boat-song.md b/booklet/mingulay-boat-song.md index a2d76a5..c4d42db 100644 --- a/booklet/mingulay-boat-song.md +++ b/booklet/mingulay-boat-song.md @@ -1,3 +1,7 @@ +--- +key: G +--- + # Mingulay Boat Song {chorus} diff --git a/booklet/old-maui.md b/booklet/old-maui.md index ffdc65f..aa87b2a 100644 --- a/booklet/old-maui.md +++ b/booklet/old-maui.md @@ -1,3 +1,7 @@ +--- +key: Em +--- + # Old Maui It's a [Em]damn tough [B]life full of [G]toil and [D]strife, diff --git a/booklet/randy-dandy-o.md b/booklet/randy-dandy-o.md index e44f251..6c8889c 100644 --- a/booklet/randy-dandy-o.md +++ b/booklet/randy-dandy-o.md @@ -1,3 +1,7 @@ +--- +key: Am +--- + # Randy Dandy O Now we are ready to sail for the Horn diff --git a/booklet/roll-the-old-chariot-along.md b/booklet/roll-the-old-chariot-along.md index 24d2d58..3186e09 100644 --- a/booklet/roll-the-old-chariot-along.md +++ b/booklet/roll-the-old-chariot-along.md @@ -1,3 +1,7 @@ +--- +key: Dm +--- + # Roll the Old Chariot Along We'd be all right if the wind was in our sails. diff --git a/booklet/sea-shanties-single.html b/booklet/sea-shanties-single.html index 4e2ea73..56fee8e 100644 --- a/booklet/sea-shanties-single.html +++ b/booklet/sea-shanties-single.html @@ -68,6 +68,15 @@ --rule: #333; --display: "Primitive", "UnifrakturCook", "Blackletter", serif; --body: "Lucida Bright", "Lucida Serif", "Georgia", "Times New Roman", serif; + + /* Harmonic-function colors, keyed by scale degree (1-7), in rainbow order. */ + --deg1: #d62828; /* tonic I - red */ + --deg2: #e8720c; /* supertonic ii - orange */ + --deg3: #d19a00; /* mediant III - yellow */ + --deg4: #2a9d3a; /* subdominant IV - green */ + --deg5: #2564d6; /* dominant V - blue */ + --deg6: #544ee1; /* submediant vi - indigo */ + --deg7: #8338ec; /* subtonic vii - violet */ } /* Body, page numbers, chorus headers — everything but titles — in Lucida Bright. */ @@ -238,23 +247,47 @@ and the chord is absolutely positioned over the segment's first letter. */ .cl { position: relative; - padding-top: 1em; - margin: 0 0 0.04in; + padding-top: 1.0em; + margin: 0 0 0.06in; line-height: 1.4; } .cl .seg { position: relative; } .cl .chd { position: absolute; - top: -1em; + bottom: 100%; /* sit fully above the lyric, never overlapping */ left: 0; + margin-bottom: 0.14em; font-family: var(--body); font-size: 0.8em; font-weight: 700; + font-style: normal; /* stay upright even over italic refrain lyrics */ line-height: 1; color: var(--chord); white-space: nowrap; } +/* Key-aware chords (Option 6): an outlined pill in the chord's harmonic-function + color, with its Roman numeral to the right in the same color. The Roman + numeral keeps the encoding legible when printed in grayscale. */ +.cl .chd.deg-1 { --fn: var(--deg1); } +.cl .chd.deg-2 { --fn: var(--deg2); } +.cl .chd.deg-3 { --fn: var(--deg3); } +.cl .chd.deg-4 { --fn: var(--deg4); } +.cl .chd.deg-5 { --fn: var(--deg5); } +.cl .chd.deg-6 { --fn: var(--deg6); } +.cl .chd.deg-7 { --fn: var(--deg7); } +.cl .chd .chd-name { + color: var(--fn, var(--chord)); + border: 1px solid var(--fn, var(--chord)); + border-radius: 0.28em; + padding: 0.02em 0.28em; +} +.cl .chd .chd-rn { + margin-left: 0.15em; + font-size: 0.7em; + color: var(--fn, var(--chord)); +} + @@ -306,7 +339,7 @@

Warning

All For Me Grog

-
Chorus

CAll for me grog, me Fjolly jolly Cgrog

CAll for me beer and toGbacco

CFor I spent all me tin down on

FSouth Street drinkin Cgin

CAnd across the western ocean I must G7wanCder

+
Chorus

CIAll for me grog, me FIVjolly jolly CIgrog

CIAll for me beer and toGVbacco

CIFor I spent all me tin down on

FIVSouth Street drinkin CIgin

CIAnd across the western ocean I must G7V7wanCIder

Where are me boots, me noggin', noggin' boots,

They're all gone for beer and tobacco

For the heels they are worn out and the toes are kicked about

And the soles are looking out for better weather.

Chorus

Where is me shirt, me noggin' noggin' shirt

All gone for beer and tobacco

For the collar is wore out and the front is knocked about

And the tail is looking out for better weather

@@ -315,8 +348,8 @@

Warning

Chorus

Barrett's Privateers

Stan Rogers, 1976

-

COh, the year was Fseventeen Gseventy-Ceight

CHow I wish I Fwas in CSherbrooke Gnow!

A Fletter of marque came Gfrom the Cking

To the scummiest vessel I've ever Fseen

God Cdamn Gthem Call!

-
Chorus

CI was told we'd Gcruise the seas for AmAmerican gold

We'd Cfire Gno Cguns, shed no Ftears

Now I'm a Cbroken Fman on a CHalifax Fpier

The Amlast of Barrett's G7privaCteers

+

CIOh, the year was FIVseventeen GVseventy-CIeight

CIHow I wish I FIVwas in CISherbrooke GVnow!

A FIVletter of marque came GVfrom the CIking

To the scummiest vessel I've ever FIVseen

God CIdamn GVthem CIall!

+
Chorus

CII was told we'd GVcruise the seas for AmviAmerican gold

We'd CIfire GVno CIguns, shed no FIVtears

Now I'm a CIbroken FIVman on a CIHalifax FIVpier

The Amvilast of Barrett's G7V7privaCIteers

On the ninety-sixth day we sailed again

How I wish I was in Sherbrooke now!

When a bloody great Yankee hove in sight

With our cracked four-pounders we made to fight

God damn them all!

Chorus

Then at length we stood two cables away

How I wish I was in Sherbrooke now!

Our cracked four-pounders made an awful din

But with one fat ball the Yank stove us in

God damn them all!

@@ -326,7 +359,7 @@

Warning

So here I lay in me twenty-third year

How I wish I was in Sherbrooke now!

It's been six long years since we sailed away

And I just made Halifax yesterday

God damn them all!

Chorus

Bully Boys

-
Chorus

And it's Crow me bully boys Fwe're in a hurry boys

Cwe've got a long way to G7go

And we'll Csing and we'll dance

and bid Ffarewell to France

G7row me bully boys Crow

+
Chorus

And it's CIrow me bully boys FIVwe're in a hurry boys

CIwe've got a long way to G7V7go

And we'll CIsing and we'll dance

and bid FIVfarewell to France

G7V7row me bully boys CIrow

And we sailed away in the roughest of water,

row me bully boys row

But now we return in the most royal quarters,

row me bully boys row

Chorus

See, now, how we feast on pheasants by a flock,

row me bully boys row

It's a long, long way from the gruel and the stocks,

row me bully boys row

@@ -337,7 +370,7 @@

Warning

Chorus

Bully in the Alley

Sally is the girl that I love dearly,

way hey bully in the alley

Sally is the girl that I spliced nearly,

bully down in shinbone al—

-
Chorus

GSo help me ba ba bully in the alley,

Cway Ghey Dbully in the alley

GSo help me ba ba bully in the alley,

Cbully down in GshinD7bone Gal—

+
Chorus

GISo help me ba ba bully in the alley,

CIVway GIhey DVbully in the alley

GISo help me ba ba bully in the alley,

CIVbully down in GIshinD7V7bone GIal—

Seven long years I've courted Sally

way hey bully in the alley

All she did was dilly and dally,

bully down in shinbone al—

Chorus

Sally Brown I took a notion

way hey bully in the alley

To sail across this wide damn ocean,

bully down in shin-bone al—

@@ -346,7 +379,7 @@

Warning

Chorus

Drunken Sailor

What will we do with a drunken sailor?

What will we do with a drunken sailor?

What will we do with a drunken sailor?

Early in the morning!

-
Chorus

DmWay hey and up she rises

CWay hey and up she rises

DmWay hey and up she rises

FEarly Cin the Dmmorning!

+
Chorus

DmiWay hey and up she rises

CVIIWay hey and up she rises

DmiWay hey and up she rises

FIIIEarly CVIIin the Dmimorning!

Shave his belly with a rusty razor

Shave his belly with a rusty razor

Shave his belly with a rusty razor

Early in the morning!

Chorus

Put him in a long boat till he's sober

Put him in a long boat till he's sober

Put him in a long boat till he's sober

Early in the morning!

@@ -356,24 +389,24 @@

Warning

That's what we do with a drunken sailor

That's what we do with a drunken sailor

That's what we do with a drunken sailor

Early in the morning!

Health to the Company

Kind friends and companions, come join me in rhyme

Come lift up your voices in chorus with mine

Come lift up your voices all grief to refrain

For we may or might never all meet here again

-
Chorus

AmHere's a health to the Emcompany and Gone to my Amlass

AmLet us drink and be Cmerry all Amout of one Gglass

AmLet us drink and be Cmerry all Amgrief to reGfrain

AmFor we may or might Emnever all Gmeet here aAmgain

+
Chorus

AmiHere's a health to the Emvcompany and GVIIone to my Amilass

AmiLet us drink and be CIIImerry all Amiout of one GVIIglass

AmiLet us drink and be CIIImerry all Amigrief to reGVIIfrain

AmiFor we may or might Emvnever all GVIImeet here aAmigain

Here's a health to the dear lass that I love so well

For her style and her beauty, sure none can excel

There's a smile on her countenance as she sits on my knee

There's no man in this wide world as happy as me

Chorus

Our ship lies at anchor, she's ready to dock

I wish her safe landing, without any shock

If ever I should meet you by land or by sea

I will always remember your kindness to me

Chorus

Joli Rouge

The Dreadnoughts, 2019

-

From DmFrance we get the AmBrandy, from DmMartinique the Amrum

DmSweet red CCabernet from DmItaly does Ccome

But the Dmfairest of them Call, me boys, the Fone to beat the Cday…

…is Dmmade from Fapples up the C7mighty FSaguenay.

-
Chorus

DmSo follow me lads Am… cause this Dmain't no grog or Amale

DmOne pint Cdown you'll be Dmswinging in the Cgale

DmFive pints Cbully you'll be Fshaking in your Cshoes

…We're Dmhalf-seas Fover on the CJoli DmRouge.

-

She's called the Dreadnought Cider, she's proper and she's fine

And when the day is over sure I wish that she were mine

Or in the dark of winter, or on a summer's eve…

…One hand giveth and the other does receive.

+

From DmiFrance we get the AmvBrandy, from DmiMartinique the Amvrum

DmiSweet red CVIICabernet from DmiItaly does CVIIcome

But the Dmifairest of them CVIIall, me boys,

the FIIIone to beat the CVIIday…

…is Dmimade from FIIIapples up the C7VII7mighty FIIISaguenay.

+
Chorus

DmiSo follow me lads Amv… cause this Dmiain't no grog or Amvale

DmiOne pint CVIIdown you'll be Dmiswinging in the CVIIgale

DmiFive pints CVIIbully you'll be FIIIshaking in your CVIIshoes

…We're Dmihalf-seas FIIIover on the CVIIJoli DmiRouge.

+

She's called the Dreadnought Cider, she's proper and she's fine

And when the day is over sure I wish that she were mine

Or in the dark of winter,

or on a summer's eve…

…One hand giveth and the other does receive.

Chorus
-

So turn your sails over and bring her hard to port

Find that little star and fly straight into the North

The wild sun upon your back the wind a-blowing free…

…You're rolling up the river boys to old Chicoutimi.

+

So turn your sails over and bring her hard to port

Find that little star and fly straight into the North

The wild sun upon your back

the wind a-blowing free…

…You're rolling up the river boys to old Chicoutimi.

Chorus
-

So you can have a Magners and pour it over ice

Or you can have a Strongbow if it's sadness that you like

Or join us up the river and we'll set your heart aglow…

…And how you'll feel when the real cider starts to flow.

+

So you can have a Magners and pour it over ice

Or you can have a Strongbow if it's sadness that you like

Or join us up the river

and we'll set your heart aglow…

…And how you'll feel when the real cider starts to flow.

Chorus

Leave Her Johnny

-

I Cthought I heard the old man say

FLeave her Johnny Cleave her

ToFmorrow Cye will Gget yer Cpay

And it's Ctime for us to G7leave Cher

-
Chorus

GLeave her Johnny Cleave her

Oh Fleave her Johnny Cleave her

For the Fvoyage is Clong and the Gwinds don't Cblow

CAnd it's time for us to G7leave Cher

+

I CIthought I heard the old man say

FIVLeave her Johnny CIleave her

ToFIVmorrow CIye will GVget yer CIpay

And it's CItime for us to G7V7leave CIher

+
Chorus

GVLeave her Johnny CIleave her

Oh FIVleave her Johnny CIleave her

For the FIVvoyage is CIlong and the GVwinds don't CIblow

CIAnd it's time for us to G7V7leave CIher

Oh the wind was foul and the sea was high

Leave her Johnny leave her

She shipped it green and none went by

And it's time for us to leave her

Chorus

I hate to sail on this rotten tub

Leave her Johnny leave her

No grog allowed and rotten grub

And it's time for us to leave her

@@ -381,7 +414,7 @@

Warning

We swear by rote for want of more

Leave her Johnny leave her

But now we're through so we'll go on shore

And it's time for us to leave her

Chorus

Mingulay Boat Song

-
Chorus

DHeave her Gho, boys, let her go, boys

Swing her Dhead round into the Cweather

DHeave her Gho, boys, let her go, boys

Sailing Dhomeward to MinguGlay

+
Chorus

DVHeave her GIho, boys, let her go, boys

Swing her DVhead round into the CIVweather

DVHeave her GIho, boys, let her go, boys

Sailing DVhomeward to MinguGIlay

What care we, though, white the Minch is?

What care we, boys, for windy weather

When we know that every inch is

Sailing homeward to Mingulay

Chorus

Wives are waiting by the pier head

Gazing seaward from the heather

Bring her round, boys, then we'll anchor

'Ere the sun sets on Mingulay

@@ -389,9 +422,9 @@

Warning

Ships return now, heavy laden

Mothers holdin' bairns a-cryin'

They'll return yet when the sun sets

Sailing homeward to Mingulay

Chorus

Old Maui

-

It's a Emdamn tough Blife full of Gtoil and Dstrife,

We Emwhalermen BunderEmgo

And we Emdon't give a Bdamn when the Ggale is Ddone,

How Emhard the Bwinds did Emblow

-

For we're Ghomeward bound from the DArctic ground,

With a Emgood ship taut and Bfree

And we Emdon't give a Bdamn when we Gdrink our Drum,

With the Emgirls of Bold MauEmi

-
Chorus

EmRolling Gdown to old MauDi, me boys

Rolling Emdown to old MauBi

We're Emhomeward Bbound from the GArctic Dground

Rolling Emdown to Bold MauEmi

+

It's a Emidamn tough BVlife full of GIIItoil and DVIIstrife,

We Emiwhalermen BVunderEmigo

And we Emidon't give a BVdamn when the GIIIgale is DVIIdone,

How Emihard the BVwinds did Emiblow

+

For we're GIIIhomeward bound from the DVIIArctic ground,

With a Emigood ship taut and BVfree

And we Emidon't give a BVdamn when we GIIIdrink our DVIIrum,

With the Emigirls of BVold MauEmii

+
Chorus

EmiRolling GIIIdown to old MauDVIIi, me boys

Rolling Emidown to old MauBVi

We're Emihomeward BVbound from the GIIIArctic DVIIground

Rolling Emidown to BVold MauEmii

Once more we sail with a Northerly gale,

Through the ice and wind and rain

Them coconut fronds, the tropical shores,

We soon shall see again

For six hellish months we passed away

On the cold Kamchatka sea

But now we're bound from the Arctic ground,

Rolling down to old Maui

Chorus
@@ -403,7 +436,7 @@

Warning

Chorus

Randy Dandy O

Now we are ready to sail for the Horn

Way hey roll and go

Our boots an' our clothes, boys, are all in the pawn

To me rollickin' randy dandy O

-
Chorus

AmHeave a pawl oh heave a way

GWay hey Croll and go

The Canchor's on board and the Gcable's all stored

To me Amrollickin' randy E7dandy AmO

+
Chorus

AmiHeave a pawl oh heave a way

GVIIWay hey CIIIroll and go

The CIIIanchor's on board and the GVIIcable's all stored

To me Amirollickin' randy E7V7dandy AmiO

Man the stout caps'n and heave with a will

Way hey roll and go

For soon we'll be drivin' away up the hill

To me rollickin' randy dandy O

Chorus

Heave away, bullies, ye parish rigged bums

Way hey roll and go

Take your hands from your pockets and don't suck your thumbs

To me rollickin' randy dandy O

@@ -415,7 +448,7 @@

Warning

Come breast the bar bullies heave with a will

Way hey roll and go

Oh soon we'll be rolling her down through the bay

To me rollickin' randy dandy O

Roll the Old Chariot Along

We'd be all right if the wind was in our sails.

We'd be all right if the wind was in our sails.

We'd be all right if the wind was in our sails.

And we'll all hang on behind.

-
Chorus

And we'll Dmroll the old chariot along

We'll Croll the old chariot along

We'll Dmroll the old chariot along

And we'll Fall hang A7on beDmhind

+
Chorus

And we'll Dmiroll the old chariot along

We'll CVIIroll the old chariot along

We'll Dmiroll the old chariot along

And we'll FIIIall hang A7V7on beDmihind

We'll be all right if we make it round The Horn.

We'll be all right if we make it round The Horn.

We'll be all right if we make it round The Horn.

And we'll all hang on behind.

Chorus

Well a nice wash below wouldn't do us any harm.

Well a nice wash below wouldn't do us any harm.

Well a nice wash below wouldn't do us any harm.

And we'll all hang on behind.

@@ -425,8 +458,8 @@

Warning

Oh a drop of Nelson's blood wouldn't do us any harm.

Oh a drop of Nelson's blood wouldn't do us any harm.

Oh a drop of Nelson's blood wouldn't do us any harm.

And we'll all hang on behind.

Chorus

Skipper Jan Rebec

-

EbWho's the king of the Abfighting EbDutch

EbSkipper BbJan Rebec

EbAnd who do the sailors Abfear so much

EbSkipper BbJan EbRebec

-
Chorus

And it's

EbJa ja Ableave your hammocks

EbJa ja Bb *hands on deck*

EbJa ja Ab break your backs for

EbSkipper BbJan EbRebec

+

EbIWho's the king of the AbIVfighting EbIDutch

EbISkipper BbVJan Rebec

EbIAnd who do the sailors AbIVfear so much

EbISkipper BbVJan EbIRebec

+
Chorus

And it's

EbIJa ja AbIVleave your hammocks

EbIJa ja BbV *hands on deck*

EbIJa ja AbIV break your backs for

EbISkipper BbVJan EbIRebec

And who brought all the tea from China

Skipper Jan Rebec

And sold it all in the Carolina

Skipper Jan Rebec

Chorus

And who can furl the main topsail

Skipper Jan Rebec

All his own in a living gale

Skipper Jan Rebec

@@ -438,8 +471,8 @@

Warning

So who's the king of the fighting Dutch

Skipper Jan Rebec

And who do the sailors fear so much

Skipper Jan Rebec

Chorus

South Australia

-

EIn South Australia I was born

AHeave Eaway, Ahaul Eaway

EIn South Australia B7'round Cape EHorn

We're bound for South AusB7tralEia

-
Chorus

AHaul away, you rolling Ekings

AHeave aEway, Ahaul aEway

AHaul away, oh hear me Esing

We're bound for South AusB7tralEia

+

EIIn South Australia I was born

AIVHeave EIaway, AIVhaul EIaway

EIIn South Australia B7V7'round Cape EIHorn

We're bound for South AusB7V7tralEIia

+
Chorus

AIVHaul away, you rolling EIkings

AIVHeave aEIway, AIVhaul aEIway

AIVHaul away, oh hear me EIsing

We're bound for South AusB7V7tralEIia

As I walked out one morning fair

Heave away, haul away

It's there I met Miss Nancy Blair

We're bound for South Australia

Chorus

I shook her up, I shook her down

Heave away, haul away

I shook her round and round the town

We're bound for South Australia

@@ -449,8 +482,8 @@

Warning

I'm Bristol born and Bristol bred

Heave away, haul away

I'm thick in the arm and thick in the head

We're bound for South Australia

Chorus

Wellerman

-

There Cmonce was a ship that put to sea,

the Fmname of the ship was the CmBilly o Tea.

The winds blew hard, her bow dipped down.

Oh Gblow my bully boys Cmblow.

-
Chorus

AbSoon may the EbWellerman come

to Fmbring us sugar and Cmtea and rum

AbOne day the Ebtonguin is done

we'll Gtake our leave and Cmgo

+

There Cmionce was a ship that put to sea,

the Fmivname of the ship was the CmiBilly o Tea.

The Cmiwinds blew hard, her bow dipped down.

Oh GVblow my bully boys Cmiblow.

+
Chorus

AbVISoon may the EbIIIWellerman come

to Fmivbring us sugar and Cmitea and rum

AbVIOne day the EbIIItonguin is done

we'll GVtake our leave and Cmigo

She'd not been two weeks from shore,

when down on her a right whale bore.

The captain called all hands and swore

"We'll take that whale in tow".

Chorus

Before the boat had hit the water,

the whale's tail came up and caught her.

All hands to the side, harpooned and fought her,

when she dived down below.

@@ -462,7 +495,7 @@

Warning

As far as I've heard, the fight's still on

The line's not cut and the whale's not gone.

The Wellerman makes his regular call

To encourage the captain crew and all.

Chorus

Whiskey Johnny

-

EWhiskey is the life of man

Whiskey, Johnny!

DI'll drink whiskey while I can

AWhiskey for my Johnny Oh!

+

EVWhiskey is the life of man

Whiskey, Johnny!

DIVI'll drink whiskey while I can

AIWhiskey for my Johnny Oh!

Oh whiskey straight and whiskey strong,

Whiskey, Johnny!

Give me some whiskey and I'll sing you a song

Whiskey for my Johnny Oh!

Here comes the cook with the whiskey can,

Whiskey, Johnny!

A glass of grog for every man.

Whiskey for my Johnny Oh!

A glass of grog for every man,

Whiskey, Johnny!

And a bottle full for the shantyman.

Whiskey for my Johnny Oh!

diff --git a/booklet/sea-shanties.html b/booklet/sea-shanties.html index b9d63c6..d6471e8 100644 --- a/booklet/sea-shanties.html +++ b/booklet/sea-shanties.html @@ -70,6 +70,15 @@ --rule: #333; --display: "Primitive", "UnifrakturCook", "Blackletter", serif; --body: "Lucida Bright", "Lucida Serif", "Georgia", "Times New Roman", serif; + + /* Harmonic-function colors, keyed by scale degree (1-7), in rainbow order. */ + --deg1: #d62828; /* tonic I - red */ + --deg2: #e8720c; /* supertonic ii - orange */ + --deg3: #d19a00; /* mediant III - yellow */ + --deg4: #2a9d3a; /* subdominant IV - green */ + --deg5: #2564d6; /* dominant V - blue */ + --deg6: #544ee1; /* submediant vi - indigo */ + --deg7: #8338ec; /* subtonic vii - violet */ } /* Body, page numbers, chorus headers — everything but titles — in Lucida Bright. */ @@ -240,23 +249,47 @@ and the chord is absolutely positioned over the segment's first letter. */ .cl { position: relative; - padding-top: 1em; - margin: 0 0 0.04in; + padding-top: 1.0em; + margin: 0 0 0.06in; line-height: 1.4; } .cl .seg { position: relative; } .cl .chd { position: absolute; - top: -1em; + bottom: 100%; /* sit fully above the lyric, never overlapping */ left: 0; + margin-bottom: 0.14em; font-family: var(--body); font-size: 0.8em; font-weight: 700; + font-style: normal; /* stay upright even over italic refrain lyrics */ line-height: 1; color: var(--chord); white-space: nowrap; } +/* Key-aware chords (Option 6): an outlined pill in the chord's harmonic-function + color, with its Roman numeral to the right in the same color. The Roman + numeral keeps the encoding legible when printed in grayscale. */ +.cl .chd.deg-1 { --fn: var(--deg1); } +.cl .chd.deg-2 { --fn: var(--deg2); } +.cl .chd.deg-3 { --fn: var(--deg3); } +.cl .chd.deg-4 { --fn: var(--deg4); } +.cl .chd.deg-5 { --fn: var(--deg5); } +.cl .chd.deg-6 { --fn: var(--deg6); } +.cl .chd.deg-7 { --fn: var(--deg7); } +.cl .chd .chd-name { + color: var(--fn, var(--chord)); + border: 1px solid var(--fn, var(--chord)); + border-radius: 0.28em; + padding: 0.02em 0.28em; +} +.cl .chd .chd-rn { + margin-left: 0.15em; + font-size: 0.7em; + color: var(--fn, var(--chord)); +} + @page { size: 11in 8.5in; margin: 0; } .sheet { @@ -292,7 +325,7 @@

Whiskey Johnny

-

EWhiskey is the life of man

Whiskey, Johnny!

DI'll drink whiskey while I can

AWhiskey for my Johnny Oh!

+

EVWhiskey is the life of man

Whiskey, Johnny!

DIVI'll drink whiskey while I can

AIWhiskey for my Johnny Oh!

Oh whiskey straight and whiskey strong,

Whiskey, Johnny!

Give me some whiskey and I'll sing you a song

Whiskey for my Johnny Oh!

Here comes the cook with the whiskey can,

Whiskey, Johnny!

A glass of grog for every man.

Whiskey for my Johnny Oh!

A glass of grog for every man,

Whiskey, Johnny!

And a bottle full for the shantyman.

Whiskey for my Johnny Oh!

@@ -331,7 +364,7 @@

Warning

3

All For Me Grog

-
Chorus

CAll for me grog, me Fjolly jolly Cgrog

CAll for me beer and toGbacco

CFor I spent all me tin down on

FSouth Street drinkin Cgin

CAnd across the western ocean I must G7wanCder

+
Chorus

CIAll for me grog, me FIVjolly jolly CIgrog

CIAll for me beer and toGVbacco

CIFor I spent all me tin down on

FIVSouth Street drinkin CIgin

CIAnd across the western ocean I must G7V7wanCIder

Where are me boots, me noggin', noggin' boots,

They're all gone for beer and tobacco

For the heels they are worn out and the toes are kicked about

And the soles are looking out for better weather.

Chorus

Where is me shirt, me noggin' noggin' shirt

All gone for beer and tobacco

For the collar is wore out and the front is knocked about

And the tail is looking out for better weather

4

Before the boat had hit the water,

the whale's tail came up and caught her.

All hands to the side, harpooned and fought her,

when she dived down below.

@@ -343,16 +376,16 @@

Warning

As far as I've heard, the fight's still on

The line's not cut and the whale's not gone.

The Wellerman makes his regular call

To encourage the captain crew and all.

Chorus
33

Wellerman

-

There Cmonce was a ship that put to sea,

the Fmname of the ship was the CmBilly o Tea.

The winds blew hard, her bow dipped down.

Oh Gblow my bully boys Cmblow.

-
Chorus

AbSoon may the EbWellerman come

to Fmbring us sugar and Cmtea and rum

AbOne day the Ebtonguin is done

we'll Gtake our leave and Cmgo

+

There Cmionce was a ship that put to sea,

the Fmivname of the ship was the CmiBilly o Tea.

The Cmiwinds blew hard, her bow dipped down.

Oh GVblow my bully boys Cmiblow.

+
Chorus

AbVISoon may the EbIIIWellerman come

to Fmivbring us sugar and Cmitea and rum

AbVIOne day the EbIIItonguin is done

we'll GVtake our leave and Cmigo

She'd not been two weeks from shore,

when down on her a right whale bore.

The captain called all hands and swore

"We'll take that whale in tow".

Chorus
32
Chorus

I'm sick in the head and I haven't been to bed,

Since first I came ashore from me slumber,

For I spent all me dough on me ladies don't you know

Far across the western ocean I must wander

Chorus
5

Barrett's Privateers

Stan Rogers, 1976

-

COh, the year was Fseventeen Gseventy-Ceight

CHow I wish I Fwas in CSherbrooke Gnow!

A Fletter of marque came Gfrom the Cking

To the scummiest vessel I've ever Fseen

God Cdamn Gthem Call!

-
Chorus

CI was told we'd Gcruise the seas for AmAmerican gold

We'd Cfire Gno Cguns, shed no Ftears

Now I'm a Cbroken Fman on a CHalifax Fpier

The Amlast of Barrett's G7privaCteers

+

CIOh, the year was FIVseventeen GVseventy-CIeight

CIHow I wish I FIVwas in CISherbrooke GVnow!

A FIVletter of marque came GVfrom the CIking

To the scummiest vessel I've ever FIVseen

God CIdamn GVthem CIall!

+
Chorus

CII was told we'd GVcruise the seas for AmviAmerican gold

We'd CIfire GVno CIguns, shed no FIVtears

Now I'm a CIbroken FIVman on a CIHalifax FIVpier

The Amvilast of Barrett's G7V7privaCIteers

On the ninety-sixth day we sailed again

How I wish I was in Sherbrooke now!

When a bloody great Yankee hove in sight

With our cracked four-pounders we made to fight

God damn them all!

Chorus
6

I shook her up, I shook her down

Heave away, haul away

I shook her round and round the town

We're bound for South Australia

Chorus
@@ -361,8 +394,8 @@

Warning

I'm Bristol born and Bristol bred

Heave away, haul away

I'm thick in the arm and thick in the head

We're bound for South Australia

Chorus
31

South Australia

-

EIn South Australia I was born

AHeave Eaway, Ahaul Eaway

EIn South Australia B7'round Cape EHorn

We're bound for South AusB7tralEia

-
Chorus

AHaul away, you rolling Ekings

AHeave aEway, Ahaul aEway

AHaul away, oh hear me Esing

We're bound for South AusB7tralEia

+

EIIn South Australia I was born

AIVHeave EIaway, AIVhaul EIaway

EIIn South Australia B7V7'round Cape EIHorn

We're bound for South AusB7V7tralEIia

+
Chorus

AIVHaul away, you rolling EIkings

AIVHeave aEIway, AIVhaul aEIway

AIVHaul away, oh hear me EIsing

We're bound for South AusB7V7tralEIia

As I walked out one morning fair

Heave away, haul away

It's there I met Miss Nancy Blair

We're bound for South Australia

Chorus
30

Then at length we stood two cables away

How I wish I was in Sherbrooke now!

Our cracked four-pounders made an awful din

But with one fat ball the Yank stove us in

God damn them all!

Chorus
@@ -371,7 +404,7 @@

Warning

So here I lay in me twenty-third year

How I wish I was in Sherbrooke now!

It's been six long years since we sailed away

And I just made Halifax yesterday

God damn them all!

Chorus
7

Bully Boys

-
Chorus

And it's Crow me bully boys Fwe're in a hurry boys

Cwe've got a long way to G7go

And we'll Csing and we'll dance

and bid Ffarewell to France

G7row me bully boys Crow

+
Chorus

And it's CIrow me bully boys FIVwe're in a hurry boys

CIwe've got a long way to G7V7go

And we'll CIsing and we'll dance

and bid FIVfarewell to France

G7V7row me bully boys CIrow

And we sailed away in the roughest of water,

row me bully boys row

But now we return in the most royal quarters,

row me bully boys row

Chorus

See, now, how we feast on pheasants by a flock,

row me bully boys row

It's a long, long way from the gruel and the stocks,

row me bully boys row

8

And who can furl the main topsail

Skipper Jan Rebec

All his own in a living gale

Skipper Jan Rebec

@@ -383,8 +416,8 @@

Warning

So who's the king of the fighting Dutch

Skipper Jan Rebec

And who do the sailors fear so much

Skipper Jan Rebec

Chorus
29

Skipper Jan Rebec

-

EbWho's the king of the Abfighting EbDutch

EbSkipper BbJan Rebec

EbAnd who do the sailors Abfear so much

EbSkipper BbJan EbRebec

-
Chorus

And it's

EbJa ja Ableave your hammocks

EbJa ja Bb *hands on deck*

EbJa ja Ab break your backs for

EbSkipper BbJan EbRebec

+

EbIWho's the king of the AbIVfighting EbIDutch

EbISkipper BbVJan Rebec

EbIAnd who do the sailors AbIVfear so much

EbISkipper BbVJan EbIRebec

+
Chorus

And it's

EbIJa ja AbIVleave your hammocks

EbIJa ja BbV *hands on deck*

EbIJa ja AbIV break your backs for

EbISkipper BbVJan EbIRebec

And who brought all the tea from China

Skipper Jan Rebec

And sold it all in the Carolina

Skipper Jan Rebec

Chorus
28
Chorus

A wee dram of whiskey for every man,

row me bully boys row

And a barrel of rum for the shanty man,

row me bully boys row

@@ -393,7 +426,7 @@

Warning

Chorus
9

Bully in the Alley

Sally is the girl that I love dearly,

way hey bully in the alley

Sally is the girl that I spliced nearly,

bully down in shinbone al—

-
Chorus

GSo help me ba ba bully in the alley,

Cway Ghey Dbully in the alley

GSo help me ba ba bully in the alley,

Cbully down in GshinD7bone Gal—

+
Chorus

GISo help me ba ba bully in the alley,

CIVway GIhey DVbully in the alley

GISo help me ba ba bully in the alley,

CIVbully down in GIshinD7V7bone GIal—

Seven long years I've courted Sally

way hey bully in the alley

All she did was dilly and dally,

bully down in shinbone al—

Chorus
10

Well a nice wash below wouldn't do us any harm.

Well a nice wash below wouldn't do us any harm.

Well a nice wash below wouldn't do us any harm.

And we'll all hang on behind.

Chorus
@@ -403,7 +436,7 @@

Warning

Chorus
27

Roll the Old Chariot Along

We'd be all right if the wind was in our sails.

We'd be all right if the wind was in our sails.

We'd be all right if the wind was in our sails.

And we'll all hang on behind.

-
Chorus

And we'll Dmroll the old chariot along

We'll Croll the old chariot along

We'll Dmroll the old chariot along

And we'll Fall hang A7on beDmhind

+
Chorus

And we'll Dmiroll the old chariot along

We'll CVIIroll the old chariot along

We'll Dmiroll the old chariot along

And we'll FIIIall hang A7V7on beDmihind

We'll be all right if we make it round The Horn.

We'll be all right if we make it round The Horn.

We'll be all right if we make it round The Horn.

And we'll all hang on behind.

Chorus
26

Sally Brown I took a notion

way hey bully in the alley

To sail across this wide damn ocean,

bully down in shin-bone al—

Chorus
@@ -411,7 +444,7 @@

Warning

Chorus
11

Drunken Sailor

What will we do with a drunken sailor?

What will we do with a drunken sailor?

What will we do with a drunken sailor?

Early in the morning!

-
Chorus

DmWay hey and up she rises

CWay hey and up she rises

DmWay hey and up she rises

FEarly Cin the Dmmorning!

+
Chorus

DmiWay hey and up she rises

CVIIWay hey and up she rises

DmiWay hey and up she rises

FIIIEarly CVIIin the Dmimorning!

Shave his belly with a rusty razor

Shave his belly with a rusty razor

Shave his belly with a rusty razor

Early in the morning!

Chorus
12
Chorus

Heave away, bullies, ye parish rigged bums

Way hey roll and go

Take your hands from your pockets and don't suck your thumbs

To me rollickin' randy dandy O

@@ -423,7 +456,7 @@

Warning

Come breast the bar bullies heave with a will

Way hey roll and go

Oh soon we'll be rolling her down through the bay

To me rollickin' randy dandy O

25

Randy Dandy O

Now we are ready to sail for the Horn

Way hey roll and go

Our boots an' our clothes, boys, are all in the pawn

To me rollickin' randy dandy O

-
Chorus

AmHeave a pawl oh heave a way

GWay hey Croll and go

The Canchor's on board and the Gcable's all stored

To me Amrollickin' randy E7dandy AmO

+
Chorus

AmiHeave a pawl oh heave a way

GVIIWay hey CIIIroll and go

The CIIIanchor's on board and the GVIIcable's all stored

To me Amirollickin' randy E7V7dandy AmiO

Man the stout caps'n and heave with a will

Way hey roll and go

For soon we'll be drivin' away up the hill

To me rollickin' randy dandy O

24

Put him in a long boat till he's sober

Put him in a long boat till he's sober

Put him in a long boat till he's sober

Early in the morning!

Chorus

Stick him in a scupper with a hose-pipe on 'im

Stick him in a scupper with a hose-pipe on 'im

Stick him in a scupper with a hose-pipe on 'im

Early in the morning!

@@ -431,7 +464,7 @@

Warning

That's what we do with a drunken sailor

That's what we do with a drunken sailor

That's what we do with a drunken sailor

Early in the morning!

13

Health to the Company

Kind friends and companions, come join me in rhyme

Come lift up your voices in chorus with mine

Come lift up your voices all grief to refrain

For we may or might never all meet here again

-
Chorus

AmHere's a health to the Emcompany and Gone to my Amlass

AmLet us drink and be Cmerry all Amout of one Gglass

AmLet us drink and be Cmerry all Amgrief to reGfrain

AmFor we may or might Emnever all Gmeet here aAmgain

14

For six hellish months we passed away

On the cold Kamchatka sea

But now we're bound from the Arctic ground,

Rolling down to old Maui

+
Chorus

AmiHere's a health to the Emvcompany and GVIIone to my Amilass

AmiLet us drink and be CIIImerry all Amiout of one GVIIglass

AmiLet us drink and be CIIImerry all Amigrief to reGVIIfrain

AmiFor we may or might Emvnever all GVIImeet here aAmigain

14

For six hellish months we passed away

On the cold Kamchatka sea

But now we're bound from the Arctic ground,

Rolling down to old Maui

Chorus

Once more we sail the Northerly gale,

Towards our island home

Our whaling done, our mainmast sprung,

And we ain't got far to roam

Our stuns'l bones is carried away,

What care we for that sound?

A living gale is after us,

Thank God we're homeward bound

@@ -440,32 +473,32 @@

Warning

Even now their big brown eyes look out,

Hoping some fine day to see

Our baggy sails running 'fore the gales,

Rolling down to old Maui

Chorus
23

Old Maui

-

It's a Emdamn tough Blife full of Gtoil and Dstrife,

We Emwhalermen BunderEmgo

And we Emdon't give a Bdamn when the Ggale is Ddone,

How Emhard the Bwinds did Emblow

-

For we're Ghomeward bound from the DArctic ground,

With a Emgood ship taut and Bfree

And we Emdon't give a Bdamn when we Gdrink our Drum,

With the Emgirls of Bold MauEmi

-
Chorus

EmRolling Gdown to old MauDi, me boys

Rolling Emdown to old MauBi

We're Emhomeward Bbound from the GArctic Dground

Rolling Emdown to Bold MauEmi

+

It's a Emidamn tough BVlife full of GIIItoil and DVIIstrife,

We Emiwhalermen BVunderEmigo

And we Emidon't give a BVdamn when the GIIIgale is DVIIdone,

How Emihard the BVwinds did Emiblow

+

For we're GIIIhomeward bound from the DVIIArctic ground,

With a Emigood ship taut and BVfree

And we Emidon't give a BVdamn when we GIIIdrink our DVIIrum,

With the Emigirls of BVold MauEmii

+
Chorus

EmiRolling GIIIdown to old MauDVIIi, me boys

Rolling Emidown to old MauBVi

We're Emihomeward BVbound from the GIIIArctic DVIIground

Rolling Emidown to BVold MauEmii

Once more we sail with a Northerly gale,

Through the ice and wind and rain

Them coconut fronds, the tropical shores,

We soon shall see again

22

Here's a health to the dear lass that I love so well

For her style and her beauty, sure none can excel

There's a smile on her countenance as she sits on my knee

There's no man in this wide world as happy as me

Chorus

Our ship lies at anchor, she's ready to dock

I wish her safe landing, without any shock

If ever I should meet you by land or by sea

I will always remember your kindness to me

Chorus
15

Joli Rouge

The Dreadnoughts, 2019

-

From DmFrance we get the AmBrandy, from DmMartinique the Amrum

DmSweet red CCabernet from DmItaly does Ccome

But the Dmfairest of them Call, me boys, the Fone to beat the Cday…

…is Dmmade from Fapples up the C7mighty FSaguenay.

-
Chorus

DmSo follow me lads Am… cause this Dmain't no grog or Amale

DmOne pint Cdown you'll be Dmswinging in the Cgale

DmFive pints Cbully you'll be Fshaking in your Cshoes

…We're Dmhalf-seas Fover on the CJoli DmRouge.

16

Wives are waiting by the pier head

Gazing seaward from the heather

Bring her round, boys, then we'll anchor

'Ere the sun sets on Mingulay

+

From DmiFrance we get the AmvBrandy, from DmiMartinique the Amvrum

DmiSweet red CVIICabernet from DmiItaly does CVIIcome

But the Dmifairest of them CVIIall, me boys,

the FIIIone to beat the CVIIday…

…is Dmimade from FIIIapples up the C7VII7mighty FIIISaguenay.

+
Chorus

DmiSo follow me lads Amv… cause this Dmiain't no grog or Amvale

DmiOne pint CVIIdown you'll be Dmiswinging in the CVIIgale

DmiFive pints CVIIbully you'll be FIIIshaking in your CVIIshoes

…We're Dmihalf-seas FIIIover on the CVIIJoli DmiRouge.

16

Wives are waiting by the pier head

Gazing seaward from the heather

Bring her round, boys, then we'll anchor

'Ere the sun sets on Mingulay

Chorus

Ships return now, heavy laden

Mothers holdin' bairns a-cryin'

They'll return yet when the sun sets

Sailing homeward to Mingulay

Chorus
21

Mingulay Boat Song

-
Chorus

DHeave her Gho, boys, let her go, boys

Swing her Dhead round into the Cweather

DHeave her Gho, boys, let her go, boys

Sailing Dhomeward to MinguGlay

+
Chorus

DVHeave her GIho, boys, let her go, boys

Swing her DVhead round into the CIVweather

DVHeave her GIho, boys, let her go, boys

Sailing DVhomeward to MinguGIlay

What care we, though, white the Minch is?

What care we, boys, for windy weather

When we know that every inch is

Sailing homeward to Mingulay

-
Chorus
20

She's called the Dreadnought Cider, she's proper and she's fine

And when the day is over sure I wish that she were mine

Or in the dark of winter, or on a summer's eve…

…One hand giveth and the other does receive.

+
Chorus
20

She's called the Dreadnought Cider, she's proper and she's fine

And when the day is over sure I wish that she were mine

Or in the dark of winter,

or on a summer's eve…

…One hand giveth and the other does receive.

Chorus
-

So turn your sails over and bring her hard to port

Find that little star and fly straight into the North

The wild sun upon your back the wind a-blowing free…

…You're rolling up the river boys to old Chicoutimi.

+

So turn your sails over and bring her hard to port

Find that little star and fly straight into the North

The wild sun upon your back

the wind a-blowing free…

…You're rolling up the river boys to old Chicoutimi.

Chorus
-

So you can have a Magners and pour it over ice

Or you can have a Strongbow if it's sadness that you like

Or join us up the river and we'll set your heart aglow…

…And how you'll feel when the real cider starts to flow.

+

So you can have a Magners and pour it over ice

Or you can have a Strongbow if it's sadness that you like

Or join us up the river

and we'll set your heart aglow…

…And how you'll feel when the real cider starts to flow.

Chorus
17

Leave Her Johnny

-

I Cthought I heard the old man say

FLeave her Johnny Cleave her

ToFmorrow Cye will Gget yer Cpay

And it's Ctime for us to G7leave Cher

-
Chorus

GLeave her Johnny Cleave her

Oh Fleave her Johnny Cleave her

For the Fvoyage is Clong and the Gwinds don't Cblow

CAnd it's time for us to G7leave Cher

+

I CIthought I heard the old man say

FIVLeave her Johnny CIleave her

ToFIVmorrow CIye will GVget yer CIpay

And it's CItime for us to G7V7leave CIher

+
Chorus

GVLeave her Johnny CIleave her

Oh FIVleave her Johnny CIleave her

For the FIVvoyage is CIlong and the GVwinds don't CIblow

CIAnd it's time for us to G7V7leave CIher

Oh the wind was foul and the sea was high

Leave her Johnny leave her

She shipped it green and none went by

And it's time for us to leave her

18
Chorus

I hate to sail on this rotten tub

Leave her Johnny leave her

No grog allowed and rotten grub

And it's time for us to leave her

Chorus
diff --git a/booklet/shanties.css b/booklet/shanties.css index 028e77a..e5d6f7a 100644 --- a/booklet/shanties.css +++ b/booklet/shanties.css @@ -19,6 +19,15 @@ --rule: #333; --display: "Primitive", "UnifrakturCook", "Blackletter", serif; --body: "Lucida Bright", "Lucida Serif", "Georgia", "Times New Roman", serif; + + /* Harmonic-function colors, keyed by scale degree (1-7), in rainbow order. */ + --deg1: #d62828; /* tonic I - red */ + --deg2: #e8720c; /* supertonic ii - orange */ + --deg3: #d19a00; /* mediant III - yellow */ + --deg4: #2a9d3a; /* subdominant IV - green */ + --deg5: #2564d6; /* dominant V - blue */ + --deg6: #544ee1; /* submediant vi - indigo */ + --deg7: #8338ec; /* subtonic vii - violet */ } /* Body, page numbers, chorus headers — everything but titles — in Lucida Bright. */ @@ -189,19 +198,43 @@ and the chord is absolutely positioned over the segment's first letter. */ .cl { position: relative; - padding-top: 1em; - margin: 0 0 0.04in; + padding-top: 1.0em; + margin: 0 0 0.06in; line-height: 1.4; } .cl .seg { position: relative; } .cl .chd { position: absolute; - top: -1em; + bottom: 100%; /* sit fully above the lyric, never overlapping */ left: 0; + margin-bottom: 0.14em; font-family: var(--body); font-size: 0.8em; font-weight: 700; + font-style: normal; /* stay upright even over italic refrain lyrics */ line-height: 1; color: var(--chord); white-space: nowrap; } + +/* Key-aware chords (Option 6): an outlined pill in the chord's harmonic-function + color, with its Roman numeral to the right in the same color. The Roman + numeral keeps the encoding legible when printed in grayscale. */ +.cl .chd.deg-1 { --fn: var(--deg1); } +.cl .chd.deg-2 { --fn: var(--deg2); } +.cl .chd.deg-3 { --fn: var(--deg3); } +.cl .chd.deg-4 { --fn: var(--deg4); } +.cl .chd.deg-5 { --fn: var(--deg5); } +.cl .chd.deg-6 { --fn: var(--deg6); } +.cl .chd.deg-7 { --fn: var(--deg7); } +.cl .chd .chd-name { + color: var(--fn, var(--chord)); + border: 1px solid var(--fn, var(--chord)); + border-radius: 0.28em; + padding: 0.02em 0.28em; +} +.cl .chd .chd-rn { + margin-left: 0.15em; + font-size: 0.7em; + color: var(--fn, var(--chord)); +} diff --git a/booklet/skipper-jan-rebec.md b/booklet/skipper-jan-rebec.md index e9c518b..a9f2fa9 100644 --- a/booklet/skipper-jan-rebec.md +++ b/booklet/skipper-jan-rebec.md @@ -1,3 +1,7 @@ +--- +key: Eb +--- + # Skipper Jan Rebec [Eb]Who's the king of the [Ab]fighting [Eb]Dutch diff --git a/booklet/south-australia.md b/booklet/south-australia.md index a1626f8..7d399e4 100644 --- a/booklet/south-australia.md +++ b/booklet/south-australia.md @@ -1,3 +1,7 @@ +--- +key: E +--- + # South Australia [E]In South Australia I was born diff --git a/booklet/wellerman.md b/booklet/wellerman.md index d4013cb..18112e9 100644 --- a/booklet/wellerman.md +++ b/booklet/wellerman.md @@ -1,8 +1,12 @@ +--- +key: Cm +--- + # Wellerman There [Cm]once was a ship that put to sea, the [Fm]name of the ship was the [Cm]Billy o Tea. -The winds blew hard, her bow dipped down. +The [Cm]winds blew hard, her bow dipped down. Oh [G]blow my bully boys [Cm]blow. {chorus} diff --git a/booklet/whiskey-johnny.md b/booklet/whiskey-johnny.md index 7ff0f3f..83534dc 100644 --- a/booklet/whiskey-johnny.md +++ b/booklet/whiskey-johnny.md @@ -1,3 +1,7 @@ +--- +key: A +--- + # Whiskey Johnny [E]Whiskey is the life of man diff --git a/patches/markdown-booklet+0.1.0.patch b/patches/markdown-booklet+0.1.0.patch new file mode 100644 index 0000000..ca60a95 --- /dev/null +++ b/patches/markdown-booklet+0.1.0.patch @@ -0,0 +1,173 @@ +diff --git a/node_modules/markdown-booklet/src/render.js b/node_modules/markdown-booklet/src/render.js +index 5da5418..727c059 100644 +--- a/node_modules/markdown-booklet/src/render.js ++++ b/node_modules/markdown-booklet/src/render.js +@@ -80,12 +80,13 @@ function renderSource(source) { + case PageType.SONG: { + const id = `song-${++spreadCounter}`; + const parts = song.splitPages(source.content || ''); ++ const songOpts = { key: meta.key }; + if (meta.spread === false) { + // Single-page song: flows like a normal page (no forced spread). + return [ + { + type: PageType.SONG, +- html: song.parsePage(parts.join('\n---\n')), ++ html: song.parsePage(parts.join('\n---\n'), songOpts), + showPageNumber, + startOn, + }, +@@ -100,14 +101,14 @@ function renderSource(source) { + return [ + { + type: PageType.SONG, +- html: song.parsePage(parts[0]), ++ html: song.parsePage(parts[0], songOpts), + showPageNumber, + spreadId: id, + spreadRole: 'left', + }, + { + type: PageType.SONG, +- html: song.parsePage(parts.slice(1).join('\n---\n')), ++ html: song.parsePage(parts.slice(1).join('\n---\n'), songOpts), + showPageNumber, + spreadId: id, + spreadRole: 'right', +diff --git a/node_modules/markdown-booklet/src/song.js b/node_modules/markdown-booklet/src/song.js +index eba96d9..4f19223 100644 +--- a/node_modules/markdown-booklet/src/song.js ++++ b/node_modules/markdown-booklet/src/song.js +@@ -24,8 +24,81 @@ function esc(text) { + .replace(/>/g, '>'); + } + ++// --- Key-aware chord analysis ------------------------------------------- ++// Given a song key, each chord is tagged with its scale degree (1-7) and its ++// Roman numeral, so the stylesheet can color it by harmonic function. Purely ++// additive: chords still render verbatim, and without a key they stay plain. ++const NOTE_PC = { C: 0, D: 2, E: 4, F: 5, G: 7, A: 9, B: 11 }; ++const SCALE_LETTERS = ['C', 'D', 'E', 'F', 'G', 'A', 'B']; ++const ROMAN = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII']; ++const MAJOR_STEPS = [0, 2, 4, 5, 7, 9, 11]; ++const MINOR_STEPS = [0, 2, 3, 5, 7, 8, 10]; ++ ++function pitchClass(note) { ++ let pc = NOTE_PC[note[0]]; ++ if (pc === undefined) return null; ++ for (let i = 1; i < note.length; i += 1) { ++ if (note[i] === '#') pc += 1; ++ else if (note[i] === 'b') pc -= 1; ++ } ++ return ((pc % 12) + 12) % 12; ++} ++ ++function parseKey(key) { ++ const m = /^([A-G])([#b]?)\s*(m|min|minor)?$/.exec(String(key || '').trim()); ++ if (!m) return null; ++ return { letter: m[1], pc: pitchClass(m[1] + m[2]), minor: !!m[3] }; ++} ++ ++/** Analyze a chord symbol against a key. Returns { degree, roman } or null. */ ++function analyzeChord(symbol, key) { ++ const parsedKey = parseKey(key); ++ if (!parsedKey) return null; ++ const m = /^([A-G])([#b]?)(.*)$/.exec(symbol); ++ if (!m) return null; ++ const [, rootLetter, rootAcc, rest] = m; ++ ++ let quality = 'maj'; ++ if (/^(m(?!aj)|min)/.test(rest)) quality = 'min'; ++ else if (/^(dim|\u00B0)/i.test(rest)) quality = 'dim'; ++ else if (/^(aug|\+)/.test(rest)) quality = 'aug'; ++ ++ const steps = parsedKey.minor ? MINOR_STEPS : MAJOR_STEPS; ++ const tonicIdx = SCALE_LETTERS.indexOf(parsedKey.letter); ++ const rootIdx = SCALE_LETTERS.indexOf(rootLetter); ++ const degIdx = (((rootIdx - tonicIdx) % 7) + 7) % 7; ++ const diatonicPc = (parsedKey.pc + steps[degIdx]) % 12; ++ const acc = (((pitchClass(rootLetter + rootAcc) - diatonicPc + 6) % 12) + 12) % 12 - 6; ++ const accStr = acc > 0 ? '\u266F'.repeat(acc) : acc < 0 ? '\u266D'.repeat(-acc) : ''; ++ ++ let numeral = ROMAN[degIdx]; ++ if (quality === 'min' || quality === 'dim') numeral = numeral.toLowerCase(); ++ if (quality === 'dim') numeral += '\u00B0'; ++ else if (quality === 'aug') numeral += '+'; ++ const ext = (rest.match(/\d+/) || [''])[0]; ++ ++ return { degree: degIdx + 1, roman: accStr + numeral + ext }; ++} ++ ++/** Markup for one chord: a plain `.chd`, or a degree-tagged pill + numeral. */ ++function chordMarkup(chord, opts) { ++ const key = opts && opts.key; ++ if (key) { ++ const info = analyzeChord(chord, key); ++ if (info) { ++ return ( ++ `` + ++ `${esc(chord)}` + ++ `${esc(info.roman)}` + ++ `` ++ ); ++ } ++ } ++ return `${esc(chord)}`; ++} ++ + /** Convert inline [C] markers into chord-over-lyric segments. */ +-function chordHtml(text) { ++function chordHtml(text, opts) { + if (!text.includes('[')) return esc(text); + const tokens = text.split(/(\[[^\]]+\])/); + let html = ''; +@@ -35,7 +108,7 @@ function chordHtml(text) { + if (chord === null) { + if (buffer) html += `${esc(buffer)}`; + } else { +- html += `${esc(chord)}${esc(buffer)}`; ++ html += `${chordMarkup(chord, opts)}${esc(buffer)}`; + } + buffer = ''; + }; +@@ -53,20 +126,20 @@ function chordHtml(text) { + } + + /** Render one lyric line. Chorus lines are always `cl`; refrains are italic. */ +-function lyricLine(line, inChorus) { ++function lyricLine(line, inChorus, opts) { + const refrain = line.startsWith('>'); + const text = (refrain ? line.replace(/^>\s?/, '') : line).trim(); + const chorded = text.includes('['); + const classes = []; + if (inChorus || chorded) classes.push('cl'); + if (refrain) classes.push('refrain'); +- const body = chorded || inChorus ? chordHtml(text) : esc(text); ++ const body = chorded || inChorus ? chordHtml(text, opts) : esc(text); + const cls = classes.length ? ` class="${classes.join(' ')}"` : ''; + return `${body}

`; + } + + /** Parse one page of song text into HTML blocks. */ +-function parsePage(text) { ++function parsePage(text, opts) { + const lines = text.replace(/\s+$/, '').split(/\r?\n/); + const blocks = []; + let i = 0; +@@ -87,14 +160,14 @@ function parsePage(text) { + i += 1; + const rows = []; + while (i < lines.length && lines[i].trim()) { +- rows.push(lyricLine(lines[i].trim(), true)); ++ rows.push(lyricLine(lines[i].trim(), true, opts)); + i += 1; + } + blocks.push(`
Chorus
${rows.join('')}
`); + } else { + const rows = []; + while (i < lines.length && lines[i].trim() && !/^\{chorus\}$/i.test(lines[i].trim())) { +- rows.push(lyricLine(lines[i].trim(), false)); ++ rows.push(lyricLine(lines[i].trim(), false, opts)); + i += 1; + } + blocks.push(`
${rows.join('')}
`); diff --git a/songs/old-maui.txt b/songs/old-maui.txt index 1fe3110..243e07a 100644 --- a/songs/old-maui.txt +++ b/songs/old-maui.txt @@ -1,5 +1,5 @@ T: Old Maui -K: G +K: Em %%notelabels 1 P: Verse BB | "Em"e2 e2 "B"^d2 BB | "G"g2 fe "D"f2 (ba) | "Em"(gf) e2 "B"f2 de | "Em"e4 BB | diff --git a/songs/randy-dandy-o.txt b/songs/randy-dandy-o.txt index 8797680..c695f81 100644 --- a/songs/randy-dandy-o.txt +++ b/songs/randy-dandy-o.txt @@ -2,7 +2,7 @@ T: Randy Dandy-O %%vocalfont times 10 %%notecolors 1 %%notelabels 1 -K: C +K: Am M: 6/8 L: 1/16 Q: 1/4=140 diff --git a/songs/wellerman.txt b/songs/wellerman.txt index b928aad..26dbe90 100644 --- a/songs/wellerman.txt +++ b/songs/wellerman.txt @@ -5,7 +5,7 @@ T: Wellerman %%notelabels 1 M: 4/4 L: 1/8 -K: Eb +K: Cm G2 | "Cm"C2 CC C2 E2 | G2 G2 G3 G | "Fm"A2 F2 F2 AB | "Cm"c2 G2 G3 G | w: There once was a ship that put to sea, the name of~the ship was the Billy o Tea. The w: She had not ~ been two weeks from shore, when down on her a ~ right whale bore. The