zgomot 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2@zgomot
data/README.rdoc CHANGED
@@ -33,9 +33,9 @@ Run the program to play the tune,
33
33
 
34
34
  A simple object model is defined by zgomot that makes it possible to write iterative transformations on note patterns within <tt>str</tt> blocks, which generate MIDI data streams. In the following details of the object model and supported transformations will be described.
35
35
 
36
- == OS X MIDI Device Driver
36
+ == OSX IAC Driver
37
37
 
38
- For OS X the IAC Driver must be enabled for programs to communicate with the digital audio software used to render the MIDI generated by programs. To enable the IAC Driver open <em>Audio MIDI Setup</em>. Under the <em>Window</em> menu item select <em>Show MIDI Window</em>. Find the <em>IAC Driver</em>, double click it and be sure <em>Device is online</em> is selected. Also, when the when first activated be sure that no other MIDI devices are connected to your computer.
38
+ For OSX the IAC Driver must be enabled for programs to communicate with the digital audio software used to render the MIDI generated by programs. To enable the IAC Driver open <em>Audio MIDI Setup</em>. Under the <em>Window</em> menu item select <em>Show MIDI Window</em>. Find the <em>IAC Driver</em>, double click it and be sure <em>Device is online</em> is selected and at least one port exists.
39
39
 
40
40
  == Configuration
41
41
 
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ require 'jeweler'
15
15
  gem.homepage = "http://github.com/troystribling/zgomot"
16
16
  gem.authors = ["Troy Stribling"]
17
17
  gem.files.include %w(lib/jeweler/templates/.gitignore VERSION)
18
- gem.add_dependency('midiator', '>= 0.3.3')
18
+ gem.add_dependency('ffi', '1.0.9')
19
19
  end
20
20
  rescue LoadError
21
21
  abort "jeweler is not available. In order to run test, you must: sudo gem install technicalpickles-jeweler --source=http://gems.github.com"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/default.gems ADDED
@@ -0,0 +1,7 @@
1
+ # default.gems generated gem export file. Note that any env variable settings will be missing. Append these after using a ';' field separator
2
+ bundler -v1.0.14
3
+ ffi -v1.0.9
4
+ git -v1.2.5
5
+ jeweler -v1.6.0
6
+ rake -v0.9.0
7
+ rubygems-update -v1.8.4
data/lib/zgomot/boot.rb CHANGED
@@ -13,7 +13,7 @@ module Zgomot
13
13
  ####..............
14
14
  Zgomot.logger = Logger.new(STDOUT)
15
15
  Zgomot.logger.level = Logger::WARN
16
-
16
+
17
17
  ####..............
18
18
  call_if_implemented(:call_before_start)
19
19
 
@@ -112,6 +112,11 @@ module Zgomot::Comp
112
112
  notes.each{|n| n.offset_time = t}
113
113
  end
114
114
 
115
+ #.........................................................................................................
116
+ def to_ary
117
+ notes
118
+ end
119
+
115
120
  #.........................................................................................................
116
121
  def notes
117
122
  @notes ||= item.notes(self)
