scruby 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|