SynthMaker

Frequency Shifter

Archive · 2011 14 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

trogluddite ·

Here's something I've wanted to do for a while - a proper frequency (not pitch!) shifter...

...just a sketch at the moment to demonstrate the main shifter module, but I fancy making a proper plugin out of some of these - the perfect Xmas gift for audio-geek Dr.Who fans! Note that the Hilbert part of the shifter will only work for mono streams due to some major assembly 'slimming'.- fairly simple to adapt it for poly (at the expense of much extra CPU) if anyone is interested.

Thanks to Martin for his excellent Hilbert Transform port., which made the shifter module possible.

Dozius ·

Cool, I'll have to see how it compares to the one I made forever ago. Looking at the papers it came from it's likely better quality than what I had put together. Thanks!

infuzion ·

Nifty, how does it work please?

martinvicanek ·

How creative! I never thought of this possibility. As a side note, why use lookup tables for the sine generator? Here is a simple quadrature oscillator based on Trog's code, with added automatic gain control to prevent runaway due to accumulating roundoff errors. It is sufficient to do the AGC at hop(4096) so the extra CPU load is negligible.

trogluddite ·

martinvicanek wrote: with added automatic gain control

Thanks, never occurred to me to just try rescaling things a little!

infuzion wrote: Nifty, how does it work please?

Katja's homepage has been my 'bible' for learning about quadrature's and FFTs etc. - frequency shifting (single sideband modulation) is on the page Sinusoids->Quadrature Mixing

stw ·

Guys that's some awesome work. Though it's a bit beyond my skills for now i'll try to understand how that all works! The quad sine function seems to be a perfect lo CPU OSC alternative. Thanks Martin and trog 😍

philter5 ·

yes indeed, great stuff here! respect 😍

trogluddite ·

Thanks, glad you're liking it! 🙂 Here's version two...

Four shifters each with their own delay and panning, and global feedback. I put a handful of presets in this time - there's no modulation yet, but it's capable of a nice range of effects. Once I got over doing Dalek voices and practicing my evil laugh, I found that you can turn the controls down low and get some quite cool modulation effects and psuedo-reverbs. Time to torture some LFO's now, I think...

stw ·

trogluddite wrote: Thanks, glad you're liking it! 🙂 Here's version two...

Four shifters each with their own delay and panning, and global feedback. I put a handful of presets in this time - there's no modulation yet, but it's capable of a nice range of effects. Once I got over doing Dalek voices and practicing my evil laugh, I found that you can turn the controls down low and get some quite cool modulation effects and psuedo-reverbs. Time to torture some LFO's now, I think...

Brilliant work! Brought back that built in wavetable lookup thingy to my mind again. 😉 Consider multiplying the 4pack sum by .5 and putting in a clipper in front of the mono outs. Doesn't hurt the speaker that much... 😈 However it sounds very nice. Thanks for your ideas!

martinvicanek ·

Pretty slick! I like DAW Bells.

trogluddite ·

stw wrote: Consider multiplying the 4pack sum by .5 and putting in a clipper in front of the mono outs

Oh yes, the final version will certainly have a bit more 'protection' - limiting on the feedback loops too, I think. Apologies for the lack of a master volume/clipping though - I need to sort out my 'new project template a bit - it has a 'protection and conditioning' block for the outputs, but I always end up removing it before posting as it automatically selects my preferred soundcard by searching for the driver name.

Dell ·

trogluddite wrote: Here's something I've wanted to do for a while - a proper frequency (not pitch!) shifter...

...just a sketch at the moment to demonstrate the main shifter module, but I fancy making a proper plugin out of some of these - the perfect Xmas gift for audio-geek Dr.Who fans! Note that the Hilbert part of the shifter will only work for mono streams due to some major assembly 'slimming'.- fairly simple to adapt it for poly (at the expense of much extra CPU) if anyone is interested.

Thanks to Martin for his excellent Hilbert Transform port., which made the shifter module possible.

Nice one! 🙂

I’ve created sub-low fundamental synthesizer with your pitch shifter.

It still needs to go through some testing. Particularly on my large system with the proper size speakers to hear if the bass sounds too synthetic.

You can view the video here…

http://www.youtube.com/watch?v=KCNsYuqrXl4

Listening through my smaller speakers it does not appear to bring forth any phase issues, which is common with hardware bass synthesizers that shift frequencies downward by an octave or so.

Leslie147 ·

trogluddite wrote: Here's version two...

Once again, thank you so much for letting us in on so many brilliant shortcuts to saving clock cycles. I particularly like your hopped packs using instances of ecx passing through multiples of the and'ed number - so is ecx a program counter that keeps incrementing? Also, your adding of streams using shufps twice is inspired! - I wonder how you discovered the appropriate integer values.

Chris

trogluddite ·

Leslie147 wrote: so is ecx a program counter that keeps incrementing?

Yes, ecx is useds as SM's sample counter - but always copy to eax first; although the opcodes with other ea_ registers are parsed OK, not all of them seem to work - eax seems to be the only one that always works correctly, even if you are careful with pushing and popping the values.

Leslie147 wrote: I wonder how you discovered the appropriate integer values

Descriptions of the opcodes are easy to find by just googling them - however for shufps, you may find this Shufps Helper schematic handy to have in your toolbox.

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.