text-to-noise 0.1.2 → 0.1.4
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.
- data/README.md +105 -12
- data/bin/play_noise +16 -0
- data/features/configuration.feature +16 -0
- data/lib/text_to_noise/version.rb +1 -1
- data/text_to_noise.gemspec +2 -0
- metadata +7 -9
- data/bin/play +0 -12
data/README.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
Ambient monitoring.
|
1
|
+
Text-To-Noise
|
2
|
+
=============
|
3
|
+
Ambient log file monitoring.
|
4
4
|
|
5
|
-
Imagine if your servers created ambient noise instead of silent log messages.
|
6
|
-
application infrastructure sounded like a jungle?
|
7
|
-
logins are the cackle of monkeys, and errors are
|
5
|
+
Imagine if your servers created ambient noise instead of silent log messages.
|
6
|
+
What if your application infrastructure sounded like a jungle? Page views are
|
7
|
+
the chittering of crickets, logins are the cackle of monkeys, and errors are
|
8
|
+
the roar of a lion. This is what `text_to_noise` can do.
|
8
9
|
|
9
10
|
|
10
11
|
Installation
|
@@ -12,24 +13,112 @@ Installation
|
|
12
13
|
|
13
14
|
Stuff that I had to do to get this running:
|
14
15
|
|
15
|
-
1. Install the SDL Mixer library. I used [Homebrew][homebrew]:
|
16
|
-
brew install sdl sdl_mixer
|
16
|
+
1. Install the [SDL Mixer][sdlmixer] library. I used [Homebrew][homebrew]:
|
17
|
+
`brew install sdl sdl_mixer`
|
17
18
|
|
18
|
-
2. Install text_to_noise via [Rubygems][rubygems]:
|
19
|
-
gem install
|
19
|
+
2. Install `text_to_noise` via [Rubygems][rubygems]:
|
20
|
+
`gem install text-to-noise`
|
21
|
+
|
22
|
+
|
23
|
+
Configuration
|
24
|
+
=============
|
25
|
+
|
26
|
+
Text-To-Noise is configured with a Ruby file. The configuration contains a set
|
27
|
+
of rules for mapping a line of input text to a sound. Each mapping is a single
|
28
|
+
method of the form `map( pattern ).to "sound"`.
|
29
|
+
|
30
|
+
map( /a regex matching log lines to trigger sounds/ ).to "a sound name to play"
|
31
|
+
|
32
|
+
For example,
|
33
|
+
|
34
|
+
map( /Processing/ ).to "finch"
|
35
|
+
|
36
|
+
will match any input line that matches `/Processing/` and play the sound of a finch chirping.
|
37
|
+
|
38
|
+
A mapping may target multiple sounds for a given rule. It can get boring to
|
39
|
+
hear the same sound every time a page is loaded. Specify a set of sounds for
|
40
|
+
a rule by passing it a list of sound names:
|
41
|
+
|
42
|
+
map( /Processing/ ).to ["canary", "finch"]
|
43
|
+
|
44
|
+
the sounds will each be played in turn for each time the rule matches.
|
45
|
+
|
46
|
+
|
47
|
+
Dynamic Patterns
|
48
|
+
----------------
|
49
|
+
|
50
|
+
You can also apply more advanced rules for sound generation by supplying a
|
51
|
+
block to the match rule. The block is passed the [MatchData][MatchData:RDoc]
|
52
|
+
object returned from the regular expression match:
|
53
|
+
|
54
|
+
map( /Completed in (\d+)ms/ ) { |match_data|
|
55
|
+
match_data[1].to_i > 500
|
56
|
+
}.to "vulture"
|
57
|
+
|
58
|
+
The above rule will play a vulture sound iff a line matches the expression _and_ the block
|
59
|
+
returns true. Applied to a Rails log, the above rule will play a vulture sound whenever a
|
60
|
+
page takes longer than 500ms to render.
|
61
|
+
|
62
|
+
For additional details, see the Cucumber [features][Features]. Also, have a
|
63
|
+
look at the [sample][SampleConfig] configuration.
|
64
|
+
|
65
|
+
Included Sounds
|
66
|
+
---------------
|
67
|
+
|
68
|
+
`text-to-noise` currently comes with the following sounds for use in your
|
69
|
+
configurations:
|
70
|
+
|
71
|
+
australian_frogmouth
|
72
|
+
blue_amazon_macaw
|
73
|
+
canary
|
74
|
+
canary2
|
75
|
+
cardinal
|
76
|
+
chicken
|
77
|
+
crickets
|
78
|
+
crow-1
|
79
|
+
crow
|
80
|
+
finch
|
81
|
+
geese
|
82
|
+
hawk
|
83
|
+
lapwing
|
84
|
+
meadow_lark_long
|
85
|
+
meadow_lark_short
|
86
|
+
mexican_red_parrot
|
87
|
+
mockingbird
|
88
|
+
nightingale
|
89
|
+
owl
|
90
|
+
peacock
|
91
|
+
pigeons
|
92
|
+
red_lories
|
93
|
+
rooster
|
94
|
+
vulture
|
95
|
+
whipperwhill
|
96
|
+
|
97
|
+
Soon you'll be able to add your own `wav` files for playback, but not just yet.
|
20
98
|
|
21
99
|
|
22
100
|
Usage
|
23
101
|
-----
|
24
102
|
|
25
|
-
|
103
|
+
First, create a sound mapping configuration as shown above. Then you can pipe
|
104
|
+
a log into the `text_to_noise` script and it will start chirping:
|
105
|
+
|
106
|
+
tail -f /var/log/mylog | text_to_noise -c my.sounds.rb
|
26
107
|
|
27
|
-
|
108
|
+
Alternatively, you can run `text_to_noise` on an existing file:
|
109
|
+
|
110
|
+
text_to_noise -c my.sounds.rb -f file.log
|
111
|
+
|
112
|
+
Text-To-Noise will cease processing when it reaches the end of the file.
|
28
113
|
|
29
114
|
|
30
115
|
TODO
|
31
116
|
----
|
32
117
|
|
118
|
+
At the moment, this only supports playing some free bird songs that are included in the gem.
|
119
|
+
Highest priority is the ability to add your own sound sets for playback.
|
120
|
+
|
121
|
+
* Add sounds to the available noises for playback
|
33
122
|
* Automatically refresh configurations
|
34
123
|
* Add generators to create stub configurations
|
35
124
|
* Support sound themes?
|
@@ -37,3 +126,7 @@ TODO
|
|
37
126
|
|
38
127
|
[Homebrew]:http://mxcl.github.com/homebrew
|
39
128
|
[Rubygems]:http://rubygems.org
|
129
|
+
[sdlmixer]:http://www.libsdl.org/projects/SDL_mixer/
|
130
|
+
[MatchData:RDoc]:http://ruby-doc.org/core/classes/MatchData.html
|
131
|
+
[Features]:https://github.com/tobytripp/text_to_noise/blob/master/features/configuration.feature
|
132
|
+
[SampleConfig]:https://github.com/tobytripp/text_to_noise/blob/master/sample.sounds.rb
|
data/bin/play_noise
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
lib = File.expand_path( '../../lib/', __FILE__ )
|
4
|
+
$:.unshift lib unless $:.include?( lib )
|
5
|
+
|
6
|
+
require 'text_to_noise'
|
7
|
+
|
8
|
+
player = TextToNoise::Player.new
|
9
|
+
|
10
|
+
ARGV.each do |sound|
|
11
|
+
sound += ".wav" unless sound =~ /\.wav$/
|
12
|
+
player.play sound
|
13
|
+
sleep 1
|
14
|
+
end
|
15
|
+
|
16
|
+
sleep 1 while player.playing?
|
@@ -62,3 +62,19 @@ Feature: Mapping input lines to sounds for playback
|
|
62
62
|
|
63
63
|
Then the output should contain "Playing slow_query.wav"
|
64
64
|
And the output should not contain "Playing slow_request.wav"
|
65
|
+
|
66
|
+
Scenario: Inputs that match multiple rules should fire all sounds
|
67
|
+
Given a file named "sound_mapping.rb" with:
|
68
|
+
"""
|
69
|
+
map /caw/ => "crow", /bakawk/ => "chicken"
|
70
|
+
"""
|
71
|
+
|
72
|
+
And a file named "input.log" with:
|
73
|
+
"""
|
74
|
+
caw bakawk!
|
75
|
+
"""
|
76
|
+
|
77
|
+
When I run `text_to_noise -c sound_mapping.rb -f input.log -m`
|
78
|
+
|
79
|
+
Then the output should contain "Playing crow.wav"
|
80
|
+
And the output should contain "Playing chicken.wav"
|
data/text_to_noise.gemspec
CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.add_dependency "rubygame", "~> 2.6.4"
|
20
20
|
|
21
|
+
spec.requirements << "SDL_mixer [http://www.libsdl.org/projects/SDL_mixer/]"
|
22
|
+
|
21
23
|
spec.add_development_dependency "cucumber"
|
22
24
|
spec.add_development_dependency "aruba"
|
23
25
|
spec.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: text-to-noise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Toby Tripp
|
@@ -11,8 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-04-30 00:00:00
|
15
|
-
default_executable:
|
14
|
+
date: 2011-04-30 00:00:00 Z
|
16
15
|
dependencies:
|
17
16
|
- !ruby/object:Gem::Dependency
|
18
17
|
name: rubygame
|
@@ -61,7 +60,7 @@ dependencies:
|
|
61
60
|
description: Pipe a file, like a log file, into text_to_noise and it will play sound effects triggered by regex matches in the input.
|
62
61
|
email: toby.tripp+tailsounds@gmail.com
|
63
62
|
executables:
|
64
|
-
-
|
63
|
+
- play_noise
|
65
64
|
- text_to_noise
|
66
65
|
extensions: []
|
67
66
|
|
@@ -75,7 +74,7 @@ files:
|
|
75
74
|
- LICENSE
|
76
75
|
- README.md
|
77
76
|
- Rakefile
|
78
|
-
- bin/
|
77
|
+
- bin/play_noise
|
79
78
|
- bin/text_to_noise
|
80
79
|
- cucumber.yml
|
81
80
|
- features/configuration.feature
|
@@ -128,7 +127,6 @@ files:
|
|
128
127
|
- text_to_noise.gemspec
|
129
128
|
- ts.gems
|
130
129
|
- watchr.rb
|
131
|
-
has_rdoc: true
|
132
130
|
homepage: https://github.com/tobytripp/text_to_noise
|
133
131
|
licenses: []
|
134
132
|
|
@@ -149,10 +147,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
147
|
- - ">="
|
150
148
|
- !ruby/object:Gem::Version
|
151
149
|
version: 1.3.6
|
152
|
-
requirements:
|
153
|
-
|
150
|
+
requirements:
|
151
|
+
- SDL_mixer [http://www.libsdl.org/projects/SDL_mixer/]
|
154
152
|
rubyforge_project:
|
155
|
-
rubygems_version: 1.
|
153
|
+
rubygems_version: 1.7.2
|
156
154
|
signing_key:
|
157
155
|
specification_version: 3
|
158
156
|
summary: Play sounds based on string matches.
|