Can We Make the Piano More Like the Hardanger Fiddle? v3.1 released

v3.1 has some cool new stuff, here’s a summary:

  • Independent targeting “Add Sympathetic String” and “Ring Sympathetic String” in Resonance through Keymap; what does that mean? Read on!
  • Display of Held and Ringing keys in Resonance, and ability to create, save, and modify Held Keys in Resonance; again, read on!
  • Sostenuto pedal support
  • Keymap “sostenuto” mode (sustain pedal behaves like sostenuto pedal)
  • Keymap “toggle” mode (noteOffs ignored)
  • Scala import (both SCL and KBM) in Tuning
  • The installer is now officially “signed” and “notarized” by Apple, so should install without complaint on OSX.
  • bug fixes! new bugs!

Also, we have some new tutorials, the bitKlavier Grand sample library is now fully released, and we welcome Davis Polito to the bK team.


Can we make the Piano more like the Hardanger Fiddle?

The Resonance preparation in bitKlavier is inspired by how sympathetic resonance works in acoustic pianos; when a note is played, any other undamped strings will ring in sympathy, depending on if they have shared overtones. This is a fluid set of resonances, since at any particular moment the undamped strings will be changing as keys go up and down (though of course that depends on the music being played).

This is in contrast to the Hardanger fiddle and the Hardanger d’Amore—my primary instruments—which have a fixed set of sympathetic strings (called “understrings” since they run under the main strings and under the fingerboard; of course there are other instruments with fixed sympathetic strings, like the sitar). These strings are static, and not controlled directly by the player, so they can ring continuously and present a kind of resonant background sonority that reinforces particular notes and keys, and not others. In some ways, this is like a special acoustic space; as Perry Cook told me, it’s like a reverb unit with carefully tuned modes.

Can we do something like that with bitKlavier? Can our generalized sense of sympathetic resonance in Resonance be extended to behave more like the static resonances in the Hardanger fiddle, and if so, are there interesting spaces between those two kinds of behaviors, fluid and static?

To begin with, you can approximate the static “hardanger” resonance behavior on a conventional acoustic piano with the sostenuto pedal: hold down the keys that you want to resonate, then press the sostenuto pedal, release those keys and play away—those string will now ring sympathetically, while all the other notes will damp as usual.

In v3.1, bitKlavier now supports the sostenuto pedal, so you can do the “sostenuto hardanger” resonance just as described. Most people don’t have sostenuto pedals with their MIDI keyboards, however, so in Keymap you can also choose to have the sustain pedal behave like a sostenuto pedal. What if you still want to use the sustain pedal as originally designed? You can, at least to some extent, but using multiple Keymaps. For instance: connect one Keymap to Resonance, with “sostenuto mode” toggled on in Keymap, and then connect a different Keymap to Direct, with “sostenuto mode” toggled off (as it is by default).

Resonance can be confusing, in that it’s not always clear what pitches are ringing. In v3.1, we have a new panel that shows two things: 1) the current “held keys” (keys where the strings can ring because the dampers are released), and 2) the current “ringing keys” (really, the keys nearest the overtones of other strings that are ringing) to give us a sense of what pitches we are hearing. But this display does more: with “held keys,” you can manually select individual keys that you want to allow to ring, without actually playing them:

Above, we have five strings (not coincidentally, the most common resonating strings on the Hardanger fiddle) manually selected (“Held Keys”), so their virtual dampers are always off, and then above that, we can see the keys nearest to the ringing pitches we are hearing (of course, this example is from a particular moment where I had been playing some random stuff, so the “Ringing Keys” will constantly change as you play).

Note, if you just connect a normal Keymap to Resonance and play and release those keys, they will no longer ring (and will no longer be highlighted under “Held Keys”), since Resonance will think you have turned them off when you release those keys.

Unless… you set the attached Keymap preparation to target only “ring,” in which case the held keys will remain static, ringing away in response to whatever other notes are played:

