amixer2019 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.
@@ -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