Closed milnak closed 1 month ago
Let me see.
convertToEditBuffer() is only called before sending the data to the synth. This is the function that is used to e.g. turn a program buffer into an edit buffer, should the synth support both, When you only do Edit Buffer, this does not need to do more than just return the message it gets, as it is described in the adaptation programming guide.
The question is why you do not get edit buffers although you return True from isEditBuffer().
Does the synth have multiple messages per edit buffer? Only if yes you need to implement isPartOfEditBuffer, else you can just leave the function out, as it might interfere. If it does have more than one message per edit buffer, the return value needs to be consistent.
What I do is to test the code with real data and without the KnobKraft in the way. You can load a sysex file (the module knobkraft has some helper functions for that), and run the edit buffer loaded from a file through your functions to see if they actually return what you think they shoud return. You can also sprinkle print statements, they should end up in the log (which you probably already know and do).
Else it is a bit hard to judge what is going wrong, in theory these should be sufficient.
Does the synth have multiple messages per edit buffer? Only if yes you need to implement isPartOfEditBuffer,
Yes, it returns multiple messages :
# Bulk Header 0e pp 0n SIZE = 0
# Soundmondo Format Version 00 7f 00 SIZE = 4
...
# Bulk Footer 0f pp 0n SIZE = 0
I'll double check that my logic in that isPartOfEditBufferDump is working as expected. Thanks.
Logic seems fine. Here's a trace I see:
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7 f0 43 00 7f 1c 00 18 09 50 11 00 00 00 40 00 7f 3c 7f 00 00 00 00 00 00 01 00 00 00 00 00 00 1b f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7 f0 43 00 7f 1c 00 18 09 50 11 00 00 00 40 00 7f 3c 7f 00 00 00 00 00 00 01 00 00 00 00 00 00 1b f7 f0 43 00 7f 1c 00 3e 09 60 00 00 00 00 09 00 0e 00 20 00 5b 02 00 02 40 40 7f 30 01 40 00 40 00 40 40 00 00 00 00 00 01 00 00 01 00 42 04 40 00 00 01 01 01 01 00 00 00 01 0d 56 00 01 19 1c 16 00 00 00 00 0b 0a f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7 f0 43 00 7f 1c 00 18 09 50 11 00 00 00 40 00 7f 3c 7f 00 00 00 00 00 00 01 00 00 00 00 00 00 1b f7 f0 43 00 7f 1c 00 3e 09 60 00 00 00 00 09 00 0e 00 20 00 5b 02 00 02 40 40 7f 30 01 40 00 40 00 40 40 00 00 00 00 00 01 00 00 01 00 42 04 40 00 00 01 01 01 01 00 00 00 01 0d 56 00 01 19 1c 16 00 00 00 00 0b 0a f7 f0 43 00 7f 1c 00 3e 09 60 01 00 03 00 06 00 0e 00 20 01 04 02 00 01 3f 40 7f 47 00 2d 03 4c 00 40 40 00 00 00 00 00 01 00 00 01 00 42 0a 3d 00 00 01 00 01 01 00 00 00 00 21 00 3d 00 1f 16 18 00 00 00 00 0b 52 f7
13:40:59: info Adaptation: isEditBufferDump: complete! f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7 f0 43 00 7f 1c 00 18 09 50 11 00 00 00 40 00 7f 3c 7f 00 00 00 00 00 00 01 00 00 00 00 00 00 1b f7 f0 43 00 7f 1c 00 3e 09 60 00 00 00 00 09 00 0e 00 20 00 5b 02 00 02 40 40 7f 30 01 40 00 40 00 40 40 00 00 00 00 00 01 00 00 01 00 42 04 40 00 00 01 01 01 01 00 00 00 01 0d 56 00 01 19 1c 16 00 00 00 00 0b 0a f7 f0 43 00 7f 1c 00 3e 09 60 01 00 03 00 06 00 0e 00 20 01 04 02 00 01 3f 40 7f 47 00 2d 03 4c 00 40 40 00 00 00 00 00 01 00 00 01 00 42 0a 3d 00 00 01 00 01 01 00 00 00 00 21 00 3d 00 1f 16 18 00 00 00 00 0b 52 f7 f0 43 00 7f 1c 00 04 09 0f 7f 00 69 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 04 09 0e 7f 00 6a f7 f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7 f0 43 00 7f 1c 00 18 09 50 11 00 00 00 40 00 7f 3c 7f 00 00 00 00 00 00 01 00 00 00 00 00 00 1b f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 08 09 00 7f 00 01 00 00 00 77 f7 f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7 f0 43 00 7f 1c 00 18 09 50 11 00 00 00 40 00 7f 3c 7f 00 00 00 00 00 00 01 00 00 00 00 00 00 1b f7 f0 43 00 7f 1c 00 3e 09 60 00 00 00 00 09 00 0e 00 20 00 5b 02 00 02 40 40 7f 30 01 40 00 40 00 40 40 00 00 00 00 00 01 00 00 01 00 42 04 40 00 00 01 01 01 01 00 00 00 01 0d 56 00 01 19 1c 16 00 00 00 00 0b 0a f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 4c 09 46 00 00 53 6f 66 74 20 4a 61 7a 7a 79 20 20 20 20 20 02 00 00 00 07 04 40 37 00 01 01 00 7f 0b 00 7f 04 00 7f 00 00 00 00 01 00 00 00 01 22 00 4b 59 0b 01 01 00 00 24 4f 00 01 40 40 40 40 40 40 62 4c 53 40 00 00 40 00 02 00 5f f7 f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7 f0 43 00 7f 1c 00 18 09 50 11 00 00 00 40 00 7f 3c 7f 00 00 00 00 00 00 01 00 00 00 00 00 00 1b f7 f0 43 00 7f 1c 00 3e 09 60 00 00 00 00 09 00 0e 00 20 00 5b 02 00 02 40 40 7f 30 01 40 00 40 00 40 40 00 00 00 00 00 01 00 00 01 00 42 04 40 00 00 01 01 01 01 00 00 00 01 0d 56 00 01 19 1c 16 00 00 00 00 0b 0a f7 f0 43 00 7f 1c 00 3e 09 60 01 00 03 00 06 00 0e 00 20 01 04 02 00 01 3f 40 7f 47 00 2d 03 4c 00 40 40 00 00 00 00 00 01 00 00 01 00 42 0a 3d 00 00 01 00 01 01 00 00 00 00 21 00 3d 00 1f 16 18 00 00 00 00 0b 52 f7
13:40:59: info Adaptation: isEditBufferDump: incomplete f0 43 00 7f 1c 00 14 09 4a 00 00 01 00 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2b f7 f0 43 00 7f 1c 00 14 09 4a 01 00 00 01 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 2a f7 f0 43 00 7f 1c 00 14 09 4a 02 00 00 02 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 28 f7 f0 43 00 7f 1c 00 14 09 4a 03 00 00 03 40 40 00 7f 00 64 40 00 00 00 1f 3f 00 00 26 f7 f0 43 00 7f 1c 00 28 09 50 00 00 01 3e 01 00 00 7f 2c 40 42 0a 40 00 01 00 00 00 00 00 00 01 01 01 00 01 00 00 05 00 41 41 00 00 00 02 00 0a 58 f7 f0 43 00 7f 1c 00 18 09 50 10 00 00 00 40 00 7f 7f 7f 00 00 00 00 00 76 00 00 00 00 00 01 00 63 f7 f0 43 00 7f 1c 00 18 09 50 11 00 00 00 40 00 7f 3c 7f 00 00 00 00 00 00 01 00 00 00 00 00 00 1b f7 f0 43 00 7f 1c 00 3e 09 60 00 00 00 00 09 00 0e 00 20 00 5b 02 00 02 40 40 7f 30 01 40 00 40 00 40 40 00 00 00 00 00 01 00 00 01 00 42 04 40 00 00 01 01 01 01 00 00 00 01 0d 56 00 01 19 1c 16 00 00 00 00 0b 0a f7 f0 43 00 7f 1c 00 3e 09 60 01 00 03 00 06 00 0e 00 20 01 04 02 00 01 3f 40 7f 47 00 2d 03 4c 00 40 40 00 00 00 00 00 01 00 00 01 00 42 0a 3d 00 00 01 00 01 01 00 00 00 00 21 00 3d 00 1f 16 18 00 00 00 00 0b 52 f7 f0 43 00 7f 1c 00 04 09 0f 7f 00 69 f7
13:40:59: warning No patches contained in data, nothing to upload.
When I trace "complete" it's when I return from isEditBufferDump. Seems weird that isEditBufferDump is getting called again after I return true from isEditBufferDump.
Does that ring any bells?
Not yet. I see this is from a Yamaha reface? You might compare your code with the working code for the reface DX in https://github.com/christofmuc/KnobKraft-orm/blob/master/adaptations/YamahaRefaceDX.py to see if there are larger discrepancies. I remember that the Yamaha formats are always more complicated than strictly necessary. Also make sure to not have additional functions activated that you do not want to test right now, so just the bare minimum of edit buffer capability is fine.
Wait, these are a lot of messages for a single patch. There is a hard coded limit of 10 messages per patch I had to introduce to accelerate parsing of corrupted streams. Is it really 12 messages per patch?
This was introduced in 2.2.3, as a fix for the bank dump support for the reface DX. And I even made a comment on "how do we determine the right amount of messages". 🙄
I'll kick off a build with a bigger message window - the limit was there to prevent the parser from being too greedy in assigning messages to a single patch during parsing of reface DX bank dumps iirc.
Wait, these are a lot of messages for a single patch. There is a hard coded limit of 10 messages per patch I had to introduce to accelerate parsing of corrupted streams. Is it really 12 messages per patch?
Ah, maybe that's it. This is a Yamaha YC series. See Bulk Dump Block (pg. 64).
I'm still trying to reverse engineer how to deal with the dumps from this device. The manual has mistakes and like the Reface CP manual, isn't well written.
Pretty sure that's the reason - I decreased it from 10 to 4, and now the reface DX couldn't load anything anymore.
I increased it to 14 in the release 2.4.2, which is just in progress and should be here in 20 minutes or so. Making it even bigger slows everything down, because it is the maximum number of messages presented to isEditBufferDump() and isProgramDump() in each iteration. Presenting too many messages will slow things down and might make the parsing even harder.
Give it a try once the 2.4.2 is done. I made it configurable via environment variable ORM_MAX_MSG_PER_PATCH should 14 be the wrong number.
The Yamaha formats really are special, and take difference thinking with their "address and size" concept (similar to Roland btw). But I think you're on a good track there!
I got further with 2.4.2!
15:10:41: info Current edit buffer from synth is patch '00-00'
15:10:41: info Retrieved 1 new or changed patches from the synth, uploaded to database
I still see isEditBufferDump called again even after I end up returning true. After the second time returning true, it's not called again.
Do you know if this is expected?
Great success! isEditBufferDump can be called in various situations, it might be a different part of the code that checks that again - the result is not stored in the database, so if there is any other part of the software, it will be called again. It's not very efficient, but avoids data inconsistency should the algorithm for detemining if something is an edit buffer change.
Verified fixed. Close.
I'm writing another adaptation.
I've implemented Edit Buffer Capability so far:
I see the first two being called, and when the complete dump is received in isEditBufferDump, i return true I don't see convertToEditBuffer called.
When I choose MIDI > Import Edit buffer from synth, I get:
warning No patches contained in data, nothing to upload.
What am I missing here?