This is precisely the Hardanger fiddle resonance model, with static resonating strings. It’s quite beautiful and powerful. And, you can also attach a Modification to Resonance, to retune those sympathetic strings on the fly, apart from actually “ringing” them (something I wish I could do with my actual Hardanger fiddle!); this is in that “in between” space, between the fluid and static resonance setups described earlier.

(Of course, this doesn’t really make bitKlavier sound like a Hardanger fiddle, it just emulates the resonant structure of that instrument. If you really want to hear the piano sound an awful lot like the Hardanger fiddle, check out Ingfrid Breie Nyhus’ beautiful records. She makes careful use of quietly depressed keys and the sostenuto pedal, among other things.)

Note in the above image that there is an “add” target as well; you could, for instance, use a separate small keyboard to add/change resonant “held” keys to Resonance, and use the main keyboard to “ring” them, so they are effectively decoupled. Another in-between space…


Scala Support

We’ve been asked periodically why bitKlavier doesn’t support Scala. One reason is that I did not find that I needed Scala; every tuning system is unique, and has a history and motivation, and each one takes time to get to know. The original bitKlavier had only a few tuning systems, ones that I knew well, trained my ears on, and used in various compositions. These were later expanded with a number of historical tunings from Western European (and more recent) traditions.

(See Carey Beebe’s wonderful website for information about the histories of all of these historical tunings, and for recipes for how to tune an instrument with each of them (click on the teeny tiny “technical library” link on the left side of his website, then choose “temperament” from the pulldown menu that appears); if you’d like to try your hand actually doingthese tunings by ear, you can with a virtual harpsichord tuning application I made a few years ago, called bitTemper: manual, max-patches.)

To be honest, I find the enormous catalog of Scala tunings to be overwhelming, and the tunings often feel detached from their roots—just lists of numbers or ratios—so whenever I’ve wanted to explore a particular tuning, I learn about it and create it by hand in bitKlavier, which in and of itself helps me get to know it. So, not having Scala has actually felt like a feature to me.

In spite of this, we’ve gone ahead now and integrated Scala import, just so bitKlavier can play a bit more nicely with the rest of the tuning-aware world. If you are interested in learning more about these systems in Scala, or others, I recommend exploring Leimma and Apotome, created by Khyam Allami and Counterpoint, which will lead to many other resources as well. And, this is not to bash Scala, which is an amazing resource! Just to explain my own relationship with it.

So… as of v3.1, you can open Scala SCL and KBM (keyboard mapping) files and bitKlavier will translate them into whatever Tuning preparation you are using. One nice thing is that you can create some pretty wild non-12-note tuning systems quite quickly, using SCL and KBM in tandem (these get translated into Absolute tunings in Tuning); see the example below (which I have a new video tutorial for, if you want to learn more):

which gets translated into…

Note that bitKlavier is not a fully fledged Scala authoring tool—there are plenty of those—though 12-note scales created in bK will automatically generate Scala formatted text that can be copied and pasted elsewhere if you like.

I will add that we are also working on support for the MTS-ESP system from Oddsound, which will enable bitKlavier to “serve” its approach to tuning (including adaptive systems like spring tuning) to other MTS-ESP aware plugins, as well is being a “client” of other tuning-aware plugins; this is another exciting way that bitKlavier will be able to “play nice” with other tuning applications—more on that soon.


New Tutorials

Jeff Gordon has created two video tutorials for Resonance; they are great, check them out!

I’ve also created a set of quick and dirty tutorials looking at tuning in bitKlavier, including adaptive and dynamic tunings like spring tuning; I hope they are useful!


bitklavier Grand fully released

The bitKlavier Grand sample library is now fully released. It’s quite awesome. And here is a short video tutorial on how to use it with direct-from-disk streaming in bitKlavier.


Welcome Davis Polito!

As I announced last time, Matt Wang has moved on to graduate school at NYU in game design, and we are now joined by Davis Polito, a wonderful musician and developer who comes to us from Penn and Carnegie Mellon. He spearheaded most of the features in 3.1, and I’m super excited to have him here with us now!


