• @Gordon,

    I have a minimal nodejs app that extracts the data from the audio mixer. I was way off in the total number of bytes - the real count is actually 67,786 bytes for the entire state of the mixer. Here is the code that successfully got the message dump (obfuscated IP address):

    let net = require('net');
    
    let tcpSocket = net.Socket();
    
    let mixerIpAddress = "169.254.0.1";	// A&H Qu Series Mixer IP
    let tcpPort = 51325;				// ...and port
    let totalLength = 0;
    
    let sysExAllCall = new Uint8Array([0xF0,
    	0x00, 0x00, 0x1A, 	// Allen & Heath
    	0x50, 0x11,			// Qu series 
    	0x01, 0x00,			// Major/Minor version
    	0x7F, 				// All MIDI channels
    	0x10,				// ??
    	0x00,				// LSB is iPad bit, zero to disable requiring ActiveSense
    	0xF7]				// All-Call
    );
    
    function tcpConnect(details) {
    	tcpSocket.connect({port: tcpPort, host: mixerIpAddress}, function() {
    		console.log("...connected!");
    
    		tcpSocket.on('data', tcpOnMessage.bind(this));
    		tcpSocket.on('close', tcpOnDisconnected.bind(this));
    
    		// inform the Qu that we want telemetry from the device
    		tcpSocket.write(sysExAllCall);
    
    	}.bind(this));
    }
    
    function tcpOnMessage(chunk) {
    	totalLength += chunk.length;
    	console.log("chunk length is " + chunk.length + ", totalLength is " + totalLength);
    }
    
    function tcpOnDisconnected() {
    	console.log('client disconnected');
    }
    
    // Get connected
    tcpConnect();
    

    I've attached the file that represents the data dump (and there is no missing data from what I can tell). The data dump is a file of space-separated hex values, each representing a byte received from the mixer. At the very end, you'll see a few 'fe' single-byte messages, which is the MIDI ActiveSense byte sent once-per-second by the device. The fact that only 'fe' is being sent at the end of the data means the mixer has completed its dump of NRPN and SysEx data.

    I dumped the messages as they arrived - no buffering or messing with the data. Each newline represents the end of the data for that particular message. If you need the file in a different format, let me know and I'll see what I can do.

    Edit: how fast can the wifi go? For my project to work, it's gotta be pretty close to real network speeds. I saw 13Mbps was being mentioned on the internet - is that possible?

  • Fri 2019.10.25

    'the real count is actually 67,786 bytes'

    Two observations:

    1) 67786 is greater than 65535 - might be a factor

    2) From #15 available JsVars 3995 (understood that program may have grown in the last week)

    67786 / 16 = 4237

    What is the program usage, and/or free space before the data fetch? (on EspruinoWiFi not via Node.js)

  • Well, I'm not storing any of this data, just accumulating the byte count, so there's no 16-bit limitation involved, in my code anyway. Regarding free space, it's no different than my comment here.

    At this point, I'm hoping Gordon will be able to reproduce the problem on his end using the sample data I provided.

About

Avatar for Robin @Robin started