|
From: Hans P. S. <hp...@se...> - 2018-05-25 12:16:09
|
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 |