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!


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!