[audacity4blind] Re: Manuals and tutorials (Re: nyquist little manual)

  • From: "Damien Sykes-Lindley" <damien@xxxxxxxxxxxxxxxxxxxx>
  • To: <audacity4blind@xxxxxxxxxxxxx>
  • Date: Fri, 18 Aug 2017 16:28:03 +0100

Hi,
Very interesting. My initial thought would be that skipping every other sample would give you a sound half the speed rather than half the pitch, but I guess since frequency cycles are also changing at half the speed it vaguely makes sense.
Also the samples. Each sample represents the position of a speaker, from which we determine the volume, hence the reason overall volume is calculated on the entire sample, and why 0 is defined as silence - the speaker is at a central position. That also makes the steady curve of the sine wave make sense - just before Christmas last year, I actually generated a 1Hz sine wave, from a preset of course, and thanks to having an exposed sub speaker, was able to feel each individual cycle. Quite eery, but fascinating as well.
So I guess filtering works on the whole sample to determine which samples would fit the required frequencies in order to remove them, and delaying is a case of copying samples, changing the volume and mixing etc.
I think it's all starting to slot into place with a satisfying clunk. Finally. That is of course assuming my above theories aren't also wrong in some way.
Still interested to know how convolution works. Would that even be possible to write as a Nyquist plugin since it will need you to be able to select an impulse response file to work from?
Cheers.
Damien.
-----Original Message----- From: Robert Hänggi
Sent: Friday, August 18, 2017 3:51 PM
To: audacity4blind@xxxxxxxxxxxxx
Subject: [audacity4blind] Re: Manuals and tutorials (Re: nyquist little manual)

Hi Damien

The sign of a sample dictates the position of a speaker membrane. It
is like a pendulum that goes back and forth.
If you want to change the volume of a whole track, you have to
multiply each sample with a constant positive) factor.

If you want to create a fade-out, you would multiply it with a ramp.
For instance 1.0 0.875, 0.75, 0.625, 0.5, 0.375, 0.25, 0.125
would be suitable for our wave form above (lowest sample would be 12
dB lower than before).

Pitch shifting is a bit more involved.
In the simplest case (raising the pitch by one octave), you would skip
every other sample. It does essentially not matter if you're taking
1,3,5,... or 2,4,6,....

In order to lower the pitch, you have to insert interpolated values.
However, there lies the problem. Imagine
0.0, 1.0, 0.0, -1.0, 0.0

If you interpolate linearly, there would now plus or minus 0.5 stand
at each other position.
This is a triangle waveform but it could actually be a pure sine tone
that we wanted or assumed (with 0.7071 instead of 0.5).
So, the interpolation has to be better. But even with the best one, it
will only be an approximation because we are trying to create the
double of information.

It gets worse if we want to preserve the length of the sound.
The naive solution (for the double octave case) is to repeat each cycle once.
But this creates a step function rather than a smooth transposition
from one sound to the other.
Indeed, there are no simple formulas for pitch shifting and every
manufacturer of e.g. tuning plug-ins is very secretive about the
implementation details.

Robert

On 18/08/2017, Damien Sykes-Lindley <damien@xxxxxxxxxxxxxxxxxxxx> wrote:

Hi Robert,
Ah, I think I get the basics now. So 0=silence, 1=0DB and everything else
lies in between. If this is the case then why do we have negative values?
Also my question still stands - if each sample is an amplitude, which
controls the audible volume, then how do certain formula allow mixing,
others allow pitchshifting etc? What logic dictates these formulae so that
people can work out new formulae in order to generate new effects? Surely
changing any of these sample/amplitude numbers would merely change the
volume rather than the audio - I.E., add .2 to .5 and you get .7, making the

sample louder. Multiply .2 with .5 and you get .1, making the sample
quieter. I don't see how any of that works for mixing, pitch etc.
Having said that, isn't pitch shifting something to do with resampling? Or
did I dream that...
Then there's reverbs and filters, convolution and invert mixing - I have no

idea how all that works. I thought reverb was some really really fast delay,

but when I experimented with that it sounded more like a robot with its head

in a tin can.
Cheers.
Damien.
-----Original Message-----
From: Robert Hänggi
Sent: Friday, August 18, 2017 1:32 PM
To: audacity4blind@xxxxxxxxxxxxx
Subject: [audacity4blind] Re: Manuals and tutorials (Re: nyquist little
manual)

Hi Damien

The amplitude of a sample is its absolute value.
0.25 is the amplitude of both, a -025 and +0.25 sample.

Let's look at one period of a sine wave:

0.0, 0.707, 1.0, 0.707, 0.0, -0.707, -1.0, -0.707,...

There are 8 samples, thus the frequency is 44.1 kHz/8=5512.5 Hz or
48kHz/8=6000Hz.
To get the volume (as peak), you must take the maximum absolute value
of the waveform.
This is obviously 1.0.
In this example, it would have been enough to look at 4 samples but
this does not hold for other wave forms or if the phase would be
different or if one period would be 7.5 samples long.

The peak isn't reliable for volume measurement because any sample
could accidentally be very high.

