The issue with it not appearing client side seems to be with the sending of the Action_Struct packet.
I looked through the code and found two points of interest:
in in Mob::SpellOnTarget()
Code:
action->spell = spell_id;
action->sequence = (int32) (GetHeading() * 2); // just some random number
action->unknown06 = 0x0A; // seems to always be 0x0A (10)
and in Mob::BardPulse()
Code:
action->spell = spell_id;
action->sequence = (int32) (GetHeading() * 2); // just some random number
action->unknown06 = 0x10; // seems to always be 0x0A (10)
First of all there's a typo in the unknown06 entry, 0x10 is 16 not 10, which also led me to the conclusion that it isn't supposed to always be ten but rather that it is the bard modifier the client uses. At least this appears to be the case with the titanium client I'm using, I change that and the numbers on the client changes. Try changing that to use the instrument modifier and see what you get.