Upcoming

As I mentioned, we plan to support MTS-ESP very soon; this system enables multiple plugins to share tuning information, and should enable some of the unique features of bitKlavier’s Tuning preparation to reach beyond the confines of bitKlavier itself

Cristina Altamura and Adam Sliwinski are nearly done with recording my set of 12 Preludes for bitKlavier; they’ve done a terrific job and have been wonderful, inspiring collaborators, and I can’t wait to share this.

Speaking of, Cristina and Adam are also getting started on recording the new commissions for bitKlavier; more on that soon!


You can download v3.1 here.

thanks for reading! and for bitKlavier’ing!

—Dan

The Sympathetic Piano: v2.9 and v3.0 released

Hi all, it’s been a second, and I never got around to announcing v2.9, so what better time than with the release of v3.0, which is a big one! Versions 3.0/2.9 include:

  • a new Resonance preparation, inspired by the sympathetic resonance in acoustic pianos
  • an equalizer on the output, to tailor the sound of bitKlavier to particular speakers, halls, and so on
  • velocity curves, to customize the feel of bitKlavier to your keyboard (or make it feel bizarre!)
  • the bitKlavier Grand: a new sample library, created for bitKlavier, of a Steinway D, with nine different stereo mic images
  • the Dunleavy Double Seconds: another new sample library, also created for bitKlavier, of a beautiful set of steel pans
  • direct-from-disk streaming capability, so you don’t have to load those large sample libraries into RAM
  • flexible resource paths for sample folders, so they can be put wherever you like
  • bug fixes! new bugs!

One of the driving forces behind bitKlavier is the use the traditional piano (its physical layout of keys, the action, its sound, and so on) as an inspiration for a new instrument, enabled by computation. The aim is NOT to try to simulate the piano and make something that sounds as close as possible to an acoustic piano (Pianoteq does that quite brilliantly already, as do many of the sample-based instruments out there). Well, I suppose we do TRY to get as close as possible, and the details of how the acoustic instrument works can be an important part of the inspiration, but ultimately the aim of bitKlavier is to make it our own

This reminds me of learning a fiddle tune from an amazing player (for those of you who don’t know me: fiddle is my main instrument): it’s important to get into the tiny details of what, say, Hauk Buen (one of the players I learned the most from, while he was alive) is doing when playing a particular tune (the bowings, the ornaments, the melodic variations, the tuning, etc…), but in the end, I can never REALLY play like Hauk Buen, and at some point I need to make the tune my own, let it be what I can make it. Same with bitKlavier.

Speaking of the fiddle, the instruments that I play—the Hardanger fiddle and the Hardanger d’Amore—feature sympathetic strings that ring along as we bow; it’s gorgeous, and this is what we point out first when describing the instrument. Sympathetic resonance is not something that people typically talk about with the piano, but it’s also a beautiful part of the instrument’s sound. If you’ve never done this before, try quietly holding down, say, a low register C on an acoustic piano (C2), and then striking/releasing these notes: C3, G3, C4, E4, G4, Bb4… similarly, hold any of those higher notes and strike/release the C2. Listen to the subtle ringing; this interaction is caused by the overlap of the overtones of all the sounding strings (the bitKlavier manual has some illustrations of this): 

Of course, that kind of ringing is going on all the time while playing, and while it is subtle, it, to my ears, acts as a kind of glue between all of the notes, a kind of halo around the “main” sound we are listening to.

bitKlavier’s new Resonance preparation models that sympathetic resonance in a flexible way that should invite a range of approaches, from a “natural” subtle resonance, to a more intense resonance (perhaps without the “main” sound of the instrument), to totally different structures (perhaps using overtone structures from, say, gongs or pipes, or “undertone” structures, or something totally invented). These sympathetic strings can also be tuned however you like: the same as the “main” (Direct) sound, or not. And of course they can be used with whatever sample set you like. So, definitely inspiredby the piano (and the Hardanger fiddle!), but not constrained by it. We’re making sympathetic resonance in bitKlavier our own.


