Topic: Some results with Kawai NV10

This isn’t a question really. It’s me sharing a few of the hard-work / experimental results I’ve got. After I’ve introduced myself, I will give you some Velocity Curves and bits of general advice related to using a Kawai NV10 as the keyboard for Pianoteq.

Just before I go any further, remember that you can Copy / Paste the Curve sets I have given below into Pianoteq; you don’t have to type in numbers.

I am an ex-pro classical pianist. I no longer have an acoustic piano but I do have “neighbours” and they don’t like “classical music” (or many other things, truth be told). My sole interest is in getting a high quality normal acoustic grand piano emulation with high quality headphones from a Kawai NV10. I’m not interested in heritage / wacky / weird stuff.

I quickly dismissed the Kawai’s internal voices as useless because of their limited dynamic range (ff .. fff only)

The biggest problem I’ve had to solve with Pianoteq is getting the FULL dynamic range smoothly from ppp to fff without any “sudden” jumps. (I found that setting the Dynamics value too high tended to cause that).

Obviously the main variable here is the keyboard velocity curve. To get this right you have to know exactly what touch response curve the Keyboard is going to send to Pianoteq. To measure this, I built a home-made key-energy calibration gadget which allowed me to measure the MIDI values generated by dropping a known weight (metal rod) from various known heights onto a key. I could calculate the energy with which the metal test rod hit the keys easily as Energy in Joules = Mass * Gravity * Height. However, we don’t really need the energy values themselves here; just the height will do (since the Mass and Gravity are both constants, the height alone can give you a valid relative set of values to work with).

I set the Kawai key touch curve to the default diagonal line first.
ppp    pp    p    mp    mf    f    ff    fff
14    28    42    56    71    85    99    113

I did the tests several times on each of several keys and then average/guessed the best-fit values to eliminate maverick values / outliers and smooth the resulting curve a bit

I guessed that the Kawai would be outputting a roughly logarithmic curve and indeed, it does. The key word here is “roughly”.  Here is a table of one of the results:

The top row is the height in cm that I dropped the weight from.
The bottom row is the Midi value from the Kawai (shown by Pianoteq).

H cm   0.5 1    2    3    4    5    6    7    8    9    10    11    12    20
Midi       2     28    41    70    82    99    103    105    108    109    111    112    113    117
                                                       
The values for 2 and 4 are way out of line with the rest. I left them out and fed the remaining values into Maple and asked it to do a logarithmic fit. The pure log-fit function for the reduced set is:
32.3093037494015 + 34.1056973560305 * ln(t). It’s quite a “rough” fit !

However, the next step is to find an inverse function that Pianoteq can use to undo this curve and give you a smooth dynamic straight-line response. This is easy to work out and gives:
7 * (exp((n - 32.3)/34.1)). Where n is the Midi value from the Kawai. (The factor 7 converts the scaled energy value 0.5 .. 20 to “roughly” 7 bit range.)

Taking 13 points along the received Midi values range:

Midi value    10    20    30    40    50    60    70    80    90    100    110    120   
Convert to    3.6    4.9    6.5    8.8    11.7    15.8    21    28.4    38    50.8    68    92   
Round to            4    5    6    9    12    16    21    28    38    51    68    92   

This produces the basic Pianoteq curve values:

Velocity = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120; 4, 5, 6, 9, 12, 16, 21, 28, 38, 51, 68, 92]

These values then need adjusting to the real world to allow for:
a) errors in the original energy curve data
b) the error of the log-fit curve on the original data
c) the arbitrary force / bit range multiplier of “roughly” 7

Playing with several presets from the Grotrian and Bluthner set, I found the following Velocity curves gave very good results:

Bluthner
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 114]
Dynamics 42
Vol -7.5

Grotrian
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 113]
Dynamics 40
Vol -10


Grotrian
Velocity = [1, 53, 63, 68, 73, 78, 83, 88, 93, 98, 103, 108, 112; 0, 1, 4, 7, 11, 16, 22, 31, 40, 53, 67, 87, 110]
Dynamics 39
Vol -10

Before I did all this calculation stuff, I did manage to get some quite convincing Velocity curves just by ear and experiment, but actually calculating a proper exponential curve and then munging that to sound good has given me a really nice, acoustic-piano-like dynamic range from the Kawai Keyboard. I’m glad I made the effort. It’s much better.

