morse2au 0.0.1

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.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/lib/au/Au.rb +14 -0
  3. data/lib/morse/morse.rb +40 -0
  4. data/lib/morse2au.rb +84 -0
  5. metadata +46 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ebc22148f593312ee8175fd70c6d0e07d1d29159
4
+ data.tar.gz: db982c1caff6a171a9135d526461df35a0f438b7
5
+ SHA512:
6
+ metadata.gz: a0ea876322d66e5d2717928643818918d67bc38bd837de8cfd2fc8b825356095a94f1d02a0943cec6f600fa5459d10d3f43100c0f2e7457751a66c02d17789f9
7
+ data.tar.gz: 5e8e460f7d602f7d764e4a237bd1eb8c56dd8fb14ff68ff637229f1805ddfc6c5483b1426dc15d5edb887235c96bd0ddddc5b89b3f3295c53ea32dd5f087df01
data/lib/au/Au.rb ADDED
@@ -0,0 +1,14 @@
1
+ require 'bindata'
2
+
3
+ class Au < BinData::Record
4
+ endian :big
5
+
6
+ int32 :magic, :value=>0x2e736e64
7
+ int32 :dord, :value=>24
8
+ int32 :ds
9
+ int32 :enc, :value=>5
10
+ int32 :sr, :value=>16000
11
+ int32 :chan, :value=>1
12
+ string :data
13
+ end
14
+
@@ -0,0 +1,40 @@
1
+ $morse_chars = {
2
+ 'a' => [ 0, 1 ],
3
+ 'b' => [ 1, 0, 0, 0 ],
4
+ 'c' => [ 1, 0, 1, 0 ],
5
+ 'd' => [ 1, 0, 0 ],
6
+ 'e' => [ 0 ],
7
+ 'f' => [ 0, 0, 1, 0 ],
8
+ 'g' => [ 1, 1, 0 ],
9
+ 'h' => [ 0, 0, 0, 0 ],
10
+ 'i' => [ 0, 0 ],
11
+ 'j' => [ 0, 1, 1, 1 ],
12
+ 'k' => [ 1, 0, 1 ],
13
+ 'l' => [ 0, 1, 0, 0 ],
14
+ 'm' => [ 1, 1 ],
15
+ 'n' => [ 1, 0 ],
16
+ 'o' => [ 1, 1, 1],
17
+ 'p' => [ 1, 0, 0, 1 ],
18
+ 'q' => [ 1, 1, 0, 1 ],
19
+ 'r' => [ 0, 1, 0 ],
20
+ 's' => [ 0, 0, 0 ],
21
+ 't' => [ 1 ],
22
+ 'u' => [ 0, 0, 1 ],
23
+ 'v' => [ 0, 0, 0, 1 ],
24
+ 'w' => [ 0, 1, 1 ],
25
+ 'x' => [ 1, 0, 0, 1 ],
26
+ 'y' => [ 1, 0, 1, 1 ],
27
+ 'z' => [ 1, 1, 0, 0 ],
28
+
29
+
30
+ '0' => [ 1, 1, 1, 1, 1 ],
31
+ '1' => [ 0, 1, 1, 1, 1 ],
32
+ '2' => [ 0, 0, 1, 1, 1 ],
33
+ '3' => [ 0, 0, 0, 1, 1 ],
34
+ '4' => [ 0, 0, 0, 0, 1 ],
35
+ '5' => [ 0, 0, 0, 0, 0 ],
36
+ '6' => [ 1, 0, 0, 0, 0 ],
37
+ '7' => [ 1, 1, 0, 0, 0 ],
38
+ '8' => [ 1, 1, 1, 0, 0 ],
39
+ '9' => [ 1, 1, 1, 1, 0 ]
40
+ }
data/lib/morse2au.rb ADDED
@@ -0,0 +1,84 @@
1
+ require 'morse/morse.rb'
2
+ require 'au/Au.rb'
3
+
4
+ class Morse2Au
5
+ # Generate an .au file of Morse code
6
+ #
7
+ # Example :
8
+ # >> MorseAu.init("/home/matt/output.au", 0.1)
9
+ # >> MorseAu.strToMorse("CQ CQ")
10
+ # >> MorseAu.writeout
11
+
12
+ @@sample_rate = 16000
13
+ @@wave = ''
14
+ @@io
15
+ @@au = Au.new
16
+ @@freq = 500
17
+ @@rel_speed
18
+ @tmpPath
19
+
20
+ def self.initialize(ofile, rel_speed)
21
+ @@io = File.open(ofile, "w")
22
+ @@rel_speed = rel_speed
23
+ end
24
+
25
+ def self.getTmp
26
+ @tmpPath
27
+ end
28
+
29
+ def self.addBeep(duration)
30
+ 0.step(duration, 1.0/@@sample_rate) do |t|
31
+ x = Math.sin(t * @@freq) * 50 + 127
32
+ @@wave << x.to_i.chr
33
+ end
34
+ end
35
+
36
+ def self.addSilence(duration)
37
+ 0.step(duration, 1.0/@@sample_rate) do |i|
38
+ @@wave << 0
39
+ end
40
+ end
41
+
42
+ def self.addDit
43
+ self.addBeep(@@rel_speed)
44
+ self.addSilence(@@rel_speed)
45
+ end
46
+
47
+ def self.addDah
48
+ self.addBeep(@@rel_speed * 4)
49
+ self.addSilence(@@rel_speed)
50
+ end
51
+
52
+ def self.addLSpace
53
+ self.addSilence(@@rel_speed * 3)
54
+ end
55
+
56
+ def self.addWSpace
57
+ self.addSilence(@@rel_speed * 7)
58
+ end
59
+
60
+ def self.strToMorse(text)
61
+ text.downcase!
62
+ text.split('').each do |c|
63
+ if /^[a-z0-9]$/.match(c)
64
+ $morse_chars[c].each do |c2|
65
+ if c2 == 0
66
+ self.addDit
67
+ elsif c2 == 1
68
+ self.addDah
69
+ end
70
+ end
71
+ self.addLSpace
72
+ else
73
+ self.addWSpace
74
+ end
75
+ end
76
+ end
77
+
78
+ def self.writeOut
79
+ # No idea about next line
80
+ @@au.data = @@wave #@@wave.slice(0..@@wave.length/2)
81
+ @@au.ds = @@wave.bytesize
82
+ @@au.write(@@io)
83
+ end
84
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: morse2au
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Matthew Fleeger
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-08 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Generate an .au file from a string
14
+ email: mfleeger5@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/au/Au.rb
20
+ - lib/morse/morse.rb
21
+ - lib/morse2au.rb
22
+ homepage: http://rubygems.org/gems/morse2au
23
+ licenses:
24
+ - BSD
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.2.2
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Morse2Au
46
+ test_files: []