VOICE[n] CONTROL REGISTER

NOTE: [n] is chosen through the use of VOICEBANKREG Chooses what kind of sound to create. Chooses whether the sound is starting or stopping. Chooses whether the sound is restarting from the beginning of the sample, or continuing from were it was last located.

u8 in IO at 0x50 called VOICECTRLREG

76543210
GROSPxxM

G: RW Gate (1=Play Attack/Decay/Sustain, 0=Play Release)
R: .W Reset (1=Reset the sample counter to the beginning of the sample! 0=continue as normal)
O: .W OneShot (1=Voice will auto-stop at end of the sample. 0=Voice will loop. Can control length of Noise as well, if you assign a VOICEWAVELEN to it!)
S: .W Silence (1=Kill the sound, even if there was a release to do! 0=continue as normal)
P: RW Pause (1=Pause the sound. 0=Don't pause the sound)
M: RW Mode (VoiceMode: 1=WaveTable, 0=Noise)

enum VoiceControlState

NameValueComment
VCS_Play128Cause the Attack, Decay, Sustain portions of the envelope to play.
VCS_Release0Cause the Release portion of the envelope to play.
VCS_RestartSample64Cause sample to restart from beginning. Does not affect the current state of the Envelope.
VCS_ContinueSample0Cause sample to continue from where it currently is (i.e. do not RESTART)
VCS_OneShot32Cause voice to auto-stop at the end of the sample. Envelope release will not be used. Attack/Decay may even be cut short. Gate will return to G_Stop automatically.
VCS_Loop0WaveTable's typical operation - sample is looped as often as needed to play the entire envelope.
VCS_Silence16Instantly kills the voice's sound. GATE goes 0. The envelope resets. There is no release. The sample offset is not modified.
VCS_Pause8Instantly pauses the voice's sound. Voice state is otherwise unaffected. Unpausing the sound causes it to resume from where it left off. BUG: Occasionally, the hardware will buz when the channel is resumed.

enum VoiceControlMode

NameValueComment
VCM_Noise0
VCM_WaveTable1