The sound of bitKlavier depends SOOOOOO much on the speakers used; it’s probably the most important factor! While you can’t fix everything with EQ, it can help minimize problems with particular speakers, or address boominess in a particular room, or even just modify the sounds of a particular sample set, in subtle or extreme ways. Rather than having to plug into some external eq, you can now use a built-in 5-band EQ to tailor the sound as you need, and the settings will save with the Gallery.


Different keyboards have different feels, and different players have different preferences in terms of how the instrument responds to how forcefully they play it. bitKlavier now enables that response to be tailored, flexibly, so you can have different feels within a single Piano if you like. Tucked inside the Keymap settings, you’ll find this new pane that you can use to customize the 
velocity curves for your setup. As always with bitKlavier, you can do subtle things that mimic conventional instruments, or wacky things like, say, inverting the velocity curves, so playing more forcefully results in softer sound.


bitKlavier can’t work with commercial sample library packages like Kontakt because we need direct access to all of the samples, and I’m not particularly keen to get into some kind of licensing arrangement with a commercial outfit. Unfortunately, there aren’t that many super high quality and freely available piano sample libraries. For years we’ve used the excellent “Salamander” sample library of a Yamaha 9’ grand; one of its nice features is that it’s recorded from the player’s perspective (low sounds towards the left, high sounds towards the right), which makes sense for bitKlavier since it’s really for the player, as opposed to for recording. But, I’ve longed for some alternatives (not replacements!), just for some variety in timbre and so on. Also, some years ago while recording Olagón, the wonderful producer and engineer Jesse Lewis pointed out that, for recording, it would be great to have some other perspectives of the piano (some audience perspectives!), and also some options that are higher resolution (the Salamander set is 44k/16bit). 

Over the past several months, we’ve had a small team developing a sample library of a new Steinway D that we have here at Princeton. Our engineer Andrés Villalta designed a mic setup with nine different stereo images of the instrument, and Matt Wang spent several days playing samples of the instrument at various velocities. This was followed by months of post-production, with Jeff GordonKatie Chou, and Christien Ayers doing a lot of heavy lifting to help create a beautiful, quiet, and rich sample library. For details and download info, visit the bitKlavier Grand website.

A while ago, we also spent some time with Josh Quillen recording a beautiful instrument of his made by Kyle Dunleavy: double-second steel pans. We finally got around to editing and processing these and are happy to share them as well; thanks Josh! Check out the Dunleavy Double-seconds.

To support using these libraries, which are LARGE can take a lot of memory and time to load into memory, bitKlavier can now stream samples direct from disk. This only works well with an internal SSD or Thunderbolt SSD drive (traditional drives are just too slow), but if you have those, it’s amazing; the app loads super quickly, and you can switch between very large libraries almost instantaneously. 

In addition, we’ve made it more flexible where you keep these libraries; in the past, the “samples” folder HAD to be in the Applications/bitKlavier folder, but now you can put it wherever you want (as long as you tell bitKlavier, in the “preferences” settings).

Finally, we’ve done a fair bit of work on how bitKlavier handles sample playback, particularly with regards to velocity and release resonance; in spite of my fierce arguments that bitKlavier is not about simulating the traditional piano, we DO want to learn as much as possible from that venerable old instrument (just like I wanted to learn all those fiddle tune details from Hauk). In any case, I think it should feel and sound better than it has in the past.


e years, has moved on to graduate school (the NYU Game Design program); I’m very sorry to see him go (he’s been a brilliant coder for bK, and also super smart about design questions that come up all the time), but very happy for him, and I look forward to following his work for years to come.

I also want to thank Jeff GordonKatie Chou, and Theo Trevisan for their contributions to these new 2.9/3.0 features; they did terrific work!


