As a jazz pianist and MST major,
IÕm constantly attempting to create technology and interfaces that can enhance
the field of live performance.With this project, I strived to create a virtual
bass player.Who could
possibly complain about having an invisible bass player with impeccable time?
Not to mention the fact that this bass player will always be at rehearsal on
time (without the sassy comments, too!)While this project will surely extend beyond my time in 220C, IÕve made
great progress.Currently, one
needs only input a tempo, the chord changes and lengths of a tune, and the
Faceless Bassª will be able accompany you.The sample tune IÕve prepared, ÒAll the Things You AreÓ,
took me 1 minute to type into the program, saving me a ton of time.Unfortunately, I havenÕt worked in
actual bass samples to the program yet, so a TriOsc
simulates the bass noise.Additionally, there are very few levels of randomness thatÕd make the
bass player more realistic, but these changes wonÕt present a huge obstacle in
the future.My goal for this
quarter was to create an accompanist, and thatÕs what IÕve done.

The Code:

IÕve
included the links to the two chuck programs necessary to run the Faceless
Bass—controller.ck and facelessbass.ck.The programs are fairly well commented,
so thereÕs no huge need to explain in detail how they work.However, I will give some instructions
and explanations.

To
begin, I needed a mechanism that would be able to read chord changes (strings)
and convert them into notes that either a bass sample would emulate or a TriOsc would play.To do this, I used a large array, and a very inefficient code.Essentially, chuck reads through the
array to see if a string matches each possible note, and if it does, it tells
the program to start a bassline from that note.Furthermore, the program analyzes the
string to find the target note and makes a bassline
that flows to the next chord change.Getting this mechanism to work with targeting was the largest obstacle I
faced in this project.Once that
was done, all I did was fine-tuning to enable users to customize chord lengths,
minor/major sonorities, etc.I
canÕt explain how many hours I spent trying to work out formulas to synthesize
smooth basslines between major, minor that werenÕt
invasive.Additionally, I built in
a randomizer that occasionally syncopates the first beat of the chord.This adds unexpected variety and also
mimics realistic bass players.Changing the chord lengths was an additional challenge.I wanted the Faceless Bassª to be able
to play chord changes of varying times without losing the walking bass feel,
and so it took a lot of monkeying around with
different note combinations to create that effect.

How to Use The Program:

1)Find jazz song you want to play

2)Open facelessbass.ck

3)Indicate tempo (in bpm)

4)Type in chord changes using quotation marks and
enharmonically spell all accidentals as flats (F# = Gb,
d# = eb, and so on)

8)Press space bar to initiate a 4 beat metronome
countdown into the song

9)Play song

10)Press delete at any time to immediately remove
the bass player.

11)Enjoy a life of musical prosperity and endless
awesomeness.

Special Thanks:

Thanks to the class of 220C for helping me with ideas and
suggestions for the project.Thanks specifically to Chris Chafe, my academic advisor.Additionally, IÕd like to thank all
jazz bass players for unknowingly giving me a template to model you.

Future Research and
Developments:

I hope to include bass samples to make the sound more
realistic.As well, IÕd like to
incorporate more randomness so that the bassline
doesnÕt sound super repetitive (though sampling will solve a lot of that).Furthermore, IÕd like to modify the
program so that you can input jazzier chords such as C7, C-7, C7#11, and the
program will know what to do.Additionally, utilizing other programs to create an interface or library
where you simply type the tune you want to play, and thereÕs a more
user-friendly way to input chord changes and lengths would be desirable in the
future.