• Home
  • Raw
  • Download

Lines Matching full:voice

124 static void debug_alloc(struct snd_opl3 *opl3, char *s, int voice) {  in debug_alloc()  argument
128 printk(KERN_DEBUG "time %.5i: %s [%.2i]: ", opl3->use_time, s, voice); in debug_alloc()
136 * Get a FM voice (channel) to play a note on.
140 int chan_4op_1; /* first voice for 4op instrument */ in opl3_get_voice()
141 int chan_4op_2; /* second voice for 4op instrument */ in opl3_get_voice()
159 int voice; in opl3_get_voice() member
165 best[i].voice = -1; in opl3_get_voice()
183 /* allocate 4op voice */ in opl3_get_voice()
189 /* kill one voice, CHEAP */ in opl3_get_voice()
201 /* allocate 2op voice */ in opl3_get_voice()
206 /* kill one voice on 2op channel, CHEAP */ in opl3_get_voice()
214 bp->voice = i; in opl3_get_voice()
219 if (best[i].voice >= 0) { in opl3_get_voice()
221 printk(KERN_DEBUG "%s %iop allocation on voice %i\n", in opl3_get_voice()
223 best[i].voice); in opl3_get_voice()
225 return best[i].voice; in opl3_get_voice()
295 int voice; in snd_opl3_note_on() local
326 /* in SEQ mode, drum voice numbers are notes on drum channel */ in snd_opl3_note_on()
381 /* in SEQ mode, allocate voice on free OPL3 channel */ in snd_opl3_note_on()
383 voice = opl3_get_voice(opl3, instr_4op, chan); in snd_opl3_note_on()
385 /* remap OSS voice */ in snd_opl3_note_on()
386 voice = snd_opl3_oss_map[chan->number]; in snd_opl3_note_on()
389 if (voice < 0) { in snd_opl3_note_on()
394 if (voice < MAX_OPL2_VOICES) { in snd_opl3_note_on()
397 voice_offset = voice; in snd_opl3_note_on()
402 voice_offset = voice - MAX_OPL2_VOICES; in snd_opl3_note_on()
406 /* kill voice on channel */ in snd_opl3_note_on()
407 vp = &opl3->voices[voice]; in snd_opl3_note_on()
414 vp2 = &opl3->voices[voice + 3]; in snd_opl3_note_on()
473 /* Program the FM voice characteristics */ in snd_opl3_note_on()
480 /* Set OPL3 AM_VIB register of requested voice/operator */ in snd_opl3_note_on()
485 /* Set OPL3 KSL_LEVEL register of requested voice/operator */ in snd_opl3_note_on()
490 /* Set OPL3 ATTACK_DECAY register of requested voice/operator */ in snd_opl3_note_on()
495 /* Set OPL3 SUSTAIN_RELEASE register of requested voice/operator */ in snd_opl3_note_on()
508 /* Set output voice connection */ in snd_opl3_note_on()
520 /* Set output voice connection */ in snd_opl3_note_on()
546 /* Set OPL3 FNUM_LOW register of requested voice */ in snd_opl3_note_on()
550 opl3->voices[voice].keyon_reg = blocknum; in snd_opl3_note_on()
556 snd_printk(KERN_DEBUG " --> trigger voice %i\n", voice); in snd_opl3_note_on()
558 /* Set OPL3 KEYON_BLOCK register of requested voice */ in snd_opl3_note_on()
564 opl3->voices[voice].note_off = jiffies + in snd_opl3_note_on()
567 opl3->voices[voice].note_off_check = 1; in snd_opl3_note_on()
569 opl3->voices[voice].note_off_check = 0; in snd_opl3_note_on()
582 vp2 = &opl3->voices[voice + 3]; in snd_opl3_note_on()
589 /* 4op killed by 2op, release bounded voice */ in snd_opl3_note_on()
590 vp2 = &opl3->voices[voice + 3]; in snd_opl3_note_on()
598 debug_alloc(opl3, "note on ", voice); in snd_opl3_note_on()
619 static void snd_opl3_kill_voice(struct snd_opl3 *opl3, int voice) in snd_opl3_kill_voice() argument
627 if (snd_BUG_ON(voice >= MAX_OPL3_VOICES)) in snd_opl3_kill_voice()
630 vp = &opl3->voices[voice]; in snd_opl3_kill_voice()
631 if (voice < MAX_OPL2_VOICES) { in snd_opl3_kill_voice()
634 voice_offset = voice; in snd_opl3_kill_voice()
638 voice_offset = voice - MAX_OPL2_VOICES; in snd_opl3_kill_voice()
641 /* kill voice */ in snd_opl3_kill_voice()
643 snd_printk(KERN_DEBUG " --> kill voice %i\n", voice); in snd_opl3_kill_voice()
653 vp2 = &opl3->voices[voice + 3]; in snd_opl3_kill_voice()
660 debug_alloc(opl3, "note off", voice); in snd_opl3_kill_voice()
673 int voice; in snd_opl3_note_off_unsafe() local
690 for (voice = 0; voice < opl3->max_voices; voice++) { in snd_opl3_note_off_unsafe()
691 vp = &opl3->voices[voice]; in snd_opl3_note_off_unsafe()
693 snd_opl3_kill_voice(opl3, voice); in snd_opl3_note_off_unsafe()
699 voice = snd_opl3_oss_map[chan->number]; in snd_opl3_note_off_unsafe()
700 snd_opl3_kill_voice(opl3, voice); in snd_opl3_note_off_unsafe()
738 static void snd_opl3_update_pitch(struct snd_opl3 *opl3, int voice) in snd_opl3_update_pitch() argument
748 if (snd_BUG_ON(voice >= MAX_OPL3_VOICES)) in snd_opl3_update_pitch()
751 vp = &opl3->voices[voice]; in snd_opl3_update_pitch()
755 if (voice < MAX_OPL2_VOICES) { in snd_opl3_update_pitch()
758 voice_offset = voice; in snd_opl3_update_pitch()
762 voice_offset = voice - MAX_OPL2_VOICES; in snd_opl3_update_pitch()
767 /* Set OPL3 FNUM_LOW register of requested voice */ in snd_opl3_update_pitch()
776 /* Set OPL3 KEYON_BLOCK register of requested voice */ in snd_opl3_update_pitch()
784 * Update voice pitch controller
788 int voice; in snd_opl3_pitch_ctrl() local
796 for (voice = 0; voice < opl3->max_voices; voice++) { in snd_opl3_pitch_ctrl()
797 vp = &opl3->voices[voice]; in snd_opl3_pitch_ctrl()
799 snd_opl3_update_pitch(opl3, voice); in snd_opl3_pitch_ctrl()
805 voice = snd_opl3_oss_map[chan->number]; in snd_opl3_pitch_ctrl()
806 snd_opl3_update_pitch(opl3, voice); in snd_opl3_pitch_ctrl()