------------------------------------------------------------------------------- NI Reaktor ~~~ T h e E z P a r t s ~~~ ------------------------------------------------------------------------------- 0. What is Reaktor? * 1999: Generator + Transformator -> Reaktor 2003: Electronic Instruments 1 2004: Electronic Instruments 2 2005: Last major version introduced Reaktor Core Technology 2010: Reaktor 5.5 and New Additions 2015: Current Version 5.9.2 * audio-programming platform wiki says "Modular software music studio" * belongs to family of Max-like languages: - visual programming with "Boxes and Arrows" - event-based, real time - close to block diagram ------------------------------------------------------------------------------- Agenda 1. Hands-on Building 2. Primary Language Basics 3. Core Language Concepts 4. Reaktor vs. C/C++ 5. Reaktor @NI 6. Workflow Tips 7. Polyphonic Synthesis Example 8. Over and out ------------------------------------------------------------------------------- 1. Hands-on Building - Step by step Primary: * starting from scratch * add useful macros from the User Library's StarterKit collection * demonstrate cross- and amplitude modulation in Primary - Step by step Core: * replace built-in Sine module with CoreCell * cleanup so only the Panel-related modules live outside - Results: * have something that works within a few mins * how much time would it take to try out the same with C++? - Find everything prepared in the online user library: http://www.ni.de/en/community/reaktor-user-library/entry/show/8526/ ------------------------------------------------------------------------------- 2. Primary Language Basics - Audio processing: * module ordering is determined after every change on the signal flow * for the Primary demo this should look like: In --> Sine --> Add --> Mult --> Out * each sample rate clock triggers a single calculation pass * feedback loops are simply cut - Event processing: * events are generated by Panel Elements, LFOs, etc. * follow depth-first order from their origin downstream ------------------------------------------------------------------------------- 3. Core Language Concepts (1) - Limited set of Built-in Modules: * RISC-like set of machine operations (like compare, add, etc.) * Modules are solid, atomic entities * Terminology: "Built-in Module" is a special "Module" - Macros are compositions of Modules and Macros: * by default Macros behave just like Build-in Modules * Macros are solid entities, but not atomic * Terminology: "Macro" is a special "Module" ------------------------------------------------------------------------------- 3. Core Language Concepts (2) - Unified event model: * same propagation rules for all events * execution order is determined automatically, depending on logical order - Simultaneous Events: * physically all calculations happen sequentially * logically order is determined from the need for results * events can be thought of happening simultaneously when logical orders are equal * consequence: one event in causes one event out ------------------------------------------------------------------------------- 4. Reaktor vs. C/C++ (no claim for completeness) * advantages over C/C++ - Core's automatic just-in-time compilation reduces edit-compile-test cycle to milliseconds - huge library offers a lot of stuff to be reused and customized - macro concept allows reuse of program logic superior to C functions or C++ classes - real time correctness built-in - easy to use polyphonic processing - no need to care about boilerplate, like dealing with sample buffers, plugin interfaces, etc. -> nice playground for audio DSP experiments? * disadvantages as compared to C/C++ - with the whole Reaktor environment around, we're always a bit more hungry for resources - Core engine is not yet capable of making use of Multicore or SIMD extensions (but there is support for SSE instructions already) - due to a few language limitations Reaktor cannot do everything as efficient as native code ------------------------------------------------------------------------------- 5. What do we use Reaktor for @NI? * All kinds of prototypes (FX, E-Drums, ModalDrums, Shaker, etc.) * Effect & Filter DSP built in Reaktor and exported as C code for Traktor, Kontakt, Maschine * Building PoweredBys: 2008: Spark 2009: The Finger 2010: Prism, The Mouth 2011: Razor, Skanner 2013: Monark, Molekular 2014: Rounds, Polyplex, Kontour 2015: Work in progress ------------------------------------------------------------------------------- 6. Workflow Tipps - some essentials for successful building * it's ez to manage your own set of building blocks: save as & search * enormous amount of example content in existing instruments and user library online * use Primary for GUI, use Core for everything else * not everything is ez: ask questions @stackoverflow! using "NI Reaktor" ------------------------------------------------------------------------------- 7. Polyphonic Synthesis Example ------------------------------------------------------------------------------- O V E R A N D O U T Thanks for your attention & Happy Building! Anyone needs a license for the NI account? Dietrich, Stefan and the Reaktor Team -------------------------------------------------------------------------------