• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Hilfe mein Analyser ist nicht empfindlich genug.

xorg1990

New member
Hallöle,
Bei meiner Software/Anwendung läuft irgend was nicht ganz richtig und zwar ist es schlicht und einfach nicht empfindlich genug.:mad:
Es ist So: Eine Soundkarte hat von Haus aus schon in gewisses Rauschen, in SpektrumLab sieht man das auch. Nur in in meiner Javascript Anwendung ist nix zu sehn, auch das Verhältnis bei der Lautstärke stimm nicht.

Habe das mal visuell nieder gelegt:
Graph.png
Links ist SL, rechts bei mir ist nur ein Zipfelmütze zu sehn.
Damit man überhaupt was sieht habe ich bei 1500Hz ein Sinus losgelassen.

Ich poste noch mal die draw Method.

Code:
Window.prototype.drawSpectrogram = function() {
    var ctx = this.canvas_ctx;//this.canvas_ctx == the main canvas
    //reset and redraw the db grid in every cycle
    ctx.clearRect(this.beginGrid, 0, this.db_GridWidth, this.canvas_height);
    ctx.drawImage(this.dbCanvas, this.beginGrid, 0);
    ctx.beginPath();

    var FFT_Data = this.Analyser1.spectrum;
    this.tempCtx.drawImage(this.waterCanvas, 0, 0, this.waterCanvas.width, this.waterCanvas.height);
    //this.waterCanvasCtx.clearRect(0, 0, this.waterCanvas.width, this.waterCanvas.height);
    //Move the Path to the right position
    ctx.moveTo(this.beginGrid, this.canvas.height + 10);
    for (var i = 0; i < this.waterCanvas.height; i++) {
        var pt = Math.floor(this.F_Start + this.fftArrayIdx / this.canvas.height * i);
        //convert the float64 in to Unit8 bit 
        var value = Math.round(255 * (FFT_Data[pt])); //Math.round(128+127*(FFT_Data[pt]*100));//256+32*Math.log(FFT_Data[pt]/1*40);
        // draw each pixel with the specific color
        this.waterCanvasCtx.fillStyle = this.colors.getColor(value).hex();
        //lineTo nur bei jedem 2ten i
        if (!(i % 2)) {
            if (this.beginGrid + 1.2 + value > this.beginGrid + 1) {
                ctx.lineTo(this.beginGrid + value, this.canvas_height - i - 1);
            }
        }
        this.waterCanvasCtx.fillRect(this.waterCanvas.width - 1, this.waterCanvas.height - i, 1, 1);
    }
    // set translate on the canvas
    this.waterCanvasCtx.translate(-1, 0);
    // draw the copied image
    this.waterCanvasCtx.drawImage(this.tempCanvas, 0, 0, this.waterCanvas.width, this.waterCanvas.height, 0, 0, this.waterCanvas.width, this.waterCanvas.height);
    // reset the transformation matrix
    this.waterCanvasCtx.setTransform(1, 0, 0, 1, 0, 0);
    //draw the water canvas on the main cnavas 
    ctx.stroke();
    ctx.drawImage(this.waterCanvas, 0, 0, this.waterCanvas.width, this.waterCanvas.height, 0, 0, this.waterCanvas.width, this.waterCanvas.height);

};
Die AudioLlib fft Reihe bringt mir Float64 bit zurück, das finde ich persönlich klasse aber für die Helligkeit un Kontrast Eigenstellung ist mir das zu spielig, Uint 8bit sind völlig ausreichend nur weiß ich in JS wider nicht wie ich 64bit nach uint8 Bit bringe
Ist das so richtig:
var value = Math.round(255 * (FFT_Data[pt])); //Math.round(128+127*(FFT_Data[pt]*100));//256+32*Math.log(FFT_Data[pt]/1*40);
Das auskommentierte habe ich auch noch im Netz gefunden....bringt nix.

Die frage ist halt warum ist kein rauschen zu sehn?????
Liegt es an der der Web audio API -> Kann nicht sein da ich alles über den Scriptprocessor mache. Da ist nix mit Gain/Volume oder ähnlichen.
Vielleicht das Canvas zu träge.

Ich habe halt absolut kein Ansatz woran es liegen könnte, deshalb Poste ich bei allgemein.

Hab noch ein andren ähnlichen Analyser gefunden der mit direct Input arbeitet:
Viewer

Selbes Problem es gibt von haus aus kein gekrissel/rauschen nix.
Was macht C anders als JS... es passt nicht in mein Kopf.

