示例#1
0
文件: main.c 项目: blutsvente/MIX
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;
}
示例#2
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


}
示例#4
0
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;
}
示例#5
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;
}
示例#6
0
文件: mix.c 项目: crooks/mixmaster
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);
}