The two most vital other factors that come in are the Dynamics and Volume settings. The Dynamics settings I found are pretty non-negotiable at around 39 .. 42. I know it’s tempting to crank the Dynamics up and enjoy a billion db of dynamic range but the higher you go above about 42 the worse and less smooth the actual dynamic ramp gets; you find that two adjacent notes played with pretty well exactly the same force produce wildly different volumes and that is pants! The Volume settings, on the other hand, are obviously down to personal taste.

I found that once I had got a few real-life Velocity curves, I didn’t need to play with things like the hammer hardness so much – or even at all. I always set hammer / pedal noise to zero.

I did find that I had to play around a little with the dynamics of certain ranges of notes in the note-edit section of Pianoteq but not as much as I did before.

Another important thing in getting the feel of a real acoustic piano is the response of the Sustainer pedal. I did the bit-of-cardboard munge to the sustainer on my NV10 the day after it arrived – the huge dead-zone at the top of the pedal response was absolutely unacceptable. I simply followed the instruction in a YouTube video I found to do this.

The best sustain pedal curve seems to be:
Sustain Velocity = [0, 1, 4, 32, 55, 82, 98, 111, 127; 0, 43, 86, 93, 100, 109, 119, 126, 127]

I use a SoundBlaster unit to drive my headphones (DX300 Pro circa £270). I found that it’s best to simply disable all the clever stuff it can do and use it as an amplifier and headphone driver.

I have a very fast, 15-core Windows Tower running Pianoteq so I have been able to set all the sample rates and polyphony etc. as fast as possible.

I would love to dump the headphones and play around with getting real acoustic piano sounds using the Kawai’s internal speakers driven from Pianoteq but I would finish up having to murder my neighbours, so it’s not going to happen any time soon.

I have put a Bluthner-based preset in the fxp area of this forum that you might like to play with. 2024_03_18_Kawai_NV10_BlüthnerPlayer_H

Re: Some results with Kawai NV10

yeq30 wrote:

This isn’t a question really. It’s me sharing a few of the hard-work / experimental results I’ve got. After I’ve introduced myself, I will give you some Velocity Curves and bits of general advice related to using a Kawai NV10 as the keyboard for Pianoteq.

Just before I go any further, remember that you can Copy / Paste the Curve sets I have given below into Pianoteq; you don’t have to type in numbers.

I am an ex-pro classical pianist. I no longer have an acoustic piano but I do have “neighbours” and they don’t like “classical music” (or many other things, truth be told). My sole interest is in getting a high quality normal acoustic grand piano emulation with high quality headphones from a Kawai NV10. I’m not interested in heritage / wacky / weird stuff.

I quickly dismissed the Kawai’s internal voices as useless because of their limited dynamic range (ff .. fff only)

The biggest problem I’ve had to solve with Pianoteq is getting the FULL dynamic range smoothly from ppp to fff without any “sudden” jumps. (I found that setting the Dynamics value too high tended to cause that).

Obviously the main variable here is the keyboard velocity curve. To get this right you have to know exactly what touch response curve the Keyboard is going to send to Pianoteq. To measure this, I built a home-made key-energy calibration gadget which allowed me to measure the MIDI values generated by dropping a known weight (metal rod) from various known heights onto a key. I could calculate the energy with which the metal test rod hit the keys easily as Energy in Joules = Mass * Gravity * Height. However, we don’t really need the energy values themselves here; just the height will do (since the Mass and Gravity are both constants, the height alone can give you a valid relative set of values to work with).

I set the Kawai key touch curve to the default diagonal line first.
ppp    pp    p    mp    mf    f    ff    fff
14    28    42    56    71    85    99    113

I did the tests several times on each of several keys and then average/guessed the best-fit values to eliminate maverick values / outliers and smooth the resulting curve a bit

I guessed that the Kawai would be outputting a roughly logarithmic curve and indeed, it does. The key word here is “roughly”.  Here is a table of one of the results:

The top row is the height in cm that I dropped the weight from.
The bottom row is the Midi value from the Kawai (shown by Pianoteq).

H cm   0.5 1    2    3    4    5    6    7    8    9    10    11    12    20
Midi       2     28    41    70    82    99    103    105    108    109    111    112    113    117
                                                       
The values for 2 and 4 are way out of line with the rest. I left them out and fed the remaining values into Maple and asked it to do a logarithmic fit. The pure log-fit function for the reduced set is:
32.3093037494015 + 34.1056973560305 * ln(t). It’s quite a “rough” fit !

However, the next step is to find an inverse function that Pianoteq can use to undo this curve and give you a smooth dynamic straight-line response. This is easy to work out and gives:
7 * (exp((n - 32.3)/34.1)). Where n is the Midi value from the Kawai. (The factor 7 converts the scaled energy value 0.5 .. 20 to “roughly” 7 bit range.)

