Using samples as the FM oscillator

edited April 2016 in General
I seem to remember this was a thing you could do in earlier firmwares, but as of .36/.37 (stock), it doesn't seem to work. Might this have gotten missed with migrating things over to CCM?

Comments

  • I have to take closer look at this since @pld made the CCM modifications.
    But normally I think this should not affect the sample capabilities, since it just defines the memory region for the wavetables in another way.

    can you just not select them in the FM oscillators but it works in the normal ones?
    (I still have to hook up my LXR again after superbooth and the workshop is total chaos at the moment)
  • While I don't remember touching the sample handling, it's been a while so things are hazy ;) If I had to guess a theory, it might be an artefact of the linker script? My LXR is still taken apart, but let me know if I can help...

  • so I just did some checking. This is definitely something you could do with previous firmwares.

    It isn't something to do with the latest updates - I checked versions .34, .31, and .27, and .27 is the only one of those where it works. It sounds awesome by the way.

    All the more recent versions, if you assign a sample to the FM osc slot, you just get a short 'click' instead of the sample. It's not always the same click - it seems to vary with different samples. This happens regardless of whether the page is in 'FM' or 'MIX' mode.

    It would be awesome to get this working again. To my knowledge the list of drum machines that can FM a sample with ANOTHER SAMPLE is pretty short.

    I'll try checking versions .28-.30 to see exactly where this got nix'ed.
  • seems like whatever happened between .27 and .28 is respobsible for disabling this.
  • digging into this a little further, if I take DrumVoice.c, .h from that version and use them to compile my firmware, this works again, so I suspect it's just the few lines that were changed to make sure that the sine waveform got the correct phase start. Should be a simple fix.
  • edited April 2016
    ok, think I got this sussed. This commit fixed a problem with the sine osc not resetting properly, but also removed lines resetting the modulation oscillator (lines 147-152). Not sure why that was done, maybe they are reset elsewhere for the 'normal' waveforms, maybe we want them free-running? Anyway, for samples, I'm pretty sure we DO want the phase reset to the beginning of the sample on retriggering, which can be done by inserting, after line 150 (in the current version of DrumVoice.c):

    if(voiceArray[voiceNr].modOsc.waveform > REC)
    voiceArray[voiceNr].modOsc.phase = 0;


    That should get samples working as mod oscillators again!
  • wow. thanks brendan. I'm curious to try it out but have not the slightest idea of how to insert where what and then updating the firmware I guess? 

    will you include these changes in your next custom firmware update? (so i'll be lazy and patient :^o ) 
  • wow. thanks brendan. I'm curious to try it out but have not the slightest idea of how to insert where what and then updating the firmware I guess? 

    will you include these changes in your next custom firmware update? (so i'll be lazy and patient :^o ) 

    the change is rolled into my custom version of the firmware already -
    you might want to be careful if you're switching over, pattern data seems to be non cross-compatible at the moment so... you know, back up, etc. Water's fine in the pool, just don't forget your floaties ;)
Sign In or Register to comment.