That's why the Root Mean Square (RMS) measurement is frequently preferred.

- First step is  to square all samples which makes them incidentally
positive as well:
(0 times 0, 0.707 times 0.707,...)
0.0, 0.5, 1.0, 0.5, 0.0, 0.5, 1.0, 0.5

-Second step is to sum those values= 4.0
- Third step is to divide this by the number of samples=4.0 divided by
8 equals  0.5
- Last step is to take the square root of this value: root(0.5)=0.707...

Except for square waves, this value is always lower than the peak.

To get the volume of a whole song, you would take all samples into
account (summing all squares and dividing by their number).

If you wanted on the other hand to make an amplitude follower, e.g.
for compression, the window would be such that the lowest frequency
that you are interested in is covered. For instance all above 20 Hz
needs 2205 samples for integration (at  44.1 kHz).

Apropos Nyquist:
All up to the Nyquist frequency is reconstructable but not this
frequency itself.
Imagine the sine wave that starts with a phase of 90 degrees.
The values are: 1.0, -1.0, 1.0, -1.0
This is the above sample  wave form with start at the third sample and
skipping three samples to get the next value.
Try another start point, e.g. the second one: 0.707, -0.707, 0.707,...
and the worst: 0.0,0.0, 0.0,...

Robert

On 17/08/2017, Damien Sykes-Lindley <damien@xxxxxxxxxxxxxxxxxxxx> wrote:
Hi Gary,
Yeah, the audio fundamental guide mentions the Nyquist rate, that was one
term I wasn’t aware of before then, but makes sense that Nyquist was
named
for that concept, which itself, by the way, was named after Harry
Theodore
Nyquist (1889-1976). Yes, inventors do fascinate me.

So my theory about actual sample data being between -32768 and 32767 and
that data being converted in a uniform value was correct then. I guess
that
makes sense when we’re talking about files with different sample rates,
bit
depths etc.

The way I understand it, volume is synonymous with amplitude. Is that
right?
If so then I would assume that -1 would be equal to the minimum possible
volume (I.E. -160DB or whatever it is), and 1 represents the maximum
(I.E.
0DB)?

In relation to adding samples, you say that, “if sample 47 of wave 1 is
.3
and that of sound 2 is .4, sample 47 of the new sound is .7.” If that’s
the
case, my understanding is, since each sample is an amplitude (or volume),
that would change sample 47 from -56DB to –24DB (That is assuming we are
working with a -160DB minimum level).

Like I say, I need to know how these samples work before I can start to
touch Nyquist, otherwise I fear I’m going to be frazzled with information
that I don’t understand.
Cheers.
Damien.


From: Gary Campbell
Sent: Thursday, August 17, 2017 5:44 PM
To: audacity4blind@xxxxxxxxxxxxx
Subject: [audacity4blind] Re: Manuals and tutorials (Re: nyquist little
manual)

Hi Damien,



It's been a while since I've used Nyquist, but I learned what I know
about
Audacity and Nyquist from the Nyquist manual.  On the wiki there is a
Nyquist Plug-ins Reference which has links to the Nyquist manual.



An audio sample in a 16-bit signed WAV file is a number between -32768
and
32767.  In a 24-bit file it would be different.  Nyquist abstracts this
out
as a number between -1 and 1 so your program is not dependent on the way
each sound is stored.  If you display a sound as a graph of voltage
versus
time, each sample is the value of the voltage at that point in time.  So
in
Nyquist a sample is a number between -1 and 1 that is the amplitude of
the
sound at that point in time.  If you were to examine samples of a sine
wave
you would find that they would start at 0, increase for a while until
they
reach a maximum, then decrease through 0 to minus the maximum, and then
increase to the maximum again.  The samples between the two maximum
points
would represent one cycle, the amount of time that represents is the
"period" (sec/cycle) of the wave, and the frequency of that sound is 1
over
the period.  If you sum two sounds in Nyquist, you make a new sound by
adding the values of sample 1 of both sounds, then sample 2, etc.  So if
sample 47 of wave 1 is .3 and that of sound 2 is .4, sample 47 of the new
sound is .7.  If you multiply 2 sounds you take the product of each
sample,
so you again change the amplitude in a different way, so the speed
doesn't
change.  There are some concepts used to work with sounds  that are
unique
to Nyquist, and you need to read the first sections of the Nyquist manual

to
understand them.  If I were going to do much with Nyquist I would have to

go
back and read the Nyquist manual, time which my wife would consider not
well
spent!




BTW: Another post talked about how you can only represent a sound with a
frequency of half the sample rate.  That is called the Nyquist rate,
after
which Nyquist was named.




Gary





On 8/14/2017 2:16 AM, Damien Sykes-Lindley wrote:

  Hi,
  I don't know why, but Nyquist kind of reminds me of the GoldWave
expression evaluator. Not sure if it's because the common upshot was I
couldn't understand either one of them, despite having a programming
background. Lol.
  Seriously though, I may be mistaken but they both may have this weird
