开云体育

ctrl + shift + ? for shortcuts
© 2025 开云体育

Velocity Layers


 

Hello, folks, we might have discussed this before, but I don't remember an
answer.

I seriously doubt, based on the EPROM chip capacity, that Kurzweil used 128
discrete velocity levels in each of their samples -- there's probably a set
of them at specific MIDI velocity levels, and everything else is handled
through volume and some other parameters. So, that said, anyone know how
many Kurzweil used, and at what approximate break points they set those
different layers to trigger?

Any direction will be greatly appreciated -- I need to sample some of the
sounds from my GX, Pro1, and Pro2, and I want the best fidelity possible,
but I also want reasonable file sizes.

Oh, and David E, do you possibly have a patch list for the GX bass patch
sysex you sent me? I'm still having difficulty getting it to show up in my
GX's.
Nicole

Sent from my HAL 9000 in transit to Jupiter


 

I think it's the Keymap object that does the velocity switching. It can have up to 8 levels (fff ff f mf mp p pp ppp) where each one can point to a different sound block ID, with possible attenuation and tuning values. It's been awhile but aren't the fff-ppp levels set somewhere global? ?I think I used to have something to dump the keymaps... I'll see if I can find it and what it says.


 

That would be great. And leave it to Kurzweil to put it in traditional dynamic marking terms. This is going to be a semi-automated process -- first run the entire range of notes at one velocity value, then the next, and all the way to the loudest, all in a single track. Start record and the sequencer and let it go. When it stops save the patch name in the file and increment the patch up one, then do it all over again. Then comes the slicing and dicing and dropping into an SFZ file before changing that to SF2 and Emulator III formats. It'll be slow, but when it's done I'll have a portable version of the sounds.

-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of Mike via groups.io
Sent: Monday, November 11, 2024 1:25 PM
To: [email protected]
Subject: Re: [K1000-K1200] Velocity Layers

I think it's the Keymap object that does the velocity switching. It can have up to 8 levels (fff ff f mf mp p pp ppp) where each one can point to a different sound block ID, with possible attenuation and tuning values. It's been awhile but aren't the fff-ppp levels set somewhere global? I think I used to have something to dump the keymaps... I'll see if I can find it and what it says.


 

