ramekin 0.1.3 → 0.1.5

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
  SHA256:
3
- metadata.gz: 71e89ff9027d3342649de107de02ed46c622a95a9940fe94bb0ece781ac18790
4
- data.tar.gz: 1d3b3a89ab873ab15e55a000912791ee7c232a53d462377803fdd8f9ef80e4e8
3
+ metadata.gz: e86782ed3b91b2d539e25a9c2a43887ad60e0f978659fc0d993a9c697980e551
4
+ data.tar.gz: 8065e561cd4a385b97914e8874b8302c427bfd38c7fd4976d2d3698db3292af2
5
5
  SHA512:
6
- metadata.gz: e716543bbac8f7ae0fa72e5504fd3fad883b283b4adc3085f0de7bb5220bf1533dac433af06527d949a8acdb46a25beffa20334cf72bbb208ff2d2408a225fd1
7
- data.tar.gz: 1cc81d357db65d9be8e5f54677ff3117c336656e1ee40ee53183b49f7ceee9c483d05cafdd190bc783dcc65d687af098f80ee7e54378c6c48eb2d62ebbbc64b7
6
+ metadata.gz: d379d84449a16292615ec3313d4e030da6b90f8c13817d7322aa9ecfb3aa2614b1c713363fa51045f6d060e3d07c3b8b619c024676a08e06de0f05193e14de45
7
+ data.tar.gz: 24e1619066857f8378cdf5bebd36f9d0b4580d0f6d71d4469849990dd347f3fbb9094ec811fb0fe16c77b679e8a32da0b64f90f33d80058da08908501b87cab7
data/README.md CHANGED
@@ -73,6 +73,9 @@ ramekin pack [flags]
73
73
  search for BRR filenames.
74
74
  --list [text]
75
75
  list all samples in packs matching [text].
76
+ --list-smw
77
+ list the builtin instruments from SMW that can be used
78
+ without a pack.
76
79
 
77
80
  ramekin setup [flags]
78
81
  flags:
data/lib/ramekin/cli.rb CHANGED
@@ -60,6 +60,9 @@ module Ramekin
60
60
  $stderr.puts " search for BRR filenames."
61
61
  $stderr.puts " --list [text]"
62
62
  $stderr.puts " list all samples in packs matching [text]."
63
+ $stderr.puts " --list-smw"
64
+ $stderr.puts " list the builtin instruments from SMW that can be used"
65
+ $stderr.puts " without a pack."
63
66
  $stderr.puts ""
64
67
  $stderr.puts "ramekin setup [flags]"
65
68
  $stderr.puts " flags:"
@@ -260,6 +263,8 @@ module Ramekin
260
263
  @search = nil
261
264
  while (h = argv.shift)
262
265
  case h
266
+ when '--list-smw'
267
+ @list_smw = true
263
268
  when '--update'
264
269
  @update = true
265
270
  when '--search'
@@ -271,6 +276,14 @@ module Ramekin
271
276
  end
272
277
  end
273
278
 
279
+ if @list_smw
280
+ width = SMW::BUILTINS.keys.map(&:size).max
281
+ $stderr.puts ";;; List of builtin instruments from SMW: ;;;"
282
+ SMW::BUILTINS.each do |name, id|
283
+ puts "@#{name.ljust(width)} ; @#{id}"
284
+ end
285
+ end
286
+
274
287
  if @update
275
288
  $stderr.puts "=== updating packages... ==="
276
289
  SamplePack.download_all!
data/lib/ramekin/meta.rb CHANGED
@@ -78,9 +78,13 @@ module Ramekin
78
78
  end
79
79
  end
80
80
 
81
+ def done?
82
+ @elements.empty? && @peek.nil?
83
+ end
84
+
81
85
  def parse
82
86
  loop do
83
- break if @elements.empty?
87
+ break if done?
84
88
  next!
85
89
 
86
90
  case @current.type
@@ -88,7 +92,8 @@ module Ramekin
88
92
  when :amk then @amk = @current
89
93
  when :option then @options[@current.value] = true
90
94
  when :w then @volume = @current
91
- when :t, :bpm then @tempo = @current; @t_with_divisor = nil
95
+ when :t, :bpm then
96
+ @tempo = @current; @t_with_divisor = nil
92
97
  else
93
98
  error! 'invalid token in header'
94
99
  end
@@ -57,19 +57,15 @@ module Ramekin
57
57
  end
58
58
  end
59
59
 
60
- def check_length!(t, div)
61
- if t % div != 0
60
+ def length_amk(div)
61
+ if ticks % div != 0
62
62
  divisible = div == 2 ? 'even' : "divisible by #{div}"
63
63
  error!("too fast! tick count must be #{divisible} at this tempo", el: self)
64
64
  end
65
- end
66
-
67
- def length_amk(div)
68
- check_length!(ticks, div)
69
65
 
70
66
  t = ticks / div
71
67
  # we use l16
72
- # return '' if t == 12
68
+ return '' if t == 12
73
69
  KNOWN_LENGTHS.fetch(t) { "=#{t}" }
74
70
  end
75
71
 
@@ -103,15 +99,13 @@ module Ramekin
103
99
  end
104
100
 
105
101
  def ticks
106
- if @extensions.empty? && default_length.nil?
107
- return 192 / 16
108
- end
109
-
110
102
  exts = @extensions
111
- exts = [default_length] if exts.empty?
103
+ default = default_length&.value || '16'
104
+ exts = [default] if exts.empty?
112
105
 
113
106
  base = exts.map do |ext|
