maca-Scruby 0.0.8
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/README.rdoc +26 -0
- data/Rakefile +10 -0
- data/Scruby.gemspec +36 -0
- data/bin/live_session.rb +12 -0
- data/changes +1 -0
- data/lib/live/session.rb +144 -0
- data/lib/scruby.rb +60 -0
- data/lib/scruby/audio/control_name.rb +29 -0
- data/lib/scruby/audio/env.rb +97 -0
- data/lib/scruby/audio/node.rb +20 -0
- data/lib/scruby/audio/server.rb +112 -0
- data/lib/scruby/audio/synth.rb +15 -0
- data/lib/scruby/audio/synthdef.rb +114 -0
- data/lib/scruby/audio/ugens/env_gen.rb +18 -0
- data/lib/scruby/audio/ugens/in_out.rb +43 -0
- data/lib/scruby/audio/ugens/multi_out_ugens.rb +48 -0
- data/lib/scruby/audio/ugens/operation_indices.yaml +92 -0
- data/lib/scruby/audio/ugens/operation_ugens.rb +64 -0
- data/lib/scruby/audio/ugens/ugen.rb +154 -0
- data/lib/scruby/audio/ugens/ugen_defs.yaml +3421 -0
- data/lib/scruby/audio/ugens/ugen_operations.rb +44 -0
- data/lib/scruby/audio/ugens/ugens.rb +34 -0
- data/lib/scruby/control/metro.rb +6 -0
- data/lib/scruby/extensions.rb +109 -0
- data/lib/scruby/typed_array.rb +64 -0
- data/spec/audio/env_gen_specs.rb +25 -0
- data/spec/audio/in_out_spec.rb +107 -0
- data/spec/audio/integration_spec.rb +106 -0
- data/spec/audio/lib_spec.rb +14 -0
- data/spec/audio/multiout_ugen_spec.rb +112 -0
- data/spec/audio/node_spec.rb +60 -0
- data/spec/audio/operation_ugens_spec.rb +189 -0
- data/spec/audio/server_spec.rb +68 -0
- data/spec/audio/synth_spec.rb +46 -0
- data/spec/audio/synthdef_spec.rb +275 -0
- data/spec/audio/ugen_operations_spec.rb +146 -0
- data/spec/audio/ugen_spec.rb +333 -0
- data/spec/audio/ugens_spec.rb +61 -0
- data/spec/env_spec.rb +64 -0
- data/spec/extensions_spec.rb +133 -0
- data/spec/helper.rb +11 -0
- data/spec/typed_array_spec.rb +95 -0
- metadata +129 -0
@@ -0,0 +1,133 @@
|
|
1
|
+
require File.join( File.expand_path(File.dirname(__FILE__)),"helper")
|
2
|
+
|
3
|
+
require "#{SCRUBY_DIR}/audio/ugens/ugen_operations"
|
4
|
+
require "#{SCRUBY_DIR}/extensions"
|
5
|
+
require "ruby2ruby"
|
6
|
+
|
7
|
+
describe Numeric do
|
8
|
+
|
9
|
+
before :all do
|
10
|
+
@bin_op = mock('binop')
|
11
|
+
BinaryOpUGen = mock( 'BinaryOpUGen', :new => @bin_on )
|
12
|
+
@ugen = mock( 'ugen' )
|
13
|
+
Ugen = mock( 'Ugen', :new => @ugen)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "shoud have an scalar rate" do
|
17
|
+
1.rate.should eql(:scalar)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should have an scalar rate" do
|
21
|
+
100.0.rate.should == :scalar
|
22
|
+
end
|
23
|
+
|
24
|
+
it "sum as usual" do
|
25
|
+
(100 + 100).should == 200
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should #collect_constants" do
|
29
|
+
1.send( :collect_constants ).should == 1
|
30
|
+
1.5.send( :collect_constants ).should == 1.5
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should spec #input_specs" do
|
34
|
+
synthdef = mock('synthdef', :constants => [200.0,1,3, 400.0] )
|
35
|
+
200.0.send( :input_specs, synthdef ).should == [-1,0]
|
36
|
+
3.send( :input_specs, synthdef ).should == [-1,2]
|
37
|
+
400.0.send( :input_specs, synthdef ).should == [-1,3]
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should spec encode"
|
41
|
+
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
describe Array, "monkey patches" do
|
46
|
+
describe "#collect_with_index" do
|
47
|
+
it do
|
48
|
+
[].should respond_to( :collect_with_index )
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should return an array the same size as the original" do
|
52
|
+
[1,2,3,4].collect_with_index{ nil }.should have( 4 ).items
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should collect_with_index" do
|
56
|
+
array = %w(a, b, c, d)
|
57
|
+
array.collect_with_index{ |element, index| [index, element] }.should eql( [0,1,2,3].zip( array ) )
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should wrap and zip" do
|
61
|
+
[:a,:b,:c].wrap_and_zip([1]).flatten.should == [:a,1,:b,1,:c,1]
|
62
|
+
|
63
|
+
[0.5, 0.5].wrap_and_zip([3],[5]).flatten.should == [0.5,3,5,0.5,3,5]
|
64
|
+
[0.01, 1.0].wrap_and_zip([-4.0],[5]).flatten.should == [0.01, -4.0, 5, 1.0, -4.0, 5]
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should sum with Ugen"
|
68
|
+
it "should collect constants"
|
69
|
+
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe Proc do
|
75
|
+
describe "#argument_names" do
|
76
|
+
|
77
|
+
it do
|
78
|
+
Proc.new{}.should respond_to( :argument_names )
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should get empty array if proc has no args" do
|
82
|
+
Proc.new{}.argument_names.should eql( [] )
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should get one argument name" do
|
86
|
+
Proc.new{ |arg| }.argument_names.should eql( [ :arg ] )
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should get arg names with several args" do
|
90
|
+
Proc.new{ |arg, arg2, arg3| }.argument_names.should eql( [ :arg, :arg2, :arg3 ] )
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe Array do
|
96
|
+
describe "#wrap_to" do
|
97
|
+
|
98
|
+
it do
|
99
|
+
Array.new.should respond_to( :wrap_to )
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should wrap_to!" do
|
103
|
+
[1,2].wrap_to!(4).should == [1,2,1,2]
|
104
|
+
end
|
105
|
+
|
106
|
+
it do
|
107
|
+
Array.new.should respond_to( :wrap_to )
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should return self if the passed size is the same as self.size" do
|
111
|
+
a = [1,2,3,4]
|
112
|
+
a.wrap_to( 4 ).should == a
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should etc..."
|
116
|
+
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe String do
|
121
|
+
|
122
|
+
it "should encode" do
|
123
|
+
"SinOsc".encode.should == [6, 83, 105, 110, 79, 115, 99].pack('C*')
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should encode large strings" do
|
127
|
+
'set arguments cn.argNum << this is the size of controlNames when controlName was added'.encode.should ==
|
128
|
+
[86, 115, 101, 116, 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 32, 99, 110, 46, 97, 114, 103, 78, 117, 109, 32, 60, 60, 32, 116, 104, 105, 115, 32, 105, 115, 32, 116, 104, 101, 32, 115, 105, 122, 101, 32, 111, 102, 32, 99, 111, 110, 116, 114, 111, 108, 78, 97, 109, 101, 115, 32, 119, 104, 101, 110, 32, 99, 111, 110, 116, 114, 111, 108, 78, 97, 109, 101, 32, 119, 97, 115, 32, 97, 100, 100, 101, 100].pack('C*')
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
|
data/spec/helper.rb
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
require File.join( File.expand_path(File.dirname(__FILE__)), "helper")
|
2
|
+
require "#{SCRUBY_DIR}/typed_array"
|
3
|
+
|
4
|
+
class Type
|
5
|
+
end
|
6
|
+
|
7
|
+
describe TypedArray do
|
8
|
+
|
9
|
+
before do
|
10
|
+
@t1 = Type.new
|
11
|
+
@t2 = Type.new
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should initialize with attributes" do
|
15
|
+
objs = (0..3).map{ Type.new }
|
16
|
+
ta = TypedArray.new( Type, objs )
|
17
|
+
ta.type.should == Type
|
18
|
+
ta.should == objs
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should instantiate with an array" do
|
22
|
+
objs = (0..3).map{ Type.new }
|
23
|
+
ta = TypedArray.new( Type, objs )
|
24
|
+
ta.should == objs
|
25
|
+
end
|
26
|
+
|
27
|
+
it "set type by instance" do
|
28
|
+
ta = TypedArray.new( Type.new )
|
29
|
+
ta.type.should == Type
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should raise error if wrong type" do
|
33
|
+
lambda{ TypedArray.new(Type, 1) }.should raise_error(TypeError)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "+ success" do
|
37
|
+
ta = TypedArray.new( Type )
|
38
|
+
o = Type.new
|
39
|
+
sum = ta + [o]
|
40
|
+
sum.should be_instance_of(TypedArray)
|
41
|
+
sum.should == [o]
|
42
|
+
end
|
43
|
+
|
44
|
+
it "+ failure" do
|
45
|
+
lambda{ TypedArray.new(Type, Type.new) + [1] }.should raise_error(TypeError)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "concat success" do
|
49
|
+
ta = TypedArray.new( Type, [@t1] )
|
50
|
+
ta.concat( [@t2] ).should == ta
|
51
|
+
ta.should == [@t1,@t2]
|
52
|
+
end
|
53
|
+
|
54
|
+
it "concat failure" do
|
55
|
+
lambda{ TypedArray.new(Type, Type.new).concat( 1 ) }.should raise_error(TypeError)
|
56
|
+
lambda{ TypedArray.new(Type, Type.new).concat( [1] ) }.should raise_error(TypeError)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "<< success" do
|
60
|
+
ta = TypedArray.new(Type) << @t1
|
61
|
+
ta.should == [@t1]
|
62
|
+
end
|
63
|
+
|
64
|
+
it "<< failure" do
|
65
|
+
lambda{ TypedArray.new(Type, Type.new) << [1] }.should raise_error(TypeError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "[]= success" do
|
69
|
+
ta = TypedArray.new(Type)
|
70
|
+
ta[0]= @t1
|
71
|
+
ta[0].should == @t1
|
72
|
+
end
|
73
|
+
|
74
|
+
it "[]= failure" do
|
75
|
+
lambda{ TypedArray.new(Type, Type.new)[0]= 1 }.should raise_error(TypeError)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "push success" do
|
79
|
+
ta = TypedArray.new(Type)
|
80
|
+
ta.push( @t1 )
|
81
|
+
ta.should == [@t1]
|
82
|
+
end
|
83
|
+
|
84
|
+
it "push failure" do
|
85
|
+
lambda{ TypedArray.new(Type, Type.new).push(1) }.should raise_error(TypeError)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should convert to array" do
|
89
|
+
ta = TypedArray.new(Type)
|
90
|
+
ta.to_a.should be_instance_of(Array)
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
|
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: maca-Scruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.8
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Macario Ortega
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-02-05 00:00:00 -08:00
|
13
|
+
default_executable: live_session.rb
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: echoe
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
version:
|
24
|
+
description: Small client for doing sound synthesis from ruby using the SuperCollider synth, usage is quite similar from SuperCollider.
|
25
|
+
email: macarui@gmail.com
|
26
|
+
executables:
|
27
|
+
- live_session.rb
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files:
|
31
|
+
- bin/live_session.rb
|
32
|
+
- lib/live/session.rb
|
33
|
+
- lib/scruby/audio/control_name.rb
|
34
|
+
- lib/scruby/audio/env.rb
|
35
|
+
- lib/scruby/audio/node.rb
|
36
|
+
- lib/scruby/audio/server.rb
|
37
|
+
- lib/scruby/audio/synth.rb
|
38
|
+
- lib/scruby/audio/synthdef.rb
|
39
|
+
- lib/scruby/audio/ugens/env_gen.rb
|
40
|
+
- lib/scruby/audio/ugens/in_out.rb
|
41
|
+
- lib/scruby/audio/ugens/multi_out_ugens.rb
|
42
|
+
- lib/scruby/audio/ugens/operation_indices.yaml
|
43
|
+
- lib/scruby/audio/ugens/operation_ugens.rb
|
44
|
+
- lib/scruby/audio/ugens/ugen.rb
|
45
|
+
- lib/scruby/audio/ugens/ugen_defs.yaml
|
46
|
+
- lib/scruby/audio/ugens/ugen_operations.rb
|
47
|
+
- lib/scruby/audio/ugens/ugens.rb
|
48
|
+
- lib/scruby/control/metro.rb
|
49
|
+
- lib/scruby/extensions.rb
|
50
|
+
- lib/scruby/typed_array.rb
|
51
|
+
- lib/scruby.rb
|
52
|
+
- README.rdoc
|
53
|
+
files:
|
54
|
+
- bin/live_session.rb
|
55
|
+
- changes
|
56
|
+
- lib/live/session.rb
|
57
|
+
- lib/scruby/audio/control_name.rb
|
58
|
+
- lib/scruby/audio/env.rb
|
59
|
+
- lib/scruby/audio/node.rb
|
60
|
+
- lib/scruby/audio/server.rb
|
61
|
+
- lib/scruby/audio/synth.rb
|
62
|
+
- lib/scruby/audio/synthdef.rb
|
63
|
+
- lib/scruby/audio/ugens/env_gen.rb
|
64
|
+
- lib/scruby/audio/ugens/in_out.rb
|
65
|
+
- lib/scruby/audio/ugens/multi_out_ugens.rb
|
66
|
+
- lib/scruby/audio/ugens/operation_indices.yaml
|
67
|
+
- lib/scruby/audio/ugens/operation_ugens.rb
|
68
|
+
- lib/scruby/audio/ugens/ugen.rb
|
69
|
+
- lib/scruby/audio/ugens/ugen_defs.yaml
|
70
|
+
- lib/scruby/audio/ugens/ugen_operations.rb
|
71
|
+
- lib/scruby/audio/ugens/ugens.rb
|
72
|
+
- lib/scruby/control/metro.rb
|
73
|
+
- lib/scruby/extensions.rb
|
74
|
+
- lib/scruby/typed_array.rb
|
75
|
+
- lib/scruby.rb
|
76
|
+
- Rakefile
|
77
|
+
- README.rdoc
|
78
|
+
- spec/audio/env_gen_specs.rb
|
79
|
+
- spec/audio/in_out_spec.rb
|
80
|
+
- spec/audio/integration_spec.rb
|
81
|
+
- spec/audio/lib_spec.rb
|
82
|
+
- spec/audio/multiout_ugen_spec.rb
|
83
|
+
- spec/audio/node_spec.rb
|
84
|
+
- spec/audio/operation_ugens_spec.rb
|
85
|
+
- spec/audio/server_spec.rb
|
86
|
+
- spec/audio/synth_spec.rb
|
87
|
+
- spec/audio/synthdef_spec.rb
|
88
|
+
- spec/audio/ugen_operations_spec.rb
|
89
|
+
- spec/audio/ugen_spec.rb
|
90
|
+
- spec/audio/ugens_spec.rb
|
91
|
+
- spec/env_spec.rb
|
92
|
+
- spec/extensions_spec.rb
|
93
|
+
- spec/helper.rb
|
94
|
+
- spec/typed_array_spec.rb
|
95
|
+
- Manifest
|
96
|
+
- Scruby.gemspec
|
97
|
+
has_rdoc: true
|
98
|
+
homepage: http://github.com/maca/scruby
|
99
|
+
post_install_message:
|
100
|
+
rdoc_options:
|
101
|
+
- --line-numbers
|
102
|
+
- --inline-source
|
103
|
+
- --title
|
104
|
+
- Scruby
|
105
|
+
- --main
|
106
|
+
- README.rdoc
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: "0"
|
114
|
+
version:
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: "1.2"
|
120
|
+
version:
|
121
|
+
requirements: []
|
122
|
+
|
123
|
+
rubyforge_project: scruby
|
124
|
+
rubygems_version: 1.2.0
|
125
|
+
signing_key:
|
126
|
+
specification_version: 2
|
127
|
+
summary: Small client for doing sound synthesis from ruby using the SuperCollider synth, usage is quite similar from SuperCollider.
|
128
|
+
test_files: []
|
129
|
+
|