waveform designer for music

hi there. is there plugin or vst to input waveform that i want to the shape that i want?

Not exactly… There is a Generate tool that allows you to generate various tones & noise and you could use the Envelope tool to “draw” the ADSR envelope. But, it’s not going to give you anything “musical”.

Or if you have a good understanding of the math behind sound and you can do a little programming, you can use [u]Nyquist[/u] to generate a wide variety of sounds.

What “shape” do you want?
Some shapes are very easy to create using Nyquist, others more complex, but Nyquist is able to produce any possible wave shape.

Are you aware that two waveforms can have completely different “shapes” and yet sound identical? The reason being that it is not the “shape” of the waveform that you hear, but the frequency content. Here’s an example of two tones that have very different shapes, but identical frequency content:

here’s what i want to do… is to change the waveform of the music. is there anyway i can do that?

Yes. Audacity has many effects that can change the waveform of the music. See: Index of Effects, Generators, Analyzers and Tools - Audacity Manual

Is there some specific way in which you want to change the waveform of the music?

i’m looking for waveform editor that will change the waveform of the music. you know what wave form means don’t yeah?

I know what I mean by “waveform”. I don’t know what you mean by “wave form”. Perhaps you could describe what you mean.

i’m looking for waveform editor that will change the waveform of the music. you know what wave form means don’t yeah?

All of the Effects in Audacity will change the waveform in one way or another. The Envelope Tool or the Draw Tool can also change the waveform.

that’s not what i’m looking for. i’m looking to do a whole chain of the music in audacity. plus i’m not looking to change the volume either just the waveform. i’m looking to design any shape or size just about

Perhaps if you describe in detail, (possibly with illustrations), an example of what you want to do, we may understand what you mean.

something like this https://www.dropbox.com/s/sglhwq4ghzamj8p/waveform.jpg?dl=0

What software is that? If it does what you want, you should probably use it instead of Audacity.

You can do that with Nyquist. But, you’ll need to learn some programming* and if you are new to digital audio, read [u]Digital Audio Fundamentals[/u] from the Audacity User Manual.

With Nyquist you should be able to generate any wave shape you want. The thing that gets extremely difficult is mathematically generating/synthesizing a waveform that sounds like a real musical instrument. The waveform you showed us would sound “electronic” if repeated, and depending on the frequency (period) it would sound like a “tick” or a “thump” if not repeated.

You could also attempt to draw the waveform with the Draw tool. But, I assume you want to repeat the waveform for hundreds or thousands of cycles.

Since your digital PCM audio is digitized/quantized at a constant sample rate (i.e. 44,100 samples per second for CD audio), your digitized waveform may not look exactly like the mathematical ideal (no matter what software you use**). But, the sound should be very close to what the ideal waveform would sound like, and the signal out of your DAC should be very close to what you’d get out of the DAC with a mathematically ideal waveform.


  • Since digital audio is simply an array of samples (values) and you “connect the dots” to get a waveform, you can create waveforms in any programming language. But , Nyquist should simplify most of the “overhead” programming. (I’ve done quite a bit of programming in various programming languages, but I’ve never used Nyquist.)

** That other software may show the idealized waveform but if you save it to a WAV file (or other digital audio format) it’s going to be sampled at a fixed sample rate.

That doesn’t appear to be what you asked for in your previous posts. That “Waveform Designer” appears to be for generating tones rather than for modifying music.
Yes you can generate tones with Audacity. The Tone generator provides a number of preset shapes (Generate Menu - Audacity Manual).
Other shaped waveforms (any possible shape) can be created using Nyquist, but there is not a graphical interface for creating wave shapes with Nyquist. To create a waveform with the required shape of waveform (using Nyquist), you would create a “wave table”, and then use that as a lookup table for an oscillator.

Example, to create a waveform with a shape like this:

  /\    |\
 /  \   | \
/    \__|  \

The shape could be produced using piecewise linear interpolation:

(pwl 3 1 6 0 8 0 8 1 12 0)

which can be used as a table like this:

(setf mytable (abs-env (maketable (pwl 3 1 6 0 8 0 8 1 12 0))))

and then used in an oscillator like this:

(setf mytable (abs-env (maketable (pwl 3 1 6 0 8 0 8 1 12 0))))
(osc 60 1 mytable)

The final piece of code above may be used in the Nyquist Prompt effect to create a waveform. See: Nyquist Prompt - Audacity Manual

Here is a closeup of the waveform generated by this code:
There are many other ways to create waveforms with Nyquist. The above is just one example.

