Hi guys, here is a repost of a conversation between me and RBJ under his permission, since he couldnt send to the NG via plain text from his browser. Pls if some of you guys have some suggestion, it would be very much appreciated. Marco
---------------------------- Original Message ---------------------------- Subject: [music-dsp] Sweeping tones via alias-free BLIT synthesis and TRI gain adjust formula From: "Marco Lo Monaco" <marco.lomon...@teletu.it> Date: Tue, May 14, 2013 6:34 am To: music-dsp@music.columbia.edu -------------------------------------------------------------------------- >> I am here asking what is the best practice to deal with frequency modulation via BLIT generation. hi Marco, i've fiddled with BLIT longer ago. as i recall i generated a string of sinc() functions instead of a string of impulses and i integrated them along with a little DC bias to get a saw. for squareit were two little BLITs, alternating in sign, per cycle, and integrated. and triangle was an integrated square. i found generating the BLITs to be difficult, i eventually just used wavetables for the BLITs at different ranges. and then i thought why not just use wavetable to generate the waveforms directly. i know with the sawtooth, the bias going into the integrator had to change as the pitch changes. i dunno what to do about leftover "charge" left in the integrator other than maybe make the integrator a little bit leaky. so that is my only suggestion, if you have the rest of the BLIT already licked. the net advice i can give you is to consider some other method than BLIT (like wavetable) and if you're using BLIT with a digital integrator, you might have to make the integrator a little "leaky" so that an DC component inside can "leak" out. bestest, r b-j ---------------------------- Original Message ---------------------------- Subject: R: [music-dsp] Sweeping tones via alias-free BLIT synthesis and TRI gain adjust formula From: "Marco Lo Monaco" <marco.lomon...@teletu.it> Date: Wed, May 15, 2013 4:46 am To: r...@audioimagination.com -------------------------------------------------------------------------- Hi Robert, I tried with leaky: the thing is that it seems you need to compensate for amplitudes if you are using a fixed cutoff leaky integrator (if you filter a 12kHz blit, its amplitude with an LPF 5Hz will be much lower than a 100Hz blit and compensating the amplitude could generate roundoff noise at high freqs). As a hack one could use a varying cutoff depending on the f0 tone to be synthesized, but that could have problem again in sweeping tones (an LPF changing cutoff at audio rate is not generally artifact free). In both cases transient and not steady textbook waveforms are the result, which could be a problem if there is a distortion stage following (like a moog ladder with its non linearities). I tried also with wavetables, and the clean solution is a memory eager, starting to midi note 0 (8Hz) you need thousands of harmonics until Nyquist, with PWL interpolation with at list 2001pts …you can easily reach 300 MB for SQR/TRI/SAW!!! Probably a tradeoff and accepting aliasing a bit is the only solution. The open problem there is the click (also happening with sincM) that you get when you simply add/cut an harmonic in a sweeping context. Maybe the SWS BLIT method is the only solution to avoid this and I must investigate. I also tried HardSync ala Eli Brandt and its consequent method of generating aliasfree waveforms, but I get too much aliasing with his implementation for minBLEP and with a 32 zerocrossing impulse seems that you cant treat waveforms that has a lower 32 samples period (because the OLA method would add up creating subsequent DC steps). I thought it was much simpler to do an alias free synth, honestly!!! Thank you for time Marco ---------------------------- Original Message ---------------------------- From: r...@audioimagination.com [mailto:r...@audioimagination.com] Date: mercoledì 15 maggio 2013 17:08 To: Marco Lo Monaco Subject: Re: [music-dsp] Sweeping tones via alias-free BLIT synthesis and TRI gain adjust formula -------------------------------------------------------------------------- i don't quite see the memory issues of wavetable as bad as you do, with back-of-envelope calculation. how many ranges do you need? maybe 2 per octave? there are 10 octaves of MIDI notes. maybe 4K per wavetable (unless you do some tricky stuff so that the high-pitch wavetables may have fewer points) so that's 80K for a single waveform going up and down the whole MIDI range. HardSync will have a large collection of waveforms given the different values of oscillator ratios (the main mod control for hardsync). is it hardsync saw or hardsync square? i gotta reacquaint myself with Eli Brandt's hardsync. i don't know it. L8r, r b-j -- dupswapdrop -- the music-dsp mailing list and website: subscription info, FAQ, source code archive, list archive, book reviews, dsp links http://music.columbia.edu/cmc/music-dsp http://music.columbia.edu/mailman/listinfo/music-dsp