caveat that you need a working knowledge of both programming, and digital
audio structure. The latter I have no experience with whatsoever, so when
people talk about adding signals to increase volume or multiplying
signals
to mix or multiplying/dividing individual samples to manipulate speed...I
haven't a clue how that works in practice. I was always taught that
2*2=4,
not chipmunk. *Grin*.
  At least making an attempt to be serious again, I think it's more a
theory
behind digital audio processing is more what's needed. Everything I have
seen so far has either been very technical, or doesn't make sense. For
instance, I read somewhere, or at least understood it as, that an audio
sample is a number between -1 and 1. If that were the case, that could
easily be stored in 2 bits, yet audio is generally saved as 16, mixed at
32
bit, which I calculate as providing ranges of -32768 to 32767 and
-2147483648 to 2147483647 respectively.
  Additionally, I can't seem to find anything regarding a logical
explanation as to what the numbers mean. The simplest explanation used
most
often, which I understand to a degree, is that each number represents
either
an amplitude, or a speaker position. I've seen both explanations, not
sure
how they link together but I guess they do. But nothing explains why
doing
something to one number and something else to another can change the
output
in a way that makes me think that adding would logically change the
volume,
multiplying would logically change the speed, using a square root of the
inverse sign might apply a filter, or raising to the power of 16,
dividing
by Pi and adding the number of miles between NASA's latest rocket and the
sun would cause a flange. In case those weird formulas start a form of
interesting debate, let me clarify for those that didn't pick up on it
that
those last ones are completely made up garbage...I've no idea what would
cause those effects and I've no idea what using those formulas might do -
knowing my luck probably cause a lot of distortion and unwanted hiss.
  But as you can see. I personally think that's the kind of tutorial that

is
needed.
  I've always wanted to make a convolution plugin since neither GoldWave
or
Audacity seems to have one - Wondering if Nyquist is up to such a task
once
I can get all this theory learned first.
  Cheers.
  Damien.
  -----Original Message----- From: Steve the Fiddle
  Sent: Monday, August 14, 2017 8:48 AM
  To: audacity4blind@xxxxxxxxxxxxx
  Subject: [audacity4blind] Re: nyquist little manual

  There is this page in the Audacity wiki that covers much of the
  Audacity specific Nyquist information:
  http://wiki.audacityteam.org/wiki/Nyquist_Plug-ins_Reference

  The complete reference for Nyquist functions is in the full Nyquist
  manual: http://www.cs.cmu.edu/~rbd/doc/nyquist/indx.html
  and detailed information about LISP in Nyquist (with examples) can be
  found here:
http://www.audacity-forum.de/download/edgar/nyquist/nyquist-doc/xlisp/xlisp-index.htm

  Steve

  On 14 August 2017 at 08:39, Paolo Giacomoni mailto:paolgiac@xxxxxxxxxx
wrote:

    Hi listers.
    I.m looking for a little nyquist manual, specially for audacity
applications.
    Thanks you
    Paolo
    The audacity4blind web site is at
    //www.freelists.org/webpage/audacity4blind

    Subscribe and unsubscribe information, message archives,
    Audacity keyboard commands, and more...

    To unsubscribe from audacity4blind, send an email to
    audacity4blind-request@xxxxxxxxxxxxx
    with subject line
    unsubscribe



  The audacity4blind web site is at
  //www.freelists.org/webpage/audacity4blind

  Subscribe and unsubscribe information, message archives,
  Audacity keyboard commands, and more...

  To unsubscribe from audacity4blind, send an email to
  audacity4blind-request@xxxxxxxxxxxxx
  with subject line
  unsubscribe

  The audacity4blind web site is at
  //www.freelists.org/webpage/audacity4blind

  Subscribe and unsubscribe information, message archives,
  Audacity keyboard commands, and more...

  To unsubscribe from audacity4blind, send an email to
  audacity4blind-request@xxxxxxxxxxxxx
  with subject line
  unsubscribe





The audacity4blind web site is at
//www.freelists.org/webpage/audacity4blind

Subscribe and unsubscribe information, message archives,
Audacity keyboard commands, and more...

To unsubscribe from audacity4blind, send an email to
audacity4blind-request@xxxxxxxxxxxxx
with subject line
unsubscribe


The audacity4blind web site is at
//www.freelists.org/webpage/audacity4blind

Subscribe and unsubscribe information, message archives,
Audacity keyboard commands, and more...

To unsubscribe from audacity4blind, send an email to
audacity4blind-request@xxxxxxxxxxxxx
with subject line
unsubscribe



The audacity4blind web site is at
//www.freelists.org/webpage/audacity4blind

Subscribe and unsubscribe information, message archives,
Audacity keyboard commands, and more...

To unsubscribe from audacity4blind, send an email to
audacity4blind-request@xxxxxxxxxxxxx
with subject line
unsubscribe

The audacity4blind web site is at
//www.freelists.org/webpage/audacity4blind

Subscribe and unsubscribe information, message archives,
Audacity keyboard commands, and more...

To unsubscribe from audacity4blind, send an email to
audacity4blind-request@xxxxxxxxxxxxx
with subject line
unsubscribe

Other related posts: