sonic-pi-cli4 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/sonic_pi4 +103 -0
- data/lib/sonic_piRBN.rb +49 -0
- metadata +59 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8c7da055b4b9e1e699859b68738a50401c727f2bc49b06440c841d4fc50dd9a2
|
4
|
+
data.tar.gz: 640a512f4652e1d4c7ec94401e8466c4998da80590a36a4cb04a0ccf00eb9e59
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b3005ddaf3adf0beb0d5b1a42fe622de4776c7d74c4ee0c20c2ac638e11028cdd4d3b259926e9f6bead14e233409828e1875f066d87f6918318feda3d2cc5983
|
7
|
+
data.tar.gz: 28016e49f00e33e9f3599ad748066c8fc021038ecfff6f8b658c70348a7736b1abbcf8503cb51733aeb3953c29cf3cc98c096dc6b2026d9965ab8a55a0d27dd1
|
data/bin/sonic_pi4
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'sonic_piRBN'
|
4
|
+
|
5
|
+
def stdin
|
6
|
+
unless STDIN.tty?
|
7
|
+
$stdin.read
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def token #this functions reads from the spider-log
|
12
|
+
#the dynamically allocated token value used in internal gui comms
|
13
|
+
value='' #initialise variable
|
14
|
+
#read spider.log
|
15
|
+
File.open(ENV['HOME']+'/.sonic-pi/log/spider.log','r') do |f1|
|
16
|
+
while l = f1.gets
|
17
|
+
if l.include?"Token:" #find line containing Listen port:
|
18
|
+
value = l.split(" ").last.to_i #extract token value
|
19
|
+
break
|
20
|
+
end
|
21
|
+
end
|
22
|
+
f1.close #close file
|
23
|
+
end
|
24
|
+
return value #return found port value
|
25
|
+
end
|
26
|
+
|
27
|
+
def pvalue
|
28
|
+
value='' #initialise variable
|
29
|
+
#read spider.log
|
30
|
+
File.open(ENV['HOME']+'/.sonic-pi/log/spider.log','r') do |f1|
|
31
|
+
while l = f1.gets
|
32
|
+
if l.include?"Ports:"
|
33
|
+
#k="Ports: {:server_port=>37153, :gui_port=>37154, :scsynth_port=>37155, :scsynth_send_port=>37155, :osc_cues_port=>4560, :tau_port=>37156, :listen_to_tau_port=>37160}"
|
34
|
+
v=l.split("{")[1]
|
35
|
+
pp=v.split(", ")
|
36
|
+
pp.each.with_index do |i|
|
37
|
+
if i.include? ":server_port"
|
38
|
+
value= i.split("=>")[1].to_i
|
39
|
+
end
|
40
|
+
end
|
41
|
+
break
|
42
|
+
end
|
43
|
+
end
|
44
|
+
f1.close#close file
|
45
|
+
end
|
46
|
+
return value #return found port value
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
def args
|
52
|
+
ARGV.join(' ')
|
53
|
+
end
|
54
|
+
|
55
|
+
def args_and_stdin
|
56
|
+
@args_and_stdin ||= [
|
57
|
+
args,
|
58
|
+
stdin,
|
59
|
+
].join("\n").strip
|
60
|
+
end
|
61
|
+
|
62
|
+
def print_help
|
63
|
+
puts <<-HELP
|
64
|
+
sonic-pi-cli4
|
65
|
+
|
66
|
+
Usage:
|
67
|
+
sonic_pi4 <code>
|
68
|
+
sonic_pi4 stop
|
69
|
+
cat music.rb | sonic_pi4
|
70
|
+
sonic_pi4 --help
|
71
|
+
|
72
|
+
Sonic Pi version 4 must be running for this utility to work.
|
73
|
+
You can pipe code to stdin to execute it.
|
74
|
+
|
75
|
+
Options:
|
76
|
+
<code> Run the given code.
|
77
|
+
stop Stop all running music.
|
78
|
+
--help Display this text.
|
79
|
+
|
80
|
+
Modified by Robin Newman for Sonic Pi v4
|
81
|
+
Original version made by Nick Johnstone (github.com/Widdershin/sonic-pi-cli).
|
82
|
+
Thanks to Sam Aaron for creating Sonic Pi.
|
83
|
+
HELP
|
84
|
+
end
|
85
|
+
|
86
|
+
def run
|
87
|
+
app = SonicPiRBN.new(pvalue,token) #pass in port value
|
88
|
+
|
89
|
+
case args_and_stdin
|
90
|
+
when '--help', '-h', ''
|
91
|
+
print_help
|
92
|
+
when 'stop'
|
93
|
+
app.test_connection!
|
94
|
+
|
95
|
+
app.stop
|
96
|
+
else
|
97
|
+
app.test_connection!
|
98
|
+
|
99
|
+
app.run(args_and_stdin)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
run
|
data/lib/sonic_piRBN.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'socket'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'osc-ruby'
|
4
|
+
require 'securerandom'
|
5
|
+
|
6
|
+
class SonicPiRBN
|
7
|
+
|
8
|
+
def initialize(port='',token='')
|
9
|
+
@port=port
|
10
|
+
@token = token
|
11
|
+
end
|
12
|
+
|
13
|
+
RUN_COMMAND = "/run-code"
|
14
|
+
STOP_COMMAND = "/stop-all-jobs"
|
15
|
+
SERVER = 'localhost'
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
def run(command)
|
20
|
+
|
21
|
+
send_command(RUN_COMMAND, command)
|
22
|
+
end
|
23
|
+
|
24
|
+
def stop
|
25
|
+
send_command(STOP_COMMAND)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_connection!
|
29
|
+
begin
|
30
|
+
socket = UDPSocket.new
|
31
|
+
socket.bind(nil, @port)
|
32
|
+
abort("ERROR: Sonic Pi is not listening on #{@port} - is it running?")
|
33
|
+
rescue
|
34
|
+
# everything is good
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def client
|
41
|
+
@client ||= OSC::Client.new(SERVER, @port)
|
42
|
+
end
|
43
|
+
|
44
|
+
def send_command(call_type, command=nil)
|
45
|
+
prepared_command = OSC::Message.new(call_type, @token, command)
|
46
|
+
#STDOUT.puts call_type,@token,command #for debugging
|
47
|
+
client.send(prepared_command)
|
48
|
+
end
|
49
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sonic-pi-cli4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.4
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robin Newman
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-06-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: osc-ruby
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1'
|
27
|
+
description: A simple command line interface for Sonic Pi
|
28
|
+
email: robin.newman@gmail.com
|
29
|
+
executables:
|
30
|
+
- sonic_pi4
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- bin/sonic_pi4
|
35
|
+
- lib/sonic_piRBN.rb
|
36
|
+
homepage: http://rubygems.org/gems/sonic-pi-cli4
|
37
|
+
licenses:
|
38
|
+
- MIT
|
39
|
+
metadata: {}
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubygems_version: 3.3.7
|
56
|
+
signing_key:
|
57
|
+
specification_version: 4
|
58
|
+
summary: Sonic Pi CLI for v4
|
59
|
+
test_files: []
|