Taking 13 points along the received Midi values range:

Midi value    10    20    30    40    50    60    70    80    90    100    110    120   
Convert to    3.6    4.9    6.5    8.8    11.7    15.8    21    28.4    38    50.8    68    92   
Round to            4    5    6    9    12    16    21    28    38    51    68    92   

This produces the basic Pianoteq curve values:

Velocity = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120; 4, 5, 6, 9, 12, 16, 21, 28, 38, 51, 68, 92]

These values then need adjusting to the real world to allow for:
a) errors in the original energy curve data
b) the error of the log-fit curve on the original data
c) the arbitrary force / bit range multiplier of “roughly” 7

Playing with several presets from the Grotrian and Bluthner set, I found the following Velocity curves gave very good results:

Bluthner
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 114]
Dynamics 42
Vol -7.5

Grotrian
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 113]
Dynamics 40
Vol -10


Grotrian
Velocity = [1, 53, 63, 68, 73, 78, 83, 88, 93, 98, 103, 108, 112; 0, 1, 4, 7, 11, 16, 22, 31, 40, 53, 67, 87, 110]
Dynamics 39
Vol -10

Before I did all this calculation stuff, I did manage to get some quite convincing Velocity curves just by ear and experiment, but actually calculating a proper exponential curve and then munging that to sound good has given me a really nice, acoustic-piano-like dynamic range from the Kawai Keyboard. I’m glad I made the effort. It’s much better.

The two most vital other factors that come in are the Dynamics and Volume settings. The Dynamics settings I found are pretty non-negotiable at around 39 .. 42. I know it’s tempting to crank the Dynamics up and enjoy a billion db of dynamic range but the higher you go above about 42 the worse and less smooth the actual dynamic ramp gets; you find that two adjacent notes played with pretty well exactly the same force produce wildly different volumes and that is pants! The Volume settings, on the other hand, are obviously down to personal taste.

I found that once I had got a few real-life Velocity curves, I didn’t need to play with things like the hammer hardness so much – or even at all. I always set hammer / pedal noise to zero.

I did find that I had to play around a little with the dynamics of certain ranges of notes in the note-edit section of Pianoteq but not as much as I did before.

Another important thing in getting the feel of a real acoustic piano is the response of the Sustainer pedal. I did the bit-of-cardboard munge to the sustainer on my NV10 the day after it arrived – the huge dead-zone at the top of the pedal response was absolutely unacceptable. I simply followed the instruction in a YouTube video I found to do this.

The best sustain pedal curve seems to be:
Sustain Velocity = [0, 1, 4, 32, 55, 82, 98, 111, 127; 0, 43, 86, 93, 100, 109, 119, 126, 127]

I use a SoundBlaster unit to drive my headphones (DX300 Pro circa £270). I found that it’s best to simply disable all the clever stuff it can do and use it as an amplifier and headphone driver.

I have a very fast, 15-core Windows Tower running Pianoteq so I have been able to set all the sample rates and polyphony etc. as fast as possible.

I would love to dump the headphones and play around with getting real acoustic piano sounds using the Kawai’s internal speakers driven from Pianoteq but I would finish up having to murder my neighbours, so it’s not going to happen any time soon.

I have put a Bluthner-based preset in the fxp area of this forum that you might like to play with. 2024_03_18_Kawai_NV10_BlüthnerPlayer_H

Thank you for sharing. Quite a methodic and rigorous approach ! Just a question regarding your measurement in the low velocities. Without any adjustment , how easy can you consistently generate velocity between let's say 8 and 28 on the NV10 with linear standard settings ?

Re: Some results with Kawai NV10

Pianistically wrote:
yeq30 wrote:

This isn’t a question really. It’s me sharing a few of the hard-work / experimental results I’ve got. After I’ve introduced myself, I will give you some Velocity Curves and bits of general advice related to using a Kawai NV10 as the keyboard for Pianoteq.

Just before I go any further, remember that you can Copy / Paste the Curve sets I have given below into Pianoteq; you don’t have to type in numbers.

I am an ex-pro classical pianist. I no longer have an acoustic piano but I do have “neighbours” and they don’t like “classical music” (or many other things, truth be told). My sole interest is in getting a high quality normal acoustic grand piano emulation with high quality headphones from a Kawai NV10. I’m not interested in heritage / wacky / weird stuff.

I quickly dismissed the Kawai’s internal voices as useless because of their limited dynamic range (ff .. fff only)

