Toolset for advanced serialization and iteration

Discussion in 'Building With Reaktor' started by stephan_schmitt, Jul 11, 2011.

  1. stephan_schmitt

    stephan_schmitt Moderator NI Team

    Messages:
    18
    Hey everybody,

    I'm excited to announce the release of a long and carefully developed project from one of our most talented Reaktor builders, Max Zagler. I would like to share a new set of tools with all of you that was designed to allow the management of complex arrays of data, like the data you need to control the new Modal Bank and Sine Bank modules.

    We call this tool set the "Partials Framework", but besides Additive and Modal Synthesis it can be used for many more applications to handle a large number of similar objects, e.g.: arrays of display or control elements, FFT, complex filters, multi-segment waveforms or shapes, multi-breakpoint envelopes.

    The main purpose of the framework is the serialization and serial processing of data. It supports multiplexing, a way for a single wire in Reaktor to carry the event signals for many sources and destinations. This largely simplifies the building of complex structures.

    The framework also opens a simple way to program loops (iterations) in Reaktor Core. Serialization and iterations are the basis for efficient streaming of large numbers of events in Reaktor. In addition you will find macros for correct initialization, thread-safeness and tools for debugging.

    This framework is not for beginners. However everything is well documented by Max with fun and colorful illustrations. Please don't be afraid to put in the effort to learn this tool set.

    You can download it from the User Library
    http://co.native-instruments.com/index.php?id=userlibrary&type=0&ulbr=1&plview=detail&patchid=10421
     
  2. arachnaut

    arachnaut NI Product Owner

    Messages:
    3,101
    Last edited: Jul 11, 2011
  3. salamanderanagram

    salamanderanagram NI Product Owner

    Messages:
    3,452
    really excited, hope you upload the actual macros soon!
    btw, great to see you guys uploading stuff like this, i wish it happened more often
     
  4. Daloupe

    Daloupe New Member

    Messages:
    13
    Awesome read. This has explained a a lot of questions I've had about event ordering.
     
  5. stephan_schmitt

    stephan_schmitt Moderator NI Team

    Messages:
    18
    File is now complete

    Sorry, there was a problem with the User Lib server software automatically modifying zip files. Now the downloadable zip file is complete - including the macros.
     
  6. herw

    herw NI Product Owner

    Messages:
    6,417
    @Stephan: many many thanks to you and Max. It's one of the most exciting uploads of the last years. It opens a new world of core (finally) :)
    buses.jpg
    ciao herw
     
    Last edited: Jul 12, 2011
  7. salamanderanagram

    salamanderanagram NI Product Owner

    Messages:
    3,452
    questions @ NI

    while the documentation is pretty impressive, it would be nice to know what some of the in and out ports are for on some of the larger macros. the V, Vcs, and trgX inputs on the sine engine macro for example.

    i think i can make sense of the rest, so far.

    this is an incredible project in depth and size; i hope i can wrap my head around it!
     
  8. Max @ NI

    Max @ NI NI Team NI Team

    Messages:
    22
    I'm afraid the documentation doesn't explain everything. While I'm currently not working on improving/extending the documentation, I can give some support in this forum and the "Deutsches Reaktor Forum".

    About the ports you mentioned:

    V and Vcs are ports ment to be connected to the same ports on the Voice Info module - Voice ID and Number of Voices.

    In the Introduction.pdf I've mentioned the iteration chain (p.95) that is used to iterate over the partials. As you can see the iteration chain uses the port name +itP. The iterations are triggered with the updt port from outside the sine/modal engine macro.

    There also the ports +itX, which is a independent iteration chain. The iterations in this chain are not triggered with each update of the partial stream by an event at updt but must be triggered separately with an event at the trgX port. updt used to be called trgP for "trigger the partial stream" so trgX basically means "trigger whatever..."

    Max
     
  9. herw

    herw NI Product Owner

    Messages:
    6,417
    i have started a series about partials framework

    PARTIALS FRAMEWORK (erster Kontakt)

    ciao herw
     
    Last edited: Mar 29, 2015
    • Like Like x 1
  10. arachnaut

    arachnaut NI Product Owner

    Messages:
    3,101
    Google translate is our friend.
    For the benefit of English Readers, herw was involved in this from the start and suggests we add the documentation to our bookmark favorites in Reaktor and read it in this order:

    1 - Multiplexing
    2 - Event Bus
    3 - Chain Iteration
    4 - Introduction
    5- The Partial Stream
     
  11. salamanderanagram

    salamanderanagram NI Product Owner

    Messages:
    3,452
    @MZ thanks, i appreciate it. i'm still trying to work some stuff out but i'll post any other problems i have here.

    @herw, please do this series in english?
     
  12. booty818

    booty818 Forum Member

    Messages:
    30
    hate google translate
     
  13. arachnaut

    arachnaut NI Product Owner

    Messages:
    3,101
    Old joke:

    Google translate:

    English -> Russian -> Chinese and then back to English

    Input:

    "The spirit is willing, but the flesh is weak."

    End result:

    "The wine is good, but the meat is rotten."
     
    • Funny Funny x 1
  14. herw

    herw NI Product Owner

    Messages:
    6,417
    just tested google translate and i think it is very usefull. My english isn't better. As DRF is an open forum (you don't need to be a member to read and download) it is no problem to use google translate. I am writing the main content as a simple text so translation will be no problem.
    Max's documents are very clear and well written. Best is that there should be - as arachnaut suggested - a discussion thread about partials framework.
    The problem is that there may be many questions and a thread shouldn't be too long because no one will read a thread about 50 posts.
    The DRF is a place where i can moderate a discussion and split threads if neccessary.

    ciao herw
     
  15. arachnaut

    arachnaut NI Product Owner

    Messages:
    3,101
    herw, Google thinks you are running a

    "German Nuclear Forum"

    You'd better watch out, there may be a CIA file on you!
     
  16. herw

    herw NI Product Owner

    Messages:
    6,417
    LOL

    ciao herw
     
  17. Paule

    Paule NI Product Owner

    Messages:
    7,325
    Rick Scott, rachMiel, lived 6 years in Germany to study. Ask him!
     
  18. tenandtracer

    tenandtracer NI Product Owner

    Messages:
    163
    I've finally taken the time to get to know the Partials Framework - I'm really quite stunned. Such an elegant and transformative system I'm so excited to really explore some new ideas. I've managed to put together a few prototypes that I've avoided for years, simply because of the effort they would involve without a framework like this.

    To anyone else who is yet to dive in to the Partials Realm, it's worth the effort. I'm really quite surprised by how quickly I was able to put together some functional/practical code and began prototyping a few simple effects and sequencers (with state-dependent RGB fun). A few careful readings of the Partials Presentation/Docs - the forum discussions. Modular-X for another example of some absolutely elegant Reaktor programming - and great use of the partials framework. You'll be well on your way.

    My deepest gratitude to Max Zagler for his time and effort, and thoughtful/careful design of this framework.
     
  19. Quietschboy

    Quietschboy NI Product Owner

    Messages:
    529
    Hello all,
    i built a similiar version of PF´s Smart_Value Macro some time ago. They seem to be functional identically, both do their job at init, too.
    So, my version doesn´t use an event core cell for latching the pos value and instead of the Router it uses a Value, Compare and Separator Module.
    The attached benchmark shows that my version is arond 18% faster than Max´s :p
    I ask myself, if i missed a little detail that speaks for Max´s macro? Someone an idea?
    cheers, Mark
     

    Attached Files:

    • Like Like x 1
  20. salamanderanagram

    salamanderanagram NI Product Owner

    Messages:
    3,452
    it might be that you aren't hopping into core unnecessarily like max?