logue-sdk

repository·main·Indexed 21 days ago

https://github.com/korginc/logue-sdk

A development kit for creating custom oscillators and effects for KORG's 'logue' compatible synthesizers and drum machines. It includes a Docker-based build environment and support for platforms such as drumlogue and the Prologue Rev.A development board. The SDK allows developers to build .drmlgunit files for synths, delay effects, reverb effects, and master effects.

Tokens
45K
Snippets
109
Records
190
Agent score
76%

What's inside logue-sdk

  1. Overview of logue-sdk

    main
    The logue-sdk provides the files and tools necessary to develop custom oscillators and effects for a range of KORG synthesizers and drum machines. This includes hardware such as the prologue, minilogue xd, Nu:Tekt NTS-1 (mkI and mkII), NTS-3 kaoss pad kit, microKORG2, and drumlogue.
  2. Overview of Prologue Rev.A Development Board

    main
    The Prologue Rev.A is a limited edition development board released for Superbooth 2018. It serves as a hardware platform for developing with the logue-sdk. Detailed technical specifications and information can be found in the rev_a/ directory of the repository.
  3. Overview of Prologue Rev.A Devboard

    main

    The Prologue Rev.A is a development board consisting of a single digital voice of the Korg Prologue synthesizer and an effects processor. It is designed as a runtime environment for testing custom oscillator and effects code without requiring a full Prologue instrument.

    Important Limitations:

    • No Analog VCAs: The analog VCAs from the original Prologue are not present. Envelopes are simulated in software on the voice microcontroller, which may cause sonic artifacts.
    • Testing Only: This platform is intended for development and testing; it may not be suitable for use as a full-scale musical instrument.
    • Hardware Warning: On older firmware, pressing the reset switch multiple times can trigger full read protection on the main microcontroller. System version 1.17 and up prevents this issue.
  4. Overview of Nu:Tekt NTS-3 kaoss pad kit SDK

    main
    The NTS-3 kaoss pad kit SDK allows developers to build custom effects and sound generators for the Nu:Tekt NTS-3 kaoss pad kit. Unlike other logue SDK platforms, the NTS-3 uses a genericfx module which does not have a specific purpose designation (like modfx or revfx); it can implement any type of effect or sound generator. The hardware provides four identical effect runtimes where any generic effect can be loaded, and the same unit can be loaded multiple times across different runtimes.
  5. Overview of logue-sdk supported platforms

    main

    The logue-sdk provides the necessary files to build custom oscillators and effects for several KORG synthesizers and digital kits.

    Supported products include:

    • prologue
    • minilogue xd
    • Nu:Tekt NTS-1 digital kit
    • Nu:Tekt NTS-1 digital kit mkII
    • Nu:Tekt NTS-3 kaoss pad kit
    • drumlogue
    • microKORG2

    To find existing oscillators and effects, you can consult the Unit Index or the logue-SDK-filter search page. Note that specific acquisition methods for these units are managed by their respective developers.

  6. Use logue-cli commands

    main

    The logue-cli utility is used to manipulate unit files (*.prlgunit, *.mnlgxdunit, *.ntkdigunit) and communicate with Korg Prologue, Minilogue XD, and Nu:Tekt NTS-1 synthesizers.

    Available Commands

    • check: Validate unit packaging.
    • probe: Obtain information about a connected device.
    • load: Load a specified unit onto a connected device.
    • clear: Clear unit data from a connected device.

    Use -h or --help with any command to see detailed usage information.

    Usage: logue-cli <command> [options]
  7. Platform Specifications for microKORG2

    main

    The microKORG2 SDK is used to build custom oscillators and effects. The platform uses an ARM Cortex-A7 (i.mx6ulz) CPU. Units are compiled as 32-bit LSB ELF shared objects (ARM, EABI5 v1 SYSV) and are dynamically linked.

    Firmware Requirement: Firmware version >= 2.0.0 is required to run units built with SDK version 2.1.0.

  8. Repository structure and build environment

    main

    The repository is organized by platform and includes tools for building projects.

    Platform Directories

    • platform/prologue/: Files, templates, and demo projects for prologue.
    • platform/minilogue-xd/: Files, templates, and demo projects for minilogue xd.
    • platform/nutekt-digital/: Files, templates, and demo projects for Nu:Tekt NTS-1 digital kit.
    • platform/drumlogue/: Files and templates for drumlogue.
    • platform/nts-1_mkii/: Files, templates, and demo projects for Nu:Tekt NTS-1 digital kit mkII.
    • platform/nts-3_kaoss/: Files, templates, and demo projects for Nu:Tekt NTS-3 kaoss pad kit.
    • platform/microkorg2/: Files, templates, and demo projects for microKORG2.
    • platform/ext/: External dependencies and submodules.

    Build Tools

    • docker/: Source for Docker containers used to build projects for any platform without host OS dependencies. Using Docker is recommended for environment consistency.
    • tools/: Tools and documentation for building projects or manipulating build artifacts. These are not required if using Docker.
  9. Use the Oscillator Runtime Context for real-time data

    main

    When running as an Oscillator unit, the runtime provides a specific context (unit_runtime_osc_context_t) containing real-time parameters. Other module types (Effects) do not provide this specific real-time information.

    Oscillator Context Fields

    • shape_lfo: LFO shape.
    • pitch: Pitch value (range 0x0000 to 0x9000 suggested).
    • cutoff: Cutoff frequency (range 0x0000 to 0x1fff).
    • resonance: Resonance (range 0x0000 to 0x1fff).
    • amp_eg_phase: Amplitude envelope phase.
    • amp_eg_state: Amplitude envelope state.
    /** Oscillator specific unit runtime context. */
    typedef struct unit_runtime_osc_context {
     int32_t  shape_lfo;
     uint16_t pitch;    // 0x0000 ~ 0x9000?
     uint16_t cutoff;   // 0x0000 ~ 0x1fff
     uint16_t resonance; // 0x0000 ~ 0x1fff    
     uint8_t  amp_eg_phase;
     uint8_t  amp_eg_state:3;
     uint8_t  padding0:5;
     uint8_t  padding1[4];
    } unit_runtime_osc_context_t;
  10. Access Oscillator Runtime Context

    main

    When developing an oscillator unit, the runtime provides a unit_runtime_osc_context_t structure containing real-time information necessary for synthesis:

    • pitch[kMk2MaxVoices]: An array of 8 floats defining the pitch for each voice.
    • trigger: A bit array where a bit is set to 1 (Hi) when a corresponding voice is triggered.
    • unitModDataPlus / unitModDataPlusMinus: Optional modulation buffers. unitModDataPlus is normalized (0 to 1), while unitModDataPlusMinus is normalized (-1 to 1). Use these to write per-voice modulation signals.
    • modDataSize: The size of the modulation buffers.
    • bufferOffset: The offset from the start of the oscillator output buffer.
    • voiceOffset: The starting voice index for this unit.
    • voiceLimit: The maximum number of voices allowed for this unit.
    • outputStride: The number of interleaved output streams.
    /** Oscillator specific unit runtime context. */
    typedef struct unit_runtime_osc_context 
    {
      float pitch[kMk2MaxVoices]; 
      uint8_t trigger; // bit array
      float * unitModDataPlus; 
      float * unitModDataPlusMinus; 
      uint8_t modDataSize;
      uint16_t bufferOffset;
      uint8_t voiceOffset;
      uint8_t voiceLimit;
      uint16_t outputStride;
    } unit_runtime_osc_context_t;
  11. Map parameters to NTS-1 digital kit mkII knobs

    main

    The NTS-1 digital kit mkII automatically maps parameters to physical controls based on their order in the .params array:

    Oscillator (OSC)

    • A & B Knobs: First two parameters.
    • Edit Mode: Remaining parameters are accessed by holding OSC and turning the TYPE knob.

    Modulation Effect (MOD)

    • A & B Knobs: First two parameters.
    • Edit Mode: Remaining parameters are accessed by holding MOD and turning the TYPE knob.

    Delay Effect (DEL)

    • A & B Knobs: First two parameters.
    • Dry/Wet: The third parameter is mapped to holding DEL and turning the B knob.
    • Edit Mode: Remaining parameters are accessed by holding DEL and turning the TYPE knob.

    Reverb Effect (REV)

    • A & B Knobs: First two parameters.
    • Dry/Wet: The third parameter is mapped to holding REV and turning the B knob.
    • Edit Mode: Remaining parameters are accessed by holding REV and turning the TYPE knob.
  12. Control Effector parameter behavior

    main

    For effect units, you can control how parameters behave when switching between effects using the reserved bits in the parameter descriptor. This is managed via the kMk2FxParamMode enumeration in FxDefines.h.

    EnumValueBehavior
    kMk2FxParamModeBasic0Behaves like internal effects. Page 1 parameter values are copied from the previously selected effect, and parameters are modulatable via virtual patch.
    kMk2FxParamModeIgnoreKnobState1Page 1 parameter values are NOT copied from the previous effect, but parameters remain modulatable via virtual patch.
    kMk2FxParamModeIgnoreModulation2Page 1 parameter values are copied from the previous effect, but parameters cannot be modulated via virtual patch.
    kMk2FxParamModeIgnoreKnobStateAndModulation3Page 1 parameter values are NOT copied, and parameters cannot be modulated via virtual patch.