is there anyone can create gui for me, so i can do this with the mouse?

i don’t know every mathematical calculation

please do a gui to make things simple and easy. thanks :smiley:

this is for those who wanna make things easy for waveform design.

Nyquist plug-ins are currently only able to have very simple interfaces. A GUI like that other program is not currently possible for Nyquist plug-ins.

An alternative approach would be generate a short bit of silence (from the Generate menu), then zoom in very close (http://manual.audacityteam.org/man/zooming.html) so that you can see the dots, then use the “Draw” tool (http://manual.audacityteam.org/man/draw_tool.html) to draw a single cycle of the waveform, then use the “Repeat” effect (http://manual.audacityteam.org/man/repeat.html) to repeat the waveform.

hi steve, can you help me to draw me this shape with nyquist?

where do you want the center line to be?

on the left.

What I meant was, do you want the waveform centred vertically. I will assume that you do.

So here’s a general method that can be used to produce waveforms of any desired shape:

To start, draw out the waveform on a piece of paper - graph paper would be ideal:
Note the positions of the red dots. These dots define the “shape”.
From the above image we can see that the dots are at:

0.0, -1.0
0.5, -1.0
1.0, 0.5 (approx)
2.5, 1.0
4.0, 0.5 (approx)
4.5, -1.0
5.0, -1.0

If necessary we can use trigonometry to work out the approximate values more precisely (see https://www.mathsisfun.com/sine-cosine-tangent.html) giving us points at:
(0.0, -1.0) (0.5, -1.0) (1.086, 0.414) (2.5, 1.0) (3.914, 0.414) (4.5, -1.0) (5.0, -1.0)

In Nyquist, we can store these values in a list like this:

(setf points (list 0 -1 0.5 -1 1.086 0.414 2.5 1 3.914 0.414 4.5 -1 5 -1))

In Nyquist there is a function called PWLV-LIST which creates a waveform from a list of points. The first point is assumed to start at “time = 0”, so removing the first zero from the list we have a list of points like this:

(setf points (list -1 0.5 -1 1.086 0.414 2.5 1 3.914 0.414 4.5 -1 5 -1))

We can now create a single cycle waveform using this list like this:

(setf points (list -1 0.5 -1 1.086 0.414 2.5 1 3.914 0.414 4.5 -1 5 -1))
(pwlv-list points)

To get a reliable length of the waveform, we need to add a couple of additional commands. Firstly we need to tell Audacity that we want to treat this code as a generator, so we start our script with:

;type generate

and then we tell Nyquist to use absolute times (seconds) by wrapping the generating command in “ABS-ENV” (absolute environment), giving us:

;type generate
(setf points (list -1 0.5 -1 1.086 0.414 2.5 1 3.914 0.414 4.5 -1 5 -1))
  (pwlv-list points))

This tells Nyquist to create a waveform that is 5 seconds duration, using the points from our list. By default, PWLV-LIST (like the other “PWL” commands) produces a low sample rate sound, where the sample rate is 1/20th of the track sample rate. The effect of this is that when the waveform is returned to a track, the length will be 1/20th of the length that we defined, so it will actually produce a single cycle waveform that is 5/20 = 0.25 seconds duration. This will be fine for our purpose, but before going on, try running the above code in the Nyquist Prompt effect. You should get a waveform like this:
Are you with me so far? Did that work for you?

Moving on. We don’t actually want a single cycle, what we want is a continuous tone. To get a continuous tone, we can use a single-shot waveform as a “lookup table”. To do that, we need to make a lookup table from the single cycle waveform using the MAKETABLE command.
Once we have the lookup table, we can use it with the oscillator command “OSC”.

;type generate
(setf points (list -1 0.5 -1 1.086 0.414 2.5 1 3.914 0.414 4.5 -1 5 -1))
(setf lookuptable
      (pwlv-list points))))
(osc 60 30 lookuptable)

A bit of explanation about the final “OSC” command: The first parameter is the note to produce, and is the MIDI note number. The second parameter is the duration of the tone in seconds. http://www.cs.cmu.edu/~rbd/doc/nyquist/part8.html#index380
If you wish to define the pitch in Hz rather than as a note number, you can use the command “HZ-TO-STEP”.

Here’s the final code to generate a 440 Hz waveform for 30 seconds:

;type generate
(setf points (list -1 0.5 -1 1.086 0.414 2.5 1 3.914 0.414 4.5 -1 5 -1))
(setf lookuptable
      (pwlv-list points))))
(osc (hz-to-step 440) 30 lookuptable)