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

Gibt es ein blob size Limit?

xorg1990

New member
Hi,
kann es sein das die blobs in JS ein bestimmte Size Limitierung haben?
weil Filesaver feuert kein download.
Ist die Datei kleiner geht es.

Wollte JSON.stringify Objekte abspeichern aber die blob size ist immer 256?
Das Objekt ist ein Array mit Samples, c.a. 2646000 Elemente^^

Fehlermeldung kommt keine.
 
Ei, Ja die Table hab ich gesehen aber nicht so beachtet aber 500MiB erreiche ich niemals.
Das Problem liegt anderswo, habe die Samples jetzt in eine wav Datei umgewandelt. Aber von 4 Makros(wav Dateien) wird nur ein Download gefeuert.
Die Makros sind in der IndexDB gespeichert, das ich die gleich beim neuladen habe.
Ich kann die Makros ohne Probleme abrufen aber wenn ich durch die Datenbank durch iteriere, 100% cpu last last, RAM steigt ins nivana.
Für 'ne Wav Datei von 1sec ist das heftig.

Morgen mach ich mal ein link zu Seite.

Hier aus Spaß mal die Funktion. Selbst "saveAs(blob, "QRSSB_Settings.dat");" wird nicht gefeuert. Der callback von localforage.iterate
wird aber ausgeführt.

Code:
			function exportSettings(){
				var storeWav = document.querySelector("#includeWav").checked;
				var obj = {};
				obj.outVolume = outGain;
			  	obj.inVolume = inGain;
			  	obj.PeakFilterOffs = RX_End_dB_offset;
			  	obj.loopDelay = loopDelay;
			  	obj.dB_From = dB_From;
			  	obj.dB_To = dB_To;
			  	obj.Freq_From = Freq_From;
			  	obj.Freq_To = Freq_To;
			  	obj.xLabelIntevall = xinter;
			  	obj.yLabelIntervall = yinter;
			  	obj.FFTSize = fftlength;
			  	obj.callsign = callsign;
			    obj.sendCwNever = sendCwNever;
			    obj.sendCwAfter = sendCwAfter;
			  	obj.midiDeviceID = midiDeviceID;
			  	obj.deletedRecIndex = deletedRecIndex;//array;
			  	if(storeWav === true){funktio
			  		processor.disconnect();
			  		processor.onaudioprocess = null;
			  		processor = null;
			  		localforage.iterate(function(value, key) {
			  				if(key.indexOf("rec_") !== -1){//nur bei wav Dateien 
			  					var SR = value.fileSampleRate;
			  					var fileName = "QRSS_"+key;
								var encoder = new WavAudioEncoder(SR, 1);
								encoder.encode([value.orginalRecord]);//must bei inside array[]
								var blobWav = encoder.finish();
								saveAs(blobWav, fileName,+".wav");
							}
					}, function() {//done
							var blob = new Blob([btoa(JSON.stringify(obj))],  {type: "text/plain;charset=utf-8"});
							saveAs(blob, "QRSSB_Settings.dat");
							processor = (audioCtx.createScriptProcessor || audioCtx.createJavaScriptNode).call(audioCtx, 8192, 2, 1);
							processor.onaudioprocess = audioProcess;
							handleConnection();
					});
			  	}else{
							var blob = new Blob([btoa(JSON.stringify(obj))],  {type: "text/plain;charset=utf-8"});
							saveAs(blob, "QRSSB_Settings.dat");
			  	}
			}
 
So, wie angegütigt hab ich mal ein link gemacht zu meinen aktuellen Projekt . Damit mal einer eine Vorstellung hat was ich hier überhaut mache
Soll jetzt aber kein Site check werden.
http://qrssbtest.ddns.net:8080/

Der Server läuft auf den Raspberry mit nodejs, aber ich denke eher kackt meine Internet Verbindung ab als die Raspe stirbt.
Die Software verlangt nach einen Rufzeichen, das kann man austricksen in den man TET3ER oder so eingibt.

Zum aufzeichnen ist REC Macro zu klicken und zu halten, die maximale länge beträgt 60sec.
Dann auf Repaly Voice klicken. Wenn man meint das Aufgezeichnete ist gut dann Speichen.

Wenn man oben rechts auf Options klickt und ein hacken macht bei "save also tx macros", und dann auf Export klickt wird die Funktion ausgeführt die ich oben geprostet habe.

