SynthMaker

PWM for wavetable samples possible?

Archive · 2009 14 old posts

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

Dave ·

Hi,

i wonder if PWM is possible for wavetable samples (looped waveforms)?

Also sync plus a ring modulator?

Unison?

Thanks, Dave

nix ·

This might help. Is PWM modulating pulse width with an LFO? Here is a WT synth with pulse width. It someone else's implementation which I copied-> WAV 108 i->draw waves with curves Cheers

Dave ·

No i mean directly PWM for an osc.

nix ·

I don't understand PWM then sorry. But having pulse width doesn't help? Not sure about sync, but you can make RM by multiplying 2 streams. Cheers

rl ·

> i wonder if PWM is possible for wavetable samples (looped waveforms)?

no, because this would require prior knowledge of the waveform to be pwm'd

> Also sync plus a ring modulator?

yes, wavetable read has a sync input, ring modulation is just a multiplication with another signal.

> Unison? maybe by using multiple wavetable read modules?

MegaHurtz ·

Shure it is.. Yust multiply the output wit a ((square +1)*0.5)...or ((square+A)*A*0.5) If the frequency is the same, and it`s in sync (probbably on key is enough), you have pwm.. what else?(yust adjust the square`s pw accordingly). The same goes if you dont rectify it but leave the output range on -1/+1. you`d have something.

oddson ·

I was thinking it would be possible to do something analogous to PWM by differentially streching and compressing the positive and negative portions of the wave table array prior to sending it to the Wave Table primitive.

The problem is I believe you'd have to use a loop to achieve this and for some reason looping green data is very slow in SynthMaker in the current version.

Tzarls ·

Couldn´t it be done with a combination of the Float Array Section and Float Array Resample primitives? Like, you have 100 points in your Float Array. You split that into 2 arrays of 50 values. Resample one to 75, the other one to 25, then combine them again to just 1 array.

nix ·

I'm not sure tzarls, i'd be curious to see if you wanna build it. I'm finding that float arrays are a great tool though. Cheers

Tzarls ·

Ok, I took the challenge and built something, quick and dirty, using a wave drawer I ripped off somewhere around here and the method I described above. Just draw a wave and then press the trigger. The trigger could be replaced with something that sends a trigger when releasing the mouse button, so it resamples only then (otherwise it is way too slow).

Lookign at the graph you can tell that the positive part of the wave has been stretched and the negative part has been compressed (by a fixed amount).

Just check it and tell me what you think.

*** Edit: Added 2 knobs: The first sets the split point in your wave. The second controls the amount of PWM. I don´t know if that´s how it is supposed to work, but I think you´ll find this useful.

*** Edit 2: Hey, nix, I didn´t realize that it was your .osm that I used to get that wave drawer! LOL!

MegaHurtz ·

Ì think you`d want the dirt of a dc offset. maybe rectifying the array, and a phase flip. only not quite shure what sounds you are after. it`s definetly the most dirty, most inexpensive, and spectrally accurate. (for as far as pw goes) It`s a pulse. If you like your speakers i`d run it through a lowpass filter, removes the hard edge a little. Does`nt force you speakers to do time travel. tell me what sounds your after, i may be able to help you better.

oddson ·

Ì think you`d want the dirt of a dc offset...

I'm not sure what this means but... the Wave Table primitive is supposed to remove DC unless you tell it not to.

What I was planning was a lot more complicated as I was bogged down in getting as accurate an analogy to PWM with a drawn wave-form as is possible.

Tzarls idea is very clever and very usable... but I don't think the example is quite right yet but I can't see why not (it just doesn't seem to be acting as I'd expect is some circumstances).

One warning though... actually modulating the pulse-width, even at modest rates, is not going to work as the wave table primitives cannot accomplish the audio processing required from having to recalc new wave forms many times per second.

MegaHurtz ·

I put the wrong word there.. yesterday i tried to build a more sexy solution. with a wavetable and "special" ramp, but didn`t quite manage to get it stable. started bevaving like a filter. maybe getting back to it today. If i do ill post it.

NekroDisko ·

Hello! I just want to tip you of a solution of my own some months back, where I´ve tried to use both pwm and phase (visible in the display) for wavetables. It might help you. Look up "Morph-Osc experiment" or this link: Morph-Osc experiment

Have fun!!!

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.