I finally put something together that might be useful.
The files are up on Google Drive at
?
?
Folder is "K1000 Keymaps" with two files:
? ? k1_kmap_sblk-readme.txt
? ? k1_kmap_sblk.zip
?
I think I made it so ppl with the link can access it. Let me know otherwise. ?The zip is 153KB.
?
Here is the readme...
?
Kurzweil 1000 series KeyMap and SoundBlock dumps
?
These files contain listings of the objects in some 1000 series object files. The files were found on the k1000.net site, or extracted from ROM images found there.
?
These files also contain dumps of the keymaps and soundblocks. Each model has a plain text file and a CSV file, in case that is more convenient. They contain the same information.
?
README.txt
pro123_srom.csv ? ?pro123_srom.txt
pro2_dump.csv ? ?? pro2_dump.txt
pro3_rom.csv ? ? ? pro3_rom.txt
pro76_srom.csv ? ? pro76_srom.txt
?
?
A sound block dump shows the key range of each sample ("sound file header"). The sample locations and natural envelopes are not dumped.
?
SoundBlock ? ? 2 ? 288 Trumpet
? ? ? ?baseid=1 headers=6
? ? ? ?SFH ? ? ID ? ? ?Root ? ?LoNote ?HiNote
? ? ? ?SFH ? ? 1 ? ? ? 58 ? ? ?A#3 ? ? G#4
? ? ? ?SFH ? ? 2 ? ? ? 65 ? ? ?F4 ? ? ?E5
? ? ? ?SFH ? ? 3 ? ? ? 70 ? ? ?A#4 ? ? A5
? ? ? ?SFH ? ? 4 ? ? ? 77 ? ? ?F5 ? ? ?D#6
? ? ? ?SFH ? ? 5 ? ? ? 82 ? ? ?A#5 ? ? G#6
? ? ? ?SFH ? ? 6 ? ? ? 89 ? ? ?F6 ? ? ?F7
A keymap dump shows header settings, and key ranges for each dynamic level.
The keymap references samples (sound files) inside the selected sound block.
The number of dynamic levels actually used ranges from 1 to 5.
?
KeyMap ? ? ? 106 ? ?95 Electric Bass
? ? ? ?lowkey=16 nkeys=49 E0 to E4 n/oct=12 pitch=400 E0 ct/key=100
? ? ? ?flags=0 $00 (no atten per key) (no tuning adjust)
? ? ? ?soundID=22 $16 'Electric Bass'
? ? ? ?nlevels=1 timbres 0 0 0 0 0 0 0 0 ? fff->ppp
? ? ? ?Level ? Dynamics ? ? ? ?nKeys ? ? Lo ? ? ?Hi ? ?SBid ? ? ?SBname ? ? ? ? SFid
? ? ? ?0 ? ? ? fff ff f mf mp p pp ppp 18 ? ? ?E0 ? ? ?A1 ? ? ?22 ? ? ?'Electric Bass' 1
? ? ? ?0 ? ? ? fff ff f mf mp p pp ppp 6 ? ? ? A#1 ? ? D#2 ? ? 22 ? ? ?'Electric Bass' 2
? ? ? ?0 ? ? ? fff ff f mf mp p pp ppp 6 ? ? ? E2 ? ? ?A2 ? ? ?22 ? ? ?'Electric Bass' 3
? ? ? ?0 ? ? ? fff ff f mf mp p pp ppp 6 ? ? ? A#2 ? ? D#3 ? ? 22 ? ? ?'Electric Bass' 4
? ? ? ?0 ? ? ? fff ff f mf mp p pp ppp 13 ? ? ?E3 ? ? ?E4 ? ? ?22 ? ? ?'Electric Bass' 5
Sometimes the information is stored and displayed in a different format (percussion instruments). These contain settings for 8 dynamic levels, but in each case all the ranges point to the same sample.
?
KeyMap ? ? ? 140 ? ?46 Triangle 1/2
? ? ? ?lowkey=24 nkeys=70 C1 to A6 n/oct=12 pitch=2400 C2 ct/key=50
? ? ? ?flags=0 $00 (no atten per key) (no tuning adjust)
? ? ? ?soundID=36 $24 'Pxb Perc'
? ? ? ?nlevels=0 timbres 13 13 13 13 13 13 13 13 ? fff->ppp
? ? ? ?Dyn ? ? LoNote ?HiNote ?SBlkID ?SBlkName ? ? ?SFileID
? ? ? ?fff ? ? C1 ? ? ?A6 ? ? ?36 ? ? ?'Pxb Perc' ? ? ?13
? ? ? ?ff ? ? ?C1 ? ? ?A6 ? ? ?36 ? ? ?'Pxb Perc' ? ? ?13
? ? ? ?f ? ? ? C1 ? ? ?A6 ? ? ?36 ? ? ?'Pxb Perc' ? ? ?13
? ? ? ?mf ? ? ?C1 ? ? ?A6 ? ? ?36 ? ? ?'Pxb Perc' ? ? ?13
? ? ? ?mp ? ? ?C1 ? ? ?A6 ? ? ?36 ? ? ?'Pxb Perc' ? ? ?13
? ? ? ?p ? ? ? C1 ? ? ?A6 ? ? ?36 ? ? ?'Pxb Perc' ? ? ?13
? ? ? ?pp ? ? ?C1 ? ? ?A6 ? ? ?36 ? ? ?'Pxb Perc' ? ? ?13
? ? ? ?ppp ? ? C1 ? ? ?A6 ? ? ?36 ? ? ?'Pxb Perc' ? ? ?13
?
Before relying on the keymap/soundblock information, please examine a few?
of them carefully. I'm pretty sure I decoded things correctly, but I do not?
have a way to double check the results.
?
Please let me know of any mistakes you find, or any improvements you want.
Thanks!
?
Right now they are hosted on Google Drive at
? https://drive.google.com/drive/folders/1KQP4UuWSpxPxCvPTZsCyoAxqROUm-RcD?usp=sharing
?
Mike Hall
mgha1123@...
2024-12-10
?
Let me know if it helps, or if anyone sees errors, or if you want different ROMS, or if this is a stupid thing to do.
As the note says, I don't have an instrument to check these results... sorry 'bout that.
The k1000.net folks are welcome to host it (seeing as so much of the info came from there),
but maybe we should let it cook a while to work out the problems first.
?
HTH.
Thanks!
?


 

