rubySC 0.3.1 → 0.3.2
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.
- checksums.yaml +7 -0
- data/examples/testMinimal.rb +3 -1
- data/lib/init.sc +10 -7
- data/lib/rubySC.rb +41 -25
- data/lib/rubySC/musique.rb +2 -2
- data/lib/rubySC/version.rb +1 -1
- data/lib/rubySC/voix.rb +23 -16
- data/rubySC.gemspec +2 -1
- metadata +31 -26
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f25693db3f68b6f84d7dfa8af500bf3f64eda04b
|
4
|
+
data.tar.gz: 2bd2ff847fa55f05499898223090cca1bba761c0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e512fa6cbca5a3a01d9a5fc1edafc81fba7319cfe215018502405953f4610b98d13e73a68d961b3f1e91ae71ac856337cf16306402807caf57004533b3f69cdf
|
7
|
+
data.tar.gz: 5457ed59299ab6b0e9f0d26a6c33f1c52f7c859b86399120031782328a9da031a93e83a061d4647eb06ea9693f4b22ec965a0bd10e7913677f21a59315667fad
|
data/examples/testMinimal.rb
CHANGED
data/lib/init.sc
CHANGED
@@ -56,18 +56,21 @@ snd = Pluck.ar(
|
|
56
56
|
Out.ar(0, [snd, snd]);
|
57
57
|
}).add;
|
58
58
|
|
59
|
-
/////////
|
59
|
+
///////// Lignes de fin pour mettre le bouzin en route
|
60
60
|
|
61
61
|
s.boot;
|
62
|
-
|
62
|
+
|
63
|
+
m=NetAddr("127.0.0.1", 3333);
|
64
|
+
m.sendMsg("/portSC", NetAddr.langPort);
|
63
65
|
|
64
66
|
OSCFunc.newMatching(
|
65
67
|
{ |message, time, addr, responder|
|
66
|
-
//"caca".post;
|
67
68
|
message[1].asString.interpret
|
68
69
|
}, "/SC", n
|
69
|
-
)
|
70
|
-
|
70
|
+
)
|
71
71
|
|
72
|
-
|
73
|
-
|
72
|
+
///// Vous pouvez ajouter de nouveaux instruments en mettant du code en-dessous, dans la syntaxe:
|
73
|
+
/// SynthDef ("nomInstr", { argumentsModifiables }
|
74
|
+
/// son = code
|
75
|
+
/// Out.ar(son)
|
76
|
+
/// })
|
data/lib/rubySC.rb
CHANGED
@@ -6,6 +6,7 @@ require_relative "rubySC/musique.rb"
|
|
6
6
|
require 'active_support'
|
7
7
|
require 'singleton'
|
8
8
|
require 'osc-ruby'
|
9
|
+
require 'osc-ruby/em_server'
|
9
10
|
include ObjectSpace
|
10
11
|
|
11
12
|
## classe principale, singleton
|
@@ -18,7 +19,6 @@ include ObjectSpace
|
|
18
19
|
class SC
|
19
20
|
|
20
21
|
cattr_reader :listeVoix
|
21
|
-
|
22
22
|
include Singleton
|
23
23
|
|
24
24
|
# ouvre le contact avec SuperCollider
|
@@ -26,22 +26,38 @@ class SC
|
|
26
26
|
def self.demarrer
|
27
27
|
|
28
28
|
## démarre SuperCollider
|
29
|
-
#TODO : faire quelque chose d'un peu plus propre
|
30
29
|
|
30
|
+
if `which sclang` == "" then
|
31
|
+
begin
|
32
|
+
raise Error
|
33
|
+
rescue
|
34
|
+
exit
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
@@server= OSC::EMServer.new 3333
|
39
|
+
@@server.add_method "/portSC" do |message|
|
40
|
+
@@portSuperCollider=message.to_a[0]
|
41
|
+
end
|
42
|
+
|
31
43
|
unless p `ps -ef | grep "sclang" | grep -v "grep" | wc -l`.to_i > 0
|
32
|
-
system "sclang
|
44
|
+
system "sclang #{File.join(File.dirname(__FILE__), "init.sc")} &"
|
33
45
|
end
|
34
46
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
# @server= OSC::EMServer.new 3333
|
39
|
-
# @server.add_method '/portSuperCollider' do |message|
|
40
|
-
# @portSuperCollider=message.message
|
41
|
-
# end
|
42
|
-
@postMan= OSC::Client.new "localhost", 57320 ## @portSuperCollider
|
47
|
+
Thread.new do @@server.run end
|
48
|
+
sleep 1.5
|
49
|
+
## récupèrer l'adresse du port
|
43
50
|
|
44
|
-
|
51
|
+
if @@portSuperCollider.nil?
|
52
|
+
begin
|
53
|
+
raise Error, "espece de porc"
|
54
|
+
rescue exit
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
@@postMan= OSC::Client.new "localhost", @@portSuperCollider
|
59
|
+
|
60
|
+
# variables et méthodes de fin
|
45
61
|
|
46
62
|
@@listeVoix=Hash.new
|
47
63
|
define_finalizer(self, Proc.new {self.quit})
|
@@ -60,19 +76,11 @@ class SC
|
|
60
76
|
# ajustages directs. À ne pas utiliser normalement.
|
61
77
|
|
62
78
|
def self.send message
|
63
|
-
|
79
|
+
@@postMan.send OSC::Message.new "/SC", message.to_s
|
64
80
|
end
|
65
81
|
|
66
82
|
## fonction semi-privée
|
67
83
|
|
68
|
-
def self.updateScore
|
69
|
-
@@listeVoix.each do |key, value|
|
70
|
-
value.instance_variables.each do |variable|
|
71
|
-
self.updater key, variable[1..-1], value.instance_variable_get(variable) unless value.instance_variable_get(variable).nil?
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
84
|
def self.updater voix, arg, value
|
77
85
|
case arg
|
78
86
|
when "dur"
|
@@ -88,11 +96,19 @@ class SC
|
|
88
96
|
end
|
89
97
|
end
|
90
98
|
|
99
|
+
def self.updateScore
|
100
|
+
@@listeVoix.each do |key, value|
|
101
|
+
value.instance_variables.each do |variable|
|
102
|
+
self.updater key, variable[1..-1], value.instance_variable_get(variable) unless value.instance_variable_get(variable).nil?
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
91
107
|
# fonctions principales
|
92
108
|
|
93
109
|
public
|
94
110
|
|
95
|
-
def self.set options=nil, *voix
|
111
|
+
def self.set demarreBool, options=nil, *voix
|
96
112
|
|
97
113
|
if voix.nil?
|
98
114
|
begin
|
@@ -101,10 +117,9 @@ class SC
|
|
101
117
|
puts "vous devez donner un nom à votre (vos) voix"
|
102
118
|
end
|
103
119
|
end
|
104
|
-
|
105
120
|
if @@listeVoix.nil? then
|
106
121
|
begin
|
107
|
-
raise
|
122
|
+
raise ScriptError
|
108
123
|
rescue
|
109
124
|
self.demarrer
|
110
125
|
end
|
@@ -124,7 +139,8 @@ class SC
|
|
124
139
|
@@listeVoix[voix.to_s].set options
|
125
140
|
end
|
126
141
|
self.updateScore
|
127
|
-
|
142
|
+
if demarreBool then
|
143
|
+
self.play voix.to_s end
|
128
144
|
end
|
129
145
|
end
|
130
146
|
|
data/lib/rubySC/musique.rb
CHANGED
@@ -43,7 +43,7 @@ module Partition
|
|
43
43
|
|
44
44
|
def self.echelle echelle
|
45
45
|
SC.listeVoix.each_key do |voix|
|
46
|
-
SC.set ({
|
46
|
+
SC.set ({"scale" => echelle}), voix
|
47
47
|
end
|
48
48
|
SC.updateScore
|
49
49
|
end
|
@@ -51,7 +51,7 @@ module Partition
|
|
51
51
|
|
52
52
|
def self.transpose intervalle
|
53
53
|
SC.listeVoix.each_key do |voix|
|
54
|
-
SC.set ({
|
54
|
+
SC.set ({"root" => intervalle}), voix
|
55
55
|
end
|
56
56
|
self.updateScore
|
57
57
|
end
|
data/lib/rubySC/version.rb
CHANGED
data/lib/rubySC/voix.rb
CHANGED
@@ -7,13 +7,13 @@ class Voix
|
|
7
7
|
attr_reader :dur, :degree, :octave, :root, :scale, :amp, :instrument
|
8
8
|
|
9
9
|
def initialize options={}
|
10
|
-
|
10
|
+
|
11
11
|
@root=nil
|
12
12
|
|
13
13
|
self.setDuree options["dur"]
|
14
14
|
|
15
15
|
if options["degree"].nil?
|
16
|
-
then @degree=Array.new(rand(
|
16
|
+
then @degree=Array.new(rand(1..20)) do |x| x=rand(12) end
|
17
17
|
else
|
18
18
|
@degree=options["degree"]
|
19
19
|
end
|
@@ -45,16 +45,32 @@ class Voix
|
|
45
45
|
|
46
46
|
end
|
47
47
|
|
48
|
+
def set options
|
49
|
+
options.each do |key, value|
|
50
|
+
if value.is_a? Symbol
|
51
|
+
value=value.to_s
|
52
|
+
end
|
53
|
+
|
54
|
+
case key
|
55
|
+
when "dur"
|
56
|
+
self.setDuree value
|
57
|
+
else
|
58
|
+
self.instance_variable_set "@#{key}", value
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
48
64
|
def setDuree duree
|
49
65
|
if duree.nil?
|
50
66
|
then @dur=[4, [1]] ## valeur de base, tout en ronde, cantus
|
51
|
-
|
67
|
+
## firmus style, io!
|
52
68
|
else
|
53
69
|
if duree.is_a? Array
|
54
70
|
if duree.length == 2 and duree[1].is_a? Array
|
55
71
|
then
|
56
72
|
@dur=duree ## quelqu'un a fait un vrai objet en RTM
|
57
|
-
|
73
|
+
## notation
|
58
74
|
else
|
59
75
|
tmp = true
|
60
76
|
duree.each {
|
@@ -64,8 +80,8 @@ class Voix
|
|
64
80
|
end
|
65
81
|
}
|
66
82
|
if tmp then
|
67
|
-
@dur = [4, duree] ## on a juste mis un rythme pour
|
68
|
-
##
|
83
|
+
@dur = [4, duree] ## on a juste mis un rythme pour la
|
84
|
+
## durée d'une mesure
|
69
85
|
else
|
70
86
|
begin
|
71
87
|
raise ArgumentError
|
@@ -77,14 +93,5 @@ class Voix
|
|
77
93
|
end
|
78
94
|
end
|
79
95
|
|
80
|
-
def set options
|
81
|
-
options.each do |key, value|
|
82
|
-
if value.is_a? Symbol
|
83
|
-
self.instance_variable_set "@#{key}", value.to_s
|
84
|
-
else
|
85
|
-
self.instance_variable_set "@#{key}", value
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
96
|
end
|
97
|
+
|
data/rubySC.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["simdax"]
|
10
10
|
spec.email = ["simoncornaz@gmail.com"]
|
11
11
|
spec.summary = %q{light music live_coding lib}
|
12
|
-
spec.description = %q{}
|
12
|
+
spec.description = %q{simple library to create easily music in ruby. You can consider this lib as an interface for SuperCollider's JTLIB, with extras}
|
13
13
|
spec.homepage = "http://github.com/simdax/rubySC"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.add_runtime_dependency "activesupport", "~>4.0"
|
25
25
|
spec.add_runtime_dependency "osc-ruby", "~> 1.1"
|
26
|
+
spec.add_runtime_dependency "eventmachine", "~> 1"
|
26
27
|
|
27
28
|
|
28
29
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubySC
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- simdax
|
@@ -14,75 +13,82 @@ dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.5'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.5'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: activesupport
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- - ~>
|
45
|
+
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '4.0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- - ~>
|
52
|
+
- - "~>"
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '4.0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: osc-ruby
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '1.1'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '1.1'
|
78
|
-
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: eventmachine
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1'
|
83
|
+
description: simple library to create easily music in ruby. You can consider this
|
84
|
+
lib as an interface for SuperCollider's JTLIB, with extras
|
79
85
|
email:
|
80
86
|
- simoncornaz@gmail.com
|
81
87
|
executables: []
|
82
88
|
extensions: []
|
83
89
|
extra_rdoc_files: []
|
84
90
|
files:
|
85
|
-
- .gitignore
|
91
|
+
- ".gitignore"
|
86
92
|
- Gemfile
|
87
93
|
- LICENSE.txt
|
88
94
|
- README.md
|
@@ -100,26 +106,25 @@ files:
|
|
100
106
|
homepage: http://github.com/simdax/rubySC
|
101
107
|
licenses:
|
102
108
|
- MIT
|
109
|
+
metadata: {}
|
103
110
|
post_install_message:
|
104
111
|
rdoc_options: []
|
105
112
|
require_paths:
|
106
113
|
- lib
|
107
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
115
|
requirements:
|
110
|
-
- -
|
116
|
+
- - ">="
|
111
117
|
- !ruby/object:Gem::Version
|
112
118
|
version: '0'
|
113
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
120
|
requirements:
|
116
|
-
- -
|
121
|
+
- - ">="
|
117
122
|
- !ruby/object:Gem::Version
|
118
123
|
version: '0'
|
119
124
|
requirements: []
|
120
125
|
rubyforge_project:
|
121
|
-
rubygems_version:
|
126
|
+
rubygems_version: 2.2.0
|
122
127
|
signing_key:
|
123
|
-
specification_version:
|
128
|
+
specification_version: 4
|
124
129
|
summary: light music live_coding lib
|
125
130
|
test_files: []
|