Millennial Whoop with Derp Learning, a Reel

Following on from yesterday, when I composed a jig with folk-rnn featuring the Millennial Whoop, today I want to compose a reel — which is a dance in common time — featuring the Millennial whoop.

I don’t know where to begin, so let’s ask folk-rnn to generate three tunes in common time.

python sample_rnn.py metadata/config5-wrepeats-20160112-222521.pkl --terminal --ntunes 3 --seed "M:4/4"

X:0
M:4/4
K:Cmaj
E > F | 
G 2 E G F D E F | G 2 c > d e c G F | E G G F E D E G | F E D C D E F D | 
G 2 E F G F E D | G c c d e 2 d c | B G A B c B G A | E > D D E F 2 :| 
|: G 2 | 
c 2 d c B G G E | G A B G c B G F | G 2 c G A F G E | D 2 D E F G A B | 
c 2 d c B G G E | G A _B G c d c B | G A B G A F G F | E D E G c 2 :|
X:1
M:4/4
K:Cmix
| e 2 g e c e g e | f 2 a f d b f d | e 2 g e c e g e | f e d c B c d f | 
e 2 g e c e g e | f 2 a f d f d c | =B 2 c d e g f d | e c d B c 4 :| 
|: c e g e c' e g e | g e g c' a g f e | d 2 a d a f a f | f d d f e g f d | 
c e g e c' e g e | c' e g e f e d c | B c d e f d b d | d c =B d c 4 :|
X:2
M:4/4
K:Cmaj
|: B 2 d B g B f A | G A B G d 2 e f | g 2 g f g a g f | e c c B c G A G | 
G 2 f B g B f B | G A B G c 2 B g | a 2 g f g a f g | a g f e d e f d :| 
|: d 2 B d c A d f | d B B A B c d B | A f c A f B A f | g A G A B g g e | 
d B B 2 c A B F | d B A B c A G A | B 2 A B G B A B | d f d f e d c e :|

I have added line breaks so we can have a good look at the output — allowing easy comparison of every four bars. The X:0 transcription is a bit aimless, but I do like the broken rhythm, and the brief bit of mixolydian in the turn (the last repeated 8 measures). The X:1 transcription is less aimless, and I like how the turn ends in major rather than mixolydian, reversing what happens at the end of the tune (the first repeated 8 measures). I like X:2 the best. The first four bars of the turn is kind of the “sophisticated Pop” I want my Millennial Whoop Reel to sound like.

Of course, the Millennial whoop doesn’t occur in any of these transcriptions — we haven’t implemented the “–millennialwhoop” flag in folk-rnn yet. So Ima take the X:2 reel and add some Millennial Whoops at the appropriate times in the tune and the turn. I will also lop off the last four measures of the turn because I don’t like them. Here is what my new seed sounds like.

X:3
M:4/4
K:Cmaj
|: B2 d B g B f A | G A B G d2 e f | g2 g f g a g f | e c c B c G/2 E G/2 E | G2 f B g B f B | G A B G c2 B g | a2 g f g a f g | a g f e f g/2 e g/2 e :| |: d 2 B d c A d f | d B B A B c d B | A f c A f B A f | g A G A B g/2 e g/2 e |

I want folk-rnn to give me some alternate endings of the turn. I also want to see if it is able to understand the bigger pattern here: the Millennial Whoop is appearing every 4 bars. Will it continue this pattern, possibly providing a variation? So I seed folk-rnn with these 12 measures.

python sample_rnn.py metadata/config5-wrepeats-20160112-222521.pkl --terminal --ntunes 3 --seed "M:4/4 K:Cmaj |: B 2 d B g B f A | G A B G d 2 e f | g 2 g f g a g f | e c c B c G /2 E G /2 E | G 2 f B g B f B | G A B G c 2 B g | a 2 g f g a f g | a g f e f g /2 e g /2 e :| |: d 2 B d c A d f | d B B A B c d B | A f c A f B A f | g A G A B g /2 e g /2 e |"

