This forum is now locked and moved (back) to Plogue's forum http://plogue.com/phpBB3/viewforum.php?f=14
Polyphony
  • sforzando has player-level polyphony user-selectable between 1 and 128.  As I understand it, that number is pretty meaningless in terms of the number of actual samples being played at any one time... which is the same as saying I guess I don't understand what that number means or how it relates to "used layers" figure on the Settings tab.

    That's pretty much by the by...

    What I'd like to do is be able to either set or hint to the player the number of layers I want playing at <group> (or other) level... something's escaping me on this though, as I can't think how.

    The problem is that if I'm playing a drum kit with a ride cymbal, tapping away happily, each tap triggers a sample that lasts 22 seconds.  If I'm tapping four times a second, that's a lot of samples playing... just on the ride... and probably unnecessary: I'd like maybe to only have four concurrently...

    I think this is what's lead to the apparently poor performance of sforzando with this drum kit I'm mapping, compared to how Kontakt handles it: Kontakt has limited polyphony for each group - I'd like something equivalent.  I just can't think of how to do it...

    (Note that I'd like to vary the polyphony per kit piece: some pieces I could get away with two concurrent samples, some might need four or six even...)

    -- Frustrated...
  • are you talking about a choke group? that's how most samplers handle drum/perc samples like you explain.
  • No, that's not the same as polyphony.  I used the example of the ride as it's completely unrelated to choke groups.  Choke groups apply where you have something like a crash and a choked crash or varying degrees of openness on a hi-hat, plus pedalled and splashed.  Polyphony applies there, in addition.

    To make it clearer, you could use "self-choking" where one hit on a kit piece effectively chokes a previous hit on that same kit piece.  However, this doesn't let you specify polyphony.  It means you can trigger release processing on the immediately preceding hit, though, which limits polyphony.  So if you're after very limited polyphony this is a possible approach.  However, I'm after specifying polyphony explicitly.

    In the ride example, if I hit the ride twice, I want both hits to carry on ringing for the full sample length.  If I hit a third and fourth time, I still want all four to play.  With a polyphony of four, a fifth hit would trigger release processing on the first hit, a sixth would affect the second hit, etc.

    It's all made more complicated by the fact that when I hit the ride, it's not just one sample that's triggered - samples from up to four different groups (with up to eight velocity layers and six random-robin selections) will trigger, depending on how many mics were used in sampling the kit.  I'd expect polyphony to apply at the <group> level, which would mean saying "four" could end up with sixteen samples playing.
  • davidvdavidv
    Posts: 453

    The engine's main polyphony is a hard maximum, whatever the SFZ programming. And yes its for layers and not for samples or notes, but actual <region> playing.

    SFZ has polyphony=X which is tied to group=Y  (in a odd design group= is unrelated to <group>)

    You can also use the little know opcode note_polyphony=  (which at least in aria is also tied to a group=Y id)

    http://forum.cakewalk.com/tm.aspx?m=825294&mpage=1&print=true

    I realise thats not in the "book" as well. Lots of holes in that book.

  • davidvdavidv
    Posts: 453

    I would need a full writeup on polyphony groups and their intricacies. However, ARIA might treat that whole thing differently than Dimension since the documentation on that is as you know quite rare.

    If you see "Polyphony discrepancy" popups, then thast my implementation being rather strict. You cant have different values of off_by/polyphony/note_polyphony in two <region> with the same group= opcode.

  • OK, using group= makes some sense.  I think I can certainly get it to work with group= although there will be places I'm having to take care as I already have group= opcodes in place for use with off_by=.

    By the way, I really like the discrepancy warnings - whilst hard to track down, they save far more time in debugging later.

    Thanks!
  • Hm.  Looking into this further...

    If I'm using group=/off_by= on the hi-hat for choking, that's giving me a dozen separate groups already.  I want a single level of polyphony control across the whole lot, though - e.g. no more than six notes playing, regardless of which choke group they were in.  (I also do not want the *silence regions being counted toward the polyphony...)

    That's really what I meant by choking and polyphony being distinct concepts.  Using "group=" for both is going to cause me problems, I think.

    However, it is complicated by having multiple different note numbers triggering the same set of samples -- which would want counting toward the same polyphony count.  So it can't be a straight-up note-level polyphony...

    Detail:
    One polyphony "group" would cover hat bow tight-closed through open on one note, plus one note each; hat stick-tip hit; hat pedal; hat splash...  The choking is multi-level: less open hat hits choke more open ones, but not the other way around and with a couple of "exceptions to the rule".  That lead to two sets of six group=, one for the sounding note "rules" and one for the choking note "rules", with the choking notes simply being sample=*silence.

    I guess it begs for polyphony_group=/polyphony_limit_&= or something...
  • The mappings in question live here: http://www.drealm.info/sfz/AnalogueDrums/

    The Gorilla kit, updated today (30 December 2012) shows the complexity that I'm already dealing with quite nicely...
  • davidvdavidv
    Posts: 453
    Briefly looked at the sfz files. Wow, I don't even think Jeff used that many includes :) Good to know they are useful!
  • As with any "new thing", I like to go overboard the first few times I use it... :)  It has made setting up four very similar kits very much less tedious, though.  #define/#include is a very powerful way of expressing form.

    (I'd love to be able to "pass parameters" on a #include -- something like "#include var=value filenamehere.sfz", where var get substituted with value only in filenamehere.sfz -- that would have saved me a few sets of includes in places, I think.)
  • kinwiekinwie
    Posts: 61
    hi davidv,

    i want to ask a question regarding group=/off_by= behaviour in sforzando.

    in old rgc sfz player, using e.g. group=1 off_by=1 won't make the same key get choked by itself.
    but in sforzando, the same key is self-choked

    so, then i make adjustment like this, group=1 off_by=2 and use group=2 for the choke.

    am i correct with that adjustment or is there any other solution?
  • davidvdavidv
    Posts: 453

     group=1 off_by=2 and use group=2 for choke, seems like the way to go.

    the spec has very few details on the exact behaviour of choke groups, and im not surprised about the discrepancy between sforzando/sfz.dll. It would be interesting to try in dimention pro and drop zone.

  • kinwiekinwie
    Posts: 61
    thanks for the answer,
    so at the moment  i'll use that adjusment

    well, i don't have dimension pro or drop zone so i can't try them.
    i only believe in sforzando :D
  • Old SFZ couldn't do choking properly.  I never could convince RenĂ© it was, in fact, needed for drums.  At least not during SFZ development.
  • kinwiekinwie
    Posts: 61
    hi jones,

    i see,
    can you please give simple example for hh close, hh pedal and hh open (3 samples) if you map them in sforzando?
  • " It would be interesting to try in dimention pro and drop zone."

    I tried, and the behavior is the same as in sforzando:

    With group=1 off_by=1, each note of that group chokes the other, giving a monophonic effect.


  • " can you please give simple example for hh close, hh pedal and hh open (3 samples) if you map them in sforzando?"

    This is roughly how it's done in the analog synth drum from the Free sounds pack

    //Opened Hihat
    <group>
    group=1 off_by=2

    <region>

    sample=OpenHH.wav  key=46


    //Pedal Hihat


    <group>

    group=2  

    <region> 

    sample=pedalHH.wav  key=44 


    //closed Hihat

    <region>

    sample=closedHH.wav  key=40 

  • kinwiekinwie
    Posts: 61
    hi eric,

    thanks for answering.
    never check on the free sound pack before, i just know there's an example in there.
    i use the group/off_by like that too, luckily my guess is right.

    so, this behavior indeed an issue
  • kinwiekinwie
    Posts: 61
    i think group=1 off_by=1 makes the key monophonic is more logic,
    so i agree that current sforzando behavior is more flexible than the old one.

    just hope it won't get change, davidv.
    thanks for the replies guys :)

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!