midi-parser 0.4.0 → 0.5.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.
data/lib/midi-parser.rb CHANGED
@@ -16,13 +16,60 @@ require 'midi-parser/message_builder'
16
16
  require 'midi-parser/parser'
17
17
  require 'midi-parser/session'
18
18
 
19
+ require_relative 'midi-parser/version'
20
+
21
+ # A Ruby parser for raw MIDI data that converts bytes, hex strings, and nibbles
22
+ # into MIDIEvents message objects.
19
23
  #
20
- # Parse MIDI Messages
24
+ # MIDIParser accepts various input formats and incrementally parses MIDI data,
25
+ # supporting running status and System Exclusive messages.
26
+ #
27
+ # This library is part of the MusaDSL MIDI suite:
28
+ # - {https://github.com/javier-sy/midi-events MIDI Events} - MIDI message representation
29
+ # - {https://github.com/javier-sy/midi-parser MIDI Parser} - MIDI data parsing (this library)
30
+ # - {https://github.com/javier-sy/midi-communications MIDI Communications} - MIDI I/O
31
+ #
32
+ # @example Basic usage - create a parser and parse a complete message
33
+ # parser = MIDIParser.new
34
+ # message = parser.parse(0x90, 0x40, 0x40)
35
+ # # => #<MIDIEvents::NoteOn @channel=0, @note=64, @velocity=64>
36
+ #
37
+ # @example Parsing from hex string
38
+ # parser = MIDIParser.new
39
+ # message = parser.parse("904040")
40
+ # # => #<MIDIEvents::NoteOn @channel=0, @note=64, @velocity=64>
21
41
  #
42
+ # @example Incremental parsing (piece by piece)
43
+ # parser = MIDIParser.new
44
+ # parser.parse("90") # => []
45
+ # parser.parse("40") # => []
46
+ # parser.parse("40") # => [#<MIDIEvents::NoteOn ...>]
47
+ #
48
+ # @example Using running status
49
+ # parser = MIDIParser.new
50
+ # parser.parse(0x90, 0x40, 0x40) # First note
51
+ # parser.parse(0x40, 0x50) # Second note using running status
52
+ #
53
+ # @example Checking the buffer
54
+ # parser = MIDIParser.new
55
+ # parser.parse("90", "40")
56
+ # parser.buffer # => ["9", "0", "4", "0"]
57
+ # parser.buffer_s # => "9040"
58
+ #
59
+ # @see Session The main parsing session class
60
+ # @see https://github.com/javier-sy/midi-events MIDIEvents library
61
+ #
62
+ # @api public
22
63
  module MIDIParser
23
- VERSION = '0.3.1'.freeze
24
-
25
- # Shortcut to a new parser session
64
+ # Creates a new parser session.
65
+ #
66
+ # This is a convenience method that instantiates a new {Session} object.
67
+ #
68
+ # @return [Session] a new parser session
69
+ #
70
+ # @example
71
+ # parser = MIDIParser.new
72
+ # parser.parse(0x90, 0x40, 0x40)
26
73
  def self.new(...)
27
74
  Session.new(...)
28
75
  end
data/midi-parser.gemspec CHANGED
@@ -1,6 +1,8 @@
1
+ require_relative 'lib/midi-parser/version'
2
+
1
3
  Gem::Specification.new do |s|
2
4
  s.name = 'midi-parser'
3
- s.version = '0.4.0'
5
+ s.version = MIDIParser::VERSION
4
6
  s.date = '2025-08-23'
5
7
  s.summary = 'A Ruby library for parsing MIDI Event Messages'
6
8
  s.description = 'MIDI Parser is a library for parsing MIDI Event Messages received from any MIDI device through other libraries such as midi-communications or unimidi'
@@ -12,17 +14,18 @@ Gem::Specification.new do |s|
12
14
 
13
15
  s.required_ruby_version = '>= 2.7'
14
16
 
15
- # TODO
16
- #s.metadata = {
17
- # "source_code_uri" => "https://",
18
- # "homepage_uri" => "",
19
- # "documentation_uri" => "",
20
- # "changelog_uri" => ""
21
- #}
17
+ s.metadata = {
18
+ 'homepage_uri' => s.homepage,
19
+ 'source_code_uri' => s.homepage,
20
+ 'documentation_uri' => 'https://www.rubydoc.info/gems/midi-parser'
21
+ }
22
22
 
23
- s.add_runtime_dependency 'midi-events', '~> 0.6'
23
+ s.add_runtime_dependency 'midi-events', '~> 0.7'
24
24
 
25
25
  s.add_development_dependency 'minitest', '~>5', '>= 5.14.4'
26
26
  s.add_development_dependency 'rake', '~>13', '>= 13.0.6'
27
27
  s.add_development_dependency 'shoulda-context', '~>2', '>= 2.0.0'
28
+ s.add_development_dependency 'yard', '~> 0.9'
29
+ s.add_development_dependency 'redcarpet', '~> 3.6'
30
+ s.add_development_dependency 'webrick', '~> 1.8'
28
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: midi-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Sánchez Yeste
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0.6'
18
+ version: '0.7'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0.6'
25
+ version: '0.7'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: minitest
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -83,6 +83,48 @@ dependencies:
83
83
  - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: 2.0.0
86
+ - !ruby/object:Gem::Dependency
87
+ name: yard
88
+ requirement: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: '0.9'
93
+ type: :development
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '0.9'
100
+ - !ruby/object:Gem::Dependency
101
+ name: redcarpet
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '3.6'
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '3.6'
114
+ - !ruby/object:Gem::Dependency
115
+ name: webrick
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: '1.8'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '1.8'
86
128
  description: MIDI Parser is a library for parsing MIDI Event Messages received from
87
129
  any MIDI device through other libraries such as midi-communications or unimidi
88
130
  email: javier.sy@gmail.com
@@ -91,6 +133,8 @@ extensions: []
91
133
  extra_rdoc_files: []
92
134
  files:
93
135
  - ".gitignore"
136
+ - ".version"
137
+ - ".yardopts"
94
138
  - Gemfile
95
139
  - LICENSE
96
140
  - LICENSE.nibbler
@@ -103,11 +147,15 @@ files:
103
147
  - lib/midi-parser/parser.rb
104
148
  - lib/midi-parser/session.rb
105
149
  - lib/midi-parser/type_conversion.rb
150
+ - lib/midi-parser/version.rb
106
151
  - midi-parser.gemspec
107
152
  homepage: https://github.com/javier-sy/midi-parser
108
153
  licenses:
109
154
  - LGPL-3.0-or-later
110
- metadata: {}
155
+ metadata:
156
+ homepage_uri: https://github.com/javier-sy/midi-parser
157
+ source_code_uri: https://github.com/javier-sy/midi-parser
158
+ documentation_uri: https://www.rubydoc.info/gems/midi-parser
111
159
  rdoc_options: []
112
160
  require_paths:
113
161
  - lib