rem: voice->PlayingRequest->ahir_Std.io_Command = AHICMD_WRITTEN;
add: playreq->ahir_Std.io_Command = AHICMD_WRITTEN;
context: SoundFunc( struct Hook*            hook,           struct AHIAudioCtrl*    actrl,           struct AHISoundMessage* sndmsg ){  struct AHIDevUnit *iounit;  struct Voice *voice;    iounit = (struct AHIDevUnit *) hook->h_Data;  voice = &iounit->Voices[(WORD)sndmsg->ahism_Channel];  if(voice->PlayingRequest)  {    voice->PlayingRequest->ahir_Std.io_Command = AHICMD_WRITTEN;  }  voice->PlayingRequest = voice->QueuedRequest;  voice->Flags |= VF_STARTED;  voice->QueuedRequest  = NULL;  switch(voice->NextOffset)  {    case FREE:      break;    case MUTE:      /* A AHI_NOSOUND is done, channel is silent */      voice->NextOffset = FREE;      break;    case PLAY:      /* A normal sound is done and playing, no other sound is queued */      AHI_SetSound(sndmsg->ahism_Channel,AHI_NOSOUND,0,0,actrl,AHISF_NONE);      voice->NextOffset = MUTE;      break;    default:      /* A normal sound is done, and another is waiting */      AHI_SetSound(sndmsg->ahism_Channel,          voice->NextSound,          voice->NextOffset,          voice->NextLength,          actrl,AHISF_NONE);      AHI_SetFreq(sndmsg->ahism_Channel,          voice->NextFrequency,          actrl,AHISF_NONE);      AHI_SetVol(sndmsg->ahism_Channel,          voice->NextVolume,          voice->NextPan,          actrl,AHISF_NONE);      voice->QueuedRequest = voice->NextRequest;      voice->NextRequest = NULL;      voice->NextOffset = PLAY;      break;  }  Signal((struct Task *) iounit->Master, (1L << iounit->SampleSignal));}