Für alle Ratschläge wär isch sehr sehr dankbar:dejection:

Ps: wenn ein Admin der Meinung ist das zu verschieben, kann er das gerne tun.
 
C läuft schon mal auf dem Rechner, JS im Browser. Vielleicht kann C besser/einfacher an die Daten ran, als JS und du hast bei C kleinere Zugriffszeiten. Zu deinem Problem kann ich leider wenig beisteuern. Ich habe noch nie solche Auswertungen mit JS vorgenommen, aber das ganze Thema klingt sehr interessant.

- - - Aktualisiert - - -

HoHoHo, der 1000. Beitrag... :)
 
rico2009 schrieb:
Ich habe noch nie solche Auswertungen mit JS vorgenommen,
Das hat anscheint noch keiner, deshalb fühle ich mich auch sehr alleine gelassen mit dem Thema:dispirited:

Egal deswegen gebe ich nicht auf, noch ist das Projekt nicht Public und nicht noch laaaaaaaannnnge nicht fertig.

Jedenfalls ein "Datentyp"/TypedArray Umwandlung geht in Javascript über das Buffer Objekt (Eigentlich nur in nodejs zu finden)

var f32 = new Float32Array(32768);
var Uint16 = new Uint16Array(f32.buffer);

So geht das mit allen "Datentypen"... drauf muss man auch erst mal kommen.

Bringt mir aber bei meiner Sache nix, da sich dann die Array Elemente mehr werden und ich nix mehr aus den Spektrum heraus kristallisieren kann.
Hm.png

Habe dann statt math.round() parseInt genommen, das sieht so unrecht gar nicht aus.
snr.jpg
Ab 10000Hz gehen mir die samples aus da ich nur mit ein SR von 22khz Streame. Das Signal kam von eine Original Transitiver.

Aber das Grundrauchen ist trotzdem noch lost in JS.
grundrauschen.png
In SL sieht man schön den Tiefpass der Soundkarte, Die usb Soundkarte hat ein SR von 48000Hz und nyquist mäßig fängt das Rauschen bei 24 Khz an.. So sol es sein.
in Javascript bekommt man, ich das beim besten willen nicht hin.

Falls eine einen konstruktiven Vorschlag hat, immer her damit.
 
Hi, ich grüße mich selbst.:icon7:

Spass bei Seite.

Das:
Code:
var f32 = new Float32Array(32768);
var Uint16 = new Uint16Array(f32.buffer);
Funktioniert nicht. Es gibt keine Fehlermeldung und auch so merkt man nicht das irgendwas komisch ist.
Festgestellt habe ich das nur weil ich auf meinen Spektrum kein Signal bekommen habe.
Für eine Datentypumwandlung muss man einen Umweg über das DataView objekt machen.

Ich Poste die Tage mal ein Beispiel vielleicht brauch das der ein oder andere.

VG xorg1990
 
Hallo,
Frohes neues und vor allem Gesundheit an alle.

Wie angekündigt möchte ich ein TypeConverter beispiel posten.

Code:
             var Daten = new Float64Array(10);
             //irgend etwas in das Array schreiben
             for(var ii=0; ii<Daten.length;ii++){
              Daten[ii]=0.154+ii;
             }
             DataView Object erzeugen.
             var dataView = new DataView(Daten.buffer);
            var ints = new Uint16Array(dataView.byteLength/2)//16bit =2 byte
            for(var i=0,j=0;i<dataView.byteLength;i+=2,j++){
             ints[j]=dataView.getUint16(i)
            }
            
console.log(dataView.byteLength, Daten.length, ints.length);
 
for(var i=0;i<Daten.length;i++){
console.log(Daten[i]);
}
for(var i=0;i<ints.length;i++){
console.log(ints[i]);
}
am Ende ist es fast das selbe wie in nodejs.
Die console.logs sagen mir zumeidest optisch das alles seinen Gang geht.

Aber es hat mir am ende auch nix genützt a ist immer noch kein rauschen da und b ist das sehr cpu lastig.
Einen einzelnen Wert umwandeln über das DataView wird auch nur murx, man bräuchte sowas wie parseInt16().

MfG
Xorg1990
 
