Version 4: Piston not recognised on second computer

Connecting Hauptwerk to MIDI organs, sequencers, ...
Post Reply
organsRgreat
Member
Posts: 578
Joined: Fri Nov 16, 2012 5:30 am

Version 4: Piston not recognised on second computer

Post by organsRgreat »

Two computers – PC and laptop – call them Master and Slave. Everything on the Slave computer is fed to it from the Master. In theory this could result in a slight MIDI delay but in practice it’s not noticeable. Hoffrichter 4 manual console feeds the Master computer.

Scoped piston C6 responds correctly on the Master computer to the Hoffrichter console piston, which is sending Note 022 on Channel 8. Output 1 is set to “Auto MIDI output (match to Primary input settings)”. Input 2 and Output 2 both disabled.

Scoped piston C6 is configured on the Slave computer to recognise the MIDI message on Channel 8 with Note 022. BUT IT DOESN’T RESPOND! The “Audio, MIDI and Performance” panel flashes a green light on Channel 8, so something is being received.

On the Slave computer MIDI Ox shows: Input: Status 97, DATA1 16, DATA2 7F, Channel 8, Note Bb 0, Event Note On.

On the Master computer the “MIDI/Key Triggers . . .” panel Input is set to “Momentary piston: MIDI Note On”. On the Slave computer the settings are identical.

Mouse clicking on C6 on the Master computer activates the expected stops. Mouse clicking on C6 on the Slave computer also activates the expected stops.

I know that if the Master computer is set so that no stops are On within a particular Scope, there will be no Output. I get round that by sacrificing certain ranks – Volume reduced to minus 24dB – on the Master computer. That works well on a theatre organ as extension and unification means that one rank can easily require a dozen stops. In this case the problem does not arise as four stops are activated on the Master computer.

On the Master computer I can auto-detect the console piston to C6 on the computer screen. For some reason the Slave computer will not auto-detect it, but that’s what always happens and I believe it’s normal (though I don’t understand it). Fortunately, on the Slave computer, the MIDI channel and note can be set manually, and that always works.

I have at least thirty scoped pistons working perfectly on both computers – there’s nothing special about piston C6 except that the Slave computer refuses to respond to it. C5 and C7 work perfectly.

I’ve experimented with “Prevent rapid piston retriggering (de-bounce)?”, but it makes no difference whether this option is ticked or un-ticked.

On the Slave computer the Scope of C6 is set correctly, as is its registration; I’ve checked this by using “Registration > Export/View combinations as text listing”.

Before posting this I shut down then restarted both computers, in case there was a Windows problem, but that has not made any difference.

HELP!!!
User avatar
mdyde
Moderator
Posts: 16003
Joined: Fri Mar 14, 2003 1:19 pm

Re: Version 4: Piston not recognised on second computer

Post by mdyde »

Hello organsRgreat,

Briefly (since we no longer officially support v4), on both computers I'd suggest turning on the advanced general preference for logging MIDI input/output temporarily.

Then look in the logs to compare:

