Changeset 1924:4b8f87ffd0b0 in roaraudio


Ignore:
Timestamp:
05/29/09 19:07:41 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

make midi subsystem a bit configurable

Location:
roard
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • roard/include/midi.h

    r1892 r1924  
    6969#define MIDI_MFLAG_FREE_DP     (1<<0) 
    7070 
     71#define MIDI_INITED_MAIN        0x01 
     72#define MIDI_INITED_CB          0x02 
     73#define MIDI_INITED_CLOCK       0x04 
     74 
     75struct { 
     76 int init; 
     77 int inited; 
     78 int init_cb; 
     79 char * console_dev; 
     80} midi_config; 
     81 
    7182struct midi_message { 
    7283 unsigned char   type; 
     
    103114 
    104115// general midi interface: 
     116int midi_init_config(void); 
     117 
    105118int midi_init (void); 
    106119int midi_free (void); 
  • roard/midi.c

    r1911 r1924  
    2929#endif 
    3030 
     31int midi_init_config(void) { 
     32 midi_config.init        = 1; 
     33 midi_config.inited      = 0; 
     34 midi_config.init_cb     = 1; 
     35 midi_config.console_dev = NULL; 
     36 
     37 return 0; 
     38} 
     39 
    3140int midi_init (void) { 
    3241 
    33  if ( midi_cb_init() == -1 ) { 
    34   ROAR_WARN("Can not initialize MIDI subsystem component CB"); 
    35  } 
    36  
    37  if ( midi_clock_init() == -1 ) { 
    38   ROAR_WARN("Can not initialize MIDI subsystem component clock"); 
     42 midi_config.inited = 0; 
     43 
     44 if ( midi_config.init ) { 
     45  if ( midi_config.init_cb ) { 
     46   if ( midi_cb_init() == -1 ) { 
     47    ROAR_WARN("Can not initialize MIDI subsystem component CB"); 
     48   } 
     49  } 
     50 
     51  if ( midi_clock_init() == -1 ) { 
     52   ROAR_WARN("Can not initialize MIDI subsystem component clock"); 
     53  } 
     54 
    3955 } 
    4056 
    4157 g_midi_mess.buf = NULL; 
    4258 
     59 midi_config.inited |= MIDI_INITED_MAIN; 
     60 
    4361 return 0; 
    4462} 
    4563 
    4664int midi_free (void) { 
    47  return midi_cb_free(); 
     65 if ( midi_reinit() == -1 ) 
     66  return -1; 
     67 
     68 if ( midi_cb_free() == -1 ) 
     69  return -1; 
     70 
     71 return 0; 
    4872} 
    4973 
     
    495519 midi_clock_set_bph(3600); // one tick per sec 
    496520 
     521 midi_config.inited |= MIDI_INITED_CLOCK; 
     522 
    497523 return 0; 
    498524} 
     
    560586 int i; 
    561587 char * files[] = { 
     588                   "/NX", 
     589                   "/dev/roarconsole", 
    562590                   "/dev/console", 
    563591#ifdef __linux__ 
     
    573601 g_midi_cb.playing  =  0; 
    574602 
     603 if ( midi_config.console_dev != NULL ) { 
     604  files[0] = midi_config.console_dev; 
     605 } 
     606 
    575607 for (i = 0; files[i] != NULL; i++) { 
    576608  if ( (g_midi_cb.console = open(files[i], O_WRONLY|O_NOCTTY, 0)) != -1 ) 
     
    615647 streams_set_flag(g_midi_cb.stream, ROAR_FLAG_HWMIXER); 
    616648 streams_set_flag(g_midi_cb.stream, ROAR_FLAG_MUTE); 
     649 
     650 midi_config.inited |= MIDI_INITED_CB; 
    617651 
    618652 return 0; 
  • roard/roard.c

    r1923 r1924  
    7979 
    8080 printf("\nMIDI Options:\n\n"); 
     81 printf(" --midi-no-console     - Disable console based MIDI synth\n" 
     82        " --midi-console DEV    - Set device for MIDI console\n" 
     83       ); 
    8184 
    8285 printf("\nLight Control Options:\n\n"); 
     
    424427 } 
    425428 
     429 if ( midi_init_config() == -1 ) { 
     430  ROAR_ERR("Can not init MIDI config!"); 
     431  return 1; 
     432 } 
    426433 
    427434#ifdef ROAR_SUPPORT_LISTEN 
     
    572579  } else if ( strcmp(k, "--light-channels") == 0 ) { 
    573580   light_channels = atoi(argv[++i]); 
     581 
     582  } else if ( strcmp(k, "--midi-no-console") == 0 ) { 
     583   midi_config.init_cb = 0; 
     584  } else if ( strcmp(k, "--midi-console") == 0 ) { 
     585   midi_config.console_dev = argv[++i]; 
    574586 
    575587  } else if ( strcmp(k, "-p") == 0 || strcmp(k, "--port") == 0 ) { 
Note: See TracChangeset for help on using the changeset viewer.