Lazarus

Announcements => Third party => Topic started by: Fred vS on February 12, 2021, 07:55:26 pm

Title: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 12, 2021, 07:55:26 pm
Hello.

I am happy to announce the release of WavvieW.
https://github.com/fredvs/WavvieW/releases

WavvieW analyzes the build-in noise-wave-generator-synhtesizer, audio files, input-mic and shows the result with his oscilloscope and FFT-spectrum...

It is compiled with fpc 3.2.0 and uses MSEgui widgetset.

Thanks to Wp to give me the impulse to jump back into fft (that still fascinates me).
The open source library fftw is used to calculate the fft's.
To access audio device, open source library PortAudio does the job.
And to decode wav, ogg and flac files, open source library libSndFile takes care of it.

Those libraries are dynamically loaded and included in the release.

Enjoy!

Fre;D
Title: Re: WavvieW: the signal producer and analyzer.
Post by: winni on February 12, 2021, 10:40:45 pm
Hi Fred!

Great stuff!

And a lot of work!

And white noise - so much more enjoyable that HipHop!

After some testing some hints:

* There is a lot of royalty free music in the net, which could be used as demo audio file.
Example : https://freemusicarchive.org/genre/Rock (https://freemusicarchive.org/genre/Rock) 

* The highest oktave on the piano keyboard is too loud. It hurts.
Either start one octave down.
Or give the higher tones less volume - like a "real world piano".

* I am missing the saw tooth at the wave gen

*  When I look at the Icon I feel drunk.  Before the first beer!
It is realy unsharp!

But great work!

Winni
Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 12, 2021, 11:54:41 pm
Hello Winni.

Thanks for testing!

Quote
* There is a lot of royalty free music in the net, which could be used as demo audio file.
Example : https://freemusicarchive.org/genre/Rock
Thanks, I will try this.

Quote
* The highest oktave on the piano keyboard is too loud. It hurts.
Either start one octave down.
Or give the higher tones less volume - like a "real world piano".
Ok, I will check this.
But have you try to change the envelope editor (Attack, Decay, Release)?

Quote
* I am missing the saw tooth at the wave gen
Huh, I did use your code from the alsa_sound project.
Is it not the saw tooth you want?

Quote
*  When I look at the Icon I feel drunk.  Before the first beer!
It is the goal!  :D
But ok, I need inspiration for this.

Quote
And a lot of work!
Not so much, only 6 dark days and white nights not stop programming.

Fre;D
Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 13, 2021, 12:09:40 am
@Winni:
Quote
* I am missing the saw tooth at the wave gen
Ooops, sorry, I see now that I forgot to add your code:
 
Code: Pascal  [Select][+][-]
  1.        for I := 0 to 359 do
  2.           SA[i] := (round((360 - i)/180) -1)*volume;   //   saw tooth wave


OK, promise for next release (and next asap commit).

Fre;D
Title: Re: WavvieW: the signal producer and analyzer.
Post by: winni on February 13, 2021, 07:13:37 pm
Hi!

A proposal for an Icon.
Made only of parts of the screenshot

Winni
Title: Re: WavvieW: the signal producer and analyzer.
Post by: wp on February 13, 2021, 10:01:47 pm
A proposal for an Icon.
Made only of parts of the screenshot
Serious? Imagine what this will look like at 16x16.
Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 13, 2021, 10:05:08 pm
Hello Winni.

Wow, superb, I take it (if you agree).

About the wave formula.

Here the sine wave formula:

Code: Pascal  [Select][+][-]
  1. case WaveType of
  2.       0: begin
  3.           for I := 0 to 359 do
  4.           SA[I] := round(sin(pi * I / 180.0) * volume);  // create sine wave pattern
  5.          end;

So it begins from sin(0) = 0
then pass to sin(90) = 1
then pass to sin(180) = 0
then pass to  sin(270) =-1
And finally to  sin(360) = 0

So the cycle begins from 0 to end to 0.

But with the saw tooth wave:

Code: Pascal  [Select][+][-]
  1. 2: begin
  2.           for I := 0 to 359 do
  3.           SA[i] := (round((360 - i)/180) -1)*volume;   //   saw tooth wave
  4.          end;
  5.       end;

It begins with 1 then end to -1,
So, imho, only a half cycle.

Should it not be something like this ?:

Code: Pascal  [Select][+][-]
  1. 2: begin
  2.           for I := 0 to 359 do
  3.          if i < 180 then
  4.           SA[i] := (round((360 - (i*2))/180) -1)*volume   //   saw tooth wave
  5.          else  SA[i]  := SA[359-i];
  6.          end;
  7.       end;

Fre;D
Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 13, 2021, 10:07:06 pm
Hello Wp.

You see, I am still in your mood...
And of course I dont forget your project (if you want).

Fre;D
Title: Re: WavvieW: the signal producer and analyzer.
Post by: wp on February 13, 2021, 10:34:54 pm
But with the saw tooth wave:

Code: Pascal  [Select][+][-]
  1. 2: begin
  2.           for I := 0 to 359 do
  3.           SA[i] := (round((360 - i)/180) -1)*volume;   //   saw tooth wave
  4.          end;
  5.       end;

It begins with 1 then end to -1,
So, imho, only a half cycle.

winni's function is correct. You begin with I = 0: (360-i)/180-1 is 1. At I=180 you have (360-180)/180-1 = 0 and at the end of the cycle you have (359-360)/180-1 = almost -1. The result is a very asymmetrical wave with a long decay and an extremely fast increase. T

In your formula you multiply i by 2 - this doubles the frequency!
Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 13, 2021, 11:07:15 pm
But with the saw tooth wave:

Code: Pascal  [Select][+][-]
  1. 2: begin
  2.           for I := 0 to 359 do
  3.           SA[i] := (round((360 - i)/180) -1)*volume;   //   saw tooth wave
  4.          end;
  5.       end;

It begins with 1 then end to -1,
So, imho, only a half cycle.

winni's function is correct. You begin with I = 0: (360-i)/180-1 is 1. At I=180 you have (360-180)/180-1 = 0 and at the end of the cycle you have (359-360)/180-1 = almost -1. The result is a very asymmetrical wave with a long decay and an extremely fast increase. T

In your formula you multiply i by 2 - this doubles the frequency!

But with sine wave, it begins with 0 and finish with 0. (passing by + 1 and -1).

So, for tooth wave if it begins with 1 it should finish with 1 too, (passing 2x by 0). but here it finish with -1 (and pass only once by 0).

Then both wave cycles are not equals, cycle tooth wave is 1/2 cycle sine wave.

Or maybe I miss something.
Title: Re: WavvieW: the signal producer and analyzer.
Post by: wp on February 13, 2021, 11:39:57 pm
At the begin of the cycle the wave is +1, at the end it is at -1. And the next point immediately begins a new cycle. The second zero transition therefore is between the last point of the first cycle and the first point of the second cyle. It is not a symmetrical triangle, it really looks like the teeth of a saw.
Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 14, 2021, 12:21:09 am
Hello Wp.

Here result with sine_wave, sine_trangle from alsa_sound
The sine_tooth use my code:

Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 14, 2021, 12:29:30 am
Re-hello.

I think there is a misunderstood.

Quote
* I am missing the saw tooth at the wave gen

In fact it was not missing, the "triangle" wave was a saw tooth.

And the new one I proposed is a "pyramid" wave.
Title: Re: WavvieW: the signal producer and analyzer.
Post by: winni on February 14, 2021, 12:36:10 am
Hi!

Thanx wp for clarifying the wave stuff:

* A Sinus wave has the first half above zero and the second half below
* The same with the a square wave - with another envelope
* Even the sawtooth wave does the same: The one half above zero and the other half below.

So from this point of view they do all the same - but with totaly different envelopes.

From the deepth of my harddisk if found a nice illustration - I think "stolen" from Wikipedia.

If there are "Non-believers" do the following:

For  the sawthooth:

Take the tone + 1. harmonic + 2. +........+8. harmonic
After 8 harmonics it looks nearly like a sawtooth.
For perfection take more.

For the square wave:

Take the tone and the next odd harmonics.
At harmonic 9 it looks like a square wave.
For perfection .....

Music, waves and math is a nice job.

Keppler played around with it.
He computed the relations of the major-axis to the minor-axis of planets and looked at them as musical intervals.
Fascinating.

Just by the way: How the human ear can be betrayed:
It does not matter if the sawtooth is a increasing or a decreasing wave.
Nobody can hear the difference.

Winni

Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 14, 2021, 12:58:54 am
Hello Winni.

Always a pleasure and enrichment to read you.

Ok, so everybody is in agreement.

My mistake was to call a "triangle" wave for a "tooth wave".
And to call a "pyramid wave' for a  "triangle wave".

Many thanks for the graphics, no more confusion.
(And I will fix this asap, your icon is already there, and with it no more feeling drunk, only stoned ).

Fre;D
Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 16, 2021, 02:14:51 pm
Hello.
There is a new release of WavvieW!
https://github.com/fredvs/WavvieW/releases

Binaries for Linux 32/64, Windows 32/64, FreeBSD 64 and arm32/aarch64 Rpi.

Have fun.

Fre;D
Title: Re: WavvieW: the signal producer and analyzer.
Post by: Lulu on February 16, 2021, 04:54:33 pm
Great ! Thanks ! :)
Title: Re: WavvieW: the signal producer and analyzer.
Post by: Fred vS on February 21, 2021, 06:02:50 pm
Hello.

There is a new release of Wavview (https://github.com/fredvs/WavvieW/releases).

With multi-channels and Winni's waves..

There are executables for Linux 32/64, Windows 32/64, FreeBSD 64, ARM Rpi32 and aarch64 Rpi64.

Have fun!

Fre;D
TinyPortal © 2005-2018