- What is being received by your first computer for the virtual piston.
- What is being sent by your first computer from the virtual the piston.
- What is being received by your second computer for the virtual piston (and make sure it isn't unintentionally triggering any other virtual controls).

Also compare the above things between that scoped piston (the one that isn't working) with one of the other scoped pistons that is working, checking that they are behaving the same in that respect.

(There's no difference in the way that one scoped piston functions within Hauptwerk to any other, if they're configured the same.)
Best regards, Martin.
Hauptwerk software designer/developer, Milan Digital Audio.
organsRgreat
Member
Posts: 578
Joined: Fri Nov 16, 2012 5:30 am

Re: Version 4: Piston not recognised on second computer

Post by organsRgreat »

Thanks Martin – Why do I so often overlook the obvious?! I’ll follow your advice asap and let you know how I get on.
User avatar
mdyde
Moderator
Posts: 16003
Joined: Fri Mar 14, 2003 1:19 pm

Re: Version 4: Piston not recognised on second computer

Post by mdyde »

Thanks. You're very welcome. Hope it helps.
Best regards, Martin.
Hauptwerk software designer/developer, Milan Digital Audio.
organsRgreat
Member
Posts: 578
Joined: Fri Nov 16, 2012 5:30 am

Re: Version 4: Piston not recognised on second computer

Post by organsRgreat »

I’ve had an initial look at this. Only on the first computer for now, in case there’s a problem at that point; if there isn’t I’ll check the second computer next.

To be certain when I pressed a piston, I played a note on the Great manual before each one. First middle C, which I know is MIDI note 060; and later the C above, which is MIDI note 072.

I’m guessing that INF stands for “internal function” or something similar; though that probably doesn’t matter, as the components of each MIDI message are listed in detail.

A piston designated C6 on the display panel is referred to as C06 in the MIDI log (and elsewhere); I’m just mentioning this for anyone reading what follows, who might otherwise be confused.

So here’s the complete sequence, preceded in each case by my summary of what I understand to be happening:

Hauptwerk receives a MIDI message at the In port: middle C, note on:

2025-02-08-14-21-44: INF:2550 Diag: IN: MIDI note on: port: 828mk3 Hybrid #2, channel (1-16): 03, note (0-127): 060, velocity (0-127): 127. (Raw hex bytes: 92 3C 7F.)

Hauptwerk sends the same data to the Out port:

2025-02-08-14-21-44: INF:2561 Diag: OUT: MIDI note on: port: 828mk3 Hybrid #2, channel (1-16): 03, note (0-127): 060, velocity (0-127): 127. (Raw hex bytes: 92 3C 7F.)

Hauptwerk turns ON the virtual key coressponding to middle C:

2025-02-08-14-21-44: INF:2662 Diag: IN (derived): virtual key 1st touch state set by MIDI input event: 000002 'Great', note (0-127): 060, on: Y.

Hauptwerk receives a MIDI message to turn off middle C:

2025-02-08-14-21-45: INF:2551 Diag: IN: MIDI note off: port: 828mk3 Hybrid #2, channel (1-16): 03, note (0-127): 060, velocity (0-127): 000. (Raw hex bytes: 82 3C 00.)

Hauptwerk duplicates this message to the Out port:

2025-02-08-14-21-45: INF:2562 Diag: OUT: MIDI note off: port: 828mk3 Hybrid #2, channel (1-16): 03, note (0-127): 060, velocity (0-127): 127. (Raw hex bytes: 82 3C 7F.)

Hauptwerk turns OFF the virtual key corresponding to middle C:

2025-02-08-14-21-45: INF:2662 Diag: IN (derived): virtual key 1st touch state set by MIDI input event: 000002 'Great', note (0-127): 060, on: N.

Hauptwerk receives a piston message at the In port. This has already been set to operate Scoped piston C06:

2025-02-08-14-21-47: INF:2550 Diag: IN: MIDI note on: port: 828mk3 Hybrid #2, channel (1-16): 08, note (0-127): 022, velocity (0-127): 127. (Raw hex bytes: 97 16 7F.)
Hauptwerk duly operates piston C06:

2025-02-08-14-21-47: INF:2670 Diag: IN (derived): virtual switch toggled by MIDI/key input event: 000855 'Registration: scoped comb. C06'.

Now here’s what I don’t understand. The output from this piston C06 is set to “Auto MIDI output (match to primary input settings)”, but instead of duplicating the Input, Hauptwerk is sending a quite different message – on channel 7, note 020. All the Hoffrichter console pistons do use channels 7 or 8, but I’ve checked through all the scoped pistons on the menu “Adjust MIDI/key trigger settings manually . . .” and none of them shows channel 7, note 020 for either Input or Output. Input 2 and Output 2 are disabled for all sixty scoped pistons.

2025-02-08-14-21-47: INF:2562 Diag: OUT: MIDI note off: port: 828mk3 Hybrid #2, channel (1-16): 07, note (0-127): 020, velocity (0-127): 127. (Raw hex bytes: 86 14 7F.)

Now Hauptwerk does duplicate the channel 8, note 022 to the Output as expected:

2025-02-08-14-21-47: INF:2561 Diag: OUT: MIDI note on: port: 828mk3 Hybrid #2, channel (1-16): 08, note (0-127): 022, velocity (0-127): 127. (Raw hex bytes: 97 16 7F.)

Finally Hauptwerk receives a MIDI note off for this piston, but does not act on this message as the pistons are only set to respond to MIDI note on:

2025-02-08-14-21-47: INF:2551 Diag: IN: MIDI note off: port: 828mk3 Hybrid #2, channel (1-16): 08, note (0-127): 022, velocity (0-127): 000. (Raw hex bytes: 87 16 00.)

The next six messages show the effect of me pressing treble C on the Great – MIDI note 072 on channel 03:

2025-02-08-14-21-50: INF:2550 Diag: IN: MIDI note on: port: 828mk3 Hybrid #2, channel (1-16): 03, note (0-127): 072, velocity (0-127): 127. (Raw hex bytes: 92 48 7F.)
2025-02-08-14-21-50: INF:2561 Diag: OUT: MIDI note on: port: 828mk3 Hybrid #2, channel (1-16): 03, note (0-127): 072, velocity (0-127): 127. (Raw hex bytes: 92 48 7F.)
2025-02-08-14-21-50: INF:2662 Diag: IN (derived): virtual key 1st touch state set by MIDI input event: 000002 'Great', note (0-127): 072, on: Y.
2025-02-08-14-21-50: INF:2551 Diag: IN: MIDI note off: port: 828mk3 Hybrid #2, channel (1-16): 03, note (0-127): 072, velocity (0-127): 000. (Raw hex bytes: 82 48 00.)
2025-02-08-14-21-50: INF:2562 Diag: OUT: MIDI note off: port: 828mk3 Hybrid #2, channel (1-16): 03, note (0-127): 072, velocity (0-127): 127. (Raw hex bytes: 82 48 7F.)
2025-02-08-14-21-50: INF:2662 Diag: IN (derived): virtual key 1st touch state set by MIDI input event: 000002 'Great', note (0-127): 072, on: N.

Next I press piston C05, which is linked to channel 08 note 021. This piston does work properly i.e. it activates the same piston on the second computer; but again there’s one message I don’t understand, which I’ve commented directly above it.

2025-02-08-14-21-52: INF:2550 Diag: IN: MIDI note on: port: 828mk3 Hybrid #2, channel (1-16): 08, note (0-127): 021, velocity (0-127): 127. (Raw hex bytes: 97 15 7F.)
2025-02-08-14-21-52: INF:2670 Diag: IN (derived): virtual switch toggled by MIDI/key input event: 000854 'Registration: scoped comb. C05'.
2025-02-08-14-21-52: INF:2561 Diag: OUT: MIDI note on: port: 828mk3 Hybrid #2, channel (1-16): 08, note (0-127): 021, velocity (0-127): 127. (Raw hex bytes: 97 15 7F.)

Now here’s the (second) message I don’t understand – Hauptwerk sending note 022, when we should be dealing exclusively with note 021. However this time the “wrong” note is on channel 08, whereas before it was on channel 07:

2025-02-08-14-21-52: INF:2562 Diag: OUT: MIDI note off: port: 828mk3 Hybrid #2, channel (1-16): 08, note (0-127): 022, velocity (0-127): 127. (Raw hex bytes: 87 16 7F.)
2025-02-08-14-21-52: INF:2551 Diag: IN: MIDI note off: port: 828mk3 Hybrid #2, channel (1-16): 08, note (0-127): 021, velocity (0-127): 000. (Raw hex bytes: 87 15 00.)

My next step will be to investigate a couple more pistons on the first computer; then I’ll check what’s arriving at the second computer and how that responds. However if someone can spot what I’ve set incorrectly that’s caused those two extra, "incorrect" MIDI Out piston messages, that might save me a lot of time. Thanks!
User avatar
mdyde
Moderator
Posts: 16003
Joined: Fri Mar 14, 2003 1:19 pm

Re: Version 4: Piston not recognised on second computer

Post by mdyde »

Hello organsRgreat,
organsRgreat wrote: Sun Feb 09, 2025 4:54 pm I’m guessing that INF stands for “internal function” or something similar; though that probably doesn’t matter, as the components of each MIDI message are listed in detail.
It stands for 'information', indicating that the logged line is just for information (as opposed to 'ERR', which indicates an error).

Regarding the unexpected messages that your log shows being sent:

Maybe the scoped piston is turning a virtual stop (or some other control) on or off, and it is that stop/control that is configured to send the messages, i.e. maybe the messages are being sent indirectly, rather than directly from the virtual scoped piston itself. Whenever Hauptwerk v9+ logs a MIDI OUT message it specifically indicates which virtual control sent the message, to help troubleshoot such cases (but v4 didn't have the ability). Here's the excerpt from the v9 release about that:

"Diagnostics: if MIDI logging is enabled, whenever a MIDI output message is sent the virtual control that caused it to be sent is logged (in most cases). Also, any combinations triggered are logged"

Also (in v4 as well as later versions), scoped pistons automatically turn on/off based on the states of the stops that they're been set to control. Hence if you trigger one scoped piston it may (indirectly) cause the states of other scoped pistons to change, potentially causing those other scoped pistons to send MIDI messages. You probably don't want that, since your aim (as I understand) is simply to duplicate the entire incoming MIDI stream exactly from the first computer to the next.

I think the best and simplest option would be:

- Don't use MIDI output from the first computer.

- Instead duplicate the entire MIDI stream in external hardware/software, and feed it in to both computers in parallel. For example, one of the Kenton MIDI THRU boxes would appear to be suitable: https://kentonuk.com/product-category/midi-thru-boxes/ .

(Alternatively, re-configuring the MIDI OUT settings for all of the the scoped combinations manually to send MIDI note-on/off messages on the appropriate ports/channels/notes, instead of using the “Auto MIDI output (match to Primary input settings)”, might possibly help, especially if the input toggles the virtual piston. However, that would be less satisfactory that duplicating the entire MIDI stream in hardware.)
Best regards, Martin.
Hauptwerk software designer/developer, Milan Digital Audio.
Post Reply