saytime 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4de644fd00e24e59305c2261b3c7a9d0883cb341
4
+ data.tar.gz: 757b090db484c14491365633fa2735ded7a034d7
5
+ SHA512:
6
+ metadata.gz: 72d19ea8741cb6b6f1f46e6d748a19e66aa2d9241bdafbe29ac09f82b15b3363c0a142202b10b7ef5d11e3ff8fd509d90bf364a55e7e5d3c141108bed597151f
7
+ data.tar.gz: e422c6d6c7b4d15598d5296b8e2b93c3e93416e0c0addd046c0d19557bbdae506b2eb1913a862ba86a5555f6457f20f75013390302b87a180cd58bcc262f62b8
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,5 @@
1
+ se!�� ��(�]
2
+ ���L%���G�35)��qHoGn�p����,���vy����
3
+ v9�8���j3dʼ��^tvS�}��@
- )Z~����-
4
+ ��)u��,��%���|��
5
+ � �-��J���Rf
data.tar.gz.sig ADDED
Binary file
data/lib/saytime.rb ADDED
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: saytime.rb
4
+
5
+ require 'wavefile'
6
+ require 'rxfhelper'
7
+
8
+ # Making the WAV files
9
+ # ======================
10
+
11
+ # The wav files were produced by saying the following in 1 continuos recording:
12
+
13
+ # the time is 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 30 40 50 am pm
14
+
15
+ # the files were then manually split into wav files using the sound editing
16
+ # software called Audacity
17
+
18
+
19
+ module LIBRARY
20
+
21
+ def fetch_filepath(filename)
22
+
23
+ if File.basename() == filename then
24
+ lib = File.dirname(__FILE__)
25
+ File.join(lib,'..','wav',filename)
26
+ else
27
+ filename
28
+ end
29
+
30
+ end
31
+
32
+ def fetch_file(filename)
33
+
34
+ filepath = fetch_filepath filename
35
+ read filepath
36
+ end
37
+
38
+ def read(s)
39
+ RXFHelper.read(s).first
40
+ end
41
+ end
42
+
43
+ class Saytime
44
+ include WaveFile
45
+ include LIBRARY
46
+
47
+ def initialize(filepath='')
48
+
49
+ @filepath = filepath
50
+ Dir.chdir filepath
51
+
52
+ end
53
+
54
+ def now(wav_player='play')
55
+
56
+ make_wav()
57
+ `#{wav_player} time.wav`
58
+
59
+ end
60
+
61
+ private
62
+
63
+ def append_wavs(wav_files, target_wav)
64
+
65
+ Writer.new(target_wav, Format.new(:stereo, :pcm_16, 44100)) do |writer|
66
+
67
+ wav_files.each do |name|
68
+
69
+ file_name = @filepath.empty? ? name : File.join(@filepath, name)
70
+
71
+ Reader.new(file_name).each_buffer(samples_per_buffer=4096) do |buffer|
72
+ writer.write(buffer)
73
+ end
74
+
75
+ end
76
+ end
77
+
78
+ end
79
+
80
+ def make_wav()
81
+
82
+ a = ['the_time_is']
83
+ h, m, meridiem = Time.now.strftime("%H %M %P").split
84
+ a << h
85
+ a.concat (m.length > 1 ? [m[0] + '0', m[1]] : [m])
86
+ a << meridiem
87
+
88
+ a.reject!{|x| x =~ /^0/}
89
+
90
+ append_wavs(a.map{|x| x + '.wav'}, 'time.wav')
91
+
92
+ end
93
+
94
+ end
95
+
data/wav/1.wav ADDED
Binary file
data/wav/10.wav ADDED
Binary file
data/wav/11.wav ADDED
Binary file
data/wav/12.wav ADDED
Binary file
data/wav/13.wav ADDED
Binary file
data/wav/14.wav ADDED
Binary file
data/wav/15.wav ADDED
Binary file
data/wav/16.wav ADDED
Binary file
data/wav/17.wav ADDED
Binary file
data/wav/18.wav ADDED
Binary file
data/wav/19.wav ADDED
Binary file
data/wav/2.wav ADDED
Binary file
data/wav/20.wav ADDED
Binary file
data/wav/3.wav ADDED
Binary file
data/wav/30.wav ADDED
Binary file
data/wav/4.wav ADDED
Binary file
data/wav/40.wav ADDED
Binary file
data/wav/5.wav ADDED
Binary file
data/wav/50.wav ADDED
Binary file
data/wav/6.wav ADDED
Binary file
data/wav/7.wav ADDED
Binary file
data/wav/8.wav ADDED
Binary file
data/wav/9.wav ADDED
Binary file
data/wav/am.wav ADDED
Binary file
data/wav/pm.wav ADDED
Binary file
Binary file
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: saytime
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
+ MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
+ YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
+ 8ixkARkWAmV1MB4XDTE3MDMyMzExNDc1OFoXDTE4MDMyMzExNDc1OFowSDESMBAG
16
+ A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
+ EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
+ ggEBAL0WphJI9UmM0W/LSOAOc1DOafnVhkPWL5THXDVBgMLWpR3tDOoTwwdJmaWg
19
+ dlWWoQdHnghcsT9+UMyo/DVGp5dS2qNqXRle8QBDurNwbHBNpbqUbG+sTqhmClff
20
+ c8HaAAoGwsL/0NyolGwxznK0z0vmiZEohSEiOHFSZyoV07hjvuw0ORkg8tarS9YG
21
+ w3vfwT0dXa+z0+P5bd2zMwX5wrdlj8lB5xa52N9wueTMDPeLRCmuHcC9d+ui1NGu
22
+ 4Jd0ycFFZ5tud2eVAWbkuuPDN2tzGmAbSIRLCoGhM9dNQHWmBxr5Q2S0lmCHq+jC
23
+ +AppRaTAOaBNdUU6bc1NroPt+qECAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
+ DwQEAwIEsDAdBgNVHQ4EFgQU03/dL85w5lY3y+mzAeD8SkjI0tAwJgYDVR0RBB8w
25
+ HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
+ c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAlKEqkw1C
27
+ QuMrXQp9iShiDT5T5vZSka6VdbOBgRZoGHDw6Cs4AGthfqG42pMOCi5lNW9W6Ycn
28
+ dKkcF/LraHD6lJarJoS+fXQKC553rX3IiEwurBSx6lYrzOOMwexNVpRWV+l2kMjl
29
+ i/rv3CdJ1OofkGKYj/UINJffVFU9QCut0+mkaS1eYBNcHh0n6V2KXgsrordofJqy
30
+ zyaEG4J/7SpaZb0R7Y0ArOS+onK/UVQb7uPicnGS8XVUoD0IJeiwm/WrhqUoXN1U
31
+ cdGREuz7BImPZaySHDLoBadQ+lwiteIcGPf/YWLggY8ZCCrGWxrPPYDDd1G0sb9C
32
+ whvXPDQOO3FOLw==
33
+ -----END CERTIFICATE-----
34
+ date: 2017-03-23 00:00:00.000000000 Z
35
+ dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: wavefile
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.8'
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: 0.8.1
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '0.8'
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: 0.8.1
56
+ - !ruby/object:Gem::Dependency
57
+ name: rxfhelper
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.4'
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 0.4.2
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '0.4'
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 0.4.2
76
+ description:
77
+ email: james@jamesrobertson.eu
78
+ executables: []
79
+ extensions: []
80
+ extra_rdoc_files: []
81
+ files:
82
+ - lib/saytime.rb
83
+ - wav/1.wav
84
+ - wav/10.wav
85
+ - wav/11.wav
86
+ - wav/12.wav
87
+ - wav/13.wav
88
+ - wav/14.wav
89
+ - wav/15.wav
90
+ - wav/16.wav
91
+ - wav/17.wav
92
+ - wav/18.wav
93
+ - wav/19.wav
94
+ - wav/2.wav
95
+ - wav/20.wav
96
+ - wav/3.wav
97
+ - wav/30.wav
98
+ - wav/4.wav
99
+ - wav/40.wav
100
+ - wav/5.wav
101
+ - wav/50.wav
102
+ - wav/6.wav
103
+ - wav/7.wav
104
+ - wav/8.wav
105
+ - wav/9.wav
106
+ - wav/am.wav
107
+ - wav/pm.wav
108
+ - wav/the_time_is.wav
109
+ homepage: https://github.com/jrobertson/saytime
110
+ licenses:
111
+ - MIT
112
+ metadata: {}
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 2.6.8
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Speaks the local time in English using WAV files stiched together
133
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ b�[�������fpՖ��� B�M�m�O߰�*4{����.���^��� d�
2
+ �C�TPi�Xx��aq�
3
+ �v�uS�m"~m8k& �9d��o�< p���t�m�\}�fANC���7���4P��@t�I��̮t(��G�3���ܽ����n�"9�-ˏ<�갦���FB�� 5�eL�ҲŻ*�*t��hOm����7i�%�N�/F'q,$���k���Q>٧뉮_��ُm<�|c�X