The biggest problem I’ve had to solve with Pianoteq is getting the FULL dynamic range smoothly from ppp to fff without any “sudden” jumps. (I found that setting the Dynamics value too high tended to cause that).

Obviously the main variable here is the keyboard velocity curve. To get this right you have to know exactly what touch response curve the Keyboard is going to send to Pianoteq. To measure this, I built a home-made key-energy calibration gadget which allowed me to measure the MIDI values generated by dropping a known weight (metal rod) from various known heights onto a key. I could calculate the energy with which the metal test rod hit the keys easily as Energy in Joules = Mass * Gravity * Height. However, we don’t really need the energy values themselves here; just the height will do (since the Mass and Gravity are both constants, the height alone can give you a valid relative set of values to work with).

I set the Kawai key touch curve to the default diagonal line first.
ppp    pp    p    mp    mf    f    ff    fff
14    28    42    56    71    85    99    113

I did the tests several times on each of several keys and then average/guessed the best-fit values to eliminate maverick values / outliers and smooth the resulting curve a bit

I guessed that the Kawai would be outputting a roughly logarithmic curve and indeed, it does. The key word here is “roughly”.  Here is a table of one of the results:

The top row is the height in cm that I dropped the weight from.
The bottom row is the Midi value from the Kawai (shown by Pianoteq).

H cm   0.5 1    2    3    4    5    6    7    8    9    10    11    12    20
Midi       2     28    41    70    82    99    103    105    108    109    111    112    113    117
                                                       
The values for 2 and 4 are way out of line with the rest. I left them out and fed the remaining values into Maple and asked it to do a logarithmic fit. The pure log-fit function for the reduced set is:
32.3093037494015 + 34.1056973560305 * ln(t). It’s quite a “rough” fit !

However, the next step is to find an inverse function that Pianoteq can use to undo this curve and give you a smooth dynamic straight-line response. This is easy to work out and gives:
7 * (exp((n - 32.3)/34.1)). Where n is the Midi value from the Kawai. (The factor 7 converts the scaled energy value 0.5 .. 20 to “roughly” 7 bit range.)

Taking 13 points along the received Midi values range:

Midi value    10    20    30    40    50    60    70    80    90    100    110    120   
Convert to    3.6    4.9    6.5    8.8    11.7    15.8    21    28.4    38    50.8    68    92   
Round to            4    5    6    9    12    16    21    28    38    51    68    92   

This produces the basic Pianoteq curve values:

Velocity = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120; 4, 5, 6, 9, 12, 16, 21, 28, 38, 51, 68, 92]

These values then need adjusting to the real world to allow for:
a) errors in the original energy curve data
b) the error of the log-fit curve on the original data
c) the arbitrary force / bit range multiplier of “roughly” 7

Playing with several presets from the Grotrian and Bluthner set, I found the following Velocity curves gave very good results:

Bluthner
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 114]
Dynamics 42
Vol -7.5

Grotrian
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 113]
Dynamics 40
Vol -10


Grotrian
Velocity = [1, 53, 63, 68, 73, 78, 83, 88, 93, 98, 103, 108, 112; 0, 1, 4, 7, 11, 16, 22, 31, 40, 53, 67, 87, 110]
Dynamics 39
Vol -10

Before I did all this calculation stuff, I did manage to get some quite convincing Velocity curves just by ear and experiment, but actually calculating a proper exponential curve and then munging that to sound good has given me a really nice, acoustic-piano-like dynamic range from the Kawai Keyboard. I’m glad I made the effort. It’s much better.

The two most vital other factors that come in are the Dynamics and Volume settings. The Dynamics settings I found are pretty non-negotiable at around 39 .. 42. I know it’s tempting to crank the Dynamics up and enjoy a billion db of dynamic range but the higher you go above about 42 the worse and less smooth the actual dynamic ramp gets; you find that two adjacent notes played with pretty well exactly the same force produce wildly different volumes and that is pants! The Volume settings, on the other hand, are obviously down to personal taste.

I found that once I had got a few real-life Velocity curves, I didn’t need to play with things like the hammer hardness so much – or even at all. I always set hammer / pedal noise to zero.

I did find that I had to play around a little with the dynamics of certain ranges of notes in the note-edit section of Pianoteq but not as much as I did before.

Another important thing in getting the feel of a real acoustic piano is the response of the Sustainer pedal. I did the bit-of-cardboard munge to the sustainer on my NV10 the day after it arrived – the huge dead-zone at the top of the pedal response was absolutely unacceptable. I simply followed the instruction in a YouTube video I found to do this.