warum du überhaupt mit TypedArrays arbeitest habe ich nicht verstanden, aber:
wenn du ein zahlenformat in ein anderes übertragen willst(mit genauigkeitsverlust)
Code:
var Daten = new Float64Array(10);
//irgend etwas in das Array schreiben
for(var ii=0; ii<Daten.length;ii++)
{
   Daten[ii]=0.154+ii;
}
var ints = new Uint16Array(Daten)
for(var i=0;i<Daten.length;i++)
{
  console.log(Daten[i]);
}
for(var i=0;i<ints.length;i++){
  console.log(ints[i]);
}
wenn du einen byte-stream(egal welches format, es muss nur aufgehen, also z.b. 1 64-byte wert werden zu 4 16-byte, ...) in ein zahlenformat wandeln möchtest
Code:
var Daten = new Float64Array(10);
//irgend etwas in das Array schreiben
for(var ii=0; ii<Daten.length;ii++)
{
   Daten[ii]=0.154+ii;
}
var ints = new Uint16Array(Daten.buffer)
for(var i=0;i<Daten.length;i++)
{
  console.log(Daten[i]);
}
for(var i=0;i<ints.length;i++)
{
  console.log(ints[i]);
}

- - - Aktualisiert - - -

nur weiß ich in JS wider nicht wie ich 64bit nach uint8 Bit bringe
Ist das so richtig:
var value = Math.round(255 * (FFT_Data[pt])); //Math.round(128+127*(FFT_Data[pt]*100));//256+32*Math.log(FFT_Data[pt]/1*40);
wenn du mit deiner funktion allerdings obiges realisieren möchtest, solltest du beachten, dass uint8 nur einen wertebereich von 0-255 hast, bei float64 schon 11 bit für den exponenten. einfach umwandeln ist also nicht:
Code:
var Daten = new Float64Array(10);
//irgend etwas in das Array schreiben
for(var ii=0; ii<Daten.length;ii++)
{
   Daten[ii]=333.154+ii;
}
var ints = new Uint8Array(Daten)
for(var i=0;i<Daten.length;i++)
{
  console.log(Daten[i]);
}
for(var i=0;i<ints.length;i++)
{
  console.log(ints[i]);
}
wenn schon(warum auch immer), musst du deinen wertebereich skalieren auf 0-255
 
j-l-n schrieb:
parseInt(20, 16); //32
Cool, das war mir bis jetzt noch nicht bestusst.

hesst schrieb:
warum du überhaupt mit TypedArrays arbeitest habe ich nicht verstanden
Ganz einfach die Audiolib FFT Reihe bringt mir ein Float64Array. Wenn ich anhand dieser Werte einen Path zeichne dann passiert da genau nichts.
Deswegen denke ich es ist besser Uint8 bit zu nehmen.

Das Wasserfallspektrum (Spektrogramm) bekommt man hin mit Floats, aber wenn man nun z.B. anhand eins sliders die Helligkeit ändern will dann macht sich das mit Floats auch wider bescheiden,
man ist dann halt viel zu schnell zu hell oder zu dunkel. Ach hier spricht alles für ints.

Das Hauptproblem ist, das Rauschen was ein Soundkarte von Haus aus hat bekomme ich nicht dargestellt(bild erster Beitrag, links SpectrumLab, rechts Browser), selbst wenn ich die 64bit Flaots mit 10.000 Multipliziere ist kein Rauschen zu sehn. Woran das liegt ist mir ein Rätzel.

Nehme ich ich aber das zum rendern var value = 256+32*Math.log(FFT_Data[pt]/1*40); , dann ist auch ein vernünftiges SNR da.
Das habe ich irgendwo via Google aufgeschnappt aber was hat das zu bedeuten 32,40,256 alles etwas komisch außerdem sind mein werte damit verfälscht.
 
Cool, das war mir bis jetzt noch nicht bestusst.
16 ist aber die zahlenbasis, also hex


Ganz einfach die Audiolib FFT Reihe bringt mir ein Float64Array.
das mag schon sein, aber gibt es einen grund damit weiterzuarbeiten und nicht auf number zu gehen?

Wenn ich anhand dieser Werte einen Path zeichne dann passiert da genau nichts.
Deswegen denke ich es ist besser Uint8 bit zu nehmen.
path benötigt pixelkoordinaten, die können zw 0 und 255 liegen, müssen aber nicht.

Das Wasserfallspektrum (Spektrogramm) bekommt man hin mit Floats, aber wenn man nun z.B. anhand eins sliders die Helligkeit ändern will dann macht sich das mit Floats auch wider bescheiden,
man ist dann halt viel zu schnell zu hell oder zu dunkel. Ach hier spricht alles für ints.
hier wirfst du wieder einfach was in den raum, was keiner nachvollziehen kann

