b Riding East

Saturday, April 11, 2009

Romantic Variations

Well, I've had my hands full lately. Baby Sabine arrived in May, 2008. I started Smule with Ge in June, 2008. I had major surgery to repair my broken jaw in September, 2008, just before I took my qualifying exams (not pretty) at Stanford and launched Smule's first product, the Sonic Lighter. Coached Noah's basketball team (tough season!), now assistant coach on baseball team (go Red Sox!). Ocarina in November. Orals last month (brutal!). Working on Schumann's Waldszenen sporadically. Buried in there somewhere is my wife (she hasn't left me yet) and my daughter Charlotte .

Jonathan (God bless you Jonathan) is still hanging in there with me, and via his seminar Winter quarter, Livia and Janet will perform the first (and at this stage only) two movements from a new set of variations I'm writing for violin duet, having performed already back east at Fredonia . Modeled after Brahm's Schumann variations, I'm threading my own theme (really a bi-tonal harmonic progression) across a handful of works from other composers, in this case, Chopin and Debussy. The progression is never explicitly stated, only implied. Livia and Janet are performing the pieces tonight at Stanford. I'll be sitting on the back row.

Romantic Variations Score, April, 2008

Tuesday, June 10, 2008

Binaural Sound in Chuck

After spending considerable cycles last quarter developing a multi-channel class framework in the Chuck programming language, I began to wonder, in the end, how many people would actually be able to hear 16-channel pieces in a space like the ccrma listening room. I then decided it would be interesting to think about 3D audio spatialization over Chuck and a pair of headphones. So, in addition to convincing some friends to port Chuck to the iPhone (stay tuned), I spent some time reading papers on binaural sound models, including the paper published by Phillip Brown and Richard O. Duda in '98 titled "A Structural Model for Binaural Sound Synthesis".

I've come up with two implementations of binaural sound in Chuck now. The first is my own model built on approximations from my research. The second is a work in progress based on the Brown and Duda paper. As you scan the source, you'll notice how trivial it is to create binaural sound by creating a Chuck class that inherits from the BinAural class I've created. The demonstration code goes on to create sound buffers that load up wave files and buzz a bumble bee by your ears while a thunderclap cracks 130 meters above your head. Eventually it starts to rain. All referenced sound files for the demo are also available.

I will come back to this code shortly and finish implementing models for the pinna. Currently, I have ITD, ILD, and HRTF functions.

Version 1.0
Version 1.1

Data files (must be in a data subdirectory underneath Chuck)
BumbleBee
Thunderclap
Rain

Sunday, June 01, 2008

Granados and Ravel

I recently performed again in the Stanford Noon Concert Series as part of Professor George Barth's studio. It has been a busy quarter, and so I was less ambitious this time around. Our new daughter Sabine arrived on May 12th. She is so unique and beautiful. Her cry has a quality of sweetness. In addition to finishing my last quarter of classes for my program, I'm also starting a new company, and have been spending a lot of time over at Bessemer Venture Partners in Menlo Park. And I'm coaching my son's little league baseball team. And so I was less ambitious for this concert.

I chose two Granados pieces because I promised recordings to my friends in the film school, specifically Charlene and Mike. They created a wonderful documentary film on the lives of three young people trying out for circus school in Montreal. We discussed some potential musical material, and in the end, they liked the Granados. In order to avoid copyright issues, I've made these recordings for their film. It will soon become obvious to Charlene and Mike that there is a gap between my skills and those of Alicia de Larrocha. I also performed the Ravel Waltz in the style of Borodin at the concert, and took the opportunity to record it again to compare how my technique and style have evolved over the past year.

Danza II, en do menor (Oriental), Enrique Granados

Danza V, en mi menor (Andaluza), Enrique Granados

A la Manière De. . . Borodin, Maurice Ravel

Friday, May 02, 2008

Bartok Variations Final Score

I've finally completed the score for my Bartok Variations, three movements for twenty strings + trumpet based on material from Bartok's own "Evening in Transylvania", no. 6 of his Ten Easy Piano Pieces. The three movements (Lento, Allegro agitato, and Scherzando) allude to rondo form and incorporate narrative-like techniques reminiscent of Schumann and Chopin, perhaps suggesting subtle shifts in the listener’s perspective of time throughout. The music features expressive polytonal harmonies in addition to polymetrical ideas, elaborations on Bartok’s own rubato from his piano piece.

Conductor Barbara Day Turner will premiere the work on May 18th, 2008 with the San Jose Chamber Orchestra. The piece is dedicated to Professor George Barth at Stanford University.

Full Score

Parts
Trumpet Solo
Violin Solo
Double Bass
Viola
Violin 1
Violin 2 Div 1
Violin 2 Div 2
Cello Div 1
Cello Div 2
Cello Div 3

Wednesday, March 19, 2008

Nice Doggie

I'm not finished (ending doesn't work, trouble with one of the transitions), but here is my latest Chuck creation. I'm pleased with my work on the machine instruments. Of course to appreciate this piece you would need to be in a 16-channel sphere such as the listening room up at CCRMA.