@@ -0,0 +1,148 @@
1
+ ##############################################################################################################
2
+ class Zgomot::Drivers
3
+
4
+ #####-------------------------------------------------------------------------------------------------------
5
+ class CoreMidi < Driver
6
+
7
+ #-------------------------------------------------------------------------------------------------------
8
+ attr_reader :input
9
+
10
+ #---------------------------------------------------------------------------------------------------------
11
+ module Interface
12
+
13
+ #-------------------------------------------------------------------------------------------------------
14
+ extend FFI::Library
15
+ ffi_lib '/System/Library/Frameworks/CoreMIDI.framework/Versions/Current/CoreMIDI'
16
+
17
+ ####...................................
18
+ typedef :pointer, :CFStringRef
19
+ typedef :int32, :ItemCount
20
+ typedef :pointer, :MIDIClientRef
21
+ typedef :pointer, :MIDIDeviceRef
22
+ typedef :pointer, :MIDIEntityRef
23
+ typedef :pointer, :MIDIObjectRef
24
+ typedef :int32, :OSStatus
25
+
26
+ ####...................................
27
+ attach_function :MIDIClientCreate, [:pointer, :pointer, :pointer, :pointer], :int
28
+ attach_function :MIDIClientDispose, [:pointer], :int
29
+ attach_function :MIDIDeviceGetEntity, [:MIDIDeviceRef, :ItemCount], :MIDIEntityRef
30
+ attach_function :MIDIGetDestination, [:int], :pointer
31
+ attach_function :MIDIGetDevice, [:ItemCount], :MIDIDeviceRef
32
+ attach_function :MIDIOutputPortCreate, [:MIDIClientRef, :CFStringRef, :pointer], :int
33
+ attach_function :MIDIObjectGetStringProperty, [:MIDIObjectRef, :CFStringRef, :pointer], :OSStatus
34
+ attach_function :MIDIPacketListInit, [:pointer], :pointer
35
+ attach_function :MIDIPacketListAdd, [:pointer, :int, :pointer, :int, :int, :pointer], :pointer
36
+ attach_function :MIDISend, [:pointer, :pointer, :pointer], :int
37
+
38
+ #-------------------------------------------------------------------------------------------------------
39
+ module CFString
40
+
41
+ ####...................................
42
+ extend FFI::Library
43
+ ffi_lib '/System/Library/Frameworks/CoreFoundation.framework/Versions/Current/CoreFoundation'
44
+
45
+ ####...................................
46
+ attach_function :CFStringCreateWithCString, [:pointer, :string, :int], :pointer
47
+ attach_function :CFStringGetCStringPtr, [:pointer, :int], :pointer
48
+
49
+ #### CFString
50
+ end
51
+
52
+ #### Interface
53
+ end
54
+
55
+ #---------------------------------------------------------------------------------------------------------
56
+ # instance methods
57
+ #---------------------------------------------------------------------------------------------------------
58
+ def initialize
59
+ find_iac_device
60
+ get_entity
61
+ create_client
62
+ connect_endpoint
63
+ get_destination
64
+ end
65
+
66
+ #---------------------------------------------------------------------------------------------------------
67
+ # Driver API
68
+ #---------------------------------------------------------------------------------------------------------
69
+ def close
70
+ Map.MIDIClientDispose(@client)
71
+ end
72
+
73
+ #---------------------------------------------------------------------------------------------------------
74
+ def write(*data)
75
+
76
+ ####...................................
77
+ size = data.size
78
+ format = "C" * size
79
+ bytes = (FFI::MemoryPointer.new FFI.type_size(:char) * size)
80
+ bytes.write_string(data.pack(format))
81
+
82
+ ####...................................
83
+ packet_list = FFI::MemoryPointer.new(256)
84
+ packet_ptr = Interface.MIDIPacketListInit(packet_list)
85
+
86
+ ####...................................
87
+ packet_ptr = Interface.MIDIPacketListAdd(packet_list, 256, packet_ptr, 0, size, bytes)
88
+
89
+ ####...................................
90
+ Interface.MIDISend(@endpoint, @destination, packet_list)
91
+
92
+ end
93
+
94
+ #---------------------------------------------------------------------------------------------------------
95
+ # Utils
96
+ #---------------------------------------------------------------------------------------------------------
97
+ def find_iac_device
98
+ i, entity_counter, @device = 0, 0, nil
99
+ while !(device_pointer = Interface.MIDIGetDevice(i)).null?
100
+ device_model = get_property(:model, device_pointer)
101
+ if device_model.eql?('IAC Driver')
102
+ @device = device_pointer
103
+ break
104
+ end
105
+ end
106
+ raise(Zgomot::Error, "IAC Driver not found") unless @device
107
+ end
108
+
109
+ #---------------------------------------------------------------------------------------------------------
110
+ def get_entity
111
+ @entity = Interface.MIDIDeviceGetEntity(@device, 0)
112
+ raise(Zgomot::Error, "Driver initialization failed") unless @entity
113
+ end
114
+
115
+ #---------------------------------------------------------------------------------------------------------
116
+ def get_property(name, from = @device)
117
+ prop = Interface::CFString.CFStringCreateWithCString(nil, name.to_s, 0)
118
+ val = Interface::CFString.CFStringCreateWithCString(nil, name.to_s, 0)
119
+ Interface::MIDIObjectGetStringProperty(from, prop, val)
120
+ Interface::CFString.CFStringGetCStringPtr(val.read_pointer, 0).read_string
121
+ end
122
+
123
+ #---------------------------------------------------------------------------------------------------------
124
+ def create_client
125
+ client_name = Interface::CFString.CFStringCreateWithCString(nil, "Client #{@id}: #{@name}", 0)
126
+ client_ptr = FFI::MemoryPointer.new(:pointer)
127
+ Interface.MIDIClientCreate(client_name, nil, nil, client_ptr)
128
+ @client = client_ptr.read_pointer
129
+ end
130
+
131
+ #---------------------------------------------------------------------------------------------------------
132
+ def connect_endpoint
133
+ port_name = Interface::CFString.CFStringCreateWithCString(nil, "Port #{@id}: #{@name}", 0)
134
+ outport_ptr = FFI::MemoryPointer.new(:pointer)
135
+ Interface.MIDIOutputPortCreate(@client, port_name, outport_ptr)
136
+ @endpoint = outport_ptr.read_pointer
137
+ end
138
+
139
+ #---------------------------------------------------------------------------------------------------------
140
+ def get_destination
141
+ @destination = Interface.MIDIGetDestination(0)
142
+ end
143
+
144
+ #### CoreMidi
145
+ end
146
+
147
+ #### Zgomot::Drivers
148
+ end
@@ -0,0 +1,87 @@
1
+ ##############################################################################################################
2
+ class Zgomot::Drivers
3
+
4
+ #####-------------------------------------------------------------------------------------------------------
5
+ class Driver
6
+
7
+ #---------------------------------------------------------------------------------------------------------
8
+ # MIDI commands
9
+ #---------------------------------------------------------------------------------------------------------
10
+ # Note on
11
+ ON = 0x90
12
+
13
+ # Note off
14
+ OFF = 0x80
15
+
16
+ # Polyphonic aftertouch
17
+ PA = 0xa0
18
+
19
+ # Control change
20
+ CC = 0xb0
21
+
22
+ # Program change
23
+ PC = 0xc0
24
+
25
+ # Channel aftertouch
26
+ CA = 0xd0
27
+
28
+ # Pitch bend
29
+ PB = 0xe0
30
+
31
+ #---------------------------------------------------------------------------------------------------------
32
+ def initialize
33
+ open
34
+ end
35
+
36
+ #---------------------------------------------------------------------------------------------------------
37
+ def note_on(note, channel, velocity)
38
+ write(ON | channel, note, velocity)
39
+ end
40
+
41
+ #---------------------------------------------------------------------------------------------------------
42
+ def note_off(note, channel, velocity = 0)
43
+ write(OFF | channel, note, velocity)
44
+ end
45
+
46
+ #---------------------------------------------------------------------------------------------------------
47
+ def aftertouch(note, channel, pressure)
48
+ write(PA | channel, note, pressure)
49
+ end
50
+
51
+ #---------------------------------------------------------------------------------------------------------
52
+ def control_change(number, channel, value)
53
+ write(CC | channel, number, value)
54
+ end
55
+
56
+ #---------------------------------------------------------------------------------------------------------
57
+ def program_change(channel, program)
58
+ write(PC | channel, program)
59
+ end
60
+
61
+ #---------------------------------------------------------------------------------------------------------
62
+ def channel_aftertouch(channel, pressure)
63
+ write(CA | channel, pressure)
64
+ end
65
+
66
+ #---------------------------------------------------------------------------------------------------------
67
+ def pitch_bend(channel, value)
68
+ write(PB | channel, value)
69
+ end
70
+
71
+ #---------------------------------------------------------------------------------------------------------
72
+ # Driver API
73
+ #---------------------------------------------------------------------------------------------------------
74
+ def close
75
+ raise NotImplementedError, "You must implement #close in your driver."
76
+ end
77
+
78
+ #---------------------------------------------------------------------------------------------------------
79
+ def write(*args)
80
+ raise NotImplementedError, "You must implement #write in your driver."
81
+ end
82
+
83
+ #### Driver
84
+ end
85
+
86
+ #### Zgomot::Drivers
87
+ end
@@ -0,0 +1,50 @@
1
+ ##############################################################################################################
2
+ class Zgomot::Drivers
3
+
4
+ #####-------------------------------------------------------------------------------------------------------
5
+ class Mgr
6
+
7
+ #####-------------------------------------------------------------------------------------------------------
8
+ class << self
9
+
10
+ #---------------------------------------------------------------------------------------------------------
11
+ def load_driver
12
+ driver_name = self.driver_name
13
+ driver_path = "zgomot/drivers/#{driver_name}"
14
+ Zgomot.logger.info "LOADING DRIVER: #{driver_path}"
15
+ begin
16
+ require driver_path
17
+ rescue LoadError => e
18
+ raise LoadError, "Could not load driver '#{driver_path}'."
19
+ end
20
+ driver_class = "Zgomot::Drivers::" + driver_name.split('_').map{|n| n.capitalize}.join
21
+ @driver = Object.module_eval("::#{driver_class}").new
22
+ Zgomot.logger.info "DRIVER #{driver_class} CREATED"
23
+ end
24
+
25
+ #---------------------------------------------------------------------------------------------------------
26
+ def driver_name
27
+ case RUBY_PLATFORM
28
+ when /darwin/
29
+ 'core_midi'
30
+ else
31
+ raise "platform not supported"
32
+ end
33
+ end
34
+
35
+ #---------------------------------------------------------------------------------------------------------
36
+ def method_missing(method, *args)
37
+ return @driver.send(method, *args)
38
+ end
39
+
40
+ ## self
41
+ end
42
+
43
+ #-----------------------------------------------------------------------------------------------------------
44
+ load_driver
45
+
46
+ #### Mgr
47
+ end
48
+
49
+ #### Zgomot::Driver
50
+ end
@@ -0,0 +1,2 @@
1
+ require 'zgomot/drivers/driver'
2
+ require 'zgomot/drivers/mgr'
@@ -54,7 +54,7 @@ module Zgomot::Midi
54
54
  def notes_on(notes)
