From: Christian S. <sch...@li...> - 2013-01-13 13:23:22
|
On Saturday 12 January 2013 20:49:46 Jostein Chr. Andersen wrote: > After a look at http://www.linuxsampler.org/, I have a little comment > about this commit: > > 2013-01-08 schoenebeck > * Exclusive Groups: don't ever stop voices of the same note, > doesn't sound naturally with a drumkit. First off, I was a bit imprecise in that comment: this change only affects the Gig format engine so far, not the SF or SFZ engines yet. > This change is good for most drum items, for example when you play a ride > cymbal, but not for a hi hat. A good professional sampled HH have many > layers of openness - not only closed HH and open HH - but also many layers > between this two states. And in this case, this samples with velocities and > each velocity's level of openness be in the same note and be controlled > with a drum pad with it's pedal or a key and a CC (for example an > expression pedal). Another example is that a roll from the right stick > need the be killed when you hit a roll again with the right stick. It will > be many thing thing going on if former samples don't die when yo play roll > samples with both right and left hands! Actually I am not yet sure about the best way to handle that. So maybe we can discuss this a bit more. I was recently investigating how to make high quality drumkits sound as natural as possible with the sampler. And fact is, the way it was before the mentioned commit above, that is when voices of an exclusive group were killed even when triggering the same note again, sounded horrible synthetically. Especially on a ride cymbal, when the sampler simply chops off the previous voice while playing a roll on the cymbal, that sounds like somebody is pressing the fast rewind button on a CD player, but definitely not like a natural kit. But since a drumkit has to obey the layout of a typical MIDI drumkit, so it can be played with i.e. any E-Drumkit (using pads), the ride cymbal has to be placed into an exclusive group, right? > Also, think about a hi hat that you open and close gradually when it is > hit, the former hits really needs to be quiet - especially when you > gradually close the HH while playing on it. It sounds terrible when a old > sample with a longer decay still sounds when the last hit HH sample (IE a > closed HH) already is dead a HH don't play an open and closed hit at the > same time! Right, the hi hat is probably the most complicated part in a high quality drumkit at all. So far I have just experimented with simple two way open/closed versions of hi hats, but not yet version where you can control the openness gradually. So I still have to experiment with that these days ... Before I commited this change, I discussed it with Andreas, because I was unsure about it as well. And he said, it seems as GigaStudio is solving it like this: it chops off voices of the same note in an exclusive group, however with a longer release time than LinuxSampler (did). So I am wondering if that would be the best trade off for this overall problem. What do you think? CU Christian |
From: rosea.grammostola <ros...@gm...> - 2013-01-13 13:42:40
|
FYI, here you can find pretty some (recent) SFZ mappings for drumkits, which might be nice as reference http://www.drealm.info/sfz/AnalogueDrums/ In the Bigmono Linuxsampler sfz file I read: ====================== // Here are those off_bys - linuxsampler doesn't yet support end=-1 for silent regions // closed, so off_by 2 is anything vaguely open: <group> end=-1 ampeg_sustain=-96 volume=-48 sample=Rodgers_DynRH02.wav group=2 <region> key=053 hicc4=124 locc4=000 <region> lokey=056 hikey=057 // closed, so off_by 8 is anything vaguely open: <group> end=-1 ampeg_sustain=-96 volume=-48 sample=Rodgers_DynRH02.wav group=8 <region> key=053 hicc4=124 locc4=000 <region> lokey=056 hikey=057 // semiOpen, so off_by 4 is anything closed: <group> end=-1 ampeg_sustain=-96 volume=-48 sample=Rodgers_DynRH02.wav group=4 <region> key=053 hicc4=127 locc4=125 <region> lokey=054 hikey=055 <region> key=058 // open, so off_by 6 is anything less open: <group> end=-1 ampeg_sustain=-96 volume=-48 sample=Rodgers_DynRH02.wav group=6 <region> key=053 hicc4=127 locc4=063 <region> lokey=054 hikey=056 <region> key=058 ====================== I wrote Pljones about it: PS2. I think LinuxSampler does support 'end=' now >> It wasn't "end=" but "end=-1" that was missing. It was in sfz.exe, meaning "process the region but don't play a sample at all"... It's was a dirty hack but very useful for mute groups. sforzando and ARIA Player have a much cleaner sample=*silence to mean the same thing (sfz.exe required a sample= reference to a file that existed, even with end=-1...). Hth |
From: Jostein C. A. <jo...@va...> - 2013-01-31 23:25:19
|
Hi Christian, I'm verry sorry for the late reply. I had to much to do and the last week and a half has been dedicated to fluefighting. Christian Schoenebeck wrote: ... > again, sounded horrible synthetically. Especially on a ride cymbal, when > the sampler simply chops off the previous voice while playing a roll on > the cymbal, that sounds like somebody is pressing the fast rewind button > on a CD player, but definitely not like a natural kit. > > But since a drumkit has to obey the layout of a typical MIDI drumkit, so > it can be played with i.e. any E-Drumkit (using pads), the ride cymbal has > to be placed into an exclusive group, right? The ride is tricky, because different parts of the ride can give noise at the same time (IE. bell and edge). But in the real life,the ride's context will usually be in a mix, so I think that a new hit it should mute the previous one, but let it decay over let's say 60-100 ms or something. >> Also, think about a hi hat that you open and close gradually when it is >> hit, the former hits really needs to be quiet - especially when you >> gradually close the HH while playing on it. It sounds terrible when a old >> sample with a longer decay still sounds when the last hit HH sample (IE a >> closed HH) already is dead a HH don't play an open and closed hit at the >> same time! > > Right, the hi hat is probably the most complicated part in a high quality > drumkit at all. So far I have just experimented with simple two way > open/closed versions of hi hats, but not yet version where you can control > the openness gradually. So I still have to experiment with that these days If I recall right, the Big Mono kit from Analogue Drums have three degrees of openess for the HH and it's free of charge: http://www.analoguedrums.com/details-bm.php And it sounds great too! :-) > Before I commited this change, I discussed it with Andreas, because I was > unsure about it as well. And he said, it seems as GigaStudio is solving it > like this: it chops off voices of the same note in an exclusive group, > however with a longer release time than LinuxSampler (did). So I am > wondering if that would be the best trade off for this overall problem. > > What do you think? A dynamic and natural HH really demands that the previous sample are muted when it gets a new hit. Maybe a Linuxsampler specific opcode or two will fix that? Is it possible to do somthing like this in stead of having nomuting as default: A global flag (ls_nomute=yes (default?)) and an override opcode that is valid in a region (ls_nomute=no) ? I think that this way, Linuxsampler can handle a "real" drumset. Jostein |
From: Jostein C. A. <jo...@va...> - 2013-02-01 19:08:43
|
Hi again Christian, Just to get you in the mood and potentially been bitten by any problem that can occure when dealing with drum samples: Here is info about the UFIP 13" "Bionic Series" HH (3504 samples!) and anythin els in Natural drum Kit: http://naturaldrum.com/docs/NDKManual.pdf The presets in the NDK are for Halion and Kontakt. Two interesting HH related pages is 36 (mapping chart) 33 (openness, Halion) 29 (articulation map). If you look at page 36, then you can see that the left hand HH is at F0 (MIDI note 17) and the right one at F3 (41) and that the modulation wheel will control (0-46) are controlling the openness of the HH. It's more that 20 degrees of openness for the ordinary stics samples! One serious problem with NDK is that panning (stereo samples) are chopped out in stone, so I extracted the strongest channel of each sample and monoized it, making it possible to "record" every drum item in mono as in most real life situation. Then I made one gig for each drum item (one for HH, one for snare, one for each tom and so one), but not on every sample. NDK consists of many kits and I've been vaiting nearly 3 years (if I remember right) for a mature enough implementation of SFZ in LS. I'm glad I did not have the time to make SFZs of NDK the last year. :-) For me, the NDK is so good sounding that it's worth the wait having LS handle it. I think that both GIG and possible SFX have some shortcomings when it comes to handlig a drumset like this, but as I mentioned earlier: LS spesific opcodes kan deal with it. ....no wonder that many sample libraries comes with their own players! :-) Jostein |
From: Christian S. <sch...@li...> - 2013-02-04 12:57:24
|
On Friday 01 February 2013 00:24:56 Jostein Chr. Andersen wrote: > I'm verry sorry for the late reply. I had to much to do and the last week > and a half has been dedicated to fluefighting. No problem. I also had no chance yet to follow this topic. Was distracted with some other work. > The ride is tricky, because different parts of the ride can give noise at > the same time (IE. bell and edge). But in the real life,the ride's context > will usually be in a mix, so I think that a new hit it should mute the > previous one, but let it decay over let's say 60-100 ms or something. [snip] > A dynamic and natural HH really demands that the previous sample are muted > when it gets a new hit. Both solutions, killing and not killing voices at all are both suboptimal. However I was also experimenting in a studio with a professional drummer, and we both found that the sound is much more worse and unrealistic, if a previous voice gets killed too quickly. No matter what kind of samples one is using, it would always sound like a digital toy. > Maybe a Linuxsampler specific opcode or two will fix that? Is it possible > to do somthing like this in stead of having nomuting as default: A global > flag (ls_nomute=yes (default?)) and an override opcode that is valid in a > region (ls_nomute=no) ? > > I think that this way, Linuxsampler can handle a "real" drumset. Currently I think about using the following 2 changes: 1. hard code a default release time for exclusive groups, which is not too fast and not too long, like you said, something around 100ms. GigaStudio seems to behave like this. And it would already be a bearable workaround for drumkits IMO. 2. Adding extensions to the gig as well as to the sfz format engines, allowing to optionally define 2 exact release times for exclusive group kills: - 1 parameter for release time for exclusive group killing voices on the same note and - 1 release time for exclusive group killing voices on a foreign note. Maybe Garritan or somebody already invented some opcode for this already? CU Christian |