Coming soon… new music for bitKlavier by yours truly, Jenny Beck, Chris Douthitt, Noah Fishman, Molly Herron, Pascal Le Boeuf, Nate May, Annika Socolofsky, and Bora Yoon. Cristina Altamura and Adam Sliwinski have been hard at work learning these new pieces, and will be recording them in the coming months; more soon!


thanks for reading! and for bitKlavier’ing!

—Dan

Camila Streuly and the Mikroetudes

A few years ago I invited a number of composers to make new pieces for bitKlavier, with the loose model of Bartók’s Mikrokosmos as a starting point; the Mikroetudes turned into a delightful collection of widely varying pieces, and have served as a natural introduction to the instrument. Camila Streuly, a student of Cristina Altamura‘s, has proven an adept and natural performer with bitKlavier, and kindly recorded two of the Mikroetudes to share here. Here is what she has to say about the process and experience:

When I first started working with bitKlavier three years ago, I found it challenging, but it exposed me to an entirely novel way to think about the piano, which was refreshing. It differed from what I was used to: acoustic instruments where I was the main independent variable. To me, one of bitKlavier’s most intriguing aspects is its animateness. It is almost its own entity that you also must respond to while playing. This interactiveness obligates the player to be exceedingly attentive to their touch. Being precise and strictly following notations is fundamental, particularly because each composition is accompanied by its own programming and set of effects. For that same reason, I have found that bitKlavier has helped improve my technique significantly. The first two pieces I took on, Daily Decrease and Keep It Steady (Or Not), brought their respective challenges.

Daily Decrease by Andrea Mazzariello has a nostalgic and synchronic effect. Consequently, I had to work on clean releases and being mindful of note duration as they directly affect the performance’s sound and accuracy. This composition can be rhythmically challenging as well due to its syncopated melody. However, the set metronome on the synchronic effect is helpful for keeping in time. The piece’s dynamic changes are quite gradual therefore demanding a steady oversight from the player.

In Dan Trueman’s Keep It Steady (Or Not), one of the most prominent features is its adaptive tempo which triggers a changing metronome based on your own pace. Although the player is given the option to not “keep it steady,” I have found that this piece requires one to have a great internal metronome–notably during measures nine and ten. This polyrhythmic section requires the player to count a four on three cross-rhythm and then the opposite! For these two measures, I became more familiar with the feeling of this polyrhythm in order to be able to count my way through it.

About Daily Decrease, Andrea Mazzariello writes:

I heard the Mikroetudes one summer, as they were being released into the wild, and was quite affected by what seemed to me to be a really smart and, more importantly, really expressive intervention into performance physiology, into the body/ear relationship and the retraining of that relationship.

When Dan asked me to contribute a smaller study to a growing repertoire for bitKlavier, I jumped at the chance. It seemed especially important to begin with fingers on keys, which I did, but I also loved the ways that I could play bitKlavier with my notation program and listen, joyfully, to the notes on the page and to what became of what they were “supposed” to sound like, enlivened and sometimes mulched in the bK engine.

The title comes from my high school study of Bruce Lee (!) and some of his wonderful aphorisms, among them: “not daily increase but daily decrease. hack away the inessential!” I thought of bitKlavier in this way; because of its richness and dynamism, I found that part of my responsibility as a composer was to get out of its way.

Thanks Camila for your work on these pieces and your terrific performances!

Jai Raman plays, learns, and teaches Bach with bitKlavier

As a young piano student, Jai was not fond of Bach. His teacher, Kristin Cahill of the New School for Music Study, suggested he experiment with a Bach piece on bitKlavier. He developed a set of preparations that reveal his hearing of the piece: pedal tones and pulses, echoes that sustain particular pitches, and more. I had never imagined this use of bitKlavier before, and think it’s fascinating.

Cahill writes:

Johann Sebastian Bach’s Prelude in C Minor, BWV 999 is a staple in the Baroque repertoire canon for intermediate piano students.  Teachers often gravitate toward this particular prelude because its counterpoint seems more accessible and repetitive than other polyphonic works from the 18th century.  A few years ago, my student Jai Raman was preparing to play this piece as part of an exam that requires a Baroque selection and was finding the BWV 999 incredibly tedious to the point of abhorrence.   