Off to Chicago tomorrow AM and so time to upload and start packing. I'll come back to this full-time next week.

Thx to Dr. J. Berger and Ge Wang (Sir Chuck).

Nice Doggie
Nice Doggie Source (score)

Tuesday, January 01, 2008

Mass #1 Performance

The Stanford Memorial Church under the direction of Greg Wait along with Organist Robert Huw Morgan performed two movements of my Mass #1 this past November. As always, we could have used a few more rehearsals. In the Kyrie for example, the tenor and alto parts on the "Christe" phrases don't rise above the sopranos, possibly preventing an understanding of the conflict and resolution in these phrases. Yet I was pleased that the choir & Robert performed the pieces, and appreciate Greg taking on the challenge. I particularly enjoyed Debbie's solo in the Sanctus.

Mass #1 Kyrie
Mass #1 Sanctus
Score

Erika's family attended the performance.

Applebaum Variation Performance

As a follow up to a previous post, sfSound performed my Applebaum Variation at a concert at Stanford in November. Here is an MP3 of the performance, as well as a reference to my score for the piece.

The performance recording presents several challenges: it is not evident the performers understood the structure of the piece -- specifically the metrical relationships of the phrases. The balance is also a challenge -- in particular, the strings are not audible throughout vs the percussion. Of course there is the issue with the notes themselves. I don't believe an interpretation of the piece was therefore remotely possibe. After hearing a rehearsal the night before I proposed pulling the piece as it was evident sfSound had not practiced the piece (it's not obvious to me that they looked at the score prior to the rehearsal). I was persuaded to not pull the piece. And so, it was a learning experience, and I made sure I was properly sedated for the performance.

Applebaum Variation
Score

Wednesday, December 12, 2007

Chuck Engine Piece

I'm building out my Chuck toolbox. Recall Chuck is a Strongly-timed, Concurrent, and On-the-fly Audio Programming Language developed by Ge Wang and friends over at Princeton.

I think I may have the necessary tools for the engine fugue I contemplate. I now have a proof of concept for the piece. The building blocks for my fugue include:

- Creation of a metrical framework to allow all parts to highlight and modulate a given meter and phrase rhythm. In the attached example, I use a 'bar' of 2.5 seconds (just modify the 'bar' variable to change the meter). All drones and other sound sources are strict multiples of this bar. Of course the bar may briefly expand or contract, etc., but also by a relationship of this bar.

- Creation of complex metrical drones from concrete sounds. These drones will conform to the bar structure, and will echo or reverb as a multiple of the bar. All drones in this sample come from 'engines', including a lawnmower, hairdryer, hedgetrimmer, mixer, xBox360, and leafblower.

- Warping. This is the term I use to describe an iterative linear transformation of a sound source. In the case of the drones, a typical warp function varies the gain with the radius of a two pole filter. Variations of warping include oscillations, where a given drone will warp(x,y) and then warp(y,x) over a given time interval, T (which will always be a function of the bar length).

- Creation of a new panning class and four-channel (soon eight) sound. This new class allows me to write sophisticated multi-channel output from chuck. This class allows me to 'place' a sound source anywhere in a 'room', and can pan that sound location realtime. In the sample attached, you'll notice my lawnmower drone comes from the back-left and moves to the middle of the room before returning. Later, the mixer drone literally circles the room. Etc.

- And of course, Multi-Channel PanWarp. The concept of warping is applied in panning. Via sporking, the effects of Warping and PanWarping are combined with synchronized time intervals.

- Two Chuck instruments that I modified, including the TubeBells and StifKarp. With the TubeBells, I modify speed and depth as a f(sin(T)). This, in effect, modulates the bell, emphasizing a different sets of overtones. With the StifKarp, I've built 'slide', 'trill', and dynamice 'phrase generation' functions, allowing a linear warp of struck partial-tones between two pitches.

Here are example chuck programs that do 4, 8, 16, & 18 channel sound with panning:

Chuck 4-channel panning example (square)
Chuck 8-channel panning example (rectangle)
Chuck 16-channel panning example (sphere)
Chuck 18-channel panning example (sphere)

Here is the Chuck example program (about 1K lines of code):

Chuck Engine Example
Zip of data files for engine program (put in data/ directory)

Note that unless your machine and soundcard have serious horsepower, you should run the Chuck Engine program from your commandline with the -s option to generate the wave files.

Here are the four channel wave files output from this example:

Front Left
Front Right
Back Right
Back Left

Stereo version (not the same!):

Stereo MP3

Happy Chucking!