akane_sound 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 05e08e2a4733d384835cf4c9aef5dafd56f8d96d94cbfd9dcb2685ec7d175030
4
+ data.tar.gz: a93c37248fae9eb06677126d26cb793b1100ed8382a838dd80b8ae4a41e6d955
5
+ SHA512:
6
+ metadata.gz: 2c7e6570560976108332a884d657bcd1e7e9d85bfdbdf1a6df1b82fb1735228313890c5ca77b44a7186157d54dca5974c929024ac06a7960517fb8762b3aa791
7
+ data.tar.gz: 929437fe3cc9ceabeb4e766f12fbfae463eea3d0730348ac8ebdd5b145803f16f370f770ff91bbc992f420cb37c02a6b4ad11ad68c0894829bbdc6783cfe8cab
data/bin/akane_sound ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'akane_sound'
3
+ p __dir__
4
+ AkaneSound.new.run(ARGV)
Binary file
Binary file
Binary file
data/data/akane_bg.png ADDED
Binary file
data/data/config.yaml ADDED
@@ -0,0 +1,79 @@
1
+ ---
2
+ :window_w: 640
3
+ :window_h: 480
4
+ :sleep_timer: 60 # seconds without input until player goes into sleep. 0 disables the feature
5
+ :bg_img: 'data/akane_bg.png'
6
+ :font: 'data/NotoSansCJKjp-Regular.otf'
7
+ :font_big: 'data/NotoSansCJKjp-Bold.otf'
8
+ :font_size: 12
9
+ :line_height_mod: 1.5
10
+ :root_dir: 'FILE_PATH_ROOT'
11
+ :root_dir_debug: ''
12
+ :bg_type: 'normal' # 'none', 'normal', 'center', 'repeat'
13
+ :bg_color:
14
+ :red: 0
15
+ :green: 12
16
+ :blue: 27
17
+ :alpha: 225
18
+ :view_left_bg_color:
19
+ :red: 200
20
+ :green: 0
21
+ :blue: 20
22
+ :alpha: 0
23
+ :view_right_bg_color:
24
+ :red: 0
25
+ :green: 200
26
+ :blue: 20
27
+ :alpha: 0
28
+ :view_bottom_bg_color:
29
+ :red: 0
30
+ :green: 0
31
+ :blue: 20
32
+ :alpha: 255
33
+ :fg_color:
34
+ :red: 255
35
+ :green: 255
36
+ :blue: 255
37
+ :alpha: 255
38
+ :text_color:
39
+ :red: 255
40
+ :green: 255
41
+ :blue: 255
42
+ :alpha: 255
43
+ :text_color_selected:
44
+ :red: 200
45
+ :green: 255
46
+ :blue: 200
47
+ :alpha: 255
48
+ :text_color_status:
49
+ :red: 255
50
+ :green: 255
51
+ :blue: 255
52
+ :alpha: 255
53
+ :text_color_disabled:
54
+ :red: 120
55
+ :green: 120
56
+ :blue: 120
57
+ :alpha: 255
58
+ :volume_bar_color:
59
+ :red: 0
60
+ :green: 155
61
+ :blue: 80
62
+ :alpha: 255
63
+ :volume_bar_max_color:
64
+ :red: 155
65
+ :green: 0
66
+ :blue: 80
67
+ :alpha: 255
68
+ :prog_bar_color:
69
+ :red: 0
70
+ :green: 155
71
+ :blue: 155
72
+ :alpha: 255
73
+ :select_bg_color:
74
+ :red: 0
75
+ :green: 0
76
+ :blue: 0
77
+ :alpha: 200
78
+
79
+
@@ -0,0 +1,14 @@
1
+ ---
2
+ :pointer_left: 0
3
+ :pointer_right: 0
4
+ :page_left: 1
5
+ :page_right: 1
6
+ :volume: 50
7
+ :repeat: false
8
+ :next: false
9
+ :shuffle: false
10
+ :cur_dir: null
11
+ :dir_stack: null
12
+ :cur_pl: null
13
+ :focus_left: true
14
+ :focus_right: false
@@ -0,0 +1,214 @@
1
+ require "sdl2"
2
+ require "yaml"
3
+ require "akane_sound/module.util"
4
+
5
+ class Integer
6
+ def bit?(mask)
7
+ (self & mask) != 0
8
+ end
9
+ end
10
+
11
+ class AkaneSound
12
+ @@window = nil
13
+ @@win_w = 0
14
+ @@win_h = 0
15
+ @@renderer = nil
16
+ @@pref_dir = nil
17
+ @@screen = nil
18
+ @@sec_status = nil
19
+ @@sec_dir = nil
20
+ @@sec_pl = nil
21
+ @@sound = nil
22
+ @@config = Hash.new
23
+ @@save_data = Hash.new
24
+ @@cache = Hash.new
25
+ @@alert_flag = false
26
+ @@inp = nil
27
+ @@debug_flag = false
28
+ @@font = nil
29
+ @@font_bold = nil
30
+ @@music = nil
31
+ @@cmd_flag = false
32
+ @@sleep_flag = false
33
+ @@tstmp_now = nil
34
+ @@msg = nil
35
+ @@msg_rect = nil
36
+ def initialize
37
+ SDL2.init(SDL2::INIT_TIMER|SDL2::INIT_AUDIO|SDL2::INIT_VIDEO|
38
+ SDL2::INIT_EVENTS)
39
+ SDL2::TTF.init
40
+ SDL2::Mixer.init(SDL2::Mixer::INIT_FLAC|SDL2::Mixer::INIT_MODPLUG|
41
+ SDL2::Mixer::INIT_MP3|SDL2::Mixer::INIT_OGG)
42
+ #SDL2::Mixer.open(44100, SDL2::Mixer::DEFAULT_FORMAT, 2, 512)
43
+ #SDL2::Mixer.open(48000, SDL2::Mixer::DEFAULT_FORMAT, 2, 512)
44
+
45
+ Setup::init(ARGV[0])
46
+
47
+ @@window = SDL2::Window.create("akane_sound", SDL2::Window::POS_CENTERED,
48
+ SDL2::Window::POS_CENTERED,
49
+ @@config[:window_w], @@config[:window_h],
50
+ SDL2::Window::Flags::RESIZABLE)
51
+ @@win_w = @@window.size[0]
52
+ @@win_h = @@window.size[1]
53
+
54
+ @@renderer = @@window.create_renderer(-1, 0)
55
+ @@screen = SDL2::Rect[0, 0, @@config[:window_w], @@config[:window_h]]
56
+ @@font = SDL2::TTF.open(@@config[:font], @@config[:font_size])
57
+ @@font_bold = SDL2::TTF.open(@@config[:font_big], @@config[:font_size])
58
+ @frames = 0
59
+ @fps = 30
60
+ @tstmp_start = nil
61
+ @tstmp_last_input = SDL2.get_ticks
62
+
63
+ end
64
+
65
+ def run(argv)
66
+ bg = Background.new(@@config[:bg_img])
67
+ @@inp = Input.new
68
+ @@sound = Sound.new
69
+ @@sec_status = SectionStatus.new(0, @@config[:window_h]-80,
70
+ @@config[:window_w], 80,
71
+ @@config[:view_bottom_bg_color])
72
+ @@sec_dir = SectionDir.new(0, 0, @@config[:window_w]/2,
73
+ @@config[:window_h]-80,
74
+ @@config[:view_left_bg_color])
75
+ @@sec_pl = SectionPlaylist.new(@@config[:window_w]/2, 0,
76
+ @@config[:window_w]/2, @@config[:window_h]-80,
77
+ @@config[:view_right_bg_color])
78
+ loop do
79
+ update_fps
80
+ while event = SDL2::Event.poll
81
+ @@inp.handle_event(event)
82
+ end
83
+ @@inp.set_state
84
+ #update
85
+ @tstmp_last_input = SDL2.get_ticks if @@inp.any_key >= 1
86
+ if @@inp.quit >= 1
87
+ save
88
+ exit
89
+ end
90
+ unless @@sleep_flag
91
+ if @@inp.switch == 1
92
+ if @@sec_dir.focus_flag
93
+ @@sec_dir.focus_flag = false
94
+ @@sec_pl.focus_flag = true
95
+ else
96
+ @@sec_dir.focus_flag = true
97
+ @@sec_pl.focus_flag = false
98
+ end
99
+ @@sec_dir.update_element_strings
100
+ #@@sec_dir.set_page
101
+ @@sec_dir.update_element_positions
102
+ @@sec_pl.update_element_strings
103
+ #@@sec_pl.set_page
104
+ @@sec_pl.update_element_positions
105
+ end
106
+ if @@inp.clear == 1
107
+ @@sec_pl.clear
108
+ end
109
+ if @@inp.write == 1
110
+ write_playlist
111
+ end
112
+ end
113
+ if @@window.size[0] != @@win_w || @@window.size[1] != @@win_h
114
+ @@win_w = @@window.size[0]
115
+ @@win_h = @@window.size[1]
116
+ @@screen = SDL2::Rect[0, 0, @@win_w, @@win_h]
117
+ bg.update
118
+ @@sec_dir.update_size(0, 0, @@win_w/2, @@win_h-80)
119
+ @@sec_pl.update_size(@@win_w/2, 0, @@win_w/2, @@win_h-80)
120
+ @@sec_status.update_size(0, @@win_h-80, @@win_w, 80)
121
+ else
122
+ bg.update
123
+ end
124
+ @@sound.update
125
+ unless @@sleep_flag
126
+ @@sec_dir.update
127
+ @@sec_pl.update
128
+ end
129
+ @@sec_status.update
130
+ @@sleep_flag = false if @@inp.any_key >= 1
131
+ sleep_check
132
+ #draw
133
+ @@renderer.viewport = nil
134
+ bg.draw
135
+ unless @@sleep_flag
136
+ @@sec_dir.draw
137
+ @@sec_pl.draw
138
+ end
139
+ @@sec_status.draw
140
+ @@renderer.present
141
+ #GC.start
142
+ wait_fps
143
+ end
144
+ end
145
+
146
+ def set_status(str)
147
+ @@msg.destroy if @@msg
148
+ @@msg = @@font.render_blended('> '+str, Util.to_col_ar(
149
+ @@config[:text_color_status]))
150
+ @@msg_rect = SDL2::Rect[0, 0, @@msg.w,
151
+ @@msg.h]
152
+ end
153
+
154
+ private
155
+
156
+ def save
157
+ @@save_data[:volume] = @@sound.volume
158
+ @@save_data[:cur_pl] = @@sec_pl.playlist
159
+ File.open(@@pref_dir+'save_data.yaml', 'w') do |file|
160
+ file.write(@@save_data.to_yaml)
161
+ end
162
+ end
163
+
164
+ def write_playlist
165
+ unless Dir.exist?(File.join(@@config[:root_dir], "akane_playlists"))
166
+ Dir.mkdir(File.join(@@config[:root_dir], "akane_playlists"))
167
+ end
168
+ File.open(File.join(@@config[:root_dir], "akane_playlists",
169
+ SDL2.get_ticks.to_s+'.apl.yaml'), 'w') do |file|
170
+ file.write(@@sec_pl.playlist.to_yaml)
171
+ end
172
+ end
173
+
174
+ def sleep_check
175
+ @@tstmp_now = SDL2.get_ticks
176
+ if @@config[:sleep_timer] > 0
177
+ if (@@tstmp_now-@tstmp_last_input) >= @@config[:sleep_timer]*1000
178
+ @@sleep_flag = true
179
+ end
180
+ end
181
+ end
182
+
183
+ def update_fps
184
+ if @frames == 0
185
+ @tstmp_start = SDL2.get_ticks
186
+ end
187
+ if @frames == @fps
188
+ t = SDL2.get_ticks
189
+ fps = 1000.to_f / ((t - @tstmp_start) / @fps.to_f)
190
+ @frames = 0
191
+ @tstmp_start = SDL2.get_ticks
192
+ end
193
+ @frames += 1
194
+ end
195
+
196
+ def wait_fps
197
+ took_time = SDL2.get_ticks - @tstmp_start
198
+ wait_time = @frames * 1000 / @fps - took_time
199
+ if wait_time > 0
200
+ SDL2.delay(wait_time)
201
+ end
202
+ end
203
+ end
204
+
205
+ require "akane_sound/class.sound"
206
+ require "akane_sound/class.element"
207
+ require "akane_sound/class.setup"
208
+ require "akane_sound/class.background"
209
+ require "akane_sound/class.input"
210
+ require "akane_sound/class.view_base"
211
+ require "akane_sound/class.upper_section_base"
212
+ require "akane_sound/class.section_dir"
213
+ require "akane_sound/class.section_playlist"
214
+ require "akane_sound/class.section_status"
@@ -0,0 +1,66 @@
1
+ class Background < AkaneSound
2
+ @sprite = nil
3
+ @pos = nil
4
+ def initialize(filepath)
5
+ surface = SDL2::Surface.load(filepath)
6
+ @sprite = @@renderer.create_texture_from(surface)
7
+ surface.destroy
8
+ updt
9
+ end
10
+
11
+ def update
12
+ updt
13
+ end
14
+
15
+ def draw
16
+ unless @@config[:bg_type] == 'none'
17
+ if @@config[:bg_type] == 'repeat'
18
+ @pos.each do |pos|
19
+ @@renderer.copy(@sprite, nil, pos)
20
+ end
21
+ else
22
+ @@renderer.copy(@sprite, nil, @pos)
23
+ end
24
+ end
25
+ # overlay
26
+ unless @@sleep_flag
27
+ @@renderer.draw_blend_mode = SDL2::BlendMode::BLEND
28
+ @@renderer.draw_color = [@@config[:bg_color][:red],
29
+ @@config[:bg_color][:green],
30
+ @@config[:bg_color][:blue],
31
+ @@config[:bg_color][:alpha]]
32
+ @@renderer.fill_rect(@@screen)
33
+ end
34
+ end
35
+
36
+ private
37
+
38
+ def updt
39
+ case @@config[:bg_type]
40
+ when 'normal'
41
+ @pos = SDL2::Rect[0, 0, @sprite.w, @sprite.h]
42
+ when 'none'
43
+ @pos = nil
44
+ when 'center'
45
+ x = @@win_w/2-@sprite.w/2
46
+ y = @@win_h/2-@sprite.h/2
47
+ @pos = SDL2::Rect[x, y, @sprite.w, @sprite.h]
48
+ when 'repeat'
49
+ @pos = Array.new
50
+ x = y = 0
51
+ while y < @@win_h
52
+ while x < @@win_w
53
+ @pos.push(SDL2::Rect[x, y, @sprite.w, @sprite.h])
54
+ x += @sprite.w
55
+ end
56
+ y += @sprite.h
57
+ x = 0
58
+ end
59
+ when 'fit'
60
+ when 'stretch'
61
+ @pos = nil
62
+ when 'scale'
63
+ end
64
+ end
65
+ end
66
+
@@ -0,0 +1,13 @@
1
+ class Element
2
+ attr_accessor :txt, :dur, :txt_src, :txt_dst, :dur_dst, :bg_rect, :txt_bld,
3
+ :txt_sel, :txt_sel_bld
4
+ def initialize
5
+ @txt = nil
6
+ @dur = nil
7
+ end
8
+
9
+ def destroy
10
+ @txt.destroy if @txt
11
+ @dur.destroy if @dur
12
+ end
13
+ end
@@ -0,0 +1,356 @@
1
+ class Input < AkaneSound
2
+ attr_accessor :up, :down, :pageup, :pagedown, :quit, :accept,
3
+ :toggle_shuffle, :toggle_repeat, :toggle_next, :toggle_mute,
4
+ :vol_up, :vol_down, :stop, :pause, :next, :refresh, :cmd, :any_key,
5
+ :last, :first, :prev, :append, :append_r, :switch, :clear, :write
6
+ def initialize
7
+ @tmp_up, @up = 0
8
+ @tmp_down, @down = 0
9
+ @tmp_last, @last = 0
10
+ @tmp_first, @first = 0
11
+ @tmp_pageup, @pageup = 0
12
+ @tmp_pagedown, @pagedown = 0
13
+ @tmp_quit, @quit = 0
14
+ @tmp_accept, @accept = 0
15
+ @tmp_clear, @clear = 0
16
+ @tmp_toggle_shuffle, @toggle_shuffle = 0
17
+ @tmp_toggle_repeat, @toggle_repeat = 0
18
+ @tmp_toggle_next, @toggle_next = 0
19
+ @tmp_toggle_mute, @toggle_mute = 0
20
+ @tmp_vol_up, @vol_up = 0
21
+ @tmp_vol_down, @vol_down = 0
22
+ @tmp_stop, @stop = 0
23
+ @tmp_pause, @pause = 0
24
+ @tmp_next, @next = 0
25
+ @tmp_prev, @prev = 0
26
+ @tmp_append, @append = 0
27
+ @tmp_append_r, @append_r = 0
28
+ @tmp_refresh, @refresh = 0
29
+ @tmp_cmd, @cmd = 0
30
+ @tmp_switch, @switch = 0
31
+ @tmp_write, @write = 0
32
+ @tmp_any_key, @any_key = 0
33
+ end
34
+
35
+ def handle_event(event)
36
+ case event
37
+ when SDL2::Event::Quit
38
+ @quit = 1
39
+ when SDL2::Event::KeyDown
40
+ @tmp_any_key = 1
41
+ if event.sym == SDL2::Key::TAB
42
+ @tmp_switch = 1
43
+ end
44
+ if event.sym == SDL2::Key::ESCAPE
45
+ @tmp_quit = 1
46
+ end
47
+ if event.sym == SDL2::Key::RETURN
48
+ @tmp_accept = 1
49
+ end
50
+ if event.sym == SDL2::Key::SPACE
51
+ @tmp_pause = 1
52
+ end
53
+
54
+ if event.sym == SDL2::Key::J
55
+ @tmp_down = 1
56
+ end
57
+ if event.sym == SDL2::Key::K
58
+ @tmp_up = 1
59
+ end
60
+ if event.sym == SDL2::Key::W
61
+ @tmp_write = 1
62
+ end
63
+
64
+ if event.sym == SDL2::Key::PAGEDOWN
65
+ @tmp_pagedown = 1
66
+ end
67
+ if event.sym == SDL2::Key::PAGEUP
68
+ @tmp_pageup = 1
69
+ end
70
+ if event.sym == SDL2::Key::P
71
+ @tmp_prev = 1
72
+ end
73
+
74
+ if event.sym == SDL2::Key::G
75
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
76
+ @tmp_last = 1
77
+ else
78
+ @tmp_first = 1
79
+ end
80
+ end
81
+
82
+ if event.sym == SDL2::Key::S
83
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
84
+ @tmp_toggle_shuffle = 1
85
+ else
86
+ @tmp_stop = 1
87
+ end
88
+ end
89
+
90
+ if event.sym == SDL2::Key::N
91
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
92
+ @tmp_toggle_next = 1
93
+ else
94
+ @tmp_next = 1
95
+ end
96
+ end
97
+
98
+ if event.sym == SDL2::Key::R
99
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
100
+ @tmp_toggle_repeat = 1
101
+ else
102
+ @tmp_refresh = 1
103
+ end
104
+ end
105
+
106
+ if event.sym == SDL2::Key::A
107
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
108
+ @tmp_append_r = 1
109
+ else
110
+ @tmp_append = 1
111
+ end
112
+ end
113
+
114
+ if event.sym == SDL2::Key::C
115
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
116
+ @tmp_clear = 1
117
+ end
118
+ end
119
+
120
+ if event.sym == SDL2::Key::PERIOD
121
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
122
+ @tmp_vol_up = 1
123
+ end
124
+ end
125
+ if event.sym == SDL2::Key::VOLUMEUP
126
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
127
+ @tmp_vol_up = 1
128
+ end
129
+ end
130
+
131
+ if event.sym == SDL2::Key::COMMA
132
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
133
+ @tmp_vol_down = 1
134
+ end
135
+ end
136
+
137
+ if event.sym == SDL2::Key::SEMICOLON
138
+ if event.mod.bit?(SDL2::Key::Mod::SHIFT)
139
+ @tmp_cmd = 1
140
+ end
141
+ end
142
+ when SDL2::Event::KeyUp
143
+ @tmp_any_key = 0
144
+ if event.sym == SDL2::Key::TAB
145
+ @tmp_switch = 0
146
+ end
147
+ if event.sym == SDL2::Key::ESCAPE
148
+ @tmp_quit = 0
149
+ end
150
+ if event.sym == SDL2::Key::RETURN
151
+ @tmp_accept = 0
152
+ end
153
+ if event.sym == SDL2::Key::SPACE
154
+ @tmp_pause = 0
155
+ end
156
+
157
+ if event.sym == SDL2::Key::J
158
+ @tmp_down = 0
159
+ end
160
+ if event.sym == SDL2::Key::K
161
+ @tmp_up = 0
162
+ end
163
+ if event.sym == SDL2::Key::W
164
+ @tmp_write = 0
165
+ end
166
+
167
+ if event.sym == SDL2::Key::PAGEDOWN
168
+ @tmp_pagedown = 0
169
+ end
170
+ if event.sym == SDL2::Key::P
171
+ @tmp_prev = 0
172
+ end
173
+ if event.sym == SDL2::Key::PAGEUP
174
+ @tmp_pageup = 0
175
+ end
176
+
177
+ if event.sym == SDL2::Key::G
178
+ @tmp_last = 0
179
+ @tmp_first = 0
180
+ end
181
+
182
+ if event.sym == SDL2::Key::S
183
+ @tmp_toggle_shuffle = 0
184
+ @tmp_stop = 0
185
+ end
186
+
187
+ if event.sym == SDL2::Key::N
188
+ @tmp_toggle_next = 0
189
+ @tmp_next = 0
190
+ end
191
+
192
+ if event.sym == SDL2::Key::R
193
+ @tmp_toggle_repeat = 0
194
+ @tmp_refresh = 0
195
+ end
196
+
197
+ if event.sym == SDL2::Key::A
198
+ @tmp_append = 0
199
+ @tmp_append_r = 0
200
+ end
201
+
202
+ if event.sym == SDL2::Key::C
203
+ @tmp_clear = 0
204
+ end
205
+
206
+ if event.sym == SDL2::Key::PERIOD
207
+ @tmp_vol_up = 0
208
+ end
209
+ if event.sym == SDL2::Key::VOLUMEUP
210
+ @tmp_vol_up = 0
211
+ end
212
+
213
+ if event.sym == SDL2::Key::COMMA
214
+ @tmp_vol_down = 0
215
+ end
216
+
217
+ if event.sym == SDL2::Key::SEMICOLON
218
+ @tmp_cmd = 0
219
+ end
220
+ end
221
+ end
222
+
223
+ def set_state
224
+ if @tmp_any_key == 1
225
+ @any_key += 1
226
+ else
227
+ @any_key = 0
228
+ end
229
+ if @tmp_switch == 1
230
+ @switch += 1
231
+ else
232
+ @switch = 0
233
+ end
234
+ if @tmp_quit == 1
235
+ @quit += 1
236
+ else
237
+ @quit = 0
238
+ end
239
+ if @tmp_write == 1
240
+ @write += 1
241
+ else
242
+ @write = 0
243
+ end
244
+ if @tmp_up == 1
245
+ @up += 1
246
+ else
247
+ @up = 0
248
+ end
249
+ if @tmp_down == 1
250
+ @down += 1
251
+ else
252
+ @down = 0
253
+ end
254
+ if @tmp_last == 1
255
+ @last += 1
256
+ else
257
+ @last = 0
258
+ end
259
+ if @tmp_first == 1
260
+ @first += 1
261
+ else
262
+ @first = 0
263
+ end
264
+ if @tmp_pageup == 1
265
+ @pageup += 1
266
+ else
267
+ @pageup = 0
268
+ end
269
+ if @tmp_pagedown == 1
270
+ @pagedown += 1
271
+ else
272
+ @pagedown = 0
273
+ end
274
+ if @tmp_accept == 1
275
+ @accept += 1
276
+ else
277
+ @accept = 0
278
+ end
279
+ if @tmp_pause == 1
280
+ @pause += 1
281
+ else
282
+ @pause = 0
283
+ end
284
+ if @tmp_stop == 1
285
+ @stop += 1
286
+ else
287
+ @stop = 0
288
+ end
289
+ if @tmp_toggle_shuffle == 1
290
+ @toggle_shuffle += 1
291
+ else
292
+ @toggle_shuffle = 0
293
+ end
294
+ if @tmp_toggle_repeat == 1
295
+ @toggle_repeat += 1
296
+ else
297
+ @toggle_repeat = 0
298
+ end
299
+ if @tmp_toggle_next == 1
300
+ @toggle_next += 1
301
+ else
302
+ @toggle_next = 0
303
+ end
304
+ if @tmp_toggle_mute == 1
305
+ @toggle_mute += 1
306
+ else
307
+ @toggle_mute = 0
308
+ end
309
+ if @tmp_vol_up == 1
310
+ @vol_up += 1
311
+ else
312
+ @vol_up = 0
313
+ end
314
+ if @tmp_vol_down == 1
315
+ @vol_down += 1
316
+ else
317
+ @vol_down = 0
318
+ end
319
+ if @tmp_next == 1
320
+ @next += 1
321
+ else
322
+ @next = 0
323
+ end
324
+ if @tmp_prev == 1
325
+ @prev += 1
326
+ else
327
+ @prev = 0
328
+ end
329
+ if @tmp_append == 1
330
+ @append += 1
331
+ else
332
+ @append = 0
333
+ end
334
+ if @tmp_clear == 1
335
+ @clear += 1
336
+ else
337
+ @clear = 0
338
+ end
339
+ if @tmp_append_r == 1
340
+ @append_r += 1
341
+ else
342
+ @append_r = 0
343
+ end
344
+ if @tmp_refresh == 1
345
+ @refresh += 1
346
+ else
347
+ @refresh = 0
348
+ end
349
+ if @tmp_cmd == 1
350
+ @cmd += 1
351
+ else
352
+ @cmd = 0
353
+ end
354
+ end
355
+
356
+ end