easyaudio_utils 0.3.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f50a6a89e8841dc34323a1c21a449400cae0caacb8671328b4bf8b269a4a2a37
4
- data.tar.gz: f7bf6bdf7dd187a738916520bdc42dcba2a54be2c3101af89c11000d33598e16
3
+ metadata.gz: af0fb8aff16634f67b0292615d7f41516fe5fdacef472b2252f515a71fbebad9
4
+ data.tar.gz: ce8e45bbe03e71a65217063f433d18f9483bade9ba72c46e9ff7347b7245feef
5
5
  SHA512:
6
- metadata.gz: 3d08657f0b811b0761bf95d8f6d81109a6dbdbb9c370a497dc4770716e91d4694a6e1a4f491d828c44be4977b2a1baf3bdbae035c54a8b5e7defee4896cf2a94
7
- data.tar.gz: 7cff7250a5b9b2ff73bd94578d6423e73b6206caa62cd29d26d960770afeac0024e602c6defd81cdf90a0b89e88f4a6c194689a4b28330b58497fea0fb08a026
6
+ metadata.gz: 993093aea65b8470910df4ca9a179c32b2f5b47e647088e0d4a5b34c42b8d953d912243be2c1629cdaf6c42d8928fc7d8d9ad006dab3632c56b0c7cd44e969be
7
+ data.tar.gz: c6d02059469db6fe47d1a9a195902e9d13db84e11ac240a5bed3fd393ab984df480b8f1841fdb85a7d7d2e919d8fcdbc7fc030f13e0321da9580f76ddf1a603e
checksums.yaml.gz.sig CHANGED
Binary file
@@ -9,7 +9,7 @@ require 'ogginfo'
9
9
  # `apt-get install mplayer sox vorbis-tools ffmpeg
10
10
 
11
11
  # installing youtube-dl:
12
- #
12
+ #
13
13
  # `sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/bin/youtube-dl`
14
14
  #
15
15
  # `sudo chmod a+rx /usr/bin/youtube-dl`
@@ -20,7 +20,7 @@ require 'ogginfo'
20
20
 
21
21
  module CommandHelper
22
22
  using ColouredText
23
-
23
+
24
24
  def list(a=@commands)
25
25
 
26
26
  format_command = ->(s) do
@@ -48,16 +48,17 @@ class EasyAudioUtils
48
48
  * concat_files # stiches wav files together
49
49
  * convert # converts a file from 1 format to another #wav #ogg
50
50
  * cut # cuts the audio into a new file as defined by start time and duration
51
- * duration # return the duration for a wav or ogg
51
+ * duration # return the duration for a wav or ogg
52
52
  * generate_silence # generates silence in a wav file
53
53
  * play # plays using mplayer
54
54
  * record # alias for capture_desktop
55
55
  * split # split the wav file by silence
56
+ * volume # increase or decrease (0.50 is equal to 50%)
56
57
  * youtube_dl # downloads audio in Ogg (opus) format
57
58
  ".strip.lines.map {|x| x[/(?<=\* ).*/]}.sort
58
59
 
59
60
 