The best sustain pedal curve seems to be:
Sustain Velocity = [0, 1, 4, 32, 55, 82, 98, 111, 127; 0, 43, 86, 93, 100, 109, 119, 126, 127]

I use a SoundBlaster unit to drive my headphones (DX300 Pro circa £270). I found that it’s best to simply disable all the clever stuff it can do and use it as an amplifier and headphone driver.

I have a very fast, 15-core Windows Tower running Pianoteq so I have been able to set all the sample rates and polyphony etc. as fast as possible.

I would love to dump the headphones and play around with getting real acoustic piano sounds using the Kawai’s internal speakers driven from Pianoteq but I would finish up having to murder my neighbours, so it’s not going to happen any time soon.

I have put a Bluthner-based preset in the fxp area of this forum that you might like to play with. 2024_03_18_Kawai_NV10_BlüthnerPlayer_H

Thank you for sharing. Quite a methodic and rigorous approach ! Just a question regarding your measurement in the low velocities. Without any adjustment , how easy can you consistently generate velocity between let's say 8 and 28 on the NV10 with linear standard settings ?


Very good question. It was nearly impossible. The values varied widely in the bottom region. The slope of the Kawai's curve there is darned nearly vertical, all the way from 0 to about 50. What I did was loads of tests with a height of 0.5 cm then looked at the rest of the curve and did a pencil-best-fit. I actually doubt if the Kawai Keyboard is reliably / repeatably accurate below values of 50. However, on the bright side, this doesn't actually matter much as that region is right at the bottom of the human force-perception range. I don't think a human could reliably / repeatably play a value of, say, 16 or something. The important part of the curve starts at about 50 and that is where the Kawai starts to talk sense.

Re: Some results with Kawai NV10

yeq30 wrote:
Pianistically wrote:
yeq30 wrote:

This isn’t a question really. It’s me sharing a few of the hard-work / experimental results I’ve got. After I’ve introduced myself, I will give you some Velocity Curves and bits of general advice related to using a Kawai NV10 as the keyboard for Pianoteq.

Just before I go any further, remember that you can Copy / Paste the Curve sets I have given below into Pianoteq; you don’t have to type in numbers.

I am an ex-pro classical pianist. I no longer have an acoustic piano but I do have “neighbours” and they don’t like “classical music” (or many other things, truth be told). My sole interest is in getting a high quality normal acoustic grand piano emulation with high quality headphones from a Kawai NV10. I’m not interested in heritage / wacky / weird stuff.

I quickly dismissed the Kawai’s internal voices as useless because of their limited dynamic range (ff .. fff only)

The biggest problem I’ve had to solve with Pianoteq is getting the FULL dynamic range smoothly from ppp to fff without any “sudden” jumps. (I found that setting the Dynamics value too high tended to cause that).

Obviously the main variable here is the keyboard velocity curve. To get this right you have to know exactly what touch response curve the Keyboard is going to send to Pianoteq. To measure this, I built a home-made key-energy calibration gadget which allowed me to measure the MIDI values generated by dropping a known weight (metal rod) from various known heights onto a key. I could calculate the energy with which the metal test rod hit the keys easily as Energy in Joules = Mass * Gravity * Height. However, we don’t really need the energy values themselves here; just the height will do (since the Mass and Gravity are both constants, the height alone can give you a valid relative set of values to work with).

I set the Kawai key touch curve to the default diagonal line first.
ppp    pp    p    mp    mf    f    ff    fff
14    28    42    56    71    85    99    113

I did the tests several times on each of several keys and then average/guessed the best-fit values to eliminate maverick values / outliers and smooth the resulting curve a bit

I guessed that the Kawai would be outputting a roughly logarithmic curve and indeed, it does. The key word here is “roughly”.  Here is a table of one of the results:

The top row is the height in cm that I dropped the weight from.
The bottom row is the Midi value from the Kawai (shown by Pianoteq).

H cm   0.5 1    2    3    4    5    6    7    8    9    10    11    12    20
Midi       2     28    41    70    82    99    103    105    108    109    111    112    113    117
                                                       
The values for 2 and 4 are way out of line with the rest. I left them out and fed the remaining values into Maple and asked it to do a logarithmic fit. The pure log-fit function for the reduced set is:
32.3093037494015 + 34.1056973560305 * ln(t). It’s quite a “rough” fit !

However, the next step is to find an inverse function that Pianoteq can use to undo this curve and give you a smooth dynamic straight-line response. This is easy to work out and gives:
7 * (exp((n - 32.3)/34.1)). Where n is the Midi value from the Kawai. (The factor 7 converts the scaled energy value 0.5 .. 20 to “roughly” 7 bit range.)

