Device freezes when editing a parameter after receiving a SYX program dump of the Pioneer AS-1

I wanted to control my Pioneer AS-1 synth with the E1. For this purpose I installed the preset built by @Flyweight. However, when I dump the current synth preset data, the E1 freezes when I want to use a control. The controls are updated to the proper value once after the dump. I can also switch between rows without triggering the freeze. I tried 3 different synth presets with the same result. Can’t verify if this happens with any other device right now. In the logs I can read the following (from boot to freeze):

l), visible=1
21:39:13.676		parseMessage: device=1, msgType=nrpn (3), parameterId=1152, min=0, max=0, value=0, offValue=0, onValue=1, lsbFirst=0, signMode=0, bitWidth=14
21:39:13.677		parseValue: id=value, index=0, defaultValue=0, min=0, max=0, overlayId=0, formatter=(null), function=(null)
21:39:13.678		parseControl: id=105, name=SEQ LENGHT, type=list (3), mode=0, colour=529DEC, controlSetId=3, variant=(null), visible=1
21:39:13.679		parseMessage: device=1, msgType=nrpn (3), parameterId=170, min=0, max=0, value=0, offValue=-1, onValue=-1, lsbFirst=0, signMode=0, bitWidth=14
21:39:13.680		parseValue: id=value, index=0, defaultValue=0, min=0, max=0, overlayId=18, formatter=(null), function=(null)
21:39:13.681		parseControl: id=106, name=TIME DIVISION, type=list (3), mode=0, colour=529DEC, controlSetId=3, variant=(null), visible=1
21:39:13.683		parseMessage: device=1, msgType=nrpn (3), parameterId=163, min=0, max=0, value=0, offValue=-1, onValue=-1, lsbFirst=0, signMode=0, bitWidth=14
21:39:13.684		parseValue: id=value, index=0, defaultValue=0, min=0, max=0, overlayId=19, formatter=(null), function=(null)
21:39:13.685		Preset::parse: successfully loaded preset: name=Pioneer Toraiz AS-1, version=2
21:39:13.686		number of lua functions: 2
21:39:13.687		free RAM: free=150920, heap=15280, lua=0, collision=0
21:39:13.689		displayPage: page shown: page=0, controlSetId=-1
21:39:13.690		free RAM: free=135456, heap=30744, lua=0, collision=0
21:39:13.691		loadPresetById: preset loaded: name=Pioneer Toraiz AS-1
21:39:13.692		loadLua debug output:
21:39:13.693		---- START ----
21:39:13.695		loadLuaModule: Lua extension file initialized: file=ctrlv2/p000.lua
21:39:13.696		----- END -----
21:39:13.697		lua: function onClock does not exist
21:39:13.698		lua: function onStart does not exist
21:39:13.699		lua: function onStop does not exist
21:39:13.700		lua: function onContinue does not exist
21:39:13.701		lua: function onActiveSensing does not exist
21:39:13.702		lua: function onSystemReset does not exist
21:39:13.703		lua: function onTuneRequest does not exist
21:39:13.704		lua: function onProgramChange does not exist
21:39:13.705		lua: function onAfterTouchChannel does not exist
21:39:13.707		lua: function onPitchBend does not exist
21:39:13.708		lua: function onSongSelect does not exist
21:39:13.709		lua: function onSongPosition does not exist
21:39:13.710		lua: function onControlChange does not exist
21:39:13.711		lua: function onNoteOn does not exist
21:39:13.712		lua: function onNoteOff does not exist
21:39:13.713		lua: function onAfterTouchPoly does not exist
21:39:13.714		lua: function onSysex does not exist
21:39:13.715		lua: function onMessage does not exist
21:39:13.717		setup: preset loaded: name=Pioneer Toraiz AS-1
21:39:13.718		loadLua debug output:
21:39:13.719		---- START ----
21:39:13.720		loadLuaModule: Lua extension file initialized: file=ctrlv2/p000.lua
21:39:13.721		----- END -----
21:39:13.722		lua: function onClock does not exist
21:39:13.723		lua: function onStart does not exist
21:39:13.724		lua: function onStop does not exist
21:39:13.725		lua: function onContinue does not exist
21:39:13.726		lua: function onActiveSensing does not exist
21:39:13.727		lua: function onSystemReset does not exist
21:39:13.728		lua: function onTuneRequest does not exist
21:39:13.730		lua: function onProgramChange does not exist
21:39:13.731		lua: function onAfterTouchChannel does not exist
21:39:13.732		lua: function onPitchBend does not exist
21:39:13.733		lua: function onSongSelect does not exist
21:39:13.734		lua: function onSongPosition does not exist
21:39:13.737		lua: function onControlChange does not exist
21:39:13.738		lua: function onNoteOn does not exist
21:39:13.739		lua: function onNoteOff does not exist
21:39:13.740		lua: function onAfterTouchPoly does not exist
21:39:13.741		lua: function onSysex does not exist
21:39:13.742		lua: function onMessage does not exist
21:39:13.743		free RAM: free=110296, heap=55904, lua=21020, collision=0
21:39:13.744		setup: enable readMidi ()
21:39:13.745		scanUSBHost: device MIDI1 2b73:18: connected
21:39:13.746		- manufacturer: Pioneer
21:39:13.747		- product: Toraiz AS-1
21:39:13.748		Assigning new MIDI1 device to midiBus 0: Toraiz AS-1
21:39:13.749		processGeneralSysex: manufacturer 0
21:39:13.781		processElectraSysex::handleElectraSysex: electraInfo sysex sent to the host
21:39:13.787		processElectraSysex::handleElectraSysex: electraInfo sysex sent to the host
21:39:13.793		processElectraSysex::handleElectraSysex: electraInfo sysex sent to the host
21:39:13.797		processElectraSysex::handleElectraSysex: config sysex sent to the host
21:39:13.813		processElectraSysex::handleElectraSysex: preset sysex sent to the host
21:39:13.819		processElectraSysex::handleElectraSysex: electraInfo sysex sent to the host
21:39:13.824		processElectraSysex::handleElectraSysex: config sysex sent to the host
21:39:13.929		processElectraSysex::handleElectraSysex: preset sysex sent to the host

