scruby 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +5 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +53 -0
- data/README.rdoc +65 -0
- data/Rakefile +10 -0
- data/TODO.markdown +3 -0
- data/examples/example.rb +73 -0
- data/lib/scruby/buffer.rb +153 -0
- data/lib/scruby/bus.rb +67 -0
- data/lib/scruby/control_name.rb +29 -0
- data/lib/scruby/core_ext/array.rb +44 -0
- data/lib/scruby/core_ext/delegator_array.rb +44 -0
- data/lib/scruby/core_ext/fixnum.rb +8 -0
- data/lib/scruby/core_ext/numeric.rb +25 -0
- data/lib/scruby/core_ext/object.rb +23 -0
- data/lib/scruby/core_ext/proc.rb +11 -0
- data/lib/scruby/core_ext/string.rb +5 -0
- data/lib/scruby/core_ext/symbol.rb +5 -0
- data/lib/scruby/core_ext/typed_array.rb +54 -0
- data/lib/scruby/env.rb +93 -0
- data/lib/scruby/group.rb +24 -0
- data/lib/scruby/node.rb +102 -0
- data/lib/scruby/server.rb +182 -0
- data/lib/scruby/synth.rb +50 -0
- data/lib/scruby/synthdef.rb +109 -0
- data/lib/scruby/ticker.rb +92 -0
- data/lib/scruby/ugens/buffer_read_write.rb +98 -0
- data/lib/scruby/ugens/demand.rb +9 -0
- data/lib/scruby/ugens/disk_in_out.rb +33 -0
- data/lib/scruby/ugens/env_gen.rb +38 -0
- data/lib/scruby/ugens/in_out.rb +46 -0
- data/lib/scruby/ugens/multi_out.rb +53 -0
- data/lib/scruby/ugens/operation_indices.yaml +92 -0
- data/lib/scruby/ugens/operation_ugens.rb +63 -0
- data/lib/scruby/ugens/panner.rb +137 -0
- data/lib/scruby/ugens/ugen.rb +173 -0
- data/lib/scruby/ugens/ugen_defs.yaml +3123 -0
- data/lib/scruby/ugens/ugen_operations.rb +57 -0
- data/lib/scruby/ugens/ugens.rb +95 -0
- data/lib/scruby/version.rb +3 -0
- data/lib/scruby.rb +65 -0
- data/scruby.gemspec +27 -0
- data/spec/buffer_read_write_spec.rb +333 -0
- data/spec/buffer_spec.rb +199 -0
- data/spec/bus_spec.rb +184 -0
- data/spec/core_ext/core_ext_spec.rb +120 -0
- data/spec/core_ext/delegator_array_spec.rb +144 -0
- data/spec/core_ext/typed_array_spec.rb +95 -0
- data/spec/demand_spec.rb +81 -0
- data/spec/disk_in_out_spec.rb +138 -0
- data/spec/env_gen_spec.rb +23 -0
- data/spec/env_spec.rb +73 -0
- data/spec/group_spec.rb +71 -0
- data/spec/helper.rb +20 -0
- data/spec/in_out_spec.rb +127 -0
- data/spec/integration_spec.rb +88 -0
- data/spec/multiout_ugen_spec.rb +86 -0
- data/spec/node_spec.rb +112 -0
- data/spec/operation_ugens_spec.rb +196 -0
- data/spec/panner_spec.rb +271 -0
- data/spec/server.rb +12 -0
- data/spec/server_spec.rb +198 -0
- data/spec/synth_spec.rb +103 -0
- data/spec/synthdef_spec.rb +267 -0
- data/spec/ugen_operations_spec.rb +100 -0
- data/spec/ugen_spec.rb +356 -0
- data/spec/ugens_spec.rb +65 -0
- metadata +207 -0
data/spec/ugen_spec.rb
ADDED
@@ -0,0 +1,356 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__)) + "/helper"
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
require "scruby/control_name"
|
5
|
+
require "scruby/env"
|
6
|
+
require "scruby/ugens/ugen"
|
7
|
+
require "scruby/ugens/ugen_operations"
|
8
|
+
require "scruby/ugens/operation_ugens"
|
9
|
+
require "scruby/core_ext/object"
|
10
|
+
require "scruby/core_ext/numeric"
|
11
|
+
require "scruby/core_ext/string"
|
12
|
+
require "scruby/core_ext/fixnum"
|
13
|
+
require "scruby/core_ext/array"
|
14
|
+
require "scruby/core_ext/delegator_array"
|
15
|
+
|
16
|
+
|
17
|
+
include Scruby
|
18
|
+
include Ugens
|
19
|
+
|
20
|
+
class MockUgen < Ugen
|
21
|
+
class << self; public :new; end
|
22
|
+
end
|
23
|
+
|
24
|
+
class SinOsc < Ugen
|
25
|
+
class << self
|
26
|
+
def ar freq = 440.0, phase = 0.0 #not interested in muladd by now
|
27
|
+
new :audio, freq, phase
|
28
|
+
end
|
29
|
+
|
30
|
+
def kr freq = 440.0, phase = 0.0
|
31
|
+
new :control, freq, phase
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class Scruby::Buffer
|
37
|
+
def as_ugen_input; 0; end
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
describe Ugen do
|
42
|
+
|
43
|
+
before do
|
44
|
+
@sdef = mock 'sdef', :children => []
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should set constants " do
|
48
|
+
UgenOperations::UNARY.should_not be_nil
|
49
|
+
UgenOperations::BINARY.should_not be_nil
|
50
|
+
Ugen::RATES.should_not be_nil
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should tell if valid input" do
|
54
|
+
cn = ControlName.new 'cn', 1, :audio, 0
|
55
|
+
Ugen.valid_input?( 440 ).should be_true
|
56
|
+
Ugen.valid_input?( 440.0 ).should be_true
|
57
|
+
Ugen.valid_input?( [4,4] ).should be_true
|
58
|
+
Ugen.valid_input?( SinOsc.ar ).should be_true
|
59
|
+
Ugen.valid_input?( SinOsc.ar ).should be_true
|
60
|
+
Ugen.valid_input?( Env.asr ).should be_true
|
61
|
+
Ugen.valid_input?( cn ).should be_true
|
62
|
+
Ugen.valid_input?( 'string' ).should be_false
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should use buffnum as input when a buffer is passed" do
|
66
|
+
MockUgen.new( :audio, Buffer.new ).inputs.should == [0]
|
67
|
+
end
|
68
|
+
|
69
|
+
describe 'attributes' do
|
70
|
+
before do
|
71
|
+
@ugen = SinOsc.ar
|
72
|
+
end
|
73
|
+
|
74
|
+
it do
|
75
|
+
@ugen.should respond_to( :inputs )
|
76
|
+
end
|
77
|
+
|
78
|
+
it do
|
79
|
+
@ugen.should respond_to( :rate )
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe 'operations' do
|
84
|
+
before :all do
|
85
|
+
@op_ugen = mock( 'op_ugen' )
|
86
|
+
UnaryOpUGen = mock 'unary_op_ugen', :new => @op_ugen
|
87
|
+
end
|
88
|
+
|
89
|
+
before do
|
90
|
+
@ugen = SinOsc.ar
|
91
|
+
@ugen2 = SinOsc.ar
|
92
|
+
end
|
93
|
+
|
94
|
+
it do #this specs all binary operations
|
95
|
+
@ugen.should respond_to( :+ )
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should sum" do
|
99
|
+
(@ugen + @ugen2).should be_a(BinaryOpUGen)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe 'ugen graph in synth def' do
|
104
|
+
before do
|
105
|
+
Ugen.synthdef = nil
|
106
|
+
@ugen = MockUgen.new( :audio, 1, 2 )
|
107
|
+
@ugen2 = MockUgen.new( :audio, 1, 2 )
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should not have synthdef" do
|
111
|
+
MockUgen.new( :audio, 1, 2 ).send( :synthdef ).should be_nil
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should have 0 as index if not belonging to ugen" do
|
115
|
+
MockUgen.new( :audio, 1, 2 ).index.should be_zero
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should have synthdef" do
|
119
|
+
Ugen.synthdef = @sdef
|
120
|
+
@ugen.send( :synthdef ).should == @sdef
|
121
|
+
end
|
122
|
+
|
123
|
+
it do
|
124
|
+
@ugen.should_not respond_to(:add_to_synthdef) #private method
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should add to synth def on instantiation" do
|
128
|
+
Ugen.synthdef = @sdef
|
129
|
+
ugen = MockUgen.new( :audio, 1, 2)
|
130
|
+
ugen.send( :synthdef ).should == @sdef
|
131
|
+
@sdef.children.should == [ugen]
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should add to synthdef and return synthdef.children size" do
|
135
|
+
Ugen.synthdef = @sdef
|
136
|
+
ugen, ugen2 = MockUgen.new(:audio, 1, 2), MockUgen.new(:audio, 1, 2)
|
137
|
+
@sdef.children.should eql( [ugen, ugen2] )
|
138
|
+
ugen.index.should == 0
|
139
|
+
ugen2.index.should == 1
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should not add to synthdef" do
|
143
|
+
Ugen.synthdef = nil
|
144
|
+
@sdef.children.should_not_receive( :<< )
|
145
|
+
MockUgen.new( :audio, 1, 2 ).send( :add_to_synthdef ).should eql( nil )
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should collect constants" do
|
149
|
+
MockUgen.new( :audio, 100, @ugen, 200 ).send( :collect_constants ).flatten.sort.should == [1, 2, 100, 200]
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should collect constants on arrayed inputs" do
|
153
|
+
MockUgen.new( :audio, 100, [@ugen, [200, @ugen2, 100] ] ).send( :collect_constants ).flatten.uniq.sort.should == [1, 2, 100, 200]
|
154
|
+
end
|
155
|
+
|
156
|
+
end
|
157
|
+
|
158
|
+
describe 'initialization and inputs' do
|
159
|
+
before do
|
160
|
+
@ugen = MockUgen.new(:audio, 1, 2, 3)
|
161
|
+
end
|
162
|
+
|
163
|
+
it "should not accept non valid inputs" do
|
164
|
+
lambda{ @ugen = MockUgen.new(:audio, "hola") }.should raise_error( ArgumentError )
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should require at least one argument" do
|
168
|
+
lambda { MockUgen.new }.should raise_error( ArgumentError )
|
169
|
+
end
|
170
|
+
|
171
|
+
it "should be a defined rate as the first argument" do
|
172
|
+
lambda { MockUgen.new( :not_a_rate, 1 ) }.should raise_error( ArgumentError )
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should use the highest rate when passing an array" do
|
176
|
+
MockUgen.new([:audio, :control], 1).rate.should == :audio
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should be a defined rate as array" do
|
180
|
+
lambda { MockUgen.new( [:not_a_rate, :audio], 1 ) }.should raise_error( ArgumentError )
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should accept an empty array for inputs and inputs should be an empty array" do
|
184
|
+
MockUgen.new( :audio, [] ).inputs.should eql([])
|
185
|
+
end
|
186
|
+
|
187
|
+
it "should instantiate" do
|
188
|
+
MockUgen.new( :audio, 1, 2 ).should be_instance_of( MockUgen )
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should accept any number of args" do
|
192
|
+
MockUgen.new( :audio, 1, 2 )
|
193
|
+
MockUgen.new( :audio, 1, 2, 3, 4 )
|
194
|
+
end
|
195
|
+
|
196
|
+
it "should set inputs" do
|
197
|
+
@ugen.inputs.should == [1, 2, 3]
|
198
|
+
end
|
199
|
+
|
200
|
+
it "should set rate" do
|
201
|
+
@ugen.rate.should == :audio
|
202
|
+
end
|
203
|
+
|
204
|
+
it "should have empty inputs" do
|
205
|
+
MockUgen.new( :audio ).inputs.should == []
|
206
|
+
MockUgen.new( :audio, [] ).inputs.should == []
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
describe 'initialization with array as argument' do
|
211
|
+
|
212
|
+
before :all do
|
213
|
+
@i_1 = 100, 210
|
214
|
+
@i_2 = 100, 220
|
215
|
+
@i_3 = 100, 230
|
216
|
+
@i_4 = 100, 240
|
217
|
+
end
|
218
|
+
|
219
|
+
it "should not care if an array was passed" do
|
220
|
+
MockUgen.new( :audio, [1, 2, 3] ).should be_instance_of(MockUgen)
|
221
|
+
end
|
222
|
+
|
223
|
+
it "should return an array of Ugens if an array as one arg is passed on instantiation" do
|
224
|
+
MockUgen.new( :audio, 1, [2, 3] ).should be_instance_of(DelegatorArray)
|
225
|
+
end
|
226
|
+
|
227
|
+
it do
|
228
|
+
MockUgen.new( :audio, 1, [2,3], [4,5] ).should have( 2 ).items
|
229
|
+
end
|
230
|
+
|
231
|
+
it do
|
232
|
+
MockUgen.new( :audio, 1, [2,3, 3], [4,5] ).should have( 3 ).items
|
233
|
+
end
|
234
|
+
|
235
|
+
it "should return an array of ugens" do
|
236
|
+
ugens = MockUgen.new( :audio, 100, [210, 220, 230, 240] )
|
237
|
+
ugens.each do |u|
|
238
|
+
u.should be_instance_of(MockUgen)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
it "should return ugen" do
|
243
|
+
ugen = MockUgen.new( :audio, [1], [2] )
|
244
|
+
ugen.should be_instance_of( MockUgen )
|
245
|
+
ugen.inputs.should == [1, 2]
|
246
|
+
end
|
247
|
+
|
248
|
+
it "should return ugen" do
|
249
|
+
ugen = MockUgen.new( :audio, [1, 2] )
|
250
|
+
ugen.should be_instance_of( MockUgen )
|
251
|
+
ugen.inputs.should == [1, 2]
|
252
|
+
end
|
253
|
+
|
254
|
+
it "should make multichannel array (DelegatorArray)" do
|
255
|
+
multichannel = MockUgen.new( :audio, 100, [210, 220] )
|
256
|
+
multichannel.should be_a(DelegatorArray)
|
257
|
+
multichannel.should == d(MockUgen.new(:audio, 100, 210), MockUgen.new(:audio, 100, 220))
|
258
|
+
end
|
259
|
+
|
260
|
+
it "should accept DelegatorArray as inputs" do
|
261
|
+
multichannel = MockUgen.new( :audio, 100, d(210, 220) )
|
262
|
+
multichannel.should be_a(DelegatorArray)
|
263
|
+
multichannel.should == d(MockUgen.new(:audio, 100, 210), MockUgen.new(:audio, 100, 220))
|
264
|
+
end
|
265
|
+
|
266
|
+
it "should return an delegator array of ugens with correct inputs" do
|
267
|
+
ugens = MockUgen.new( :audio, 100, [210, 220, 230, 240] )
|
268
|
+
ugens.zip( [@i_1, @i_2, @i_3, @i_4] ).each do |e|
|
269
|
+
e.first.inputs.should eql( e.last )
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
it "should match the structure of the inputs array(s)" do
|
274
|
+
array = [ 200, [210, [220, 230] ] ]
|
275
|
+
ugens = MockUgen.new( :audio, 100, array )
|
276
|
+
last = lambda do |i|
|
277
|
+
if i.instance_of?(MockUgen)
|
278
|
+
i.inputs.first.should == 100
|
279
|
+
i.inputs.last
|
280
|
+
else
|
281
|
+
i.map{ |e| last.call(e) }
|
282
|
+
end
|
283
|
+
end
|
284
|
+
last.call(ugens).should == array
|
285
|
+
end
|
286
|
+
|
287
|
+
it "should return muladd" do
|
288
|
+
@ugen = MockUgen.new(:audio, 100, 100)
|
289
|
+
@ugen.muladd(0.5, 0.5).should be_a(MulAdd)
|
290
|
+
end
|
291
|
+
|
292
|
+
it "should return an arrayed muladd" do
|
293
|
+
@ugen = MockUgen.new(:audio, [100,100], 100)
|
294
|
+
@ugen.muladd(0.5, 0.5).should be_a(DelegatorArray)
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
describe Ugen, 'encoding' do
|
299
|
+
before do
|
300
|
+
args = [400.0, 0.0]
|
301
|
+
@sin = SinOsc.kr *args
|
302
|
+
@synthdef = mock 'synthdef', :constants => args
|
303
|
+
@sin.stub!( :index ).and_return 1 #as if was the first child of a synthdef
|
304
|
+
@sin.stub!( :synthdef ).and_return @synthdef
|
305
|
+
|
306
|
+
@encoded = [6, 83, 105, 110, 79, 115, 99, 1, 0, 2, 0, 1, 0, 0, -1, -1, 0, 0, -1, -1, 0, 1, 1].pack('C*')
|
307
|
+
end
|
308
|
+
|
309
|
+
it "should stub synthdef" do
|
310
|
+
@sin.send( :synthdef ).should == @synthdef
|
311
|
+
end
|
312
|
+
|
313
|
+
it "should encode have 0 as special index" do
|
314
|
+
@sin.send(:special_index).should == 0
|
315
|
+
end
|
316
|
+
|
317
|
+
it "should encode have 0 as output index" do
|
318
|
+
@sin.send(:output_index).should == 0
|
319
|
+
end
|
320
|
+
|
321
|
+
it "should encode have [1] as output index" do
|
322
|
+
@sin.send(:channels).should == [1]
|
323
|
+
end
|
324
|
+
|
325
|
+
it "should return input_specs" do
|
326
|
+
@sin.send( :input_specs, nil ).should == [1,0]
|
327
|
+
end
|
328
|
+
|
329
|
+
it "should collect input_specs" do
|
330
|
+
@sin.send(:collect_input_specs).should == [[-1, 0], [-1, 1]]
|
331
|
+
end
|
332
|
+
|
333
|
+
it "should encode class name" do
|
334
|
+
@sin.encode[0..6].should == @encoded[0..6]
|
335
|
+
end
|
336
|
+
|
337
|
+
it "should encode classname, rate" do
|
338
|
+
@sin.encode[0..7].should == @encoded[0..7]
|
339
|
+
end
|
340
|
+
|
341
|
+
it "should encode cn, rt, inputs, channels, special_index" do
|
342
|
+
@sin.encode[0..13].should == @encoded[0..13]
|
343
|
+
end
|
344
|
+
|
345
|
+
it "should encode cn, rt, in, out, si, collect_input_specs" do
|
346
|
+
@sin.encode.should == @encoded
|
347
|
+
end
|
348
|
+
|
349
|
+
it "should equal to a similar" do
|
350
|
+
MockUgen.new(:audio, 1, 2).should == MockUgen.new(:audio, 1, 2)
|
351
|
+
end
|
352
|
+
end
|
353
|
+
end
|
354
|
+
|
355
|
+
|
356
|
+
|
data/spec/ugens_spec.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__)) + "/helper"
|
2
|
+
|
3
|
+
require "scruby/control_name"
|
4
|
+
require "scruby/env"
|
5
|
+
require "scruby/ugens/ugen"
|
6
|
+
require "scruby/ugens/ugen_operations"
|
7
|
+
require "scruby/ugens/operation_ugens"
|
8
|
+
require "scruby/ugens/ugens"
|
9
|
+
|
10
|
+
|
11
|
+
module UgenTest
|
12
|
+
end
|
13
|
+
|
14
|
+
class Klass
|
15
|
+
end
|
16
|
+
|
17
|
+
include Scruby
|
18
|
+
include Ugens
|
19
|
+
|
20
|
+
|
21
|
+
describe Ugens do
|
22
|
+
|
23
|
+
before do
|
24
|
+
@udefs = YAML::load( File.open( "#{ File.dirname __FILE__ }/../lib/scruby/ugens/ugen_defs.yaml" ) )
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should define Ugen classes' do
|
28
|
+
@udefs.each_pair { |key, val| eval(key).should_not be_nil }
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'each ugen should be Ugen subclass' do
|
32
|
+
@udefs.each_pair { |key, val| eval(key).superclass.should eql( Scruby::Ugens::Ugen ) }
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should resond to :ar and :kr' do
|
36
|
+
Vibrato.should respond_to(:ar)
|
37
|
+
Vibrato.should respond_to(:kr)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should use default values and passed values" do
|
41
|
+
Gendy1.should_receive(:new).with( :audio, 10, 20, 1, 1, 550, 660, 0.5, 0.5, 12, 1 ).and_return( mock('ugen', :muladd => nil) )
|
42
|
+
Gendy1.ar 10, 20, :knum => 1, :minfreq => 550
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should raise argumen error if not passed required" do
|
46
|
+
Gendy1.stub!(:new)
|
47
|
+
lambda { Gendy1.ar }.should raise_error(ArgumentError)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should not accept more than the required arguments" do
|
51
|
+
lambda { SinOsc.ar(1,2,3,4,5,6) }.should raise_error(ArgumentError)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should initialize using demand" do
|
55
|
+
Dbrown.new(1,2,3,4).inputs.should == [1,2,3,4]
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should have public new method for scalar" do
|
59
|
+
ExpRand.new(1,2)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should output params"
|
63
|
+
end
|
64
|
+
|
65
|
+
|
metadata
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: scruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
- 7
|
10
|
+
version: 0.2.7
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Macario Ortega
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-03-21 00:00:00 -06:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rspec
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: bundler
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: ruby-osc
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ~>
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 13
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
- 3
|
61
|
+
version: "0.3"
|
62
|
+
type: :runtime
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: arguments
|
66
|
+
prerelease: false
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ~>
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 7
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
- 6
|
76
|
+
version: "0.6"
|
77
|
+
type: :runtime
|
78
|
+
version_requirements: *id004
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: live
|
81
|
+
prerelease: false
|
82
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
hash: 9
|
88
|
+
segments:
|
89
|
+
- 0
|
90
|
+
- 1
|
91
|
+
version: "0.1"
|
92
|
+
type: :runtime
|
93
|
+
version_requirements: *id005
|
94
|
+
description: SuperCollider client for Ruby
|
95
|
+
email:
|
96
|
+
- macarui@gmail.com
|
97
|
+
executables: []
|
98
|
+
|
99
|
+
extensions: []
|
100
|
+
|
101
|
+
extra_rdoc_files: []
|
102
|
+
|
103
|
+
files:
|
104
|
+
- .gitignore
|
105
|
+
- .rspec
|
106
|
+
- Gemfile
|
107
|
+
- Gemfile.lock
|
108
|
+
- README.rdoc
|
109
|
+
- Rakefile
|
110
|
+
- TODO.markdown
|
111
|
+
- examples/example.rb
|
112
|
+
- lib/scruby.rb
|
113
|
+
- lib/scruby/buffer.rb
|
114
|
+
- lib/scruby/bus.rb
|
115
|
+
- lib/scruby/control_name.rb
|
116
|
+
- lib/scruby/core_ext/array.rb
|
117
|
+
- lib/scruby/core_ext/delegator_array.rb
|
118
|
+
- lib/scruby/core_ext/fixnum.rb
|
119
|
+
- lib/scruby/core_ext/numeric.rb
|
120
|
+
- lib/scruby/core_ext/object.rb
|
121
|
+
- lib/scruby/core_ext/proc.rb
|
122
|
+
- lib/scruby/core_ext/string.rb
|
123
|
+
- lib/scruby/core_ext/symbol.rb
|
124
|
+
- lib/scruby/core_ext/typed_array.rb
|
125
|
+
- lib/scruby/env.rb
|
126
|
+
- lib/scruby/group.rb
|
127
|
+
- lib/scruby/node.rb
|
128
|
+
- lib/scruby/server.rb
|
129
|
+
- lib/scruby/synth.rb
|
130
|
+
- lib/scruby/synthdef.rb
|
131
|
+
- lib/scruby/ticker.rb
|
132
|
+
- lib/scruby/ugens/buffer_read_write.rb
|
133
|
+
- lib/scruby/ugens/demand.rb
|
134
|
+
- lib/scruby/ugens/disk_in_out.rb
|
135
|
+
- lib/scruby/ugens/env_gen.rb
|
136
|
+
- lib/scruby/ugens/in_out.rb
|
137
|
+
- lib/scruby/ugens/multi_out.rb
|
138
|
+
- lib/scruby/ugens/operation_indices.yaml
|
139
|
+
- lib/scruby/ugens/operation_ugens.rb
|
140
|
+
- lib/scruby/ugens/panner.rb
|
141
|
+
- lib/scruby/ugens/ugen.rb
|
142
|
+
- lib/scruby/ugens/ugen_defs.yaml
|
143
|
+
- lib/scruby/ugens/ugen_operations.rb
|
144
|
+
- lib/scruby/ugens/ugens.rb
|
145
|
+
- lib/scruby/version.rb
|
146
|
+
- scruby.gemspec
|
147
|
+
- spec/buffer_read_write_spec.rb
|
148
|
+
- spec/buffer_spec.rb
|
149
|
+
- spec/bus_spec.rb
|
150
|
+
- spec/core_ext/core_ext_spec.rb
|
151
|
+
- spec/core_ext/delegator_array_spec.rb
|
152
|
+
- spec/core_ext/typed_array_spec.rb
|
153
|
+
- spec/demand_spec.rb
|
154
|
+
- spec/disk_in_out_spec.rb
|
155
|
+
- spec/env_gen_spec.rb
|
156
|
+
- spec/env_spec.rb
|
157
|
+
- spec/group_spec.rb
|
158
|
+
- spec/helper.rb
|
159
|
+
- spec/in_out_spec.rb
|
160
|
+
- spec/integration_spec.rb
|
161
|
+
- spec/multiout_ugen_spec.rb
|
162
|
+
- spec/node_spec.rb
|
163
|
+
- spec/operation_ugens_spec.rb
|
164
|
+
- spec/panner_spec.rb
|
165
|
+
- spec/server.rb
|
166
|
+
- spec/server_spec.rb
|
167
|
+
- spec/synth_spec.rb
|
168
|
+
- spec/synthdef_spec.rb
|
169
|
+
- spec/ugen_operations_spec.rb
|
170
|
+
- spec/ugen_spec.rb
|
171
|
+
- spec/ugens_spec.rb
|
172
|
+
has_rdoc: true
|
173
|
+
homepage: http://github.com/maca/scruby
|
174
|
+
licenses: []
|
175
|
+
|
176
|
+
post_install_message:
|
177
|
+
rdoc_options: []
|
178
|
+
|
179
|
+
require_paths:
|
180
|
+
- lib
|
181
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
182
|
+
none: false
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
hash: 3
|
187
|
+
segments:
|
188
|
+
- 0
|
189
|
+
version: "0"
|
190
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
191
|
+
none: false
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
hash: 3
|
196
|
+
segments:
|
197
|
+
- 0
|
198
|
+
version: "0"
|
199
|
+
requirements: []
|
200
|
+
|
201
|
+
rubyforge_project: scruby
|
202
|
+
rubygems_version: 1.6.2
|
203
|
+
signing_key:
|
204
|
+
specification_version: 3
|
205
|
+
summary: SuperCollider client for Ruby
|
206
|
+
test_files: []
|
207
|
+
|