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