Can I have a non-repeating Keyboard Mapping in ZynAddSubFx?

Official support for: zynaddsubfx.sourceforge.net
Post Reply New Topic
RELATED
PRODUCTS

Post

Hi,
[I don't know if I am using exactly the proper terms here, in my subject].

I'd like to render some recordings (16 bit 44.1 kHz wav files, probably mono) of Bach Chorales (and other compositions too) in e.g. Quarter-Comma Meantone for educational purposes. [I assure you, no actual music will be harmed in the making of these recordings]
I'm using ZynAddSubFx version 2.4.1.496beta via VSTHost.

I'm looking for a solution for situations where more than 12 separate pitch classes occur in the piece. I'll use as an example one with 7 natural notes, 3 sharps, and 3 flats, that is - both G# and Ab are needed. It certainly works to splice together sections where the appropriate scale is set for the recording. I've done this, but it is a bit tedious for lots of recordings - it takes time to find spots where near-zero crossings of the wave data occur at the junctures.

However, I can see another way to do this, but I don't know if it is possible to load an entire non-standard map of the MIDI notes into ZASF. When I read about KBM files, I thought "Aha, Keyboard Mapping" and hoped that might help; but then when I found examples, at least the ones I saw, they seem just to be a direction on how to propagate a scala file [i]in a regular manner [/i]throughout the range. In fact they seem quite useless. Is that all these .kbm files ever do?
===========================

! Template for a keyboard mapping
!
! Size of map. The pattern repeats every so many keys:
12
! First MIDI note number to retune:
0
! Last MIDI note number to retune:
127
! Middle note where the first entry of the mapping is mapped to:
69
! Reference note for which frequency is given:
69
! Frequency to tune the above note to
415
! Scale degree to consider as formal octave (determines difference in pitch
! between adjacent mapping patterns):
12
! Mapping.
! The numbers represent scale degrees mapped to keys. The first entry is for
! the given middle note, the next for subsequent higher keys.
! For an unmapped key, put in an "x". At the end, unmapped keys may be left out.
0
1
2
3
4
5
6
7
8
9
10
11

===============================
or was I unlucky in my kbm search, and there is something more sophisticated possible?

These compositions use a much smaller range than the entire MIDI compass of 127 notes, for example I will say they are limited to the 49-note range from CC to c''', standard MIDI note-numbers of 36 to 84 inclusive. What I envision is that I could define some MIDI notes [i]outside [/i]this range as the extra pitches needed. Say my scala file tunes G# correctly and I need both G# and Ab on note 44 for example.
If I can define say note 85, which otherwise would never appear in the play file, as the pitch of Ab, I could manually rewrite the MIDI performance file to read 85 instead of 44 for the instances where I need the Ab pitch, not the G#. So I could render the entire wav file by playing that altered MIDI file straight through.

Any synth must have an internal array that links the MIDI note number to the location in memory of the sound for that note. So is there a way I can define for ZASF the details of the pitches in the way I want, providing a full list of the pitches of each individual MIDI note?

Many thanks,
Michael
Michael

Post Reply

Return to “ZynAddSubFX”