114
107
  ext = ext.value if Token === ext
108
+ ext ||= default
115
109
 
116
110
  case ext
117
111
  when /\A=(\d+)\z/ then $1.to_i
@@ -23,31 +23,9 @@ module Ramekin
23
23
  @instrument_index[i.to_s] = i
24
24
  end
25
25
 
26
- @instrument_index['smwflute'] = 0
27
- @instrument_index['smwstring'] = 1
28
- @instrument_index['smwglock'] = 2
29
- @instrument_index['smwmarimba'] = 3
30
- @instrument_index['smwcello'] = 4
31
- @instrument_index['smwsteelguitar'] = 5
32
- @instrument_index['smwtrumpet'] = 6
33
- @instrument_index['smwsteeldrum'] = 7
34
- @instrument_index['smwacousticbass'] = 8
35
- @instrument_index['smwpiano'] = 9
36
- @instrument_index['smwsnare'] = 10
37
- @instrument_index['smwstring2'] = 11
38
- @instrument_index['smwbongo'] = 12
39
- @instrument_index['smwep'] = 13
40
- @instrument_index['smwslapbass'] = 14
41
- @instrument_index['smworchhit'] = 15
42
- @instrument_index['smwharp'] = 16
43
- @instrument_index['smwdistguitar'] = 17
44
- @instrument_index['smwkick'] = 21
45
- @instrument_index['smwhat'] = 22
46
- @instrument_index['smwshaker'] = 23
47
- @instrument_index['smwwoodblock'] = 24
48
- @instrument_index['smwhiwoodblock'] = 25
49
- @instrument_index['smwdrums'] = 28
50
- @instrument_index['smwpower'] = 29
26
+ SMW::BUILTINS.each do |name, id|
27
+ @instrument_index[name] = id
28
+ end
51
29
 
52
30
  # optional default octaves for instrument switching
53
31
  @default_octaves = Hash.new(4)
@@ -297,7 +275,13 @@ module Ramekin
297
275
 
298
276
  ticks = sprintf("%02x", note.ticks)
299
277
  yield "$dd$#{ticks}$#{ticks}#{note.octave_amk}#{note.note.value}"
300
- yield "^=#{note.ticks}"
278
+
279
+ case peek
280
+ when NoteEvent
281
+ peek.extensions.concat(note.extensions)
282
+ else
283
+ yield "^=#{note.ticks}"
284
+ end
301
285
 
302
286
  @octave = note.octave
303
287
  when 'legato'
@@ -0,0 +1,31 @@
1
+ module Ramekin
2
+ module SMW
3
+ BUILTINS = {
4
+ 'smwflute' => 0,
5
+ 'smwstring' => 1,
6
+ 'smwglock' => 2,
7
+ 'smwmarimba' => 3,
8
+ 'smwcello' => 4,
9
+ 'smwsteelguitar' => 5,
10
+ 'smwtrumpet' => 6,
11
+ 'smwsteeldrum' => 7,
12
+ 'smwacousticbass' => 8,
13
+ 'smwpiano' => 9,
14
+ 'smwsnare' => 10,
15
+ 'smwstring2' => 11,
16
+ 'smwbongo' => 12,
17
+ 'smwep' => 13,
18
+ 'smwslapbass' => 14,
19
+ 'smworchhit' => 15,
20
+ 'smwharp' => 16,
21
+ 'smwdistguitar' => 17,
22
+ 'smwkick' => 21,
23
+ 'smwhat' => 22,
24
+ 'smwshaker' => 23,
25
+ 'smwwoodblock' => 24,
26
+ 'smwhiwoodblock' => 25,
27
+ 'smwdrums' => 28,
28
+ 'smwpower' => 29,
29
+ }
30
+ end
31
+ end
data/lib/ramekin.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require_relative 'ramekin/util'
4
+ require_relative 'ramekin/smw'
4
5
  require_relative 'ramekin/config'
5
6
  require_relative 'ramekin/amk_setup'
6
7
  require_relative 'ramekin/spc_player'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ramekin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - jneen
8
- autorequire:
9
8
  bindir: gembin
10
9
  cert_chain: []
11
- date: 2025-03-04 00:00:00.000000000 Z
10
+ date: 2025-03-05 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: strscan
@@ -66,7 +65,6 @@ dependencies:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
67
  version: '0.6'
69
- description:
70
68
  email: jneen@jneen.net
71
69
  executables:
72
70
  - ramekin
@@ -92,6 +90,7 @@ files:
92
90
  - lib/ramekin/processor.rb
93
91
  - lib/ramekin/renderer.rb
94
92
  - lib/ramekin/sample_pack.rb
93
+ - lib/ramekin/smw.rb
95
94
  - lib/ramekin/spc_player.rb
96
95
  - lib/ramekin/tokenizer.rb
97
96
  - lib/ramekin/util.rb
@@ -101,7 +100,6 @@ licenses:
101
100
  - GPL-3.0-only
102
101
  metadata:
103
102
  source_code_uri: https://codeberg.org/jneen/ramekin
104
- post_install_message:
105
103
  rdoc_options: []
106
104
  require_paths:
107
105
  - lib
@@ -116,8 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
114
  - !ruby/object:Gem::Version
117
115
  version: '0'
118
116
  requirements: []
119
- rubygems_version: 3.5.11
120
- signing_key:
117
+ rubygems_version: 3.6.5
121
118
  specification_version: 4
122
119
  summary: A tool for making SMW music with AddmusicK
123
120
  test_files: []