Making your own user waveform

One more thing. Getting a bit geeky here, but one thing I am going to also poke around with is trying to come up with calculating an “optimal” filter that minimizes the Gibbs effect, differences between original and filtered signal samples, dB level of stopband signal, and filter crossover. Way overkill, but I like torturing myself with this kind of stuff.

I am also trying to get some pages set up on a website I am working on so folks can download the waveforms I have.

3 Likes

If you like torturing with math, than use a FIR filter routine with symmetric impules response based on some hundreds of samples, that should solve it fair enough … and with those 4096 sample waveform it should not calculate forever.

It has nothing to do with Hz (which is the meassurement for frequency) because a waveform has no frequency as long as you don’t know at which speed it’s sampled and/or played.

A cutoff at 512 Hz would be only suitable if you assume a tone frequency of 1 Hz (not very realistic), sampled with 4096 samples per second.

This brings us nearer to the problem!
If you want to sample the waveform of an available instrument, you should do that at a sampling rate that is 4096 times a multiple of the lowest subharmonic tone of that waveform … BUT none of the notes of a normal instument fullfills that requirement for any usual sampling rate.
And even if you sample at 96000 k you would need a tone below the lowest key of an 88 key piano keyboard.

If you sample at 192000 k you would need a tone with 46.875 Hz (F#1/Gb1 = Fis1/Ges1 has 46.2493), cut out a full wave (should have 4151 samples for F#1), than shrink (= pitch change up) this a little to 4096 samples and then apply a lowpass at 24kHz (1/8 of sampling rate) to make it right.

Because we don’t know if the lowpass respects the fact that we need a circular waveform (without overtones at the jump back) it would be a good idea to sample/cut out at least three full waves (12 454 samples), shrink them to 12288 samples and than after 24kHz lowpass cut out 4096 samples from the middle.

Comment to that “jump back overtone” issue:
Not only steps have overtones. Even a sharp bend has audible overtones too!

Alternative way (if your hardware support custom sample rates) that prevents shrinking and sample calculations):
sample an A0 (lowest key on piano, 27.5 Hz) at a custom sample rate of 112 640 “Hz” … gives you exactly 4096 samples per wave! … and than lowpass it at 14 080 Hz (14kHz would be near enough).

@worblyhead
The FIR filter hint was a joke. If you see the numbers in real frequencies, you’ll clearly see that it’s not woth the effort to care about the Gibbs effect for 14kHz overtones of a 27.5Hz tone.
It’s just important to make sure that there is clearly no aliasing from higher overtones.

Just going by what UDO themselves state:

I’d like to create my own alternative waveforms. What is the user waveform format? – UDO Audio Support (zendesk.com)

Bandlimited at sampling frequency/8 (Nyquist/4), i.e. frequency content above 512 Hz in your 4096 point waveform should be removed

I already posted this link once before.

Can I ask a general question? Has anyone on this forum actually produced their own .ws6 waveform and put it online for us to try? I am seeing a lot of “blinding with science”, which I don’t understand in the least.

Signed 16bit PCM? What does “signed” mean? Or “little endian”? I have absolutely no idea. All I want is to evidence it is possible to make these .ws6 waveforms, and I am not seeing it here. I don’t like wasting my time on a futile pursuit.

That SCW single cycle editor does not save a .ws6 file that works on my Super6. The option seems to be changing the file extension from .wav to .ws6 when saving. It is not recognised by my Super6.

2 Likes

How’s it going? Does it work yet? When can we try it?

1 Like

Invert LFO 1 Sawtooth waveform - UDO Audio Gear / Super 6 - UDO Audio Forum (udo-audio.com)

That was created with the SCW editor, saved as a 4096 point .wav file, opened in Audacity, saved with the correct S6 format as outlined by UDO support, renamed to .ws6, and voila, it works.

I can’t share the Prophet VS conversions I have, as I am not sure what the copyright situation is, and someone else did the conversions for me.

1 Like

To be honest, these are the fundamental things to know and to understand, if you want to prepare your own waveforms with standard software products. Without this knowledge its like doing surgery because you simply got a sharp knife.

So you have to wait for someone to come up with a solution that is prepared exactly for that purpose and is usable without this fundamental knowledge.

