Class: AudioToolbox::MusicSequence

Inherits:
Object
  • Object
show all
Defined in:
lib/midiosx.rb,
ext/music_player/midiosx.c

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeObject



321
322
323
324
325
326
327
328
329
330
331
332
333
334
# File 'ext/music_player/midiosx.c', line 321

static VALUE
sequence_init (VALUE self)
{
    MusicSequence *seq;
    OSStatus err;
    Data_Get_Struct(self, MusicSequence, seq);
    require_noerr( err = NewMusicSequence(seq), fail );
    rb_iv_set(self, "@tracks",
              rb_funcall(rb_cMusicTrackCollection, rb_intern("new"), 1, self));
    return self;
    
    fail:
    RAISE_OSSTATUS(err, "NewMusicSequence()");
}

Instance Attribute Details

#tracksObject (readonly)

Returns the value of attribute tracks.



7
8
9
# File 'lib/midiosx.rb', line 7

def tracks
  @tracks
end

Instance Method Details

#auGraphObject



435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
# File 'ext/music_player/midiosx.c', line 435

static VALUE
sequence_get_augraph(VALUE self)
{
    MusicSequence *seq;
    AUGraph *graph;
    OSStatus err;
    VALUE outGraph;
    
    Data_Get_Struct(self, MusicSequence, seq);
    outGraph = Data_Make_Struct(rb_cAUGraph, AUGraph, 0, DisposeAUGraph, graph);
    __Require_noErr (err = MusicSequenceGetAUGraph(*seq, graph), fail);
    return outGraph;

fail:
    RAISE_OSSTATUS(err, "MusicSequenceGetAUGraph()");
}

#load(path) ⇒ Object



9
10
11
12
13
# File 'lib/midiosx.rb', line 9

def load(path)
  @tracks.lock.synchronize do
    load_internal(path)
  end
end

#midi_endpoint=Object



336
337
338
339
340
341
342
343
344
345
346
347
348
349
# File 'ext/music_player/midiosx.c', line 336

static VALUE
sequence_set_midi_endpoint (VALUE self, VALUE rb_endpoint_ref)
{
    MusicSequence *seq;
    UInt64 ref = NUM2ULONG(rb_funcall(rb_mKernel, rb_intern("Integer"), 1, rb_endpoint_ref));
    OSStatus err;
    
    Data_Get_Struct(self, MusicSequence, seq);
    require_noerr( err = MusicSequenceSetMIDIEndpoint(*seq, (MIDIEndpointRef) ref), fail);
    return Qnil;
    
    fail:
    RAISE_OSSTATUS(err, "MusicSequenceSetMIDIEndpoint()");
}

#saveObject



399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
# File 'ext/music_player/midiosx.c', line 399

static VALUE
sequence_save (VALUE self, VALUE rb_path)
{
    CFURLRef url = PATH2CFURL(rb_funcall(rb_path, rb_intern("to_s"), 0));
    MusicSequence *seq;
    OSStatus err;
    
    Data_Get_Struct(self, MusicSequence, seq);
    require_noerr( err = MusicSequenceFileCreate(*seq, url, kMusicSequenceFile_MIDIType, kMusicSequenceFileFlags_EraseFile, 0), fail );
    CFRelease(url);
    
    return Qnil;
    
    fail:
    CFRelease(url);
    RAISE_OSSTATUS(err, "MusicSequenceFileCreate()");
}

#typeObject



351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
# File 'ext/music_player/midiosx.c', line 351

static VALUE
sequence_get_type (VALUE self)
{
    MusicSequence *seq;
    MusicSequenceType type;
    OSStatus err;
    
    Data_Get_Struct(self, MusicSequence, seq);
    require_noerr( err = MusicSequenceGetSequenceType(*seq, &type), fail );
    
    switch (type) {
    case kMusicSequenceType_Beats:
        return rb_sBeat;
    case kMusicSequenceType_Seconds:
        return rb_sSecs;
    case kMusicSequenceType_Samples:
        return rb_sSamp;
    default:
        rb_raise(rb_eRuntimeError, "Unrecognized sequence type.");
    }
    
    fail:
    RAISE_OSSTATUS(err, "MusicSequenceGetSequenceType()");
}

#type=Object



376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
# File 'ext/music_player/midiosx.c', line 376

static VALUE
sequence_set_type (VALUE self, VALUE rb_type)
{
    MusicSequence *seq;
    MusicSequenceType type;
    if (rb_type == rb_sBeat)
        type = kMusicSequenceType_Beats;
    else if (rb_type == rb_sSecs)
        type = kMusicSequenceType_Seconds;
    else if (rb_type == rb_sSamp)
        type = kMusicSequenceType_Samples;
    else
        rb_raise(rb_eArgError, "Expected :type to be one of :beat, :secs, :samp.");
    
    Data_Get_Struct(self, MusicSequence, seq);
    OSStatus err;
    require_noerr( err = MusicSequenceSetSequenceType(*seq, type), fail );
    return Qnil;
    
    fail:
    RAISE_OSSTATUS(err, "MusicSequenceSetSequenceType()");
}