KORG minilogue xd [SDK Tutorial Part 2]: Creating a User Oscillator

Поделиться
HTML-код
  • Опубликовано: 9 фев 2025
  • In this episode I am showing you how to start creating your own oscillators.
    Following a discussion on GitHub I have decided to delay describing the "waves" oscillator to part 4. In the next part we will go through the "square" oscillator that is included in the SDK.
    In the meantime, when waiting on the new episode to get cut and published, have a look at that gist: gist.github.co... Its a first draft of a sound "program printer". If you ever wanted to understand how those professional patches got made by the pros, use that tool to get the individual parameters "visualized" on one page. The tool reads in the binary program and I have done my first try to get all parameters read out. Still some way to go (some unknown parameters still exist and I didn't tackle the sequencer yet).

Комментарии • 33

  • @ubiquitousreverser
    @ubiquitousreverser 5 лет назад +8

    This synth has brought me back to programming and your video’s are going to blow up with people looking into this. Talk about a cool new way to customize your sound.
    Thank you so much for these helpful tutorials!

  • @findmyreps4034
    @findmyreps4034 5 лет назад +2

    Thank you for doing these tutorials! I started to try and figure things out by reviewing the files on Github, but it was daunting to figure things out with no background in C++ or DSP. Your explanations are clear and thorough.

  • @CaveofswordS
    @CaveofswordS 5 лет назад +1

    thank you for these tutorials. i realized i needed to watch some github and coding tutorials first but then came back and successfully loaded a test wave onto my XD. excited to get further into tweaking this sdk and creating more content for this new synth

    • @kalubandali2241
      @kalubandali2241 5 лет назад

      can you point me towards what i need to watch before this?

  • @kletsgoo
    @kletsgoo 5 лет назад +3

    Very helpful tutorial, for a basic oscillator not dependent on pitch or such, a noise osc would be a good start too, like: *(y++) = rand() *255;

  • @DaveHoskinsCG
    @DaveHoskinsCG 5 лет назад +1

    One last question if I may? The net is confusing about whether I can create a reverb for the original prologue. Some sources say it’s mod and OSC only, others say I can make a reverb.

    • @AudioMusicElectronics
      @AudioMusicElectronics  5 лет назад +1

      You may ask as many questions as you want! ;)
      There is a revfx section in the prologue sdk folder, so I assume that it is possible. However, there may be bugs preventing you doing it. I have not yet created a revfx myself for the minilogue, but will do so soon. I'll keep you informed.

    • @DaveHoskinsCG
      @DaveHoskinsCG 5 лет назад

      @@AudioMusicElectronics Ahhh, according to this Superbooth Sonic State video, yes you can:
      ruclips.net/video/zXt9vjj3ROk/видео.html

  • @begouda
    @begouda 5 лет назад +1

    Great Tutorial ;-) Take a look a your Folder: Kubernets, Docker ;-) like me ;-)

  • @DaveHoskinsCG
    @DaveHoskinsCG 5 лет назад

    Thanks for this, I have so many questions! Seeing we can't have any tables, do I anti-alias by making a band limited waveform by adding sine waves, or do I have to resort to something like Blep? What does Korg recommend we do?

    • @AudioMusicElectronics
      @AudioMusicElectronics  5 лет назад +1

      Anti-aliasing is one of the classical problems in DSP and there is no one size fits all solution. You mentioned wave table and additive synthesis as a workaround and you can use both. As regards to wave tables you are limited to what is on the device itself (square, sine, sawtooth and around 100 waves that I will go into in one of the next episodes) and what will fit into 32k of total program size.
      And you can use BLIT, BLEP, polyBLEP, BLAMP, oversampling etc.. www.amazon.de/Designing-Software-Synthesizer-Plug-Ins-RackAFX/dp/1138787078/

    • @DaveHoskinsCG
      @DaveHoskinsCG 5 лет назад

      @@AudioMusicElectronics Thanks for the extra info. I would have thought they over-sampled the wave for you, like in the Novation Peak synth - I'm surprised they don't TBH.
      I just wonder how much CPU power I have available? Is it enough to add 32 sine-waves in real time, for example? It's the speed that matters mainly to me. There is just not enough space for even one wave-table with all it's octaves, especially as it's shared memory.
      BTW I've developed and sold DSP plug-ins for a living for 15 years... :)

    • @AudioMusicElectronics
      @AudioMusicElectronics  5 лет назад +1

      @@DaveHoskinsCG The main cycle hook gets called with a buffer of 16 samples every 333µs (measured myself, not specified anywhere). I have also measured that you have about 12000 CPU cycles to compute your result, before the unit gets unstable (crashes). Most operations in single floating point take one cycle to complete (division is one exception taking 14 cycles). You can use the wavetable sine osc_sin() function in the logue-sdk, lets say 100 cycles per OSC_CYCLE call, so 32 sines should be no problem at all!

  • @DJMikeron
    @DJMikeron 5 лет назад

    Your speech sounds like a clone of bobcats:)

  • @DaveHoskinsCG
    @DaveHoskinsCG 5 лет назад

    OK I've got the SDK compiling on Windows, how do I set the parameters for the REV and MOD effects on the actual synth? The SDK rev example implies that I can. Also I'm a bit disappointed that I can't actually make a reverb for it, which is big shame on Korg!! Perhaps I can if I use a Delay or Mod effect, but I certainly can't bypass the built in reverb.

    • @AudioMusicElectronics
      @AudioMusicElectronics  5 лет назад

      There is three parameters that you can set for the FX: time, depth and mix (SHIFT DEPTH). Plus of course your choice of the 8 or 16 different types of FX. Thats it.
      As for the REV, it seems to behave differently on the prologue than on the minilogue xd, where I can switch it off.

    • @DaveHoskinsCG
      @DaveHoskinsCG 5 лет назад

      Grischa Ekart Well, ‘mix’ seems hard coded to do just that. With the effect types are you choosing the whole effect. So there are only two parameters for each effect, which is all you have for the rest anyway, so I suppose it’s fair enough. I wish there was a forum for the SDK...

    • @AudioMusicElectronics
      @AudioMusicElectronics  5 лет назад

      @@DaveHoskinsCG Yes, you are right as regards to being hardcoded and in addition it is not available for MOD FX.
      With effect types your are choosing the effect, but you have at least 8 available, so you might create the same effect, one version with decent and one with some extreme parameters. Sure, not the same as having parameters. But we want to see what's possible, not complain about what's not.

    • @DaveHoskinsCG
      @DaveHoskinsCG 5 лет назад

      Grischa Ekart I’m not complaining, I’m trying to figure out what’s available to use and make the best of what I’ve got.

    • @AudioMusicElectronics
      @AudioMusicElectronics  5 лет назад

      @@DaveHoskinsCG And there is new stuff coming out, probably this is why KORG weren't so responsive lately: minilogue XD module and Nu:tekt, at superbooth 2019

  • @hickscorp
    @hickscorp 5 лет назад

    On Linux, `logue-cli` fails to detect the Minilogue XD. I've opened an issue (See github.com/korginc/logue-sdk/issues/24 ) but I'm curious to see if there are people who know how to work around this.

  • @jakebromberg3476
    @jakebromberg3476 5 лет назад

    Why is the `(void)params` even necessary? Would the compiler strip the function if the body were just a noop?

    • @jakebromberg3476
      @jakebromberg3476 5 лет назад

      Ahh… I got further along in the video and I see the compiler would complain if the function parameters weren't used.

    • @AudioMusicElectronics
      @AudioMusicElectronics  5 лет назад

      You would just get a warning, and since I am treating warnings as errors, it simply wouldn't compile:
      osc3.cpp:48:24: error: unused parameter 'platform' [-Werror=unused-parameter]
      void OSC_INIT(uint32_t platform, uint32_t api)
      ^
      cc1plus: all warnings being treated as errors