It is possible for sure (because there is nothing magic or special about the format description), but even for me (who understood the technical terms you claimed to be "blinding with science”) the workflow for doing that using a free standard tool like Audacity is a little too complicated, time consuming and failible.

So currently i am developing as part of my patch decoder and waveform visualizer
(see there Waveform and Spectrum visualization - #4 by MOOGelPackung )
a tool that does all the required steps in one rush (or maybe two) … but even using that requires some kind of fundamental knowledge, because waveforms in general (especially if they come out of other instruments) have some pitfalls that require some kind of clever desicion.

No, this is no option, because a .wav file has additional content in front (a header describing the contained wave data) and a .ws6 file has not. .ws6 is pure content without any header.
You would have to cut of the first 44 bytes.

I will open a new topic for my editor/librarian here on the forum.
As I mentioned on the FB group, the editor is ready up to a certain point but as long as the Midi implementation is not done, it is just a patch mapper able to load and save patches in a sysex format that I created. When UDO will release the Midi spec, I will check to extend it to a full librarian.
I also progressed on the Wave editor but this is a parallel project. I’m doing the wave form manipulations at the moment then will look at load/save formats for sure including the .ws6 one.

1 Like

MOOGelPackung

I make no apology for being computer illiterate. I had guessed the .WAV file has a header, because when you make a single cycle waveform in SCW it is 16.43 Kb, which is double the size of Official Super 6 waveforms which are all 8.19 Kb. If you make the SCW waveform 2048 rather than 4096 samples, it is nearer 8.19 Kb size. So the header must double the size of the 4096 file.

It might be possible to edit out the .WAV header in a text editing programme? Maybe the same gobblydegook is repeated at the beginning of all SCW waveforms? Trouble is, the text editor probably puts its own stuff in there, making it equally unusable as .ws6 (Yes, computer code is gobbledegook to me, and I make no apology.)

Just load into Audacity (freeware) and re-save with the correct file type, raw/no header etc.

No, the standard WAV header ist just 44 bytes (as i mentioned above).
The thing is: WAV is only a container format and the first block in the header describes whats in it.
WAV files support different sample rates, multiple audio channels and different bits per sample … and even different data encodings (like compression). All this is encoded in the header so that the software later knows how to load (and play) the WAV file.
The .ws6 file has and needs no header, because it has no sample rate, only one channel (=mono) and allways 16 bits per sample. It’s pure data in a predefined format.

If your WAV file with 4096 samples is 16.xxxkB, it might have 32bits per sample or two channels.
And even if it had the right amount of data, a text editor ist not the rigth tool für cutting of the header of any binary data file.

But to be honest: THIS is really not the challenge for preparing a correctly sounding waveform!

If it’s just that one waveform you need, send the WAV to me via PN, i’ll take it as test data for my WAV2ws6 Converter and send you back the result.
But it would be better if you sent me a longer WAV (more than 10 000 samples) that contains your desired waveform within a countinuos tone, so that i could make sure to get the right start/end points for one single cycle waveform.

1 Like

MOOGelPackung

Thanks for offering to convert my sample material, but I will decline your kindness.

This is the most detailed explanation I have seen on this topic. It is clearly way too complicated for a non computer literate person to do anything meaningful. My secondhand Applemac is OS10.5 and I will not get a new computer just to dabble in this. I have other music gear for making weird noises, and maybe in time more waveform banks will be downloadable. UDO Super6 is a tiny player community, so it’s never going to be a big commercial market.

You can only put 16X .ws6 samples in at one time, and it is, let’s face it, a right pain to do the job.

It’s not a question of computing power, just a question of background knowledge in using the right tools in the right order.

This is only quarter of the truth!
You can have 16 waveforms PLUS 16 alternate waveforms, so there are at least 32 predefined waveforms available for random selection (and in fact, because of the lack of wavescanning or wavemorphing or granular synthesis functions is see no real need for having much more).

On top of this, each patch stores it’s own set of DDS1 & LFO1 waveforms, that can differ from the predefined waveforms … and each patch can be used as a starting point for futher sound manipulations, so there is more than enough space for user waveforms, if you want to use exactly this single feature excessively.

1 Like

MOOGelPackung

Many thanks. I did know patches retain their waveform, when the waveform set is replaced. I did not know about the second bank flashing LED thing also applies to waveforms, and will give it a try. Don’t get me wrong, I love my Super6, because the hi-rez audio is so crystaline clear and free of aliasing and the sub-bass is incredible.

@MOOGelPackung
Hi man!
What’s the best way to convert a 1024 sample wav file to a 4096 one?

  • option 1: I copy 4 times the 1024 sample wav after each other to get the 4096 one.
  • option 2: I copy the value of each sample 4 times after each other
  • option 3: ?
    There are many AKWF at 1024 samples…
    Thx in advance for your ideas!

Someone told me to use a different sample rate. That’s actually a good Idea. In that way, you are thinking about a cycle. If you copy the waveform which is long 1024 sample (i.e. x 4 times) you’d have a higher pitched waveform, and UDO does not aloud you to assign a key note. This would be great to be implemented honestly (would facilitate a lot the management of the waveforms) @udo-audio

What I did in my waveform converter is linear interpolation.
So if you have a source array s[0…1023] and a target array t[0…4095]
than
t[0] = s[0]
t[1] = (3 * s[0] + s[1]) / 4
t[2] = (s[0] + s[1]) / 2
t[3] = (s[0] + 3 * s[1]) / 4
t[4] = s[1]
t[5] = (3 * s[1] + s[2]) / 4
… and so on

This gets a little more complex if the source sample length is any given size, but it stays simple linear arithmetic.

After all you should apply the required lowpass filter anyway.

Thx for your answer and confirmation!
This is what I already did (can handle any number of samples and done with a loop of course) :wink:

What do you mean by “you should apply the required lowpass filter anyway”?
Is there some code/algorithm somewhere?

1 Like

How do you get the waves from the Prophet VS Arturia plugin? I have it, but I can only find a file called waverom.bin that I can’t open.

EDIT: I was able to get the waveforms, but I truly don’t understand this. I wish there was an editor that I could use to convert to the correct format. I read through this entire thread and don’t understand how to accomplish any of it.

1 Like