Concurrently, Jai was enrolled in a Legacy Arts course on bitKlavier.  A group of students and Adam Sliwinski, Cristina Altmura, and I were preparing to perform works written for bitKlavier at a concert.  Jai wanted to adapt a piece for bitK, and he chose a jazzy work initially.  However, I suggested that Jai write settings for the Bach Prelude to see whether he could experience the piece in a new context.  

Due to the unrelenting and homogenous rhythmic patterns that comprise this prelude, students can find it boring, something akin to a Hanon warm-up.  To help Jai understand the bass motion and harmonic structure of the piece, I had him color code the downbeat bass notes as well as block and analyze the chord changes.  While this might have been a useful theory exercise, it did not generate any excitement for Jai.

Another challenge in teaching this prelude is to convey the role rests play in the structure.  When hearing this performed in recitals or intermediate competitions, students often bleed through the rest, even though it occurs on every second beat.  This is because in introducing and developing rhythm and technique, teachers tend to focus more on the attack of a note than its release.  Furthermore, because students have a tendency to think of music as melody (right hand focused) and accompaniment (left hand support), the left hand is often neglected, even in a contrapuntal context.    

Using the color coding and theoretical preparation we did in private lessons, Jai decided to write his own settings on bitKlavier to help illustrate Bach’s amazing harmonic changes as well as the bass line.  For certain downbeats in the left hand, Jai created nostalgic settings that were triggered by the release of a note.  This allowed Jai to hear what we were trying to visually represent on paper.  In addition, Jai added synchronic pulses to infuse drive into a certain part or climatic moment.  He also created his own nostalgic wave to represent the Picardy third at the end of the piece.  Using the tuning settings, Jai could experience the prelude on a temperament from Bach’s time very different from that on the equally tuned piano in our lessons.  

Jai interacted with bitKlavier almost entirely on his own.  Although Adam Sliwinski made small suggestions, Jai created each setting according to what he wanted to bring out in the score.  It was incredible to see how a novel 21st century keyboard allowed this sixth grader to appreciate a Baroque prelude far removed from his time.  Not only did Jai have a blast in the process of adapting the BWV 999 for bitKlavier, his approach to the piece on the piano evolved considerably.  I wish I had a before and after video of how Jai’s technique, harmonic and rhythmic understanding, shaping, and enthusiasm for the piece changed with bitKlavier.  It is as transformative as the picardy third that ends the BWV 999.  

Here is what Jai says about it:

Prior to my experience with the bitKlavier, I despised Bach.  I thought his music was bland, and it felt extremely incomplete.  At the time, I was learning his Prelude in C Minor, and I absolutely hated it.  However, after working with the bitKlavier for so many months, I was able to realize and appreciate the depth behind Bach’s music.  I used the several features of the bitKlavier to emphasize certain parts of the piece that I felt needed to be more noticeable.  One way I did this was by adding a synchronic pulse to the notes in the left hand, which made the piece feel more driven.  I set this pulse to the tempo of the piece so it would assist with keeping me in time.  I also added a nostalgic effect, which made notes play themselves backwards after they’re released.  I used this to make changes in the left hand more audible, and adjusted it so that the effect was the perfect length.  Lastly, I used the tuning feature to make the digital keyboard I was using sound more in line with the tuning that would have been used in Bach’s time period.  This allowed me to experience the piece in full, and made it slightly more accurate to how it was supposed to be played.  Overall, the bitKlavier allowed me to look at Bach’s work from an entirely different perspective by providing a more modern twist, and it really changed how I perceived Baroque music as a whole.

Watch him play it:

You can try this yourself; here is the gallery he created, and here is a PDF of the piece.

Computer Music Journal Papers

We have two substantial papers about bitKlavier coming out in the Computer Music Journal, summer of ’20. Included here are pre-published versions, along with media examples for the figures:

Continue reading “Computer Music Journal Papers”