Taking 13 points along the received Midi values range:

Midi value    10    20    30    40    50    60    70    80    90    100    110    120   
Convert to    3.6    4.9    6.5    8.8    11.7    15.8    21    28.4    38    50.8    68    92   
Round to            4    5    6    9    12    16    21    28    38    51    68    92   

This produces the basic Pianoteq curve values:

Velocity = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120; 4, 5, 6, 9, 12, 16, 21, 28, 38, 51, 68, 92]

These values then need adjusting to the real world to allow for:
a) errors in the original energy curve data
b) the error of the log-fit curve on the original data
c) the arbitrary force / bit range multiplier of “roughly” 7

Playing with several presets from the Grotrian and Bluthner set, I found the following Velocity curves gave very good results:

Bluthner
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 114]
Dynamics 42
Vol -7.5

Grotrian
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 113]
Dynamics 40
Vol -10


Grotrian
Velocity = [1, 53, 63, 68, 73, 78, 83, 88, 93, 98, 103, 108, 112; 0, 1, 4, 7, 11, 16, 22, 31, 40, 53, 67, 87, 110]
Dynamics 39
Vol -10

Before I did all this calculation stuff, I did manage to get some quite convincing Velocity curves just by ear and experiment, but actually calculating a proper exponential curve and then munging that to sound good has given me a really nice, acoustic-piano-like dynamic range from the Kawai Keyboard. I’m glad I made the effort. It’s much better.

The two most vital other factors that come in are the Dynamics and Volume settings. The Dynamics settings I found are pretty non-negotiable at around 39 .. 42. I know it’s tempting to crank the Dynamics up and enjoy a billion db of dynamic range but the higher you go above about 42 the worse and less smooth the actual dynamic ramp gets; you find that two adjacent notes played with pretty well exactly the same force produce wildly different volumes and that is pants! The Volume settings, on the other hand, are obviously down to personal taste.

I found that once I had got a few real-life Velocity curves, I didn’t need to play with things like the hammer hardness so much – or even at all. I always set hammer / pedal noise to zero.

I did find that I had to play around a little with the dynamics of certain ranges of notes in the note-edit section of Pianoteq but not as much as I did before.

Another important thing in getting the feel of a real acoustic piano is the response of the Sustainer pedal. I did the bit-of-cardboard munge to the sustainer on my NV10 the day after it arrived – the huge dead-zone at the top of the pedal response was absolutely unacceptable. I simply followed the instruction in a YouTube video I found to do this.

The best sustain pedal curve seems to be:
Sustain Velocity = [0, 1, 4, 32, 55, 82, 98, 111, 127; 0, 43, 86, 93, 100, 109, 119, 126, 127]

I use a SoundBlaster unit to drive my headphones (DX300 Pro circa £270). I found that it’s best to simply disable all the clever stuff it can do and use it as an amplifier and headphone driver.

I have a very fast, 15-core Windows Tower running Pianoteq so I have been able to set all the sample rates and polyphony etc. as fast as possible.

I would love to dump the headphones and play around with getting real acoustic piano sounds using the Kawai’s internal speakers driven from Pianoteq but I would finish up having to murder my neighbours, so it’s not going to happen any time soon.

I have put a Bluthner-based preset in the fxp area of this forum that you might like to play with. 2024_03_18_Kawai_NV10_BlüthnerPlayer_H

Thank you for sharing. Quite a methodic and rigorous approach ! Just a question regarding your measurement in the low velocities. Without any adjustment , how easy can you consistently generate velocity between let's say 8 and 28 on the NV10 with linear standard settings ?


Very good question. It was nearly impossible. The values varied widely in the bottom region. The slope of the Kawai's curve there is darned nearly vertical, all the way from 0 to about 50. What I did was loads of tests with a height of 0.5 cm then looked at the rest of the curve and did a pencil-best-fit. I actually doubt if the Kawai Keyboard is reliably / repeatably accurate below values of 50. However, on the bright side, this doesn't actually matter much as that region is right at the bottom of the human force-perception range. I don't think a human could reliably / repeatably play a value of, say, 16 or something. The important part of the curve starts at about 50 and that is where the Kawai starts to talk sense.

PS. I uploaded a demo MP3 (Ugh!) of me messing around with Henry Mancini's beautiful number Moon River this morning. As you can hear, I haven't quite got used to the feel of this preset but it's a superb tone range.

Re: Some results with Kawai NV10