[LOG CLEARED?]

alue=0, extractedValue=0 to parameterNumber=167, type=nrpn resulting in parameterValue=0
21:39:54.753		ElectraMidi::processSysex: applying extraction rule: byte=13, byteValue=1, extractedValue=1 to parameterNumber=1, type=nrpn resulting in parameterValue=1
21:39:54.754		ElectraMidi::processSysex: applying extraction rule: byte=2, byteValue=36, extractedValue=36 to parameterNumber=5, type=nrpn resulting in parameterValue=36
21:39:54.755		ElectraMidi::processSysex: applying extraction rule: byte=15, byteValue=0, extractedValue=0 to parameterNumber=10, type=nrpn resulting in parameterValue=0
21:39:54.755		ElectraMidi::processSysex: applying extraction rule: byte=14, byteValue=1, extractedValue=1 to parameterNumber=11, type=nrpn resulting in parameterValue=1
21:39:54.756		ElectraMidi::processSysex: applying extraction rule: byte=18, byteValue=0, extractedValue=0 to parameterNumber=28, type=nrpn resulting in parameterValue=0
21:39:54.757		ElectraMidi::processSysex: applying extraction rule: byte=19, byteValue=0, extractedValue=0 to parameterNumber=29, type=nrpn resulting in parameterValue=0
21:39:54.758		ElectraMidi::processSysex: applying extraction rule: byte=20, byteValue=2, extractedValue=2 to parameterNumber=31, type=nrpn resulting in parameterValue=2
21:39:54.758		ElectraMidi::processSysex: applying extraction rule: byte=25, byteValue=0, extractedValue=0 to parameterNumber=47, type=nrpn resulting in parameterValue=0
21:39:54.759		ElectraMidi::processSysex: applying extraction rule: byte=29, byteValue=0, extractedValue=0 to parameterNumber=51, type=nrpn resulting in parameterValue=0
21:39:54.760		ElectraMidi::processSysex: applying extraction rule: byte=30, byteValue=0, extractedValue=0 to parameterNumber=52, type=nrpn resulting in parameterValue=0
21:39:54.761		ElectraMidi::processSysex: applying extraction rule: byte=50, byteValue=0, extractedValue=0 to parameterNumber=71, type=nrpn resulting in parameterValue=0
21:39:54.762		ElectraMidi::processSysex: applying extraction rule: byte=71, byteValue=0, extractedValue=0 to parameterNumber=90, type=nrpn resulting in parameterValue=0
21:39:54.762		ElectraMidi::processSysex: applying extraction rule: byte=70, byteValue=0, extractedValue=0 to parameterNumber=91, type=nrpn resulting in parameterValue=0
21:39:54.763		ElectraMidi::processSysex: applying extraction rule: byte=74, byteValue=1, extractedValue=1 to parameterNumber=93, type=nrpn resulting in parameterValue=1
21:39:54.764		ElectraMidi::processSysex: applying extraction rule: byte=75, byteValue=0, extractedValue=0 to parameterNumber=94, type=nrpn resulting in parameterValue=0
21:39:54.765		ElectraMidi::processSysex: applying extraction rule: byte=76, byteValue=0, extractedValue=0 to parameterNumber=95, type=nrpn resulting in parameterValue=0
21:39:54.765		ElectraMidi::processSysex: applying extraction rule: byte=79, byteValue=0, extractedValue=0 to parameterNumber=96, type=nrpn resulting in parameterValue=0
21:39:54.766		ElectraMidi::processSysex: applying extraction rule: byte=77, byteValue=0, extractedValue=0 to parameterNumber=97, type=nrpn resulting in parameterValue=0
21:39:54.767		ElectraMidi::processSysex: applying extraction rule: byte=78, byteValue=0, extractedValue=0 to parameterNumber=98, type=nrpn resulting in parameterValue=0
21:39:54.767		ElectraMidi::processSysex: applying extraction rule: byte=51, byteValue=1, extractedValue=1 to parameterNumber=119, type=nrpn resulting in parameterValue=1
21:39:54.768		ElectraMidi::processSysex: applying extraction rule: byte=62, byteValue=1, extractedValue=1 to parameterNumber=123, type=nrpn resulting in parameterValue=1
21:39:54.769		ElectraMidi::processSysex: applying extraction rule: byte=65, byteValue=6, extractedValue=6 to parameterNumber=124, type=nrpn resulting in parameterValue=6
21:39:54.770		ElectraMidi::processSysex: applying extraction rule: byte=52, byteValue=1, extractedValue=1 to parameterNumber=127, type=nrpn resulting in parameterValue=1
21:39:54.770		ElectraMidi::processSysex: applying extraction rule: byte=53, byteValue=1, extractedValue=1 to parameterNumber=135, type=nrpn resulting in parameterValue=1
21:39:54.771		ElectraMidi::processSysex: applying extraction rule: byte=91, byteValue=0, extractedValue=0 to parameterNumber=145, type=nrpn resulting in parameterValue=0
21:39:54.772		ElectraMidi::processSysex: applying extraction rule: byte=92, byteValue=0, extractedValue=0 to parameterNumber=146, type=nrpn resulting in parameterValue=0
21:39:54.773		ElectraMidi::processSysex: applying extraction rule: byte=93, byteValue=1, extractedValue=1 to parameterNumber=147, type=nrpn resulting in parameterValue=1
21:39:54.773		ElectraMidi::processSysex: applying extraction rule: byte=94, byteValue=0, extractedValue=0 to parameterNumber=148, type=nrpn resulting in parameterValue=0
21:39:54.774		ElectraMidi::processSysex: applying extraction rule: byte=95, byteValue=0, extractedValue=0 to parameterNumber=149, type=nrpn resulting in parameterValue=0
21:40:16.132		displayPage: page shown: page=0, controlSetId=1
21:40:18.576		displayPage: page shown: page=0, controlSetId=2
21:40:20.182		displayPage: page shown: page=0, controlSetId=1
21:40:21.918		sendMessage: port=0, channel=5, type=nrpn, parameterNumber=45, midiValue=1

Steps to reproduce:

  1. Load the E1 preset
  2. Set the MIDI channel accordingly
  3. Request the patch from the synth
  4. Try to use a control

Metadata
E1 version info:

  • revision 2.40
  • firmware v2.2

I’m using USB MIDI host.

Here’s one of the AS-1 presets in question.
as1_thinwirearp.syx (1.2 KB)

1 Like

Marvelous report! I will reproduce it tonight and will take a look at what is happening there. Thanks!

2 Likes

Are you able to reproduce the issue?

I am sorry for not responding. Yes, the issue has been replicated. It is caused by the length of the sysex message. It is not handled in v2.2 properly and under certain circumstances may result in the device freeze. The issue will be resolved in the upcoming 3.0 where longer sysex messages will be supported by default.

2 Likes