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 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
@@ -4,9 +4,11 @@ p "enclenchage de la machine"
4
4
 
5
5
  SC.demarrer
6
6
 
7
- sleep (5)
7
+ sleep 4
8
8
 
9
9
  p "chargement d'un fichier"
10
10
 
11
11
  Partition.importer "score.json"
12
12
 
13
+ sleep 3
14
+
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
- ///////// Ligne de fin pour mettre le bouzin en route
59
+ ///////// Lignes de fin pour mettre le bouzin en route
60
60
 
61
61
  s.boot;
62
- NetAddr.langPort.postln;
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
- m=NetAddr("127.0.0.1", NetAddr.langPort);
73
- m.sendMsg("SC", "iop")
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 -u 57320 #{File.join(File.dirname(__FILE__), "init.sc")} &"
44
+ system "sclang #{File.join(File.dirname(__FILE__), "init.sc")} &"
33
45
  end
34
46
 
35
- ## TODO : En théorie, récupèrer l'adresse du port, surtout si une autre instance de
36
- ## SuperCollider existe...
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
- # variables et méthodes d'utilisation
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
- @postMan.send OSC::Message.new "/SC", message.to_s
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 "WARNING ! Vous n'avez pas allumé superCollider ! \n On l'allume pour vous, porc"
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
- self.play voix.to_s
142
+ if demarreBool then
143
+ self.play voix.to_s end
128
144
  end
129
145
  end
130
146
 
@@ -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 ({:scale => echelle}), voix
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 ({:root => intervalle}), voix
54
+ SC.set ({"root" => intervalle}), voix
55
55
  end
56
56
  self.updateScore
57
57
  end
@@ -1,3 +1,3 @@
1
1
  module RubySC
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
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(6)) do |x| x=rand(12) end
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
- ## firmus style, io!
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
- ## notation
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
- ## la durée d'une mesure
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.1
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
- description: ''
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: 1.8.23
126
+ rubygems_version: 2.2.0
122
127
  signing_key:
123
- specification_version: 3
128
+ specification_version: 4
124
129
  summary: light music live_coding lib
125
130
  test_files: []