55
55
  notes.each do |n|
56
56
  Zgomot.logger.info "NOTE ON: #{n.channel} : #{n.to_s} : #{n.time.to_s} : #{clock.current_time.to_s}"
57
- Interface.driver.note_on(n.midi, n.channel, (127*n.velocity).to_i)
57
+ Zgomot::Drivers::Mgr.note_on(n.midi, n.channel, (127*n.velocity).to_i)
58
58
  end
59
59
  @playing += notes
60
60
  end
@@ -64,7 +64,7 @@ module Zgomot::Midi
64
64
  turn_off, @playing = playing.partition{|n| (n.play_at+n.length_to_sec) <= time}
65
65
  turn_off.each do |n|
66
66
  Zgomot.logger.info "NOTE OFF:#{n.channel} : #{n.to_s} : #{n.time.to_s} : #{clock.current_time.to_s}"
67
- Interface.driver.note_off(n.midi, n.channel, (127*n.velocity).to_i)
67
+ Zgomot::Drivers::Mgr.note_off(n.midi, n.channel, (127*n.velocity).to_i)
68
68
  end
69
69
  end
70
70
 
data/lib/zgomot/midi.rb CHANGED
@@ -2,5 +2,4 @@ require 'zgomot/midi/clock'
2
2
  require 'zgomot/midi/note'