Achtung:
Das ganze ist nicht für mobile Geräte gedacht.

In Chrome bekommt man getusermedia nicht zum laufen da http statt https
Gibt ein Workaround dafür aber ist mir jetzt zu doof. Unter Linux ist das in ein Satz erklärt aber windows terrible.

Firefox geht aber wie gesagt gUM haben die zerschossen!!!!!:mad:
Edge/opera habe ich Jetzt noch nicht getestet.

Die Macros werden in der IndexDB gespeichert um das wider zu löschen ist "delte all tx records" zu klicken.

Bei Klick auf TX Start/Stop , geht das gebabbel los, der Sinus Ton ist kein Fehler, das ist eine Pilotton, den hört man nur beim aussenden, der Empfänger hört den nicht. Man sieht ihn aber im Spektrum.

Ist alles noch early access.
Bedienungsanleitung bin ich gerade am schreiben aber ich komme einfach nicht dazu das zu beenden. Da immer wider Problem in der Software auftauchen, die auch behoben werden müssen. Ja, ein paar Menschen nutzen/testen das schon weil einfach nur genial! :grin:
 
Danke das du dich der Sache angenommen hast Korbinian, hat sich aber erledigt. Das Problem besteht nur bei mir unter Linux. Unter Windows kommt ein Fenster "bblabla.de möchte mehrere Dateien downloaden.. Zulassen Ja/nein". Das kommt in Ubuntu nicht, da kommt nur ein Download.

So zumindest Chrome.

Die Wav Dateien sind "invalide" (VLC Palyer Spielt die trotzdem ab) richtig, habe gestern nun endlich mal herausgefunden an was das liegt.
Die wav Dateien gehen nicht wenn man ein Mono Buffer hat, mit Stereo geht es.
Zum encodieren nutze ich den higuma Wav Encoder https://github.com/higuma/wav-audio-encoder-js

Was mir auch zufällig aufgefallen ist, die Samples von createBuffer bzw die die dann aus
AudioBufferSource herauskommen sind auch nicht alle valide. Aufgefallen ist mir das als ich zwischen AudioBufferSource und Sink, bzw. audioCTX.destination eine Tiefpass machen wollte und immer nur für Random milisec was gehört habe, dann war stille. Habe dann die AudioBufferSourceNode mit den Scriptprocessor verbunden und darin die Samples mal angehen und aha einige sind "NaN".

Meiner Meinung nach habe ich das vor Jahren schon mal exerziert, wenn man ein JS Array (nicht typed) in createBuffer setzt und im Array ein undefined ist weil, man den Array Constructor genommen hat. Dann kommt das NaN zu Stande. Am besten man Konvertiert das Array in ein Flaot32array um (was ich ja mache) aber Trotztem ist immer mal ein NaN Sample dabei.

- - - Aktualisiert - - -

Das 2te Problem hat sich nun auch erledigt, ich konvertiere das JS Array in ein Typed über den Constructor new Float32Array([0,0,00,]);
Dabei ist der erste Eintrag immer NaN.
Problem 2 war, das ich den Zeiger vom Ringbuffer falsch zurückgesetzt habe, ich habe ein Sample mit undefined Multipliziert.
Nach der Mischung kommt aber ein FIR Filter, der hat der Sache den Rest gegeben^^

Letzten Sonntag habe ich mal schnell ein Schema dazu hingekrakeelt wo die Sampels überhaut lang machen.
scheme QRSSB.png
Ist jetzt nicht besonders Hübsch reicht aber erst mal. Mittlerweile habe ich 2 A4 Seiten an Problem in der Web Audio Api gefunden und GetUserMedia.

Ein Problem ist gerade dazu gekommen: createBuffer ist nicht besonders Verbose.

Ein ganz großes Thema ist den Stereo Input von gUM zum laufen zu bekommen, dazu mach ich wenn es soweit ist ein separates Thema auf weil, das was die Entwickler da abziehen kann man nicht verkaufen. Die manschen den Rechten und Linken Kanal zusammen bei Default. Merkt man nicht bei einem Elektretmikrofon aber bei einem Dynamischeen Mikrofon ist dann der Horror in Gange
 
Zuletzt bearbeitet:
Zurück
Oben