60
- def initialize(audio_in=nil, audio_out='audio.wav', out: audio_out,
61
+ def initialize(audio_in=nil, audio_out='audio.wav', out: audio_out,
61
62
  working_dir: '/tmp')
62
63
 
63
64
  @file_in, @file_out, @working_dir = audio_in, out, working_dir
@@ -69,36 +70,44 @@ class EasyAudioUtils
69
70
  #
70
71
  def capture(show: false)
71
72
 
72
- command = "rec -c 1 -r 8000 -t alsa default #{@file_out} " +
73
+ command = "rec -c 1 -r 8000 -t alsa default #{@file_out} " +
73
74
  "silence 1 0.1 5% 5 1.0 5%"
74
75
  run command, show
75
76
 
76
77
  end
77
-
78
- def concat_files(files=[])
79
- WavTool.new(out: @file_out, ).concat files
78
+
79
+ def concat_files(files=[], sample_rate: nil)
80
+
81
+ WavTool.new(out: @file_out, sample_rate: sample_rate,
82
+ src_path: @working_dir).concat files
80
83
  end
81
-
84
+
82
85
  alias concat concat_files
83
-
86
+
87
+ # convert either wav to ogg or ogg to wav
88
+ #
84
89
  def convert()
85
-
90
+
86
91
  if File.extname(@file_in) == '.ogg' then
87
- ogg_to_wav() if File.extname(@file_out) == '.wav'
92
+ ogg_to_wav() if File.extname(@file_out) == '.wav'
93
+ else
94
+ wav_to_ogg() if File.extname(@file_out) == '.ogg'
88
95
  end
89
-
96
+
90
97
  end
91
-
92
- def cut(starttime, duration)
93
-
98
+
99
+ # cut a section of audio and save it to file
100
+ #
101
+ def cut(starttime, duration)
102
+
94
103
  command = "avconv -i %s -ss %s -t %s %s" % \
95
104
  [@file_in, starttime, duration, @file_out]
96
- run command, show
97
-
105
+ run command, show
106
+
98
107
  end
99
-
108
+
100
109
  def duration()
101
-
110
+
102
111
  case File.extname(@file_in)
103
112
  when '.ogg'
104
113
  OggInfo.open(@file_in).length
@@ -106,60 +115,71 @@ class EasyAudioUtils
106
115
  WavTool.new().duration(@file_in)
107
116
  when '.mp3'
108
117
  Mp3Info.new(@file_in).length
109
- end
110
-
118
+ end
119
+
111
120
  end
112
-
121
+
113
122
  # silence duration in seconds
114
123
  #
115
124
  def generate_silence(duration)
116
125
  WavTool.new(out: @file_out).silence duration: duration
117
126
  end
118
-
127
+
119
128
  alias record capture
120
-
129
+
121
130
  def play(show: false)
122
131
  command = "mplayer #{@file_out}"
123
132
  run command, show
124
133
  end
125
-
134
+
126
135
  # split by silence
127
136
  #
128
- def split(show: false)
137
+ def split(show: false)
129
138
  command = "sox -V3 #{@file_in} #{@file_out} silence -l 0 " +
130
139
  " 1 0.5 0.1% : newfile : restart"
131
140
  run command, show
132
141
  end
133
-
142
+
143
+ # volume increase or decrease
144
+ #
145
+ def volume(amount=1.0, show: false)
146
+ command = "sox -v #{amount} #{@file_in} #{@file_out}"
147
+ run command, show
148
+ end
149
+
134
150
  # Download and extract audio from a video on YouTube
135
151
  #
136
152
  # By default, Youtube-dl will save the audio in Ogg (opus) format.
137
153
  #
138
- def youtube_dl(show: false)
139
-
154
+ def youtube_dl(show: false)
155
+
140
156
  command = "youtube-dl -x #{url=@file_in}"
141
157
  command += ' -o ' + @file_out if @file_out
142
- run command, show
158
+ run command, show
143
159
 
144
- end
160
+ end
145
161
 
146
162
 
147
163
  private
148
-
149
-
164
+
165
+
150
166
  def ogg_to_wav()
151
- `oggdec #{@file_in} #{@file_out}`
152
- end
167
+ `oggdec #{@file_in} -o #{@file_out}`
168
+ end
169
+
170
+ def wav_to_ogg()
171
+ `sox -V #{@file_in} #{@file_out}`
172
+ end
153
173
 
154
174
  def run(command, show=false)
155
175
 
156
- if show then
176
+ if show then
157
177
  command
158
178
  else
159
179
  puts "Using ->" + command
160
180
  system command
161
181
  end
162
182
 
163
- end
183
+ end
164
184
 
165
185
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easyaudio_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,73 +10,74 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwODE3MTQzMTQ2WhcN
15
- MjEwODE3MTQzMTQ2WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCq7nTP
17
- G87Bg1OlQZHqvE1AEeCfy98/usWtn1+CgLWrqoOIY7VGs8Uk92XOKhMKQeew2uhg
18
- 2ci7aoZZfBVCvLLYM+OD8hNs3kIhR+Ouy5N1eoYFCF6OYMKD9LGAH+cBqH6b76Yn
19
- Kci6XhBNY+aQh56BRNH7FLZ+pcV0/ULvO4sVDqEfht3p/4WceFGnL44FsFDhzCPJ
20
- YQ+KLjWxAI8QuLTLZFGcrZf7/bOq3cy/VEFMUilQ+dOkLMcICfm3WjiN3ZKrnr47
21
- ZQxeTuJWaBsjWk28E7kVssCO0shoYxwBsYjg9GDS5dQb/12OMlDtFji3OkqADhCj
22
- uLX7In01Ch9gewg7k6EubNbXYdT/Do3XRFMSgkd09cFmPoVZIpdSCjP2EXY8vu+f
23
- 3Y0BCweJ3zxd5U12ULVsdFb0ilpD8DV5hrOBQB7GYM42g/jYgTFd8HL924BZQHOs
24
- 1JRpaeRUHtpk8vqSm42ouFuRUnmYG4zVuwXkAnaxmH+kPxaHZh/UAaN+NkUCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUTMUxuO5M
26
- 7UF5aGw4aXWscgydq4owJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
- c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAcHdlP926iCRowPRKfQyDy611G3ceIHe/c7g5Jlov
29
- bjYf/072xcxtpEl3gCkiYAg3RJcje7p11M9yvotU+LfaraeNfc4QY3aKCmdeydZb
30
- M9Epmnd5PzazZzRfGIpp55/FvZhJ8L/3WbFyttgsB1I98WwMcWN4/Z45DfQPAalR
31
- 1+dLVo6FqBtCcEKTSi62qFl/Zww5ErCEyqBCeKArZWPDbVfEKqfjzJWiYNwnuJmJ
32
- r+zG3ZSNfLpTRj1IU6hXGBXBM0i+nngbppJAcSRHYDYNHkPxBdwHYNwivPGg0/ic
33
- Y1Irmj+W7OWcIk289KiEIn9QgHqfL/FkynAa3wW4utEt7evObGIpXJbMDdc55d+b
34
- nN9uJYaGOT/Ui5kx/UjoSqzBWOzkdwZOozcrEyqVVoWIghDaevdwC5G0N6sPpIkr
35
- iV3Y2C+RMq1lzH37GpnqYY/GbIvXMmQ7PO19tYLBCV/OUawXzR16PkiHVjIGnDyN
36
- PaGqcnyxdoovIOkXQxqj5+Zd
13
+ MIIEljCCAv6gAwIBAgIBATANBgkqhkiG9w0BAQsFADBIMRIwEAYDVQQDDAlnZW1t
14
+ YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
+ 8ixkARkWAmV1MB4XDTIyMDcxNTA3NTAxNVoXDTIzMDcxNTA3NTAxNVowSDESMBAG
16
+ A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
+ EjAQBgoJkiaJk/IsZAEZFgJldTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoC
18
+ ggGBAKRHnQmKwofRlU362PipNPZvEP0C0dxKv3Lf2FRomB9nTCcDAaNbJwmuLCpD
19
+ /GWAu+2HEbtNY0vlvMoQ0MJ0Zfsih6KdJaNtSuBIxjZMBAdXTQQxNzkV720hpF0o
20
+ NwoDMoeeHtT9TUjaeF4pKG059H0TuRQUv6fPaihLwBmfPM+6Knzx1aFpJpc+hsXI
21
+ 3RUq2tyP2IlfZitKp7BSMV8mTilaI2W41omh7zxZ0q4kswv2b8yio2fn6m4eMSEy
22
+ eYCFg3zyy2gb0KTxR/Fzw1fdeeva5pnfDKysUKV4ME863BkAjVDnjGFkasiI9F+l
23
+ 8YOSGwzxAFDPnyTVWYYrBlhERMjvsR2989UnPAABhpJVYhxWWFWE4+niP2PiF5Q/
24
+ J9Kb/rYaWpwzY4NctF3C8EO6rQBWTXlxxxhkp/NVoKmQZaROvdKSTggZEYSrFqH6
25
+ b86JohYph9DCwQSzm+Q6a5aumcZeHoBs2gYcoWsz4s6wqlrZ7/ufSKN68OevPNqx
26
+ JFAgFQIDAQABo4GKMIGHMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
27
+ BBTQSbgllZS7hljsidOKoQYs6lSLazAmBgNVHREEHzAdgRtnZW1tYXN0ZXJAamFt
28
+ ZXNyb2JlcnRzb24uZXUwJgYDVR0SBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
29
+ c29uLmV1MA0GCSqGSIb3DQEBCwUAA4IBgQAyu6jZ1/IIGGlDiGZkq/Jg+85ql4oL
30
+ qGIk5oAk3R7UA5uHUquZTS6cIZmveNC7jxOpmF0UWDk02qCEp4vRF6WqlcILiRo9
31
+ v3DrgBIwcqbXtmK5DSpABzPSHQe0rCtLwCJ4JdXgTuo7oFjZT2vooZw8xYvLBzQO
32
+ QbNYfvo0f/hiC33cgQRGzvdjUxXfUrAVfYGQ4ojidfoSEwRqbOk5ZKAc+VFp1Z+t
33
+ iGG8j7K5IxgKs/AMr58nOTmBhzi/s5l4d/b0Xpfzl6MZ8dvb3mcERlY9An5OinOL
34
+ 23PTux9AbbfhpMICrfC+LiXbpSDXnitszninLiw4xXoGuqhCtYBfgyYVih8hWD4I
35
+ vu0cR2nfbXRVexqRSfFr1v8temeuL9ruS53Y2+I0erFTUwGux8iL8RuyDZ6v44NE
36
+ F3apwi0l6qdwAskTEyAeMXR7LY7B6wFhidkOS3+jnhOZp9HJZ+YtpDLMYYPDndKG
37
+ 3I3tmYQyMHrny9W25zsC7d5azh5HCfjexAo=
37
38
  -----END CERTIFICATE-----
38
- date: 2020-08-27 00:00:00.000000000 Z
39
+ date: 2022-07-15 00:00:00.000000000 Z
39
40
  dependencies:
40
41
  - !ruby/object:Gem::Dependency
41
42
  name: c32
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.2.0
47
45
  - - "~>"
48
46
  - !ruby/object:Gem::Version
49
- version: '0.2'
47
+ version: '0.3'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 0.3.0
50
51
  type: :runtime
51
52
  prerelease: false
52
53
  version_requirements: !ruby/object:Gem::Requirement
53
54
  requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: 0.2.0
57
55
  - - "~>"
58
56
  - !ruby/object:Gem::Version
59
- version: '0.2'
57
+ version: '0.3'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.3.0
60
61
  - !ruby/object:Gem::Dependency
61
62
  name: wavtool
62
63
  requirement: !ruby/object:Gem::Requirement
63
64
  requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: 0.1.0
67
65
  - - "~>"
68
66
  - !ruby/object:Gem::Version
69
67
  version: '0.1'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 0.1.0
70
71
  type: :runtime
71
72
  prerelease: false
72
73
  version_requirements: !ruby/object:Gem::Requirement
73
74
  requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: 0.1.0
77
75
  - - "~>"
78
76
  - !ruby/object:Gem::Version
79
77
  version: '0.1'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 0.1.0
80
81
  - !ruby/object:Gem::Dependency
81
82
  name: ruby-mp3info
82
83
  requirement: !ruby/object:Gem::Requirement
@@ -118,7 +119,7 @@ dependencies:
118
119
  - !ruby/object:Gem::Version
119
120
  version: 0.7.2
120
121
  description:
121
- email: james@jamesrobertson.eu
122
+ email: digital.robertson@gmail.com
122
123
  executables: []
123
124
  extensions: []
124
125
  extra_rdoc_files: []
@@ -143,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
144
  - !ruby/object:Gem::Version
144
145
  version: '0'
145
146
  requirements: []
146
- rubygems_version: 3.0.3
147
+ rubygems_version: 3.3.7
147
148
  signing_key:
148
149
  specification_version: 4
149
150
  summary: A wrapper for various command-line audio utilities under GNU/Linux.
metadata.gz.sig CHANGED
Binary file