3
3
  require 'zgomot/midi/channel'
4
4
  require 'zgomot/midi/stream'
5
- require 'zgomot/midi/interface'
6
5
  require 'zgomot/midi/dispatcher'
@@ -0,0 +1,10 @@
1
+ class String
2
+ def to_bytes
3
+ bytes = 0
4
+ self.each_byte do |byte|
5
+ bytes <<= 8
6
+ bytes += byte
7
+ end
8
+ return bytes
9
+ end
10
+ end
@@ -1,2 +1,3 @@
1
1
  require 'zgomot/patches/object'
2
2
  require 'zgomot/patches/time'
3
+ require 'zgomot/patches/string'
data/lib/zgomot.rb CHANGED
@@ -2,9 +2,10 @@ $:.unshift(File.dirname(__FILE__))
2
2
 
3
3
  require 'optparse'
4
4
  require 'logger'
5
+ require 'thread'
6
+ require 'yaml'
5
7
  require 'monitor'
6
-
7
- require 'midiator'
8
+ require 'ffi'
8
9
 
9
10
  require 'zgomot/config'
10
11
  require 'zgomot/boot'
@@ -12,3 +13,4 @@ require 'zgomot/patches'
12
13
  require 'zgomot/comp'
13
14
  require 'zgomot/midi'
14
15
  require 'zgomot/main'
16
+ require 'zgomot/drivers'
data/zgomot.gemspec CHANGED
@@ -5,25 +5,26 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{zgomot}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Troy Stribling"]
12
- s.date = %q{2011-04-03}
13
- s.default_executable = %q{zgomot}
11
+ s.authors = [%q{Troy Stribling}]
12
+ s.date = %q{2011-05-31}
14
13
  s.email = %q{troy.stribling@gmail.com}
15
- s.executables = ["zgomot"]
14
+ s.executables = [%q{zgomot}]
16
15
  s.extra_rdoc_files = [
17
16
  "LICENSE",
18
17
  "README.rdoc"
19
18
  ]
