midicat 0.0.4 → 0.1.0
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +2 -0
- data/bin/midicat +6 -57
- data/lib/midicat.rb +6 -0
- data/lib/midicat/cli.rb +41 -0
- data/lib/midicat/formatter.rb +17 -0
- data/lib/midicat/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24807f126d4e82ea5443eec40861ecd0e7d6bd10
|
4
|
+
data.tar.gz: 9420baa64ce470b5c42ef5d8fe7300db06bb3f8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53ec2ffd54d7fa2e433725962867764c7465a3191b7bc2e5d619e7514668c1ae1847a670e2d1223072196b71c34e16747229e565b1af4eeffcdf1bc64d4dc500
|
7
|
+
data.tar.gz: 3d54b7fbac53f388449c455f98e485a516e3532d1b7886b9c6a5943f5d69ee80d2fa1be568faf88043308beb37035dd6c3fd38e68aec704b0c7a8cdbde222472
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
data/bin/midicat
CHANGED
@@ -1,65 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require 'unimidi'
|
4
|
-
require 'nibbler'
|
5
|
-
|
6
3
|
require 'midicat'
|
7
4
|
|
8
|
-
devices = []
|
9
|
-
threads = []
|
10
|
-
data = []
|
11
|
-
timestamps = []
|
12
|
-
ni = Nibbler.new
|
13
|
-
|
14
|
-
def format_mes(message)
|
15
|
-
if message.is_a? MIDIMessage::ControlChange
|
16
|
-
"Ch.#{message.channel}.#{message.index} -> #{message.value}"
|
17
|
-
elsif message.is_a? MIDIMessage::NoteOn
|
18
|
-
"Ch.#{message.channel}.#{message.name} ON @ #{message.velocity}"
|
19
|
-
elsif message.is_a? MIDIMessage::NoteOff
|
20
|
-
"Ch.#{message.channel}.#{message.name} OFF @ #{message.velocity}"
|
21
|
-
elsif message.is_a? MIDIMessage::SystemExclusive::Message
|
22
|
-
"SysEx. #{message.data.to_s}"
|
23
|
-
else
|
24
|
-
message
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
5
|
puts <<_EOM_
|
29
|
-
/\\
|
30
|
-
) ( ') midicat #{Midicat::VERSION}
|
31
|
-
( / ) Ctrl-C to exit
|
32
|
-
\\(__)|
|
33
6
|
|
34
|
-
|
7
|
+
/\\ ___
|
8
|
+
) ( ') |___| midicat #{Midicat::VERSION}
|
9
|
+
( / ) _| _| Ctrl-C to exit
|
10
|
+
\\(__)| (@) (@)
|
35
11
|
|
36
|
-
|
37
|
-
puts d.pretty_name
|
38
|
-
devices[i] = d.open
|
39
|
-
ii = 0
|
40
|
-
threads << Thread.new do
|
41
|
-
loop do
|
42
|
-
data[i] = d.gets
|
43
|
-
data[i].each do |dd|
|
44
|
-
timestamps[i] = sprintf "%12.4f", dd[:timestamp]
|
45
|
-
ms = ni.parse(*dd[:data])
|
46
|
-
if ms.is_a? Array
|
47
|
-
ms.each do |mss|
|
48
|
-
puts "#{timestamps[i]} #{d.name} #{format_mes mss}"
|
49
|
-
end
|
50
|
-
else
|
51
|
-
puts "#{timestamps[i]} #{d.name} #{format_mes ms}"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
12
|
+
_EOM_
|
57
13
|
|
58
|
-
|
59
|
-
threads.each do |t|
|
60
|
-
t.join
|
61
|
-
end
|
62
|
-
else
|
63
|
-
puts "no MIDI devices found."
|
64
|
-
puts "aborting"
|
65
|
-
end
|
14
|
+
Midicat::Cli.new
|
data/lib/midicat.rb
CHANGED
data/lib/midicat/cli.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
module Midicat
|
2
|
+
class Cli
|
3
|
+
attr_reader :device
|
4
|
+
|
5
|
+
def initialize()
|
6
|
+
@ni = Nibbler.new
|
7
|
+
|
8
|
+
if UniMIDI::Input.all.length > 0
|
9
|
+
@device = UniMIDI::Input.gets
|
10
|
+
else
|
11
|
+
puts "no MIDI device found!"
|
12
|
+
exit! 1
|
13
|
+
end
|
14
|
+
|
15
|
+
unless @device.nil?
|
16
|
+
begin
|
17
|
+
mainloop @device.open
|
18
|
+
ensure
|
19
|
+
@device.close
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def mainloop(device)
|
25
|
+
loop do
|
26
|
+
device.gets.each do |data|
|
27
|
+
timestamp = sprintf "%12.4f", data[:timestamp]
|
28
|
+
|
29
|
+
ms = @ni.parse(*data[:data])
|
30
|
+
if ms.is_a? Array
|
31
|
+
ms.each do |mss|
|
32
|
+
puts "#{timestamp} #{device.name} #{Midicat::Formatter::format mss}"
|
33
|
+
end
|
34
|
+
else
|
35
|
+
puts "#{timestamp} #{device.name} #{Midicat::Formatter::format ms}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Midicat
|
2
|
+
module Formatter
|
3
|
+
def self.format(message)
|
4
|
+
if message.is_a? MIDIMessage::ControlChange
|
5
|
+
"Ch.#{message.channel}.#{message.index} -> #{message.value}"
|
6
|
+
elsif message.is_a? MIDIMessage::NoteOn
|
7
|
+
"Ch.#{message.channel}.#{message.name} ON @ #{message.velocity}"
|
8
|
+
elsif message.is_a? MIDIMessage::NoteOff
|
9
|
+
"Ch.#{message.channel}.#{message.name} OFF @ #{message.velocity}"
|
10
|
+
elsif message.is_a? MIDIMessage::SystemExclusive::Message
|
11
|
+
"SysEx. #{message.data.to_s}"
|
12
|
+
else
|
13
|
+
message
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/midicat/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: midicat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- polamjag
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -97,6 +97,8 @@ files:
|
|
97
97
|
- bin/midicat
|
98
98
|
- demo.gif
|
99
99
|
- lib/midicat.rb
|
100
|
+
- lib/midicat/cli.rb
|
101
|
+
- lib/midicat/formatter.rb
|
100
102
|
- lib/midicat/version.rb
|
101
103
|
- midicat.gemspec
|
102
104
|
homepage: https://github.com/polamjag/midicat
|