Class: AudioToolbox::MusicTrackCollection
- Inherits:
-
Object
- Object
- AudioToolbox::MusicTrackCollection
- Includes:
- Enumerable
- Defined in:
- lib/midiosx.rb,
ext/music_player/midiosx.c
Instance Attribute Summary collapse
-
#lock ⇒ Object
readonly
:nodoc:.
Instance Method Summary collapse
- #[](index) ⇒ Object
- #delete(track) ⇒ Object
- #each ⇒ Object
- #index ⇒ Object
-
#initialize(sequence) ⇒ MusicTrackCollection
constructor
A new instance of MusicTrackCollection.
- #new(options = nil) ⇒ Object
- #size ⇒ Object
- #tempo ⇒ Object
Constructor Details
#initialize(sequence) ⇒ MusicTrackCollection
Returns a new instance of MusicTrackCollection.
29 30 31 32 33 |
# File 'lib/midiosx.rb', line 29 def initialize(sequence) @sequence = sequence @tracks = [] @lock = Mutex.new end |
Instance Attribute Details
#lock ⇒ Object (readonly)
:nodoc:
27 28 29 |
# File 'lib/midiosx.rb', line 27 def lock @lock end |
Instance Method Details
#[](index) ⇒ Object
47 48 49 50 51 |
# File 'lib/midiosx.rb', line 47 def [](index) @lock.synchronize do @tracks[index] ||= ind_internal(index) end end |
#delete(track) ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/midiosx.rb', line 53 def delete(track) @lock.synchronize do delete_internal(track) @tracks.delete(track) track.freeze end nil end |
#each ⇒ Object
35 36 37 |
# File 'lib/midiosx.rb', line 35 def each 0.upto(size-1) { |i| yield self[i] } end |
#index ⇒ Object
926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 |
# File 'ext/music_player/midiosx.c', line 926
static VALUE
tracks_index (VALUE self, VALUE rb_track)
{
if (rb_cMusicTrack != rb_class_of(rb_track))
rb_raise(rb_eArgError, "Expected arg to be a MusicTrack.");
MusicSequence *seq = tracks_get_seq(self);
MusicTrack *track;
UInt32 i;
OSStatus err;
Data_Get_Struct(rb_track, MusicTrack, track);
require_noerr( err = MusicSequenceGetTrackIndex(*seq, *track, &i), fail );
return UINT2NUM(i);
fail:
RAISE_OSSTATUS(err, "MusicSequenceGetTrackIndex()");
}
|
#new(options = nil) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/midiosx.rb', line 39 def new(=nil) @lock.synchronize do track = MusicTrack.send(:new, @sequence, ) @tracks << track track end end |
#size ⇒ Object
892 893 894 895 896 897 898 899 900 901 902 903 904 |
# File 'ext/music_player/midiosx.c', line 892
static VALUE
tracks_size (VALUE self)
{
MusicSequence *seq = tracks_get_seq(self);
UInt32 track_count;
OSStatus err;
require_noerr( err = MusicSequenceGetTrackCount(*seq, &track_count), fail );
return UINT2NUM(track_count);
fail:
RAISE_OSSTATUS(err, "MusicSequenceGetTrackCount()");
}
|
#tempo ⇒ Object
62 63 64 |
# File 'lib/midiosx.rb', line 62 def tempo @tempo ||= tempo_internal end |