20
19
  s.files = [
21
20
  ".document",
21
+ ".rvmrc",
22
22
  "LICENSE",
23
23
  "README.rdoc",
24
24
  "Rakefile",
25
25
  "VERSION",
26
26
  "bin/zgomot",
27
+ "default.gems",
27
28
  "examples/arp_chords.rb",
28
29
  "examples/full_scale_notes.rb",
29
30
  "examples/inv_chords.rb",
@@ -63,62 +64,39 @@ Gem::Specification.new do |s|
63
64
  "lib/zgomot/comp/progression.rb",
64
65
  "lib/zgomot/comp/scale.rb",
65
66
  "lib/zgomot/config.rb",
67
+ "lib/zgomot/drivers.rb",
68
+ "lib/zgomot/drivers/core_midi.rb",
69
+ "lib/zgomot/drivers/driver.rb",
70
+ "lib/zgomot/drivers/mgr.rb",
66
71
  "lib/zgomot/main.rb",
67
72
  "lib/zgomot/midi.rb",
68
73
  "lib/zgomot/midi/channel.rb",
69
74
  "lib/zgomot/midi/clock.rb",
70
75
  "lib/zgomot/midi/dispatcher.rb",
71
- "lib/zgomot/midi/interface.rb",
72
76
  "lib/zgomot/midi/note.rb",
73
77
  "lib/zgomot/midi/stream.rb",
74
78
  "lib/zgomot/patches.rb",
75
79
  "lib/zgomot/patches/object.rb",
80
+ "lib/zgomot/patches/string.rb",
76
81
  "lib/zgomot/patches/time.rb",
77
82
  "lib/zlive.rb",
78
83
  "zgomot.gemspec"
79
84
  ]
