int main(int argc, char *argv[]) { #ifdef ENABLE_NLS bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); #endif gtk_set_locale(); gtk_init(&argc, &argv); // create and show main window mainWindow = (GtkWidget*) create_MainWindow(); gtk_widget_show(mainWindow); // read config file if(read_settings()!=0) show_preferences(); while(!get_mix_path()) if(!show_preferences()) return 0; // initialize MIX while(mix_init(get_mix_path())) if(!show_preferences()) return 0; // open cmd arg passed sheet if(argc > 1) { open_project((const char*) argv[1]); } gtk_main(); return 0; }
static PyObject * py_mix_init(PyObject *self, PyObject *args) { int i; int _val; if (!PyArg_ParseTuple(args, "i:mix_init", &i)) return NULL; _val = mix_init(i); if (_val < 0) return reportCanteraError(); return Py_BuildValue("i",_val); }
void _reentrant start_dac(void) { mix_init(); HW_MIXMASTERVR.I = 0x0; // DAC volume at 0 and unmuted HW_MIXDACINVR.I = 0x0; // DACIn unmuted, vol = 0 // DAC_IRQ_init(); // setup dac vectors because main.asm clears the vector table VECTOR(HW_IVECDACE,(int)DAC_Refill_ISR); VECTOR(HW_IVECDACUF,(int)DAC_Underflow_ISR); #pragma asm bclr #9,sr bclr #8,sr #pragma endasm HW_ICLENABLE0R.B.SEN0 = 1; // Enable source 0 (DAC Refill) HW_ICLENABLE0R.B.SEN1 = 1; // Enable source 1 (DAC Overflow) HW_ICLPRIOR0R.B.S0P = 0; // Set DAC Fill IRQ ICOLL priority to 0 (highest) HW_ICLPRIOR0R.B.S1P = 0; // Set DAC Underflow IRQ ICOLL priority to 0 (highest) HW_ICLSTEER0R.B.S0S = 0; // Steer the DAC Fill IRQ to IVL1 HW_ICLSTEER0R.B.S1S = 0; // Steer the DAC Underflow IRQ to IVL1 HW_IPR.B.L1P = 3; // Set Priority of IVL1 to 3 (high) // DAC_init(); // Set up DAC Base Address Reg HW_DACBAR.I = (int)DAC_Buffer; // Set up DAC Modulo Reg HW_DACMR.I=DAC_BUFF_MOD; // Set up DAC Word Count Reg HW_DACWCR.I=DAC_BUFF_WORDCOUNT; // Set up the DAC Sample Rate Reg HW_DACSRR.I=0x04CE14; // Value set for 44.1KHz // Set up the DAC Control Register (but don't start sending data yet) HW_DACCSR.B.TXIEN=1; // Enable interrupts HW_DACCSR.B.TXEN=1; // DAC will start transmitting preloaded values }
int mixctl (int fd, request_t request, void *argp) { static int esd = -1, player = -1; static int left, right; int *arg = (int *) argp; DPRINTF ("hijacking /dev/mixer ioctl, and sending it to esd " "(%d : %x - %p)\n", fd, request, argp); switch (request) { case SOUND_MIXER_READ_DEVMASK: *arg = 5113; break; case SOUND_MIXER_READ_PCM: mix_init (&esd, &player); if (player > 0) { esd_info_t *all_info; all_info = esd_get_all_info (esd); if (all_info) { esd_player_info_t *player_info; for (player_info = all_info->player_list; player_info; player_info = player_info->next) if (player_info->source_id == player) { *arg = ESD_VOL_TO_OSS (player_info->left_vol_scale, player_info->right_vol_scale); } esd_free_all_info (all_info); } else return -1; } else { get_volume (&left, &right); *arg = ESD_VOL_TO_OSS (left, right); } break; case SOUND_MIXER_WRITE_PCM: mix_init (&esd, &player); left = OSS_VOL_TO_ESD_LEFT (*arg); right = OSS_VOL_TO_ESD_RIGHT (*arg); set_volume (left, right); if (player > 0) { DPRINTF ("panning %d - %d %d\n", player, left, right); esd_set_stream_pan (esd, player, left, right); } break; default: DPRINTF ("unhandled /dev/mixer ioctl (%x - %p)\n", request, argp); break; } return 0; }
static int dspctl (int fd, request_t request, void *argp) { static esd_format_t fmt = ESD_STREAM | ESD_PLAY | ESD_MONO; static int speed; int *arg = (int *) argp; DPRINTF ("hijacking /dev/dsp ioctl, and sending it to esd " "(%d : %x - %p)\n", fd, request, argp); switch (request) { case SNDCTL_DSP_RESET: case SNDCTL_DSP_POST: break; case SNDCTL_DSP_SETFMT: fmt |= (*arg & 0x30) ? ESD_BITS16 : ESD_BITS8; settings |= 1; break; case SNDCTL_DSP_SPEED: speed = *arg; settings |= 2; break; case SNDCTL_DSP_STEREO: fmt &= ~ESD_MONO; fmt |= (*arg) ? ESD_STEREO : ESD_MONO; break; case SNDCTL_DSP_GETBLKSIZE: *arg = ESD_BUF_SIZE; break; case SNDCTL_DSP_GETFMTS: *arg = 0x38; break; case SNDCTL_DSP_GETCAPS: *arg = 0; break; case SNDCTL_DSP_GETOSPACE: { audio_buf_info *bufinfo = (audio_buf_info *) argp; bufinfo->bytes = ESD_BUF_SIZE; } break; default: DPRINTF ("unhandled /dev/dsp ioctl (%x - %p)\n", request, argp); break; } if (settings == 3 && !done) { int proto = ESD_PROTO_STREAM_PLAY; done = 1; if (write (sndfd, &proto, sizeof (proto)) != sizeof (proto)) return -1; if (write (sndfd, &fmt, sizeof (fmt)) != sizeof (fmt)) return -1; if (write (sndfd, &speed, sizeof (speed)) != sizeof (speed)) return -1; if (write (sndfd, ident, ESD_NAME_MAX) != ESD_NAME_MAX) return -1; fmt = ESD_STREAM | ESD_PLAY | ESD_MONO; speed = 0; if (use_mixer) { int esd = -1, player = -1; int left, right; while (player < 0) mix_init (&esd, &player); get_volume (&left, &right); DPRINTF ("panning %d - %d %d\n", player, left, right); esd_set_stream_pan (esd, player, left, right); } } return 0; }
int mix_regular(int force) { FILE *f; long now, tpool = 0, tpop3 = 0, tdaily = 0, tmailin = 0, tstats = 0; int ret = 0; mix_init(NULL); now = time(NULL); f = mix_openfile(REGULAR, "r+"); if (f != NULL) { lock(f); fscanf(f, "%ld %ld %ld %ld %ld", &tpool, &tpop3, &tdaily, &tmailin, &tstats); if (now - tpool >= SENDPOOLTIME) force |= FORCE_POOL | FORCE_MAILIN; #ifdef USE_SOCK if (now - tpop3 >= POP3TIME) force |= FORCE_POP3 | FORCE_MAILIN; #endif /* USE_SOCK */ if (now - tdaily >= SECONDSPERDAY) force |= FORCE_DAILY; if (now - tmailin >= MAILINTIME) force |= FORCE_MAILIN; if (now - tstats >= STATSINTERVAL) force |= FORCE_STATS; if (force & FORCE_POOL) tpool = now; if (force & FORCE_POP3) tpop3 = now; if (force & FORCE_DAILY) tdaily = now; if (force & FORCE_MAILIN) tmailin = now; if (force & FORCE_STATS) tstats = now; rewind(f); fprintf(f, "%ld %ld %ld %ld %ld\n", tpool, tpop3, tdaily, tmailin, tstats); unlock(f); fclose(f); } else { force = FORCE_POOL | FORCE_POP3 | FORCE_DAILY | FORCE_MAILIN | FORCE_STATS; f = mix_openfile(REGULAR, "w+"); if (f != NULL) { lock(f); fprintf(f, "%ld %ld %ld %ld %ld\n", now, now, now, now, now); unlock(f); fclose(f); } else errlog(ERRORMSG, "Can't create %s!\n", REGULAR); } if (force & FORCE_DAILY) mix_daily(), ret = 1; #ifdef USE_SOCK if (force & FORCE_POP3) pop3get(); #endif /* USE_SOCK */ if (force & FORCE_MAILIN) ret = process_mailin(); if (force & FORCE_POOL) ret = pool_send(); if ((force & FORCE_STATS) && (STATSAUTOUPDATE != 0)) mix_upd_stats(); return (ret); }