amixer2019 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5dfdb9a4e50a13b93c71f65cf4d3c76a616d508dafa0c422c5b918a2b24d20e9
4
+ data.tar.gz: c9de4099a34ec821f4a6bc9c738031997a07a340cbab679a2fd8001131e3d1b7
5
+ SHA512:
6
+ metadata.gz: 26d66f01e2b2f8e39b4419bfcff9c1b72524500eebd519aac153161d707a97f141439bc97330a3cc73fd0f284c97195beee20905435d7801e20b359180801fc7
7
+ data.tar.gz: '085ab40ef1498ca606d51f05f73ac563169a88bfdf00380c4422a643250546d04bcc86596ddbb5ed88adff495a4296b6eb0a29291051309e7c7608cb82535484'
Binary file
Binary file
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: amixer2019.rb
4
+ # description: A wrapper around the command-line program amixer.
5
+
6
+
7
+ class AMixer2019
8
+
9
+ def initialize(notch: 5, fade_interval: 0.15)
10
+
11
+ @notch, @fade_interval = notch, fade_interval
12
+ @control = `amixer scontrols`[/(?<=')[^']+/]
13
+ query(`amixer get '#{@control}'`)
14
+
15
+ end
16
+
17
+ # fades the volume up or down to the volume percentage
18
+
19
+ def fade(raw_val, interval: @fade_interval)
20
+
21
+ val = raw_val.to_i
22
+ return 'volume must be between 0 and 100' if val < 0 or val > 100
23
+
24
+ @volume.method(val > @volume ? :upto : :downto).call(val.to_i).each do |x|
25
+ sleep interval; setvol(x.to_s + '%')
26
+ end
27
+
28
+ @volume
29
+
30
+ end
31
+
32
+ def mute() sset 'mute' end
33
+ def muted?() @muted end
34
+ def unmute() sset 'unmute' end
35
+ def vol_down() setvol(-@notch) end
36
+ def vol_up() setvol(+@notch) end
37
+ def volume() @volume end
38
+ def volume=(val) setvol(val) end
39
+
40
+ alias vol volume
41
+ alias vol= volume=
42
+
43
+ private
44
+
45
+ def sset(switch)
46
+ query(`amixer sset '#{@control}' #{switch}`)
47
+ end
48
+
49
+ def setvol(val)
50
+
51
+ return sset(val) if val.is_a?(String) and val =~ /%$/
52
+
53
+ if val.to_i + @volume >= 0 and val.to_i + @volume <= 100 then
54
+ sset("%s%%" % [@volume + val.to_i])
55
+ else
56
+ @volume
57
+ end
58
+
59
+ end
60
+
61
+ def query(r)
62
+
63
+ h = r.match(/(?<volume>\d+)%\] \[(?<toggle>on|off)\]/)
64
+ @volume = h[:volume].to_i
65
+ @muted = h[:toggle] == 'off'
66
+
67
+ end
68
+
69
+ end
70
+
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: amixer2019
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwMjEyMjA1NjQxWhcN
15
+ MjAwMjEyMjA1NjQxWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCj2ebI
17
+ aXA2kNyU35wvUgvRDbPtlFB6wUi5z0NBjLh9RsLZlQ17XygDRRNP6RVA8KD5q/Te
18
+ x2hMhG4LQure4O2bzDJFceC2H4m5GsucgskbAbs+iNevWC4acbTFcq4FUoL5ZfWD
19
+ pud2dltQWEXEpQr9nLCAfnM0l8LnXhmH3jG3/ufzo7bLZePeCHswrOWQz9ZyyBXr
20
+ zToeKT8tJ9irfEfLO8KTD9NGI7k/MXb80WZ3OJRMbw8UIFC6KfA6sYHXY7i0ILe+
21
+ mMVZiC9Ph2WtHOnRabV5jov2mf2sDGkqAHOPvxMBjOIaxOJkPHAl0eB7yRV8cqPK
22
+ iEwTaA85Y/+EkwWVtxRp3MdQVWP/yAP/IlBySrnZJbqYqHLypd60v5HhqNRiNR+E
23
+ aveP8TdP+UKAAqnUpntx6yC9BcYMWLyY+y4CvIzoY0sByvJaq/1xvDWM0iK6r9rW
24
+ 93FbUziElVORatR+LB4icRQilSoX24DsVqUObS+SLlqdP60B5jY3GgDvEWkCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU0aZMYevC
26
+ r0Yc+lJx+fwvW5loQL0wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAcJ5PMyass59t81ILbmjN4UUvCFzXNvDxBTWBB4jB
29
+ PMoAqUdMqUf2F/FGLXnJf5GQOvR5dBmJs6XeLlkjda2gMM/iAgwZKCc8HQblFDM3
30
+ LHOVdlC1btwrcnsCtLBnLkxhF4z55zl+dyNl7nbLpf61MOyaaXr5DmPNtIjT4jzO
31
+ 4i83tLB2jb3+N3zXz62agkuc17Anis3q+RU1NnjRvVCcsQv+P2Fq21ND+6OBLc1a
32
+ mfpKqMSV6J9PcI/apADAympcQOmG500hHZH8baeq9AmE71WNd2S42EaGTspil+hX
33
+ o5jSpZbUmiIF9bZ1ystEK3YybOTaaqiWTITmy1onwGE3bXyTod0hRjgCanDwux/b
34
+ Duf82k9CokSrSxNXNCiLCTH/pOn7vx2bijOdeCrfRYswMZ8mUCaVnXeOIVEVUn43
35
+ xrnDkXQ5UbsMkpilAR42JzG+WOWh62UFBl2t20injcEiEa+yyKBuBqK8JRjUfoZi
36
+ YQVkc3AYB+yLRWF745GX8hKx
37
+ -----END CERTIFICATE-----
38
+ date: 2019-02-12 00:00:00.000000000 Z
39
+ dependencies: []
40
+ description:
41
+ email: james@jamesrobertson.eu
42
+ executables: []
43
+ extensions: []
44
+ extra_rdoc_files: []
45
+ files:
46
+ - lib/amixer2019.rb
47
+ homepage: https://github.com/jrobertson/amixer2019
48
+ licenses:
49
+ - MIT
50
+ metadata: {}
51
+ post_install_message:
52
+ rdoc_options: []
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ requirements: []
66
+ rubygems_version: 3.0.2
67
+ signing_key:
68
+ specification_version: 4
69
+ summary: 'A wrapper around the command-line program amixer. #amixer #alsamixer #raspberrypi'
70
+ test_files: []
Binary file