Bc2000 (for the BCF2000 & BCR2000) group photo

Yahoo Groups archive

Bc2000 (for the BCF2000 & BCR2000)

Index last updated: 2026-04-28 23:16 UTC

Thread

Multiple .tx lines

Multiple .tx lines

2008-07-08 by rpcfender

Hi all

Strange stuff for those that might be interested, there is a reason for multiple lines in the .tx statement.
Perhaps you all knew this, but it was something new to me.

I recently needed to change the preset on my XV3080 and then down load the preset sysex that was loaded into the edit buffer.

I used the standard bank select/ preset select

$B0 $00 87
$B0 $20 $00
$C0 $0A

Then I needed a Roland sysex message to get the preset data

$F0 $41 $10 $00 $10 $11 $30 $25 0 0 0 0 0 val chk-1 6 $F7

As you loose 2 bytes for each .tx statement and I thought that multiple lines were just for neatness I made a single .tx (learn statement in Mark's spec)
.tx
$B0 $00 87 $B0 $20 $00 $C0 $0A $F0 $41 $10 $00 $10 $11 $30 $25 0 0 0 0 0 val chk-1 6 $F7

but the XV3080 said that there was a bad checksum

The value after the checksum (chk-1 ) gives the starting position of the data to be summed. 6 in my case.
I thought the BCR would look back to see the $F0 and count from there. Not so, it counts from the start of the .tx message

You could count from the the start of the whole message (and make the checksum offset in my case 14) or all you need to do this

.tx $B0 $00 87 $B0 $20 $00 ; $C0 $0A
.tx $F0 $41 $10 $00 $10 $11 $30 $25 0 0 0 0 0 val chk-1 6 $F7

Now it works.

Check out Mark's spec on Checksum Defininition

All the best

Royce


Re: Multiple .tx lines

2008-07-09 by Mark van den Berg

--- In bc2000@yahoogroups.com, "rpcfender" <rpcfender@...> wrote:
> Strange stuff for those that might be interested, there is a reason for 
> multiple lines in the *.tx* statement.
> Perhaps you all knew this, but it was something new to me.

"Perhaps you all knew this"?
Frankly, Royce, I think that most people in this group (including me)
would NEVER assume they know anything about BCL that you don't...

But seriously: I now realize that I should probably have announced my
discoveries about multiple .tx messages more prominently than just
"hiding" them in BC MIDI Implementation.pdf vs. 1.0. But there are
always so many issues - it just got lost a bit.

> *As you loose 2 bytes for each .tx statement and I thought that
multiple 
> lines were just for neatness I made a single .tx (learn statement in 
> Mark's spec)
> *.tx  **$B0 $00 87  $B0 $20 $00  $C0 $0A*    *$F0 $41 $10 $00 $10 $11 
> $30 $25 0 0 0 0 0 val chk-1 6 $F7
> *
> but the XV3080 said that there was a bad checksum
> 
> The value after the checksum (chk-1 ) gives the starting position of
the 
> data to be summed. 6 in my case.
> I thought the BCR would look back to see the $F0 and count from there. 
> Not so, it counts from the start of the .tx message
> 
> You could count from the the start of the whole message (and make the 
> checksum offset in my case 14) or all you need to do this
> 
> *.tx  **$B0 $00 87  $B0 $20 $00  $C0 $0A
> .tx*  *$F0 $41 $10 $00 $10 $11 $30 $25 0 0 0 0 0 val chk-1 6 $F7
> *
> Now it works.
> 
> Check out Mark's spec on *Checksum Defininition*

Just one addition: as the same section in BC MIDI Implementation.pdf
explains, there is a second reason for using multiple .tx lines: any
SysEx message ($F0 ... $F7) in non-terminal position on a .tx line
leads to extra, spurious MIDI output from the BCF/BCR. (I think there
was a message strand in our group on this problem about 8 months ago
or so, but I never got round to stepping in at that time.)

So starting from your original, invalid attempt above:
1. if you put the SysEx message IN FRONT OF all the $B0 and $C0
messages, the CHECKSUM would be correct, but there would be spurious
output.
2. if you put the SysEx message somewhere IN BETWEEN the other
messages, you get BOTH spurious output AND a wrong checksum! What a
mess...

So to summarize: a SysEx message containing a "chk-" definition must
be both in INITIAL position (for a correct checksum) and in FINAL
position (to avoid spurious output). In other words: it must
constitute a single .tx line.

Mark.

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.