Great job, Mike!
?
? Finally, I see that I am not alone at RE attempts with this, I have to say VERY "hacker-friendly" family of synths! (meaning K1000 range). Need to check your files further, for now just wanted to say that I was able to decode sample ROM data to their original 12-bit linear PCM format, and as far as I can remember there's definitely nowhere near 8 levels of velocity - at least not for pianos (but I need to double-check how many I was able to find).
? If you / anyone in the group is interested ready to share my findings!
?
Regards,
Alexey.
?


 

Please share. I'm going to want to capture the different layers when I sample the units, because carting 24 rack spaces of synths and an extra keyboard isn't in the cards for my life rig. I want to have all the possible velocity layers in the samples, and since SFZ and Sound Fonts can handle an unlimited number it's worth the time (which will probably be pretty much automated) to put these banks together.
Nicole

-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of alex@...
Sent: Wednesday, December 11, 2024 11:47 PM
To: [email protected]
Subject: Re: [K1000-K1200] Velocity Layers

Great job, Mike!

Finally, I see that I am not alone at RE attempts with this, I have to say VERY "hacker-friendly" family of synths! (meaning K1000 range). Need to check your files further, for now just wanted to say that I was able to decode sample ROM data to their original 12-bit linear PCM format, and as far as I can remember there's definitely nowhere near 8 levels of velocity - at least not for pianos (but I need to double-check how many I was able to find).
If you / anyone in the group is interested ready to share my findings!

Regards,
Alexey.


 

From my reading, the SoundBlocks have no notion of "loudness" setting. ?It's just a wrapper for a collection of samples (sound file IDs).
For example, the "Choir" soundblock has 13 samples:
?
SoundBlock ? ? 9 ? 594 Choir
? ? ? ? baseid=1 headers=13
? ? ? ? SFH ? ? ID ? ? ?Root ? ?LoNote ?HiNote
? ? ? ? SFH ? ? 1 ? ? ? 43 ? ? ?G2 ? ? ?F3
? ? ? ? SFH ? ? 2 ? ? ? 45 ? ? ?A2 ? ? ?C4
? ? ? ? SFH ? ? 3 ? ? ? 48 ? ? ?C3 ? ? ?D#4
? ? ? ? ...
?
and the program "Ext Dyn Choir" has 5 dynamic ranges that use the same sound file IDs (samples):
?
KeyMap ? ? ? ?32 ? 356 Ext Dyn Choir
? ? ? ? lowkey=31 nkeys=62 G1 to G#6 n/oct=12 pitch=1900 G1 ct/key=100
? ? ? ? flags=0 $00 (no atten per key) (no tuning adjust)
? ? ? ? soundID=9 $09 'Choir'
? ? ? ? nlevels=5 timbres 0 0 1 2 3 4 4 4 ? fff->ppp
? ? ? ? Level ? Dynamics ? ? ? ?nKeys ? Lo ? ? ?Hi ? ? ?SBid ? ?SBname / SFid
? ? ? ? 0 ? ? ? fff ff ? ? ? ? ?20 ? ? ?G1 ? ? ?D3 ? ? ?9 ? ? ? 'Choir' 1
? ? ? ? 0 ? ? ? fff ff ? ? ? ? ?3 ? ? ? D#3 ? ? F3 ? ? ?9 ? ? ? 'Choir' 2
? ? ?? ? ? ? ...? ?
? ? ? ? Level ? Dynamics ? ? ? ?nKeys ? Lo ? ? ?Hi ? ? ?SBid ? ?SBname/ SFid
? ? ? ? 1 ? ? ? ? f ? ? ? ? ? ? 17 ? ? ?G1 ? ? ?B2 ? ? ?9 ? ? ? 'Choir' 1
? ? ? ? 1 ? ? ? ? f ? ? ? ? ? ? 3 ? ? ? C3 ? ? ?D3 ? ? ?9 ? ? ? 'Choir' 2
? ? ?? ? ? ? ...? ?
? ? ? ? Level ? Dynamics ? ? ? ?nKeys ? Lo ? ? ?Hi ? ? ?SBid ? ?SBname / SFid
? ? ? ? 2 ? ? ? ? ?mf ? ? ? ? ? 15 ? ? ?G1 ? ? ?A2 ? ? ?9 ? ? ? 'Choir' 1
? ? ? ? 2 ? ? ? ? ?mf ? ? ? ? ? 2 ? ? ? A#2 ? ? B2 ? ? ?9 ? ? ? 'Choir' 2
? ? ?? ? ? ? ...? ?
? ? ? ? Level ? Dynamics ? ? ? ?nKeys ? Lo ? ? ?Hi ? ? ?SBid ? ?SBname / SFid
? ? ? ? 3 ? ? ? ? ? mp ? ? ? ? ?11 ? ? ?G1 ? ? ?F2 ? ? ?9 ? ? ? 'Choir' 1
? ? ? ? 3 ? ? ? ? ? mp ? ? ? ? ?4 ? ? ? F#2 ? ? A2 ? ? ?9 ? ? ? 'Choir' 2
? ? ?? ? ? ? ...? ?
? ? ? ? Level ? Dynamics ? ? ? ?nKeys ? Lo ? ? ?Hi ? ? ?SBid ? ?SBname / SFid
? ? ? ? 4 ? ? ? ? ? ?p pp ppp ? 9 ? ? ? G1 ? ? ?D#2 ? ? 9 ? ? ? 'Choir' 1
? ? ? ? 4 ? ? ? ? ? ?p pp ppp ? 3 ? ? ? E2 ? ? ?F#2 ? ? 9 ? ? ? 'Choir' 2
? ? ?? ? ? ? ...? ?
?
So I think the Keymap object is playing with the attenuation here.
?
To sample the instrument, I'd look at the SoundBlocks, see the key ranges, then find the simplest Keymap that gets you the full coverage.
?
?
?


 

