Changeset 1848:eaba1872ebfd in roaraudio


Ignore:
Timestamp:
05/23/09 07:21:35 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

start of midi clock bridge

Location:
roard
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • roard/include/midi.h

    r1843 r1848  
    3636#define MIDI_CB_OVERRIDE   1 
    3737 
     38#define MIDI_RATE    31250 
     39 
    3840int g_console; 
    3941int g_midi_cb_stream; 
    4042 
    4143uint32_t g_midi_cb_stoptime; 
    42 int g_midi_cb_playing; 
     44int      g_midi_cb_playing; 
     45 
     46int g_midi_clock_stream; 
    4347 
    4448int midi_init (void); 
     
    5054int midi_send_stream   (int id); 
    5155 
     56int midi_check_bridge  (int id); 
     57 
     58int midi_clock_init (void); 
     59 
    5260// cb = console beep 
    5361int midi_cb_init(void); 
     
    5866int midi_cb_stop (void); 
    5967 
     68// dummys: 
     69int     midi_vio_set_dummy(int stream); 
     70int     midi_vio_ok(struct roar_vio_calls * vio, ...); 
     71 
    6072#endif 
    6173 
  • roard/midi.c

    r1847 r1848  
    3535 } 
    3636 
    37  return 0; 
    38 } 
     37 if ( midi_clock_init() == -1 ) { 
     38  ROAR_WARN("Can not initialize MIDI subsystem component clock"); 
     39 } 
     40 
     41 return 0; 
     42} 
     43 
    3944int midi_free (void) { 
    4045 return midi_cb_free(); 
     
    4247 
    4348int midi_update(void) { 
     49 
     50 if ( g_midi_clock_stream != -1 ) 
     51  midi_check_bridge(g_midi_clock_stream); 
     52 
    4453 return midi_cb_update(); 
    4554} 
     
    5766 
    5867 s = ROAR_STREAM(ss = g_streams[id]); 
     68 
     69 if ( s->dir == ROAR_DIR_BRIDGE ) 
     70  return midi_check_bridge(id); 
    5971 
    6072 switch (s->info.codec) { 
     
    8395    return -1; 
    8496 } 
     97 
     98 return 0; 
     99} 
     100 
     101// bridges: 
     102int midi_check_bridge  (int id) { 
     103 return -1; 
     104} 
     105 
     106// clock: 
     107 
     108int midi_clock_init (void) { 
     109 struct roar_stream * s; 
     110 struct roar_stream_server * ss; 
     111 
     112 if ( (g_midi_clock_stream = streams_new()) == -1 ) { 
     113  ROAR_WARN("Error while initializing MIDI subsystem component clock"); 
     114  return -1; 
     115 } 
     116 
     117 midi_vio_set_dummy(g_midi_clock_stream); 
     118 
     119 streams_get(g_midi_clock_stream, &ss); 
     120 s = ROAR_STREAM(ss); 
     121 
     122 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 
     123 
     124 s->pos_rel_id    =  g_midi_clock_stream; 
     125 
     126 s->info.codec    =  ROAR_CODEC_MIDI; 
     127 ss->codec_orgi   =  ROAR_CODEC_MIDI; 
     128 
     129 s->info.channels =  0; 
     130 s->info.rate     = MIDI_RATE; 
     131 s->info.bits     =  8; 
     132 
     133 if ( streams_set_dir(g_midi_clock_stream, ROAR_DIR_BRIDGE, 1) == -1 ) { 
     134  ROAR_WARN("Error while initializing MIDI subsystem component clock"); 
     135  return -1; 
     136 } 
     137 
     138 streams_set_name(g_midi_clock_stream, "MIDI Clock"); 
     139 
     140 streams_set_flag(g_midi_clock_stream, ROAR_FLAG_PRIMARY); 
     141 streams_set_flag(g_midi_clock_stream, ROAR_FLAG_SYNC); 
    85142 
    86143 return 0; 
     
    122179 } 
    123180 
     181 midi_vio_set_dummy(g_midi_cb_stream); 
     182 
    124183 streams_get(g_midi_cb_stream, &ss); 
    125184 s = ROAR_STREAM(ss); 
     
    225284} 
    226285 
     286// VIO: 
     287 
     288int     midi_vio_set_dummy(int stream) { 
     289 struct roar_stream_server * ss; 
     290 
     291 if ( streams_get(stream, &ss) == -1 ) 
     292  return -1; 
     293 
     294 ss->vio.read     = NULL; 
     295 ss->vio.write    = NULL; 
     296 ss->vio.lseek    = NULL; 
     297 ss->vio.nonblock = midi_vio_ok; 
     298 ss->vio.sync     = midi_vio_ok; 
     299 ss->vio.ctl      = NULL; 
     300 ss->vio.close    = midi_vio_ok; 
     301} 
     302 
     303int     midi_vio_ok(struct roar_vio_calls * vio, ...) { 
     304 return 0; 
     305} 
     306 
    227307//ll 
  • roard/req.c

    r1842 r1848  
    118118 
    119119   break; 
     120  case ROAR_DIR_MIDI_IN: 
     121  case ROAR_DIR_MIDI_OUT: 
     122    info = &(ROAR_STREAM(s)->info); 
     123 
     124    info->channels = 16; 
     125    info->bits     =  8; 
     126    info->rate     = MIDI_RATE; 
     127 
     128   break; 
     129 
    120130  case ROAR_DIR_THRU: 
    121131 
Note: See TracChangeset for help on using the changeset viewer.