28    class SeqSoundHandle : 
private ut::NonCopyable
 
   33        ~SeqSoundHandle() { DetachSound(); }
 
   35        bool IsAttachedSound()
 const { 
return mSound != 
nullptr; }
 
   39        void WriteVariable(
int varNo, s16 value) {
 
   40            if (IsAttachedSound())
 
   41                mSound->WriteVariable(varNo, value);
 
   44        void ReadVariable(
int varNo, s16 *value) {
 
   45            if (IsAttachedSound())
 
   46                mSound->ReadVariable(varNo, value);
 
   49        void SetTrackMute(ulong trackFlags, SeqMute mute) {
 
   50            if (IsAttachedSound())
 
   51                mSound->SetTrackMute(trackFlags, mute);
 
   54        void SetTempoRatio(f32 tempoRatio) {
 
   55            if (IsAttachedSound())
 
   56                mSound->SetTempoRatio(tempoRatio);
 
   59        void SetVolume(ulong trackFlags, f32 volume) {
 
   60            if (IsAttachedSound())
 
   61                mSound->SetTrackVolume(trackFlags, volume);