rubyonacid 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +74 -6
- data/VERSION +1 -1
- data/examples/ascii.rb +45 -0
- data/examples/midi.rb +0 -2
- data/examples/quality_render.rb +46 -0
- data/examples/random_yaml.rb +51 -0
- data/examples/raw_audio.rb +0 -2
- data/examples/rinda_agent.rb +101 -38
- data/examples/wxruby.rb +158 -0
- data/generators.png +0 -0
- data/lib/rubyonacid/factories/combination.rb +66 -0
- data/lib/rubyonacid/factories/increment.rb +3 -2
- data/lib/rubyonacid/factories/loop.rb +1 -0
- data/lib/rubyonacid/factories/rinda.rb +9 -2
- data/lib/rubyonacid/factory.rb +9 -0
- data/spec/factories/combination_spec.rb +101 -0
- data/spec/{generators → factories}/constant_spec.rb +0 -1
- data/spec/{generators → factories}/flash_spec.rb +0 -0
- data/spec/{generators → factories}/increment_spec.rb +0 -1
- data/spec/{generators → factories}/loop_spec.rb +0 -1
- data/spec/{generators → factories}/meta_spec.rb +0 -0
- data/spec/{generators → factories}/random_spec.rb +0 -0
- data/spec/{generators → factories}/repeat_spec.rb +0 -0
- data/spec/{generators → factories}/rinda_spec.rb +8 -1
- data/spec/{generators → factories}/sine_spec.rb +0 -1
- data/spec/{generators → factories}/skip_spec.rb +0 -1
- data/spec/factory_spec.rb +59 -0
- data/spec/spec_helper.rb +3 -0
- metadata +35 -31
- data/examples/rmagick.rb +0 -59
- data/examples/test.rb +0 -95
- data/examples/test2.rb +0 -85
- data/examples/test3.rb +0 -108
- data/lib/rubyonacid/factories/modulo.rb +0 -25
- data/spec/generators/modulo_spec.rb +0 -33
data/examples/test3.rb
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'wx'
|
3
|
-
require 'rubyonacid/factories/meta'
|
4
|
-
require 'rubyonacid/factories/constant'
|
5
|
-
require 'rubyonacid/factories/flash'
|
6
|
-
require 'rubyonacid/factories/increment'
|
7
|
-
require 'rubyonacid/factories/loop'
|
8
|
-
require 'rubyonacid/factories/modulo'
|
9
|
-
require 'rubyonacid/factories/random'
|
10
|
-
require 'rubyonacid/factories/repeat'
|
11
|
-
require 'rubyonacid/factories/sine'
|
12
|
-
require 'rubyonacid/factories/skip'
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
class MyApp < Wx::App
|
17
|
-
|
18
|
-
WIDTH = 320
|
19
|
-
HEIGHT = 320
|
20
|
-
|
21
|
-
def on_init
|
22
|
-
|
23
|
-
random_factory = RubyOnAcid::RandomFactory.new
|
24
|
-
|
25
|
-
(1..1000).each do |file_number|
|
26
|
-
|
27
|
-
file_name = sprintf("%05d_random.png", file_number)
|
28
|
-
|
29
|
-
#The MetaFactory assigns factories to requested value types.
|
30
|
-
@f = RubyOnAcid::MetaFactory.new
|
31
|
-
@f.factory_pool << RubyOnAcid::LoopFactory.new(random_factory.within(:increment, -0.1, 0.1))
|
32
|
-
@f.factory_pool << RubyOnAcid::LoopFactory.new(random_factory.within(:increment, -0.1, 0.1))
|
33
|
-
@f.factory_pool << RubyOnAcid::LoopFactory.new(random_factory.within(:increment, -0.1, 0.1))
|
34
|
-
@f.factory_pool << RubyOnAcid::LoopFactory.new(random_factory.within(:increment, -0.1, 0.1))
|
35
|
-
@f.factory_pool << RubyOnAcid::ConstantFactory.new(random_factory.within(:constant, 0.0, 1.0))
|
36
|
-
@f.factory_pool << RubyOnAcid::FlashFactory.new(random_factory.within(:interval, 2, 100))
|
37
|
-
@f.factory_pool << RubyOnAcid::SineFactory.new(random_factory.within(:increment, -0.1, 0.1))
|
38
|
-
@f.factory_pool << RubyOnAcid::SineFactory.new(random_factory.within(:increment, -0.1, 0.1))
|
39
|
-
@f.factory_pool << RubyOnAcid::SineFactory.new(random_factory.within(:increment, -0.1, 0.1))
|
40
|
-
@f.factory_pool << RubyOnAcid::SineFactory.new(random_factory.within(:increment, -0.1, 0.1))
|
41
|
-
@f.factory_pool << RubyOnAcid::RepeatFactory.new(
|
42
|
-
RubyOnAcid::LoopFactory.new(random_factory.within(:increment, -0.1, 0.1)),
|
43
|
-
random_factory.within(:interval, 2, 100)
|
44
|
-
)
|
45
|
-
@f.factory_pool << RubyOnAcid::RepeatFactory.new(
|
46
|
-
RubyOnAcid::RandomFactory.new,
|
47
|
-
random_factory.within(:interval, 2, 1000)
|
48
|
-
)
|
49
|
-
@f.factory_pool << RubyOnAcid::RepeatFactory.new(
|
50
|
-
RubyOnAcid::SineFactory.new(random_factory.within(:increment, -0.1, 0.1)),
|
51
|
-
random_factory.within(:interval, 2, 100)
|
52
|
-
)
|
53
|
-
@f.factory_pool << RubyOnAcid::ModuloFactory.new(RubyOnAcid::LoopFactory.new(0.00001))
|
54
|
-
|
55
|
-
frame = Wx::Frame.new(nil, :size => [WIDTH, HEIGHT])
|
56
|
-
|
57
|
-
bitmap = Wx::Bitmap.new(WIDTH, HEIGHT)
|
58
|
-
bitmap.draw do |surface|
|
59
|
-
# surface.pen = black_pen
|
60
|
-
surface.brush = Wx::BLACK_BRUSH
|
61
|
-
surface.draw_rectangle(0, 0, WIDTH, HEIGHT)
|
62
|
-
end
|
63
|
-
random_factory.within(:iterations, 10, 10000).to_i.times do
|
64
|
-
bitmap.draw {|surface| render(surface)}
|
65
|
-
end
|
66
|
-
bitmap.draw do |surface|
|
67
|
-
surface.text_foreground = Wx::Colour.new(255, 255, 255, 255)
|
68
|
-
y = 0
|
69
|
-
@f.to_yaml.split("\n").each do |line|
|
70
|
-
surface.draw_text(line, 0, y)
|
71
|
-
y += 10
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
File.open(file_name + ".yml", "w") do |file|
|
76
|
-
YAML.dump(@f, file)
|
77
|
-
end
|
78
|
-
|
79
|
-
bitmap.save_file(file_name, Wx::BITMAP_TYPE_PNG)
|
80
|
-
|
81
|
-
end
|
82
|
-
|
83
|
-
exit
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
def render(surface)
|
88
|
-
surface.pen = Wx::Pen.new(
|
89
|
-
Wx::Colour.new(
|
90
|
-
@f.within(:red, 0, 255).to_i,
|
91
|
-
@f.within(:green, 0, 255).to_i,
|
92
|
-
@f.within(:blue, 0, 255).to_i,
|
93
|
-
@f.within(:alpha, 50, 255).to_i
|
94
|
-
),
|
95
|
-
@f.within(:width, 1, 5).to_i
|
96
|
-
)
|
97
|
-
surface.draw_line(
|
98
|
-
@f.within(:x, 0, WIDTH).to_i,
|
99
|
-
@f.within(:y, 0, HEIGHT).to_i,
|
100
|
-
@f.within(:x2, 0, WIDTH).to_i,
|
101
|
-
@f.within(:y2, 0, HEIGHT).to_i
|
102
|
-
)
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
app = MyApp.new
|
108
|
-
app.main_loop
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'rubyonacid/factory'
|
2
|
-
|
3
|
-
module RubyOnAcid
|
4
|
-
|
5
|
-
#Gets values from a source factory and returns the same value the given number of times before getting a fresh value.
|
6
|
-
class ModuloFactory < Factory
|
7
|
-
|
8
|
-
#Factory to get values from.
|
9
|
-
attr_accessor :source_factory
|
10
|
-
|
11
|
-
def initialize(source_factory = nil)
|
12
|
-
super
|
13
|
-
@source_factory = source_factory
|
14
|
-
@prior_values = {}
|
15
|
-
end
|
16
|
-
|
17
|
-
#Returns the value of get_unit on the source factory the assigned number of times.
|
18
|
-
def get_unit(key)
|
19
|
-
@prior_values[key] ||= 0
|
20
|
-
@prior_values[key] = (@prior_values[key] + @source_factory.get_unit(key)) % 1
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
-
require 'rubyonacid/factories/modulo'
|
3
|
-
|
4
|
-
include RubyOnAcid
|
5
|
-
|
6
|
-
describe ModuloFactory do
|
7
|
-
|
8
|
-
MARGIN = 0.01
|
9
|
-
|
10
|
-
before :each do
|
11
|
-
@it = ModuloFactory.new
|
12
|
-
end
|
13
|
-
|
14
|
-
it "accumulates values and returns remainder of dividing by 1" do
|
15
|
-
source_factory = mock('Factory')
|
16
|
-
source_factory.should_receive(:get_unit).exactly(3).times.and_return(0.1, 0.35, 0.75)
|
17
|
-
@it.source_factory = source_factory
|
18
|
-
@it.get_unit(:x).should be_close(0.1, MARGIN)
|
19
|
-
@it.get_unit(:x).should be_close(0.45, MARGIN)
|
20
|
-
@it.get_unit(:x).should be_close(0.2, MARGIN) #0.45 + 0.75 == 1.2, 1.2 modulo 1 == 0.2
|
21
|
-
end
|
22
|
-
|
23
|
-
it "Tracks modulos on a per-key basis" do
|
24
|
-
source_factory = mock('Factory')
|
25
|
-
source_factory.should_receive(:get_unit).exactly(4).times.and_return(0.25, 0.9, 0.33, 0.8)
|
26
|
-
@it.source_factory = source_factory
|
27
|
-
@it.get_unit(:x).should be_close(0.25, MARGIN)#== 0.25
|
28
|
-
@it.get_unit(:x).should be_close(0.15, MARGIN)#== 0.15
|
29
|
-
@it.get_unit(:y).should be_close(0.33, MARGIN)#== 0.33
|
30
|
-
@it.get_unit(:x).should be_close(0.95, MARGIN)#== 0.95
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|