X:0
M:4/4
K:Cmaj
|: B 2 d B g B f A | G A B G d 2 e f | g 2 g f g a g f | e c c B c G /2 E G /2 E | 
G 2 f B g B f B | G A B G c 2 B g | a 2 g f g a f g | a g f e f g /2 e g /2 e :| 
|: d 2 B d c A d f | d B B A B c d B | A f c A f B A f | g A G A B g /2 e g /2 e | 
d f B d c d c A | B 2 A B G A B G | F 2 f d g f d f | g f d B G 2 A F :|
X:1
M:4/4
K:Cmaj
|: B 2 d B g B f A | G A B G d 2 e f | g 2 g f g a g f | e c c B c G /2 E G /2 E | 
G 2 f B g B f B | G A B G c 2 B g | a 2 g f g a f g | a g f e f g /2 e g /2 e :| 
|: d 2 B d c A d f | d B B A B c d B | A f c A f B A f | g A G A B g /2 e g /2 e | 
d 2 B d c d A B | d B A B A B A f | a 2 g c B G B A | G F G A B A B d :|
X:2
M:4/4
K:Cmaj
|: B 2 d B g B f A | G A B G d 2 e f | g 2 g f g a g f | e c c B c G /2 E G /2 E | 
G 2 f B g B f B | G A B G c 2 B g | a 2 g f g a f g | a g f e f g /2 e g /2 e :| 
|: d 2 B d c A d f | d B B A B c d B | A f c A f B A f | g A G A B g /2 e g /2 e | 
d 2 B d c d A f | d B c A B A G B | A c A c B G d c | B G A F G 2 f d :|

I have added line breaks so we can have a good look at the output. In these three generated transcriptions, folk-rnn fails to pick up on the idea. Increasing the temperature doesn’t help. Even when I generate hundreds more transcriptions with different random seeds I don’t see success. The closest is when folk-rnn puts in the final bar of the turn a pair of semiquavers, e.g., “g e d c A /2 B /2 A B c”. These always seem to appear together though, and never broken. It must be that the Millennial whoop is not very characteristic in the conventions of this music. (I also tried moving the bars with the Millennial whoops to the first bars, thinking the model has learned to emphasise near exact repetition around those locations — which is a musical concept — but alas that did not help. It just seems to be the strange broken rhythm of said whooping causing confusion.) I am not going to let the strict conventions in this model stop me, however — I am an artist who was turning 25 at the millennium. So it will have to be a forced Millennial whoop in the final bar of the turn.

From all the generated outputs, I take the most appealing final four bars and add the desired whoop.

X:48
M:4/4
K:Cmaj
| B2 d B g B f A | G A B G d2 e f | g2 g f g a g f | e c c B c G/2 E G/2 E | 
G2 f B g B f B | G A B G c2 B g | a2 g f g a f g | a g f e f g/2 e g/2 e |
|: d2 B d c A d f | d B B A B c d B | A f c A f B A f | g A G A B g/2 e g/2 e |
d2 B d c A B d | d B A B c B A F | G2 B G e G f G | B e g e f d/2 B d/2 B :|

With that, I make a few dozen edits here and there to tighten up the piece. I also add some chords for color (which show how much gospel I have been listening too recently … all those sus chords). I also took the idea from some of the initial outputs of folk-rnn adding the B-flat, which gives some tonal ambiguity. I myself don’t really know whether the tonic is G or C. If I was under duress, I would say the mode of the reel is C major for the tune and G dorian for the turn.

This experience has now resulted in a pretty different piece for me, in common time, which makes some kind of statement about all things Millennials and Whooping. I like it!

T:The Millennial Whoop Reel
C:Bob L. Sturm (w/ folk-rnn)
M:4/4
K:Cmaj
|: "G" B2 dB gB fB | "G" GABG "Bdim" d2 ef | "C" g2 gf gagf | "Gsus" eccB "G" .c (G/2 E) (G/2 E) | "G" B2 fB gB dB | "Eb" GA_BG "C" c2 fg | "Fm" _a2 gf "Bb" g_afg |1 "Csus" agfe "C" .f (g/2 e) (f/2 d) :| |2 "Csus" agfe "C" .f (g/2 e) (g/2 e-) |: "G" e2 Bd "Dm" cAdf | "Edim" dB_BA _Bcd_B | "Adim" AfcA fBAf | "G" gAGA .B (g/2 e) (g/2 _e-) | "G" _e2 Bd "Dm" cABd | "Cm6" gBAB "C" cBAF | "Em" G2 BG eG fG |1 "Gsus" Bege "G" .f (g/2 e) (g/2 e-) :| |2 "Gsus" Bege "G" .f (d/2 B) (d/2 B-) :|

Thanks folk-rnn! You have helped me explore some areas I never would have thought about.

Advertisements

3 thoughts on “Millennial Whoop with Derp Learning, a Reel

  1. Pingback: Preview of “Interlude” | High Noon GMT

  2. Pingback: “Two short pieces and an Interlude” in concert! | High Noon GMT

  3. Pingback: Taking the Models back to Music Practice: Evaluating Generative Transcription Models built using Deep Learning | High Noon GMT

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s