SynthMaker

Realtime pitch shifting

Archive · 2007 13 old posts

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

MyCo ·

Hi !

I've started a new project, where I could require some help from the S|M gurus. It's a pitch-shifter, based on some kind of grain-synthesis. It works quite well, but could need some improvements, especially on CPU usage.

The project file is attached.

It demonstrates what I got so far. To hear something, you first have to load in a wave file, and then press the play button (bottom right corner of the wave display)

Maik

Tom7777 ·

I can't really help with this as it's code based and im no coder but i just wanted to say this is really nice, great work 🙂

Acrobat ·

Fantastic! Unfortunately I can't help for optimization: all I can say is that when either one of the 2 modules is looping it takes 10,3-10,5% of CPU on my P 3.4Mhz, singlecore, 2GB RAM... cheers, A.

TheAudiophileDutchman ·

Thanks for sharing your project-file MyCo, in short: 😉

Quality: most importantly, there are no clicks/artifacts, excellent!!, but how to get rid of that phasing effect?

Performance (of course there are CPU dependent differences, but still): arguably the biggest CPU bottleneck in SM is memory access (code arrays, read index components,...). There's not much you can do about it, except for minimizing the use of array-related stuff as much as possible 😇

MyCo ·

yeah the phasing effect is bad... It's because it mixes the beginnig of the circular buffer with the end of it, so there is no clicking when the grain repeats.

nix ·

Thanks muchly MyCo, This is the fullest sounding octaver I have tried. It makes guitar sound very similar to bass. I am wondering if you'd like to release it as a VSTfx, I can make a skin, if you'd like. Thanks again, nix

nix ·

Hey all, I have made this an audio octaver. It's all MyCo's work, like. Screenshot:

.osm: http://www.sendspace.com/file/e1x5eu Any ideas or comments appreciated. Cheers, nix

nix ·

Hey again, I have been asked if this plug introduces a delay. I haven't noticed beyond my soundcard's latency, but another finds it so. If this is so they would like to know how long? Cheers, nix

TheAudiophileDutchman ·

yeah the phasing effect is bad... It's because it mixes the beginnig of the circular buffer with the end of it, so there is no clicking when the grain repeats.

Intro: Afaik Technics stopped developing musical instruments already a few years ago and in the process sold some Intellectual Property to Yamaha... ...well, that Tyros 2 does have some excellent brass sounds now, on par with a KN7000 😉

... anyway, I found an old Technics patent (1990) that claims to solve all pitch-shifting issues, including phasing, quite efficiently in the time-domain! http://www.google.com/patents?id=6CInAAAAEBAJ&dq=5131042

A realtime pitch-shifting solution in the time-domain seems great for implementation in SM, but: Although this Technics principle is quite easy to understand (just draw some vertical lines in Fig. 2 to clearly see the state dependencies), implementation in SM doesn't seem to be very straightforward, considering that quite some conditional coding is needed. 😈

Which SM-guru('s) wouldn't mind having a look and prove me wrong? 😇

TheAudiophileDutchman ·

Anybody interested in trying to understand / helping to solve the issue, just send me an email or PM by clicking one of the buttons below.

By return, I'll forward you a PDF-file of the Technics patent with some personal notes. 🙂

philter5 ·

it would be great if you could mail me the pdf!

TheAudiophileDutchman ·

Allright, here's the original PDF. 🙂

Key to understanding the patent is fig. 2: to make life easier, you could print this figure and draw vertical help lines starting from every state change in (e) (f) (g) (h) (i).

philter5 ·

thy a lot 😮 😮 😮

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.