Das Hauptproblem ist, das Rauschen was ein Soundkarte von Haus aus hat bekomme ich nicht dargestellt(bild erster Beitrag, links SpectrumLab, rechts Browser), selbst wenn ich die 64bit Flaots mit 10.000 Multipliziere ist kein Rauschen zu sehn. Woran das liegt ist mir ein Rätzel.
dann hast du irgendwo ein problem, das musst du suchen, da helfen uns keine bilder, sondern code nachdem du grob die fehlerquelle lokalisiert hast.

Nehme ich ich aber das zum rendern var value = 256+32*Math.log(FFT_Data[pt]/1*40); , dann ist auch ein vernünftiges SNR da.
wieder was in den raum geworfen. was ist snr? was soll der code machen?

Das habe ich irgendwo via Google aufgeschnappt
das ist raten und wild rumprobieren, das wird so nichts

aber was hat das zu bedeuten 32,40,256 alles etwas komisch außerdem sind mein werte damit verfälscht.
dann hast du es 1. nicht verstanden und bringt dich damit 2. nicht weiter. du musst schon erst mal verstehen was du machen willst, sonst brauchst du überhaupt nicht erst anfangen.
 
hesst schrieb:
path benötigt pixelkoordinaten, die können zw 0 und 255 liegen, müssen aber nicht.
Ja aber was nützen mir pixelkoordinaten die zwischen 0.00000456789 und 0.00000568656 liegen.
Wenn ich eine schleife durch das FFT Array mache und ein Path anhand dieser Werte zeichne dann passiert nix, der Path ist ein gerader strich, da die werte zu klein sind.

hesst schrieb:
wieder was in den raum geworfen. was ist snr? was soll der code machen?
SNR = Signal Noise Ratio
Da werden Float Werte in UInts umgewandelt, aber was die Werte im einzeln zu bedeuten haben k.a. wie Du schon sagst das ist ein trial and fail.
Aber der Path wackelt zumindest schon mal rum. Also müssen aus den Floats irgendwie Intergers werden. Das nach Möglichkeit nicht mit zahlen die irgendjemand in den raum geworfen hat

xorg1990 schrieb:
Das Wasserfallspektrum (Spektrogramm) bekommt man hin mit Floats, aber wenn man nun z.B. anhand eins sliders die Helligkeit ändern will dann macht sich das mit Floats auch wider bescheiden,
man ist dann halt viel zu schnell zu hell oder zu dunkel. Ach hier spricht alles für ints.
Damit meinte ich das das Umrechen der FFT Werte in RGB mit float gut geht(macht chromajs) aber wenn man die Helligkeit oder denn Kontrast ändern will, ist float zu genau z.B wenn 0.454 zu dunkel ist, ist 0.544 schon wider zu Hell.
Also warum nicht auch Int nehmen?


hesst schrieb:
du musst schon erst mal verstehen was du machen willst
Machen möchte ich eine path zeichnen anhand von FFT werten die mir audiolib liefert. Nur soll sich der Path auch bewegen und nicht gerade in der gegen rumstehen.
 
Ja aber was nützen mir pixelkoordinaten die zwischen 0.00000456789 und 0.00000568656 liegen.
Wenn ich eine schleife durch das FFT Array mache und ein Path anhand dieser Werte zeichne dann passiert nix, der Path ist ein gerader strich, da die werte zu klein sind.
es gibt keinen 0.00000456789-ten pixel und auch keinen 0.00000568656-ten. das sage ich doch gerade. deine pixel gehen von 0 bis n-1 wobei n die breite/höhe ist. du musst also, auch das sagte ich bereits, deinen wertebereich scalieren auf 0 bis n-1. 0 entspricht deinem min. und n-1 dem max.

Da werden Float Werte in UInts umgewandelt, aber was die Werte im einzeln zu bedeuten haben k.a. wie Du schon sagst das ist ein trial and fail.
Aber der Path wackelt zumindest schon mal rum. Also müssen aus den Floats irgendwie Intergers werden. Das nach Möglichkeit nicht mit zahlen die irgendjemand in den raum geworfen hat
wenn du nicht einen wertebereich auf einen anderen abbilden kannst sehe ich schwarz, das ist trivial, und das hatten wir glaube ich auch schon mal.

