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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d02b099c830f00e3e8930bcfad9528f4b080ebe6
4
- data.tar.gz: 9861e9f2e1aa46280db3d5c6382893245a71a4fc
3
+ metadata.gz: 24807f126d4e82ea5443eec40861ecd0e7d6bd10
4
+ data.tar.gz: 9420baa64ce470b5c42ef5d8fe7300db06bb3f8e
5
5
  SHA512:
6
- metadata.gz: 0701b9ccaef4c5902ac9264cd1006dc132c360d2c4a6ed6f8a3a1d61801c701458d752b1342e924219598ac2ced475ceae78b64d7922d25eef060f2f32501c9c
7
- data.tar.gz: 6cb09cc075a40384f097154c23e1bb85cc0825a0a760625be64dfd309487000fcb9f2a8a304054adb4be0b56a2f59d1bdcbc649460beb845f479b0227014a0cb
6
+ metadata.gz: 53ec2ffd54d7fa2e433725962867764c7465a3191b7bc2e5d619e7514668c1ae1847a670e2d1223072196b71c34e16747229e565b1af4eeffcdf1bc64d4dc500
7
+ data.tar.gz: 3d54b7fbac53f388449c455f98e485a516e3532d1b7886b9c6a5943f5d69ee80d2fa1be568faf88043308beb37035dd6c3fd38e68aec704b0c7a8cdbde222472
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- midicat (0.0.3)
4
+ midicat (0.0.4)
5
5
  midi-nibbler
6
6
  unimidi
7
7
 
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # midicat
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/midicat.svg)](http://badge.fury.io/rb/midicat)
4
+
3
5
  cat/tailf for MIDI input events
4
6
 
5
7
  ![demo screen](./demo.gif)
@@ -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
- _EOM_
7
+ /\\ ___
8
+ ) ( ') |___| midicat #{Midicat::VERSION}
9
+ ( / ) _| _| Ctrl-C to exit
10
+ \\(__)| (@) (@)
35
11
 
36
- UniMIDI::Input.all.each_with_index do |d, i|
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
- if threads.size != 0
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
@@ -1,3 +1,9 @@
1
+ require "unimidi"
2
+ require "nibbler"
3
+
4
+ require "midicat/formatter"
5
+ require "midicat/cli"
6
+
1
7
  require "midicat/version"
2
8
 
3
9
  module Midicat
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Midicat
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
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
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-02 00:00:00.000000000 Z
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