• Home
  • Raw
  • Download

Lines Matching refs:opl3

110 static void debug_alloc(struct snd_opl3 *opl3, char *s, int voice) {  in debug_alloc()  argument
114 printk(KERN_DEBUG "time %.5i: %s [%.2i]: ", opl3->use_time, s, voice); in debug_alloc()
115 for (i = 0; i < opl3->max_voices; i++) in debug_alloc()
116 printk(KERN_CONT "%c", *(str + opl3->voices[i].state + 1)); in debug_alloc()
124 static int opl3_get_voice(struct snd_opl3 *opl3, int instr_4op, in opl3_get_voice() argument
155 for (i = 0; i < opl3->max_voices; i++) { in opl3_get_voice()
156 vp = &opl3->voices[i]; in opl3_get_voice()
179 vp2 = &opl3->voices[i + 3]; in opl3_get_voice()
226 struct snd_opl3 *opl3 = from_timer(opl3, t, tlist); in snd_opl3_timer_func() local
231 spin_lock_irqsave(&opl3->voice_lock, flags); in snd_opl3_timer_func()
232 for (i = 0; i < opl3->max_voices; i++) { in snd_opl3_timer_func()
233 struct snd_opl3_voice *vp = &opl3->voices[i]; in snd_opl3_timer_func()
236 snd_opl3_note_off_unsafe(opl3, vp->note, 0, in snd_opl3_timer_func()
242 spin_unlock_irqrestore(&opl3->voice_lock, flags); in snd_opl3_timer_func()
244 spin_lock_irqsave(&opl3->sys_timer_lock, flags); in snd_opl3_timer_func()
246 mod_timer(&opl3->tlist, jiffies + 1); /* invoke again */ in snd_opl3_timer_func()
248 opl3->sys_timer_status = 0; in snd_opl3_timer_func()
249 spin_unlock_irqrestore(&opl3->sys_timer_lock, flags); in snd_opl3_timer_func()
255 static void snd_opl3_start_timer(struct snd_opl3 *opl3) in snd_opl3_start_timer() argument
258 spin_lock_irqsave(&opl3->sys_timer_lock, flags); in snd_opl3_start_timer()
259 if (! opl3->sys_timer_status) { in snd_opl3_start_timer()
260 mod_timer(&opl3->tlist, jiffies + 1); in snd_opl3_start_timer()
261 opl3->sys_timer_status = 1; in snd_opl3_start_timer()
263 spin_unlock_irqrestore(&opl3->sys_timer_lock, flags); in snd_opl3_start_timer()
278 struct snd_opl3 *opl3; in snd_opl3_note_on() local
304 opl3 = p; in snd_opl3_note_on()
313 if (opl3->synth_mode == SNDRV_OPL3_MODE_SEQ) { in snd_opl3_note_on()
332 spin_lock_irqsave(&opl3->voice_lock, flags); in snd_opl3_note_on()
335 snd_opl3_drum_switch(opl3, note, vel, 1, chan); in snd_opl3_note_on()
336 spin_unlock_irqrestore(&opl3->voice_lock, flags); in snd_opl3_note_on()
341 patch = snd_opl3_find_patch(opl3, prg, bank, 0); in snd_opl3_note_on()
343 spin_unlock_irqrestore(&opl3->voice_lock, flags); in snd_opl3_note_on()
353 if (opl3->hardware >= OPL3_HW_OPL3) { in snd_opl3_note_on()
359 spin_unlock_irqrestore(&opl3->voice_lock, flags); in snd_opl3_note_on()
368 if (opl3->synth_mode == SNDRV_OPL3_MODE_SEQ) { in snd_opl3_note_on()
369 voice = opl3_get_voice(opl3, instr_4op, chan); in snd_opl3_note_on()
376 spin_unlock_irqrestore(&opl3->voice_lock, flags); in snd_opl3_note_on()
393 vp = &opl3->voices[voice]; in snd_opl3_note_on()
397 opl3->command(opl3, opl3_reg, reg_val); in snd_opl3_note_on()
400 vp2 = &opl3->voices[voice + 3]; in snd_opl3_note_on()
405 opl3->command(opl3, opl3_reg, reg_val); in snd_opl3_note_on()
411 if ((opl3->connection_reg ^ connect_mask) & connect_mask) { in snd_opl3_note_on()
412 opl3->connection_reg |= connect_mask; in snd_opl3_note_on()
415 opl3->command(opl3, opl3_reg, opl3->connection_reg); in snd_opl3_note_on()
418 if ((opl3->connection_reg ^ ~connect_mask) & connect_mask) { in snd_opl3_note_on()
419 opl3->connection_reg &= ~connect_mask; in snd_opl3_note_on()
422 opl3->command(opl3, opl3_reg, opl3->connection_reg); in snd_opl3_note_on()
428 opl3->connection_reg); in snd_opl3_note_on()
469 opl3->command(opl3, opl3_reg, reg_val); in snd_opl3_note_on()
474 opl3->command(opl3, opl3_reg, reg_val); in snd_opl3_note_on()
479 opl3->command(opl3, opl3_reg, reg_val); in snd_opl3_note_on()
484 opl3->command(opl3, opl3_reg, reg_val); in snd_opl3_note_on()
489 opl3->command(opl3, opl3_reg, reg_val); in snd_opl3_note_on()
501 opl3->command(opl3, opl3_reg, reg_val); in snd_opl3_note_on()
514 opl3->command(opl3, opl3_reg, reg_val); in snd_opl3_note_on()
534 opl3->command(opl3, opl3_reg, fnum); in snd_opl3_note_on()
536 opl3->voices[voice].keyon_reg = blocknum; in snd_opl3_note_on()
546 opl3->command(opl3, opl3_reg, blocknum); in snd_opl3_note_on()
550 opl3->voices[voice].note_off = jiffies + in snd_opl3_note_on()
552 snd_opl3_start_timer(opl3); in snd_opl3_note_on()
553 opl3->voices[voice].note_off_check = 1; in snd_opl3_note_on()
555 opl3->voices[voice].note_off_check = 0; in snd_opl3_note_on()
561 vp->time = opl3->use_time++; in snd_opl3_note_on()
568 vp2 = &opl3->voices[voice + 3]; in snd_opl3_note_on()
569 vp2->time = opl3->use_time++; in snd_opl3_note_on()
576 vp2 = &opl3->voices[voice + 3]; in snd_opl3_note_on()
577 vp2->time = opl3->use_time++; in snd_opl3_note_on()
584 debug_alloc(opl3, "note on ", voice); in snd_opl3_note_on()
602 spin_unlock_irqrestore(&opl3->voice_lock, flags); in snd_opl3_note_on()
605 static void snd_opl3_kill_voice(struct snd_opl3 *opl3, int voice) in snd_opl3_kill_voice() argument
616 vp = &opl3->voices[voice]; in snd_opl3_kill_voice()
633 opl3->command(opl3, opl3_reg, vp->keyon_reg); in snd_opl3_kill_voice()
636 vp->time = opl3->use_time++; in snd_opl3_kill_voice()
639 vp2 = &opl3->voices[voice + 3]; in snd_opl3_kill_voice()
641 vp2->time = opl3->use_time++; in snd_opl3_kill_voice()
646 debug_alloc(opl3, "note off", voice); in snd_opl3_kill_voice()
657 struct snd_opl3 *opl3; in snd_opl3_note_off_unsafe() local
662 opl3 = p; in snd_opl3_note_off_unsafe()
669 if (opl3->synth_mode == SNDRV_OPL3_MODE_SEQ) { in snd_opl3_note_off_unsafe()
671 snd_opl3_drum_switch(opl3, note, vel, 0, chan); in snd_opl3_note_off_unsafe()
676 for (voice = 0; voice < opl3->max_voices; voice++) { in snd_opl3_note_off_unsafe()
677 vp = &opl3->voices[voice]; in snd_opl3_note_off_unsafe()
679 snd_opl3_kill_voice(opl3, voice); in snd_opl3_note_off_unsafe()
686 snd_opl3_kill_voice(opl3, voice); in snd_opl3_note_off_unsafe()
694 struct snd_opl3 *opl3 = p; in snd_opl3_note_off() local
697 spin_lock_irqsave(&opl3->voice_lock, flags); in snd_opl3_note_off()
699 spin_unlock_irqrestore(&opl3->voice_lock, flags); in snd_opl3_note_off()
724 static void snd_opl3_update_pitch(struct snd_opl3 *opl3, int voice) in snd_opl3_update_pitch() argument
737 vp = &opl3->voices[voice]; in snd_opl3_update_pitch()
755 opl3->command(opl3, opl3_reg, fnum); in snd_opl3_update_pitch()
764 opl3->command(opl3, opl3_reg, blocknum); in snd_opl3_update_pitch()
766 vp->time = opl3->use_time++; in snd_opl3_update_pitch()
772 static void snd_opl3_pitch_ctrl(struct snd_opl3 *opl3, struct snd_midi_channel *chan) in snd_opl3_pitch_ctrl() argument
779 spin_lock_irqsave(&opl3->voice_lock, flags); in snd_opl3_pitch_ctrl()
781 if (opl3->synth_mode == SNDRV_OPL3_MODE_SEQ) { in snd_opl3_pitch_ctrl()
782 for (voice = 0; voice < opl3->max_voices; voice++) { in snd_opl3_pitch_ctrl()
783 vp = &opl3->voices[voice]; in snd_opl3_pitch_ctrl()
785 snd_opl3_update_pitch(opl3, voice); in snd_opl3_pitch_ctrl()
792 snd_opl3_update_pitch(opl3, voice); in snd_opl3_pitch_ctrl()
795 spin_unlock_irqrestore(&opl3->voice_lock, flags); in snd_opl3_pitch_ctrl()
804 struct snd_opl3 *opl3; in snd_opl3_control() local
806 opl3 = p; in snd_opl3_control()
815 opl3->drum_reg |= OPL3_VIBRATO_DEPTH; in snd_opl3_control()
817 opl3->drum_reg &= ~OPL3_VIBRATO_DEPTH; in snd_opl3_control()
818 opl3->command(opl3, OPL3_LEFT | OPL3_REG_PERCUSSION, in snd_opl3_control()
819 opl3->drum_reg); in snd_opl3_control()
823 opl3->drum_reg |= OPL3_TREMOLO_DEPTH; in snd_opl3_control()
825 opl3->drum_reg &= ~OPL3_TREMOLO_DEPTH; in snd_opl3_control()
826 opl3->command(opl3, OPL3_LEFT | OPL3_REG_PERCUSSION, in snd_opl3_control()
827 opl3->drum_reg); in snd_opl3_control()
830 snd_opl3_pitch_ctrl(opl3, chan); in snd_opl3_control()