Just a quick update on the experimentation to find a realistic acoustic grand substitute with a Kawai NV10.
I have just uploaded the latest preset I am working with (2024_06_07_Grotrian Recording_H) to the FXP corner area. This one is even closer to the feel and sound of a real acoustic piano than the previous Bluthner preset. Please note that it is for headphones only. For various reasons, I can't use a loudspeaker system so I have no idea what it sounds like over speakers.

Last edited by yeq30 (08-06-2024 12:56)

Re: Some results with Kawai NV10

Notwithstanding the rigorous technical approach (and ignoring whether energy is even the right unit of measure for the purpose), it seems to me the resulting logarithmic velocity curves make the slope far too steep in the upper range, cramming ~75% of the output velocity range into only ~25% of the input range. When I adjusted Pianoteq's response to mirror the loudness (LUFS) response of my RD-700NX's internal sounds (which felt very natural to me from the start), I ended up with a curve that is steeper at low input velocites, shallower across the middle, and steeper again toward the top. This makes it much easier to get nuanced control of dynamics in the middle range where most of the 'action' is. I also raised Pianoteq's Dynamic range to something like 53dB to match the dynamic range of the Roland (and most other VSTis). With the shallower slope across the middle velocities and the lower ultimate level at lower velocities that this allows (because a higher dynamic range extends the loudness range downward), it becomes easier to play at low and moderate velocities yet still possible to 'summon the thunder' when needed.

Ultimately your senses will tell you if these curves are right for you, but I'd be surprised if most players would like them. Just don't let all the effort and thought you put into it over-rule any nagging feeling you might have that it's not working or is taking too much effort to master. Sometimes you have to be able to recognize - and be willing to abandon - a dead end to get where you want to go.

Last edited by brundlefly (08-06-2024 22:10)

Re: Some results with Kawai NV10

Continuing my experiments with presets to emulate a normal, friendly, domestic, acoustic, grand piano with the Kawai NV10:

I have posted a new fxp based on the Kawai Ryuyo (2025_01_16_Shigeru_Kawai_SK-EX_Ryuyo.fxp)

I have also posted an mp3 demo recording (A_2025_01_16_ZdyesHarasho_Prst_2025_01_16.wav) of me using it to play Arcadi Volodos's beautiful arrangement of Rachmaninov's song "Where beauty dwells" (ZdyesHarasho)

This preset uses a velocity curve based on (but not exactly) the one described here and needs the NV10's internal key curve set to USER with values:.
ppp...
10...23...38...54...70...84...98...112

I haven't upoaded the velocity curve separately.

As you can hear, the result is getting very close indeed to a real acoustic piano (and so is the feel when playing).

As usual, I remind anyone reading this that I use headphones only. I have no idea what the fxp sounds like when played through loudsqueakers.




yeq30 wrote:

This isn’t a question really. It’s me sharing a few of the hard-work / experimental results I’ve got. After I’ve introduced myself, I will give you some Velocity Curves and bits of general advice related to using a Kawai NV10 as the keyboard for Pianoteq.

Just before I go any further, remember that you can Copy / Paste the Curve sets I have given below into Pianoteq; you don’t have to type in numbers.

I am an ex-pro classical pianist. I no longer have an acoustic piano but I do have “neighbours” and they don’t like “classical music” (or many other things, truth be told). My sole interest is in getting a high quality normal acoustic grand piano emulation with high quality headphones from a Kawai NV10. I’m not interested in heritage / wacky / weird stuff.

I quickly dismissed the Kawai’s internal voices as useless because of their limited dynamic range (ff .. fff only)

The biggest problem I’ve had to solve with Pianoteq is getting the FULL dynamic range smoothly from ppp to fff without any “sudden” jumps. (I found that setting the Dynamics value too high tended to cause that).

Obviously the main variable here is the keyboard velocity curve. To get this right you have to know exactly what touch response curve the Keyboard is going to send to Pianoteq. To measure this, I built a home-made key-energy calibration gadget which allowed me to measure the MIDI values generated by dropping a known weight (metal rod) from various known heights onto a key. I could calculate the energy with which the metal test rod hit the keys easily as Energy in Joules = Mass * Gravity * Height. However, we don’t really need the energy values themselves here; just the height will do (since the Mass and Gravity are both constants, the height alone can give you a valid relative set of values to work with).

I set the Kawai key touch curve to the default diagonal line first.
ppp    pp    p    mp    mf    f    ff    fff
14    28    42    56    71    85    99    113

I did the tests several times on each of several keys and then average/guessed the best-fit values to eliminate maverick values / outliers and smooth the resulting curve a bit