80
85
  s.homepage = %q{http://github.com/troystribling/zgomot}
81
- s.require_paths = ["lib"]
82
- s.rubygems_version = %q{1.3.7}
86
+ s.require_paths = [%q{lib}]
87
+ s.rubygems_version = %q{1.8.4}
83
88
  s.summary = %q{zgomot is a simple DSL for writting MIDI music.}
84
- s.test_files = [
85
- "examples/arp_chords.rb",
86
- "examples/full_scale_notes.rb",
87
- "examples/inv_chords.rb",
88
- "examples/modes_notes.rb",
89
- "examples/notes.rb",
90
- "examples/percs.rb",
91
- "examples/percs_multi.rb",
92
- "examples/phase_notes.rb",
93
- "examples/prog_chords.rb",
94
- "examples/prog_chords_multi_vel_length.rb",
95
- "examples/prog_chords_rest.rb",
96
- "examples/prog_notes.rb",
97
- "examples/prog_notes_multi_vel_length.rb",
98
- "examples/prog_notes_rest.rb",
99
- "examples/progressive_modes.rb",
100
- "examples/reverse_chords.rb",
101
- "examples/scale_chords.rb",
102
- "examples/scale_notes.rb",
103
- "examples/scales_notes.rb",
104
- "examples/simple_chords.rb",
105
- "examples/simple_markov.rb",
106
- "examples/simple_notes.rb",
107
- "examples/simple_notes_length.rb",
108
- "examples/simple_notes_velocity.rb"
109
- ]
110
89
 
111
90
  if s.respond_to? :specification_version then
112
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
113
91
  s.specification_version = 3
114
92
 
115
93
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
116
- s.add_runtime_dependency(%q<midiator>, [">= 0.3.3"])
94
+ s.add_runtime_dependency(%q<ffi>, ["= 1.0.9"])
117
95
  else
118
- s.add_dependency(%q<midiator>, [">= 0.3.3"])
96
+ s.add_dependency(%q<ffi>, ["= 1.0.9"])
119
97
  end
120
98
  else
121
- s.add_dependency(%q<midiator>, [">= 0.3.3"])
99
+ s.add_dependency(%q<ffi>, ["= 1.0.9"])
122
100
  end
123
101
  end
124
102
 
metadata CHANGED
@@ -1,55 +1,44 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: zgomot
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Troy Stribling
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-04-03 00:00:00 -04:00
19
- default_executable: zgomot
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: midiator
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2011-05-31 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ffi
16
+ requirement: &2156224540 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 21
30
- segments:
31
- - 0
32
- - 3
33
- - 3
34
- version: 0.3.3
18
+ requirements:
19
+ - - =
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.9
35
22
  type: :runtime
36
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: *2156224540
37
25
  description:
38
26
  email: troy.stribling@gmail.com
39
- executables:
27
+ executables:
40
28
  - zgomot
41
29
  extensions: []
42
-
43
- extra_rdoc_files:
30
+ extra_rdoc_files:
44
31
  - LICENSE
45
32
  - README.rdoc
46
- files:
33
+ files:
47
34
  - .document
35
+ - .rvmrc
48
36
  - LICENSE
49
37
  - README.rdoc
50
38
  - Rakefile
51
39
  - VERSION
52
40
  - bin/zgomot
41
+ - default.gems
53
42
  - examples/arp_chords.rb
54
43
  - examples/full_scale_notes.rb
55
44
  - examples/inv_chords.rb
@@ -89,75 +78,45 @@ files:
89
78
  - lib/zgomot/comp/progression.rb
90
79
  - lib/zgomot/comp/scale.rb
91
80
  - lib/zgomot/config.rb
81
+ - lib/zgomot/drivers.rb
82
+ - lib/zgomot/drivers/core_midi.rb
83
+ - lib/zgomot/drivers/driver.rb
84
+ - lib/zgomot/drivers/mgr.rb
92
85
  - lib/zgomot/main.rb
93
86
  - lib/zgomot/midi.rb
94
87
  - lib/zgomot/midi/channel.rb
95
88
  - lib/zgomot/midi/clock.rb
96
89
  - lib/zgomot/midi/dispatcher.rb
97
- - lib/zgomot/midi/interface.rb
98
90
  - lib/zgomot/midi/note.rb
99
91
  - lib/zgomot/midi/stream.rb
100
92
  - lib/zgomot/patches.rb
101
93
  - lib/zgomot/patches/object.rb
94
+ - lib/zgomot/patches/string.rb
102
95
  - lib/zgomot/patches/time.rb
103
96
  - lib/zlive.rb
104
97
  - zgomot.gemspec
105
- has_rdoc: true
106
98
  homepage: http://github.com/troystribling/zgomot
107
99
  licenses: []
108
-
109
100
  post_install_message:
110
101
  rdoc_options: []
111
-
112
- require_paths:
102
+ require_paths:
113
103
  - lib
114
- required_ruby_version: !ruby/object:Gem::Requirement
104
+ required_ruby_version: !ruby/object:Gem::Requirement
115
105
  none: false
116
- requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- hash: 3
120
- segments:
121
- - 0
122
- version: "0"
123
- required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
111
  none: false
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- hash: 3
129
- segments:
130
- - 0
131
- version: "0"
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
132
116
  requirements: []
133
-
134
117
  rubyforge_project:
135
- rubygems_version: 1.3.7
118
+ rubygems_version: 1.8.4
136
119
  signing_key:
137
120
  specification_version: 3
138
121
  summary: zgomot is a simple DSL for writting MIDI music.
139
- test_files:
140
- - examples/arp_chords.rb
141
- - examples/full_scale_notes.rb
142
- - examples/inv_chords.rb
143
- - examples/modes_notes.rb
144
- - examples/notes.rb
145
- - examples/percs.rb
146
- - examples/percs_multi.rb
147
- - examples/phase_notes.rb
148
- - examples/prog_chords.rb
149
- - examples/prog_chords_multi_vel_length.rb
150
- - examples/prog_chords_rest.rb
151
- - examples/prog_notes.rb
152
- - examples/prog_notes_multi_vel_length.rb
153
- - examples/prog_notes_rest.rb
154
- - examples/progressive_modes.rb
155
- - examples/reverse_chords.rb
156
- - examples/scale_chords.rb
157
- - examples/scale_notes.rb
158
- - examples/scales_notes.rb
159
- - examples/simple_chords.rb
160
- - examples/simple_markov.rb
161
- - examples/simple_notes.rb
162
- - examples/simple_notes_length.rb
163
- - examples/simple_notes_velocity.rb
122
+ test_files: []
@@ -1,29 +0,0 @@
1
- ##############################################################################################################
2
- module Zgomot::Midi
3
-
4
- #####-------------------------------------------------------------------------------------------------------
5
- class Interface
6
-
7
- #####-------------------------------------------------------------------------------------------------------
8
- class << self
9
-
10
- #.........................................................................................................
11
- attr_reader :driver
12
-
13
- #.........................................................................................................
14
- def method_missing(method, *args, &blk )
15
- @driver.send(method, *args, &blk)
16
- end
17
-
18
- #### self
19
- end
20
-
21
- #.........................................................................................................
22
- @driver = MIDIator::Interface.new
23
- driver.autodetect_driver
24
-
25
- #### Interface
26
- end
27
-
28
- #### Zgomot::Midi
29
- end