Damit meinte ich das das Umrechen der FFT Werte in RGB mit float gut geht(macht chromajs) aber wenn man die Helligkeit oder denn Kontrast ändern will, ist float zu genau z.B wenn 0.454 zu dunkel ist, ist 0.544 schon wider zu Hell.
Also warum nicht auch Int nehmen?
weil https://github.com/gka/chroma.js/wiki/Color-Scales einen normierten wert erwartet und mit https://github.com/gka/chroma.js/wiki/Color-Scales#data-specific-color-scales diese normierung für dich übernimmt. wenn du jetzt deinen nicht normierten wertebereich auf uint8/16/was auch immer skalierst und diesen dann über data-specific-color-scales normierst, kommt ausser zusätzlichen rundungsfehlern nichts anderes raus, als wenn du deinen nicht normierten wertebereich über data-specific-color-scales normierst, oder deinen nicht normierten wertebereich selbst normierst und https://github.com/gka/chroma.js/wiki/Color-Scales#simple-usage nutzt. alles das gleiche

Machen möchte ich eine path zeichnen anhand von FFT werten die mir audiolib liefert. Nur soll sich der Path auch bewegen und nicht gerade in der gegen rumstehen.
ja, bzw. wass denn nun? path oder rgb?
 
hesst schrieb:
es gibt keinen 0.00000456789-ten pixel und auch keinen 0.00000568656-ten. das sage ich doch gerade. deine pixel gehen von 0 bis n-1 wobei n die breite/höhe ist. du musst also, auch das sagte ich bereits, deinen wertebereich scalieren auf 0 bis n-1. 0 entspricht deinem min. und n-1 dem max.
ok, ich das muss ich nochmal überdenken.

hesst schrieb:
alles das gleiche
also, egal was reingeht es wird immer schick aussehen:cool:

hesst schrieb:
ja, bzw. wass denn nun? path oder rgb?
Beides, links habe ich ein Spektrogramm und rechts ein Path der anzeigt wie viel dB ein das jeweilige Signal hat. Wobei das Spektrogramm einwandfrei funktioniert, dank chromajs.
 
hesst schrieb:
http://forum.jswelt.de/javascript/60...tml#post388297
hi hesst, daran kann ich mich noch erinnern, das funktioniert ja auch wenn ich ein peak bei 400Hz hab un ein Path der vertikal rendert dann ist der auch bei 400Hz nur stimmen die Einheiten (Dezibels) nicht.
minA u. maxA könne sowohl negativ und positiv sein, das ist auch ein prob.

ich erkläre das mal genau:
Ich möchte ein Path auf ein Gitter Zeichen horizontal.
Der User kann einstellen die Größe des Gitters und die Dezibels (dB_From bis dB_To).

Der user stellt ein:

Gridwidth = 515px, Gridheight = 768, Decibels: form -200 dB to 0 dB.
Jetzt rammelt ein schleife los die mir 10 Horizontale Striche bringt im Abstand von 51,5px, nennen wir das xSpan.
sieht dann in etwa so aus:
-180 -160 -140 usw.


nun kommt die obige schleife zum Einsatz:
Code:
// bewege Pfad zum anfang 
 ctx.moveTo(this.beginGrid, this.canvas.height);
    for (var i = 0; i < this.waterCanvas.height; i++) {
        var pt = Math.floor(this.F_Start + this.fftArrayIdx / this.canvas.height * i);
        var  value = FFT_Data[pt] +,-,*,/?????
        //lineTo nur bei jedem 2ten i
        if (!(i % 2)) {
  
                ctx.lineTo(this.beginGrid + value, this.canvas_height - i - 1);

        }
        this.waterCanvasCtx.fillRect(this.waterCanvas.width - 1, this.waterCanvas.height - i, 1, 1);
    }
Was müsste nun deiner Meinung, hinter value stehen damit sich der Path dort ist wo er sein soll und außerdem muss er sich bewegen (wabern sag ich jetzt mal).
Bei mir tritt immer nur das eine oder andere auf entweder wabert's, dann aber irgendwo im canvas oder, er steht bei ca.-130dB und bewegt sich kein bissel.

this.beginGrid = die Pos. wo der Gitter anfängt im canvas , mann kann auch den path von rechs anfangen canvas.width - value oder canvas.width + value, wenn value negativ.

wenn db_From größer wird müsste sich der path nach links in richtung Skala bewegen.

PS:
dB_from -200 bis -250 ist keine gültige Eingabe, -200 bis +50 wäre eine und
dB_from +200 bis -250 geht auch nicht aber +200 bis +250 ist valide.
 
