On 05/25/18 13:11, Christian Schoenebeck wrote:
On Donnerstag, 24. Mai 2018 11:45:23 CEST Hans Petter Selasky wrote:
Is there any interest into extending the number of MIDI keys from 128 to
128 * 16 in LinuxSampler ?

There is probably no high demand for such a feature. Are there actually any
real devices which are doing it exactly this way (borrowing from MIDI channel
bits that is)?

I mean there are real devices which support a more fine graded note control
beyond the 128 notes limitation. But usually they do it like this: they send a
regular note-on (0-127), then they send a regular coarse/fine tuning message
pair, and if the new note would be a note nr where another note is already
active on, then they simply send it on another MIDI channel for not changing
the tuning of the old note.

CU
Christian

Hi,

I didn't know there were MIDI coarse/fine tuning messages and these also work realtime? Do you have a reference?

I've made a patch for ZynaddSubFX to do this:

https://sourceforge.net/p/zynaddsubfx/code/ci/hps-subdivision-feature/tree/

The reason is that for organ sounds you don't get a phase polluted major unless you adjust the tones a bit.

Here is the math:

C-major frequencies:

C = base * pow(2.0, 0 / 12.0)
E = base * pow(2.0, 4 / 12.0)
G = base * pow(2.0, 7 / 12.0)

The base frequency is not relevant, so cancel it.

C-major frequency factors:

C = pow(2.0, 0 / 12.0)
E = pow(2.0, 4 / 12.0)
G = pow(2.0, 7 / 12.0)

Computing all the differential tones in logarithmic scale and get:

12.0 * log(G - C) / log(2) = -12.059   ... 5.9 cent over
12.0 * log(G - E) / log(2) = -24.824   ... 82.4 cent over
12.0 * log(E - C) / log(2) = -23.326   ... 67.4 cent under

12.0 means the 12'th halftone
24.0 means the 24'th halftone
osv.

Trying to rectify this with 96 tones per octave:

C = pow(2.0, 0 / 12.0)
E = pow(2.0, 3 / 12.0 + 7 / 96.0)
G = pow(2.0, 7 / 12.0)

12.0 * log(G - C) / log(2) = -12.059   ... 5.9 cent over (same as before)
12.0 * log(G - E) / log(2) = -24.177   ... 17.6 cent over
12.0 * log(E - C) / log(2) = -23.941 ... 5.9 cent under (identical error - cancels)

Examples with samples from Nord Electro adjusted using aduacity:

http://home.selasky.org/privat/nord/major_CEG_corrected.mp3
http://home.selasky.org/privat/nord/major_CEG_uncorrected.mp3

Summary in C-major the E shall be reduced by:
(8-7)/96*1200 = 12.5 cent

To reduce phase errors.

--HPS

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxsampler-devel mailing list
Linuxsampler-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel

Reply via email to