I guessed that the Kawai would be outputting a roughly logarithmic curve and indeed, it does. The key word here is “roughly”.  Here is a table of one of the results:

The top row is the height in cm that I dropped the weight from.
The bottom row is the Midi value from the Kawai (shown by Pianoteq).

H cm   0.5 1    2    3    4    5    6    7    8    9    10    11    12    20
Midi       2     28    41    70    82    99    103    105    108    109    111    112    113    117
                                                       
The values for 2 and 4 are way out of line with the rest. I left them out and fed the remaining values into Maple and asked it to do a logarithmic fit. The pure log-fit function for the reduced set is:
32.3093037494015 + 34.1056973560305 * ln(t). It’s quite a “rough” fit !

However, the next step is to find an inverse function that Pianoteq can use to undo this curve and give you a smooth dynamic straight-line response. This is easy to work out and gives:
7 * (exp((n - 32.3)/34.1)). Where n is the Midi value from the Kawai. (The factor 7 converts the scaled energy value 0.5 .. 20 to “roughly” 7 bit range.)

Taking 13 points along the received Midi values range:

Midi value    10    20    30    40    50    60    70    80    90    100    110    120   
Convert to    3.6    4.9    6.5    8.8    11.7    15.8    21    28.4    38    50.8    68    92   
Round to            4    5    6    9    12    16    21    28    38    51    68    92   

This produces the basic Pianoteq curve values:

Velocity = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120; 4, 5, 6, 9, 12, 16, 21, 28, 38, 51, 68, 92]

These values then need adjusting to the real world to allow for:
a) errors in the original energy curve data
b) the error of the log-fit curve on the original data
c) the arbitrary force / bit range multiplier of “roughly” 7

Playing with several presets from the Grotrian and Bluthner set, I found the following Velocity curves gave very good results:

Bluthner
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 114]
Dynamics 42
Vol -7.5

Grotrian
Velocity = [0, 45, 57, 68, 79, 88, 94, 99, 104, 108, 112, 115; 0, 3, 5, 11, 19, 30, 42, 54, 68, 81, 99, 113]
Dynamics 40
Vol -10


Grotrian
Velocity = [1, 53, 63, 68, 73, 78, 83, 88, 93, 98, 103, 108, 112; 0, 1, 4, 7, 11, 16, 22, 31, 40, 53, 67, 87, 110]
Dynamics 39
Vol -10

Before I did all this calculation stuff, I did manage to get some quite convincing Velocity curves just by ear and experiment, but actually calculating a proper exponential curve and then munging that to sound good has given me a really nice, acoustic-piano-like dynamic range from the Kawai Keyboard. I’m glad I made the effort. It’s much better.

The two most vital other factors that come in are the Dynamics and Volume settings. The Dynamics settings I found are pretty non-negotiable at around 39 .. 42. I know it’s tempting to crank the Dynamics up and enjoy a billion db of dynamic range but the higher you go above about 42 the worse and less smooth the actual dynamic ramp gets; you find that two adjacent notes played with pretty well exactly the same force produce wildly different volumes and that is pants! The Volume settings, on the other hand, are obviously down to personal taste.

I found that once I had got a few real-life Velocity curves, I didn’t need to play with things like the hammer hardness so much – or even at all. I always set hammer / pedal noise to zero.

I did find that I had to play around a little with the dynamics of certain ranges of notes in the note-edit section of Pianoteq but not as much as I did before.

Another important thing in getting the feel of a real acoustic piano is the response of the Sustainer pedal. I did the bit-of-cardboard munge to the sustainer on my NV10 the day after it arrived – the huge dead-zone at the top of the pedal response was absolutely unacceptable. I simply followed the instruction in a YouTube video I found to do this.

The best sustain pedal curve seems to be:
Sustain Velocity = [0, 1, 4, 32, 55, 82, 98, 111, 127; 0, 43, 86, 93, 100, 109, 119, 126, 127]

I use a SoundBlaster unit to drive my headphones (DX300 Pro circa £270). I found that it’s best to simply disable all the clever stuff it can do and use it as an amplifier and headphone driver.

I have a very fast, 15-core Windows Tower running Pianoteq so I have been able to set all the sample rates and polyphony etc. as fast as possible.

I would love to dump the headphones and play around with getting real acoustic piano sounds using the Kawai’s internal speakers driven from Pianoteq but I would finish up having to murder my neighbours, so it’s not going to happen any time soon.

I have put a Bluthner-based preset in the fxp area of this forum that you might like to play with. 2024_03_18_Kawai_NV10_BlüthnerPlayer_H