hi hesst, daran kann ich mich noch erinnern, das funktioniert ja auch
und das prinzip ist immer das gleiche, das MUSST du verstehen. ich sag mal mathe 5. klasse.

minA u. maxA könne sowohl negativ und positiv sein, das ist auch ein prob.
ja und? du willst auf H Pixel L dB unterbringen.
dabei ist es vollkommen egal, ob z.b. ein L von 200 dB sich daraus ergibt, daß du einmal min 0 und max 200 hast oder ob ein L von 200 dB sich daraus ergibt, daß du ein min von -20 und ein max von 180 hast. in beiden fällen musst du 200 L auf H Pixel aufteilen.
bei fall 1 ist bei pixel_0 0 db und bei pixel_Hminus1 200 db im fall 2 ist bei pixel_0 -20 db und bei pixel_Hminus1 180 db, aber zw pixel_0 und pixel_Hminus1 werden 200 db untergebracht.
 
Zuletzt bearbeitet:
hesst schrieb:
und das prinzip ist immer das gleiche,
was nutzt mir der beste Dreisatz wenn der path nicht "lebt" und das Soundkarten typische rauschen auch irgendwo im JS Nirwana verschwindet.
Da muss vorher schon was komisch sein, aber wo. Das kann alles sein Hilbert-trafo, Downsampler, Sampelrate Anpassung beim client, die Window functions vor der FFT, einfach alles. Der Wasserfall geht ja nur da chromajs die werte nominiert.


Anti-Aliasing (Tiefpass) filter hab ich noch vergessen.

Das wird die suche nach der Nadel im Heuhaufen.

Auf diesen niederschmetternden Tag, back ich back ein paar Waffeln mit Rum:

Code:
250 g Mehl,
125 g Zucker,
1 Pck. Vanillezucker,
125 g Butter,
3 Ei(er),
250 ml Milch,
1 Pck. Backpulver,
1 Schuss Rum,

Alle Zutaten mithilfe eines Handrührgerätes mischen und in einem gefetteten Waffeleisen ausbacken.

Anstatt des Rums kann man auch gut einen Schuss Amaretto oder Eierlikör 
nehmen. Bei diesem Rezept kommen ca. 10 Waffeln heraus.
 
was nutzt mir der beste Dreisatz wenn der path nicht "lebt" und das Soundkarten typische rauschen auch irgendwo im JS Nirwana verschwindet.
woher willst du das wissen, wenn du die kurve noch nicht gezeichnet bekommst?

Da muss vorher schon was komisch sein, aber wo. Das kann alles sein Hilbert-trafo, Downsampler, Sampelrate Anpassung beim client, die Window functions vor der FFT, einfach alles. Der Wasserfall geht ja nur da chromajs die werte nominiert.
ja, da gabs ja auch die eine oder andere stelle, die noch nicht ganz sauber war. keine ahnung, ob das schon behoben wurde.

Anti-Aliasing (Tiefpass) filter hab ich noch vergessen.
ein tiefpass könnte dein fehlendes rauschen schon erklären

Das wird die suche nach der Nadel im Heuhaufen.
das rauschen hat ja ein typisches frequenzspektrum. da musst du doch nur nachsehen, nach welchem schritt in deiner kette dieses verschwindet. das ist vielleicht aufwendig, aber nicht ein stochern im heuhaufen

Auf diesen niederschmetternden Tag, back ich back ein paar Waffeln mit Rum:
mal sehn, ob ich noch das waffeleisen finde
 
So, so so so so so.
Hab's gelöst, das Problem bestand darin, dass die Aufnahmelautstärke in alsa auf 3% stand.

Dann hatte ich noch die Dezibel Differenz falsch gerechnet, also:
dB_From - db_To, andersrum ist es richtig.

die PixelKoordinate errechne ich dann so.:

var value = (Math.log(FFT_Data[pt])*10)*-(this.db_GridWidth/this.dbDiff);
Die (Math.log(FFT_Data[pt])*10 mache ich, da durch den Hilbert Trafo ein paar dB verloren gehen die hole damit wider her.

Hat halt nur etwas gedauert, ich muss ja auch irgendwann mal etwas arbeiten.

Jetzt ist soweit alles fertig und es geht an das Design.

Vielen dank an hesst, das Forum hier und W. Kiefer, DL4YHF

VG Xorg1990
 
Zurück
Oben