Lines Matching refs:chan

354 emuxki_chanparms_set_defaults(emuxki_channel *chan)
356 chan->fxsend.a.level = chan->fxsend.b.level
357 = chan->fxsend.c.level = chan->fxsend.d.level
359 = chan->fxsend.e.level = chan->fxsend.f.level
360 = chan->fxsend.g.level = chan->fxsend.h.level
361 = IS_AUDIGY(&chan->voice->stream->card->config) ? 0xc0 : 0xff; /* not max */
363 chan->fxsend.a.dest = 0x0;
364 chan->fxsend.b.dest = 0x1;
365 chan->fxsend.c.dest = 0x2;
366 chan->fxsend.d.dest = 0x3;
368 chan->fxsend.e.dest = 0x4;
369 chan->fxsend.f.dest = 0x5;
370 chan->fxsend.g.dest = 0x6;
371 chan->fxsend.h.dest = 0x7;
373 chan->pitch.intial = 0x0000; /* shouldn't it be 0xE000 ? */
374 chan->pitch.current = 0x0000; /* should it be 0x0400 */
375 chan->pitch.target = 0x0000; /* the unity pitch shift ? */
376 chan->pitch.envelope_amount = 0x00; /* none */
378 chan->initial_attenuation = 0x00; /* no attenuation */
379 chan->volume.current = 0x0000; /* no volume */
380 chan->volume.target = 0xffff;
381 chan->volume.envelope.current_state = 0x8000; /* 0 msec delay */
382 chan->volume.envelope.hold_time = 0x7f; /* 0 msec */
383 chan->volume.envelope.attack_time = 0x7f; /* 5.5msec */
384 chan->volume.envelope.sustain_level = 0x7f; /* full */
385 chan->volume.envelope.decay_time = 0x7f; /* 22msec */
387 chan->filter.initial_cutoff_frequency = 0xff; /* no filter */
388 chan->filter.current_cutoff_frequency = 0xffff; /* no filtering */
389 chan->filter.target_cutoff_frequency = 0xffff; /* no filtering */
390 chan->filter.lowpass_resonance_height = 0x0;
391 chan->filter.interpolation_ROM = 0x1; /* full band */
392 chan->filter.envelope_amount = 0x7f; /* none */
393 chan->filter.LFO_modulation_depth = 0x00; /* none */
395 chan->loop.start = 0x000000;
396 chan->loop.end = 0x000010; /* Why ? */
398 chan->modulation.envelope.current_state = 0x8000;
399 chan->modulation.envelope.hold_time = 0x00; /* 127 better ? */
400 chan->modulation.envelope.attack_time = 0x00; /* infinite */
401 chan->modulation.envelope.sustain_level = 0x00; /* off */
402 chan->modulation.envelope.decay_time = 0x7f; /* 22 msec */
403 chan->modulation.LFO_state = 0x8000;
405 chan->vibrato_LFO.state = 0x8000;
406 chan->vibrato_LFO.modulation_depth = 0x00; /* none */
407 chan->vibrato_LFO.vibrato_depth = 0x00;
408 chan->vibrato_LFO.frequency = 0x00; /* Why set to 24 when
411 chan->tremolo_depth = 0x00;
418 emuxki_channel *chan;
420 chan = (emuxki_channel *) malloc(sizeof(emuxki_channel));
421 if (chan == NULL)
423 chan->voice = voice;
424 chan->num = num;
425 emuxki_chanparms_set_defaults(chan);
426 chan->voice->stream->card->channel[num] = chan;
427 return chan;
432 emuxki_channel_delete(emuxki_channel *chan)
434 chan->voice->stream->card->channel[chan->num] = NULL;
435 free(chan);
440 emuxki_channel_set_fxsend(emuxki_channel *chan,
444 chan->fxsend.a.level = fxsend->a.level;
445 chan->fxsend.b.level = fxsend->b.level;
446 chan->fxsend.c.level = fxsend->c.level;
447 chan->fxsend.d.level = fxsend->d.level;
448 chan->fxsend.a.dest = fxsend->a.dest;
449 chan->fxsend.b.dest = fxsend->b.dest;
450 chan->fxsend.c.dest = fxsend->c.dest;
451 chan->fxsend.d.dest = fxsend->d.dest;
454 chan->fxsend.e.level = fxsend->e.level;
455 chan->fxsend.f.level = fxsend->f.level;
456 chan->fxsend.g.level = fxsend->g.level;
457 chan->fxsend.h.level = fxsend->h.level;
458 chan->fxsend.e.dest = fxsend->e.dest;
459 chan->fxsend.f.dest = fxsend->f.dest;
460 chan->fxsend.g.dest = fxsend->g.dest;
461 chan->fxsend.h.dest = fxsend->h.dest;
466 emuxki_channel_set_srate(emuxki_channel *chan, uint32 srate)
468 chan->pitch.target = (srate << 8) / 375;
469 chan->pitch.target = (chan->pitch.target >> 1) +
470 (chan->pitch.target & 1);
471 chan->pitch.target &= 0xffff;
472 chan->pitch.current = chan->pitch.target;
473 chan->pitch.intial =
480 emuxki_channel_set_bufparms(emuxki_channel *chan,
483 chan->loop.start = start & EMU_CHAN_PSST_LOOPSTARTADDR_MASK;
484 chan->loop.end = end & EMU_CHAN_DSL_LOOPENDADDR_MASK;
489 emuxki_channel_commit_fx(emuxki_channel *chan)
491 emuxki_dev *card = chan->voice->stream->card;
492 uint8 chano = chan->num;
501 (chan->fxsend.d.dest << 24) |
502 (chan->fxsend.c.dest << 16) |
503 (chan->fxsend.b.dest << 8) |
504 (chan->fxsend.a.dest));
506 (chan->fxsend.h.dest << 24) |
507 (chan->fxsend.g.dest << 16) |
508 (chan->fxsend.f.dest << 8) |
509 (chan->fxsend.e.dest));
511 (chan->fxsend.e.level << 24) |
512 (chan->fxsend.f.level << 16) |
513 (chan->fxsend.g.level << 8) |
514 (chan->fxsend.h.level));
517 (chan->fxsend.d.dest << 28) |
518 (chan->fxsend.c.dest << 24) |
519 (chan->fxsend.b.dest << 20) |
520 (chan->fxsend.a.dest << 16));
524 (chan->fxsend.a.level << 8) | chan->fxsend.b.level);
526 (chan->fxsend.d.level << 24) | chan->loop.end);
528 (chan->fxsend.c.level << 24) | chan->loop.start);
533 emuxki_channel_commit_parms(emuxki_channel *chan)
535 emuxki_voice *voice = chan->voice;
536 emuxki_dev *card = chan->voice->stream->card;
538 uint8 chano = chan->num;
541 start = chan->loop.start +
548 emuxki_channel_commit_fx(chan);
551 (chan->filter.lowpass_resonance_height << 28) |
552 (chan->filter.interpolation_ROM << 25) |
559 chan->filter.current_cutoff_frequency);
561 chan->filter.target_cutoff_frequency);
563 (chan->modulation.envelope.hold_time << 8) |
564 chan->modulation.envelope.attack_time);
566 (chan->modulation.envelope.sustain_level << 8) |
567 chan->modulation.envelope.decay_time);
569 chan->modulation.LFO_state);
571 chan->vibrato_LFO.state);
573 (chan->vibrato_LFO.modulation_depth << 8) |
574 chan->filter.LFO_modulation_depth);
576 (chan->tremolo_depth << 8));
578 (chan->vibrato_LFO.vibrato_depth << 8) |
579 chan->vibrato_LFO.frequency);
581 chan->modulation.envelope.current_state);
583 (chan->volume.envelope.hold_time << 8) |
584 chan->volume.envelope.attack_time);
586 chan->volume.envelope.current_state);
588 (chan->pitch.envelope_amount << 8) |
589 chan->filter.envelope_amount);
595 emuxki_channel_start(emuxki_channel *chan)
597 emuxki_voice *voice = chan->voice;
598 emuxki_dev *card = chan->voice->stream->card;
599 uint8 cache_sample, cache_invalid_size, chano = chan->num;
616 (chan->filter.target_cutoff_frequency << 8) |
617 chan->initial_attenuation);
619 chan->volume.target);
621 chan->volume.current);
629 (chan->volume.envelope.sustain_level << 8) |
630 chan->volume.envelope.decay_time);
632 chan->pitch.target);
634 chan->pitch.current);
635 emuxki_chan_write(&card->config, chano, EMU_CHAN_IP, chan->pitch.intial);
642 emuxki_channel_stop(emuxki_channel *chan)
644 emuxki_dev *card = chan->voice->stream->card;
646 uint8 chano = chan->num;
699 voice->dataloc.chan[1] =
701 if (voice->dataloc.chan[1] == NULL) {
706 voice->dataloc.chan[0] = emuxki_channel_new(voice, i);
707 if (voice->dataloc.chan[0] == NULL) {
709 emuxki_channel_delete(voice->dataloc.chan[1]);
710 voice->dataloc.chan[1] = NULL;
726 emuxki_channel_delete(voice->dataloc.chan[0]);
727 voice->dataloc.chan[0] = NULL;
729 emuxki_channel_delete(voice->dataloc.chan[1]);
730 voice->dataloc.chan[1] = NULL;
753 if (voice->dataloc.chan[0] != NULL)
870 emuxki_channel_set_fxsend(voice->dataloc.chan[0],
940 emuxki_channel_set_fxsend(voice->dataloc.chan[1],
1037 emuxki_channel_set_fxsend(voice->dataloc.chan[0],
1065 emuxki_channel_set_srate(voice->dataloc.chan[0], srate);
1067 emuxki_channel_set_srate(voice->dataloc.chan[1],
1127 emuxki_channel **chan;
1146 chan = voice->dataloc.chan;
1149 emuxki_channel_set_bufparms(chan[0],
1152 emuxki_channel_set_bufparms(chan[1],
1173 emuxki_channel_commit_parms(voice->dataloc.chan[0]);
1175 emuxki_channel_commit_parms(voice->dataloc.chan[1]);
1216 voice->dataloc.chan[0]->num,
1218 voice->dataloc.chan[0]->loop.start);
1343 emuxki_channel_start(voice->dataloc.chan[0]);
1345 emuxki_channel_start(voice->dataloc.chan[1]);
1397 emuxki_channel_stop(voice->dataloc.chan[0]);
1399 emuxki_channel_stop(voice->dataloc.chan[1]);
1447 voice->dataloc.chan[0] = voice->dataloc.chan[1] = NULL;
1589 emuxki_stream_get_nth_buffer(emuxki_stream *stream, uint8 chan, uint8 buf,
1602 if (chan/2 > i)
1605 if (i != chan/2)
1612 if (chan % 2 == 1)
1619 if (chan > i)
1622 if (i != chan)
1910 emuxki_channel_commit_fx(voice->dataloc.chan[0]);
1912 emuxki_channel_commit_fx(voice->dataloc.chan[1]);