EDIT - Ignore this workaround - see answer on using stand alone SB. Did not want to delete to keep the conversation.
Got a workaround. RPNs / NRPNs are order dependent, so there must be some undocumented guardrails in SB to keep them from causing chaos.
Combine the MSB, LSB, into one composite message, and delay each subsequent output by 1 sec, as follows:
SND L0 63 00 L0 62 1B L0 06 M23 # Osc1 Wave NPRN
SND L0 63 00 L0 62 1F L0 06 M27 +D1000 # Osc2 Wave NPRN
SND L0 63 00 L0 62 23 L0 06 M2B +D2000 # Osc3 Wave NPRN
Generates this output:
Message In: Cmd=176|Ch=01|Data1=045|Data2=000 | Length=3: B0 2D 00
Message In: Cmd=176|Ch=01|Data1=044|Data2=060 | Length=3: B0 2C 3C
Message In: Cmd=176|Ch=01|Data1=043|Data2=052 | Length=3: B0 2B 34
Message In: Cmd=176|Ch=01|Data1=040|Data2=052 | Length=3: B0 28 34
Message In: Cmd=176|Ch=01|Data1=046|Data2=052 | Length=3: B0 2E 34
Message In: Length=9: B0 63 00 B0 62 1B B0 06 07
Message In: Cmd=176|Ch=01|Data1=041|Data2=062 | Length=3: B0 29 3E
Message In: Cmd=176|Ch=01|Data1=039|Data2=038 | Length=3: B0 27 26
Message In: Cmd=176|Ch=01|Data1=042|Data2=000 | Length=3: B0 2A 00
Message In: Cmd=176|Ch=01|Data1=047|Data2=064 | Length=3: B0 2F 40
Message In: Length=9: B0 63 00 B0 62 1F B0 06 0F
Message In: Length=9: B0 63 00 B0 62 23 B0 06 12