Rewrite Drunken Sailor melody to match actual sheet music

Replace the incorrect Drunken Sailor melody with an accurate
transcription from the traditional sheet music:
- Verse: repeating A4 eighth notes descending to D-F-A, then G4
  pattern with C-E-G, building to B-C-D
- Chorus: "Way hey and up she rises" with dotted rhythms
- 3 passes with building instrumentation (woodwind → strings → brass)
- Proper Am/G chord backing from pass 2 onward
- Correct rhythmic values (eighths, quarters, dotted quarters, halves)

https://claude.ai/code/session_015qMeX3wFA1dcCaFp9p4vai
This commit is contained in:
Claude
2026-04-02 13:41:09 +00:00
parent 0afa690736
commit 4fdb38134f
+87 -5
View File
@@ -3971,11 +3971,93 @@ const SINGALONG_PIECES=(function(){
bg.push({t:t,f:r/2,d:1.5,i:'timpani',v:0.55});mel.push({t:t,l:4});
return {n:name,composer:origin,bpm:bpm,duration:Math.ceil(t+2.5),isClassical:true,bg:bg,melody:mel};
}
var drunken=pub("Drunken Sailor","Sea Shanty (Trad.)",140,
[D4,D4,D4,D4,E4,F4,D4,D4,D4,D4,E4,D4,C4,D4,D4,D4,E4,F4,D4,D4,F4,E4,C4,A3,D4,D4,D4,D4,F4,A4,A4,G4,F4,E4,D4,C4,D4],
[0,0,0,0,2,1,0,0,0,0,2,0,1,0,0,0,2,1,0,0,1,2,1,0,0,0,0,0,1,0,0,3,1,2,0,1,0],
[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,8],
4,D4);
var drunken=(function(){
// Accurate "What Shall We Do With A Drunken Sailor" from sheet music
// D minor, 4/4, ~140 BPM
var bg=[],mel=[],t=0,q=60/140; // quarter note duration at 140 bpm
var e=q/2; // eighth note
function note(f,dur,lane,inst,v){
bg.push({t:t,f:f,d:dur*0.85,i:inst||'strings',v:v||0.35});
mel.push({t:t,l:lane});
t+=dur;
}
function chord(fs,dur,inst,v){
fs.forEach(function(f){bg.push({t:t,f:f,d:dur*0.85,i:inst||'strings',v:v||0.25});});
}
function rest(dur){t+=dur;}
for(var pass=0;pass<3;pass++){
var v=0.25+pass*0.1;
var inst=pass===0?'woodwind':pass===1?'strings':'brass';
// Add bass + chord backing
if(pass>0){
var ct=t;
// Am chord backing per measure (8 measures per verse+chorus)
var chords=[[A3,C4,E4],[A3,C4,E4],[G3,B3,D4],[G3,B3,D4],
[A3,C4,E4],[A3,C4,E4],[C4,E4,G4],[D4,F4,A4]];
chords.forEach(function(ch,ci){
ch.forEach(function(f){bg.push({t:ct+ci*q*4,f:f,d:q*3.5,i:'strings',v:v*0.3});});
bg.push({t:ct+ci*q*4,f:ch[0]/2,d:q*3.5,i:'bass',v:v*0.35});
});
}
// M1-2: "What shall we do with a drunken sailor?" (Am)
// A A A, A A A, A A, D F A
note(A4,e,0,inst,v); note(A4,e,0,inst,v); note(A4,e,0,inst,v);
note(A4,e,0,inst,v); note(A4,e,0,inst,v);
note(A4,e,0,inst,v); note(A4,e,0,inst,v);
note(A4,e,0,inst,v);
note(D4,q,1,inst,v); note(F4,q,1,inst,v); note(A4,q*2,0,inst,v);
// M3-4: "What shall we do with a drunken sailor?" (G)
note(G4,e,3,inst,v); note(G4,e,3,inst,v); note(G4,e,3,inst,v);
note(G4,e,3,inst,v); note(G4,e,3,inst,v);
note(G4,e,3,inst,v); note(G4,e,3,inst,v);
note(G4,e,3,inst,v);
note(C4,q,2,inst,v); note(E4,q,2,inst,v); note(G4,q*2,3,inst,v);
// M5-6: "What shall we do with a drunken sailor" (Am)
note(A4,e,0,inst,v); note(A4,e,0,inst,v); note(A4,e,0,inst,v);
note(A4,e,0,inst,v); note(A4,e,0,inst,v);
note(A4,e,0,inst,v); note(A4,e,0,inst,v);
note(A4,e,0,inst,v);
note(B4,q,3,inst,v); note(C5,q,1,inst,v); note(D5,q*2,1,inst,v);
// M7-8: "early in the morning?" (C-A-G-E-D-D)
note(C5,q,0,inst,v); note(A4,q,0,inst,v);
note(G4,q,3,inst,v); note(E4,q,2,inst,v);
note(D4,q*2,1,inst,v); note(D4,q*2,1,inst,v);
// M9-10: "Way hey and up she ri-ses" (chorus)
note(A4,q*2,0,inst,v*1.2);
note(A4,q+e,0,inst,v*1.2); note(A4,e,0,inst,v*1.2);
note(A4,q,0,inst,v*1.2); note(D4,q,1,inst,v*1.2);
note(F4,q,1,inst,v*1.2); note(A4,q,0,inst,v*1.2);
// M11-12: "Way hey and up she ri-ses" (on G)
note(G4,q*2,3,inst,v*1.2);
note(G4,q+e,3,inst,v*1.2); note(G4,e,3,inst,v*1.2);
note(G4,q,3,inst,v*1.2); note(C4,q,2,inst,v*1.2);
note(E4,q,2,inst,v*1.2); note(G4,q,3,inst,v*1.2);
// M13-14: "Way hey and up she ri-ses"
note(A4,q*2,0,inst,v*1.2);
note(A4,q+e,0,inst,v*1.2); note(A4,e,0,inst,v*1.2);
note(A4,q,0,inst,v*1.2); note(B4,q,3,inst,v*1.2);
note(C5,q,1,inst,v*1.2); note(D5,q,1,inst,v*1.2);
// M15-16: "Ear-ly in the morning" (ending)
note(C5,q,0,inst,v*1.2); note(A4,q,0,inst,v*1.2);
note(G4,q,3,inst,v*1.2); note(E4,q,2,inst,v*1.2);
note(D4,q*2,1,inst,v*1.2); note(D4,q*2,1,inst,v*1.2);
t+=q; // small gap between passes
}
// Finale chord
[A3,C4,E4,A4].forEach(function(f){bg.push({t:t,f:f,d:2.5,i:'brass',v:0.55});bg.push({t:t,f:f,d:2.5,i:'strings',v:0.4});});
bg.push({t:t,f:A3/2,d:2.0,i:'timpani',v:0.6});mel.push({t:t,l:4});
return {n:"Drunken Sailor",composer:"Sea Shanty (Trad.)",bpm:140,duration:Math.ceil(t+3),isClassical:true,bg:bg,melody:mel};
})();
var molly=pub("Molly Malone","Irish (1880s)",100,
[C4,E4,E4,E4,F4,G4,G4,G4,A4,G4,F4,E4,D4,E4,F4,G4,A4,C5,C5,B4,A4,G4,F4,E4,D4,C4,E4,G4,C5,C5,B4,A4,G4,F4,E4,D4,C4],
[0,2,2,2,1,3,3,3,0,3,1,2,1,2,1,3,0,0,0,3,0,3,1,2,1,0,2,3,0,0,3,0,3,1,2,1,0],