Yes, exactly. It would be far too much to hope that they use consistent key ranges across different samples, but yes, that would do great things for reducing the amount of memory the samples take. IIRC, these are sixteen bit, right? Or are they twelve bit?

I'm so looking forward to having my sounds again, especially things like the Krellian Music patch from the 1000GX, it's wonderful for textural stuff.
Nicole

-----Original Message-----
From: [email protected] <[email protected]> On Behalf Of Mike via groups.io
Sent: Saturday, December 14, 2024 5:55 PM
To: [email protected]
Subject: Re: [K1000-K1200] Velocity Layers

From my reading, the SoundBlocks have no notion of "loudness" setting. It's just a wrapper for a collection of samples (sound file IDs).
For example, the "Choir" soundblock has 13 samples:

SoundBlock 9 594 Choir
baseid=1 headers=13
SFH ID Root LoNote HiNote
SFH 1 43 G2 F3
SFH 2 45 A2 C4
SFH 3 48 C3 D#4

...

and the program "Ext Dyn Choir" has 5 dynamic ranges that use the same sound file IDs (samples):

KeyMap 32 356 Ext Dyn Choir
lowkey=31 nkeys=62 G1 to G#6 n/oct=12 pitch=1900 G1 ct/key=100
flags=0 $00 (no atten per key) (no tuning adjust)
soundID=9 $09 'Choir'
nlevels=5 timbres 0 0 1 2 3 4 4 4 fff->ppp
Level Dynamics nKeys Lo Hi SBid SBname / SFid
0 fff ff 20 G1 D3 9 'Choir' 1
0 fff ff 3 D#3 F3 9 'Choir' 2
...
Level Dynamics nKeys Lo Hi SBid SBname/ SFid
1 f 17 G1 B2 9 'Choir' 1
1 f 3 C3 D3 9 'Choir' 2
...
Level Dynamics nKeys Lo Hi SBid SBname / SFid
2 mf 15 G1 A2 9 'Choir' 1
2 mf 2 A#2 B2 9 'Choir' 2
...
Level Dynamics nKeys Lo Hi SBid SBname / SFid
3 mp 11 G1 F2 9 'Choir' 1
3 mp 4 F#2 A2 9 'Choir' 2
...
Level Dynamics nKeys Lo Hi SBid SBname / SFid
4 p pp ppp 9 G1 D#2 9 'Choir' 1
4 p pp ppp 3 E2 F#2 9 'Choir' 2
...

So I think the Keymap object is playing with the attenuation here.

To sample the instrument, I'd look at the SoundBlocks, see the key ranges, then find the simplest Keymap that gets you the full coverage.