sgl 0.3.1 → 0.4.0

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 (103) hide show
  1. data/ChangeLog +234 -0
  2. data/Manifest.txt +94 -0
  3. data/Rakefile +16 -5
  4. data/examples/cocoa1-basic.rb +14 -0
  5. data/examples/cocoa10-transparent.rb +26 -0
  6. data/examples/cocoa11-application.rb +13 -0
  7. data/examples/cocoa2-draw.rb +23 -0
  8. data/examples/cocoa3-affine.rb +29 -0
  9. data/examples/cocoa4-font.rb +24 -0
  10. data/examples/cocoa5-image.rb +22 -0
  11. data/examples/cocoa6-sound.rb +24 -0
  12. data/examples/cocoa7-movie.rb +40 -0
  13. data/examples/cocoa8-movieoverlay.rb +42 -0
  14. data/examples/cocoa9-streaming.rb +40 -0
  15. data/examples/opengl1-basic.rb +14 -0
  16. data/examples/opengl11-application.rb +13 -0
  17. data/examples/opengl2-draw.rb +23 -0
  18. data/examples/opengl3-affine.rb +29 -0
  19. data/examples/sample1.rb +11 -0
  20. data/examples/sample10.rb +16 -0
  21. data/examples/sample11.rb +22 -0
  22. data/examples/sample11a.rb +33 -0
  23. data/examples/sample12.rb +30 -0
  24. data/examples/sample12a.rb +35 -0
  25. data/examples/sample13.rb +116 -0
  26. data/examples/sample15.rb +24 -0
  27. data/examples/sample16.rb +31 -0
  28. data/examples/sample16a.rb +35 -0
  29. data/examples/sample6.rb +18 -0
  30. data/examples/sample7.rb +16 -0
  31. data/examples/sample9.rb +20 -0
  32. data/examples/sgl-sound1.rb +6 -0
  33. data/examples/sgl-sound2.rb +19 -0
  34. data/examples/sine.ogg +0 -0
  35. data/examples/testgl.rb +169 -0
  36. data/lib/sgl/bass-api.rb +202 -0
  37. data/lib/sgl/bass-sample.rb +106 -0
  38. data/lib/sgl/bass.rb +46 -0
  39. data/lib/sgl/cocoa-app.rb +43 -0
  40. data/lib/sgl/cocoa-color.rb +65 -0
  41. data/lib/sgl/cocoa-draw.rb +72 -0
  42. data/lib/sgl/cocoa-event.rb +229 -0
  43. data/lib/sgl/cocoa-media.rb +144 -0
  44. data/lib/sgl/cocoa-notuse.rb +493 -0
  45. data/lib/sgl/cocoa-window.rb +203 -0
  46. data/lib/sgl/cocoa.rb +8 -0
  47. data/lib/sgl/notuse-objs.rb +358 -0
  48. data/lib/sgl/opengl-app.rb +38 -0
  49. data/lib/sgl/opengl-color.rb +44 -0
  50. data/lib/sgl/opengl-draw.rb +260 -0
  51. data/lib/sgl/opengl-event.rb +325 -0
  52. data/lib/sgl/opengl-modules.rb +22 -0
  53. data/lib/sgl/opengl-window.rb +224 -0
  54. data/lib/sgl/opengl.rb +7 -0
  55. data/lib/sgl/sgl-basic.rb +61 -0
  56. data/lib/sgl/sgl-button.rb +135 -0
  57. data/lib/sgl/sgl-client.rb +21 -0
  58. data/lib/sgl/sgl-color.rb +82 -0
  59. data/lib/sgl/sgl-connect.rb +9 -0
  60. data/lib/sgl/sgl-objlib.rb +0 -0
  61. data/lib/sgl/sgl-objs.rb +0 -0
  62. data/lib/sgl/sgl-server.rb +58 -0
  63. data/lib/sgl/sgl-sound.rb +24 -0
  64. data/lib/sgl/sgl-spring.rb +216 -0
  65. data/lib/sgl/sgl-timer.rb +72 -0
  66. data/lib/sgl/sgl.rb +5 -0
  67. data/lib/sgl/version.rb +2 -2
  68. data/scripts/makemanifest.rb +20 -0
  69. data/test/test_bass.rb +27 -0
  70. data/test/test_cocoa_app.rb +5 -5
  71. data/test/test_helper.rb +9 -1
  72. data/test/test_module_ruby16.rb +22 -21
  73. data/test/test_opengl_app.rb +4 -5
  74. data/test/test_opengl_basic.rb +3 -4
  75. data/test/test_opengl_fullscreen.rb +4 -6
  76. data/test/test_opengl_novice.rb +3 -6
  77. data/test/test_sgl.rb +4 -27
  78. data/test/test_sound.rb +15 -0
  79. data/website/challenge1.html +91 -0
  80. data/website/challenge1.txt +30 -0
  81. data/website/challenge2.html +144 -0
  82. data/website/challenge2.txt +73 -0
  83. data/website/challenge3.html +63 -0
  84. data/website/challenge3.txt +15 -0
  85. data/website/cocoa.html +88 -0
  86. data/website/cocoa.txt +35 -0
  87. data/website/description.html +138 -0
  88. data/website/description.txt +90 -0
  89. data/website/exercise1.html +264 -0
  90. data/website/exercise1.txt +192 -0
  91. data/website/exercise2.html +683 -0
  92. data/website/exercise2.txt +597 -0
  93. data/website/exhibition.html +84 -0
  94. data/website/exhibition.txt +24 -0
  95. data/website/howto.html +134 -0
  96. data/website/howto.txt +56 -0
  97. data/website/index.html +17 -9
  98. data/website/index.txt +13 -4
  99. data/website/sound.html +141 -0
  100. data/website/sound.txt +87 -0
  101. data/website/stylesheets/grade.png +0 -0
  102. data/website/stylesheets/screen.css +21 -20
  103. metadata +109 -3
@@ -0,0 +1,134 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ 便利情報
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>便利情報</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sgl"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/sgl" class="numbers">0.4.0</a>
37
+ </div>
38
+ <p>Ruby初心者のための,知ってると便利に使える情報です.</p>
39
+
40
+
41
+ <h2>コメントアウトを活用する</h2>
42
+
43
+
44
+ <p>ある行だけ実行しないようにしたいが,消してしまいたくはないというとき,
45
+ コメントアウトという方法がある.行の最初に<code>#</code>を入れると,その行だけを
46
+ 実行しないようにできる.</p>
47
+
48
+
49
+ <p>コメントアウトを活用することはとても大事だ.プログラムをかいてみてうま
50
+ く動かなくなったときは,その行を消してしまうのではなくコメントアウトす
51
+ ることによって,情報を保存しつつ動作させないようにする.なにをやったら
52
+ うまくいかなかったのかを記録として残すようにすることが大事である.</p>
53
+
54
+
55
+ <h2>notepadの使い方: コピー&#38;ペースト</h2>
56
+
57
+
58
+ <ul>
59
+ <li>コピーしたい領域をマウスをドラッグして反転させる.</li>
60
+ <li>Ctrlを押しながらCを押す.その領域がコピーバッファに入る.</li>
61
+ <li>挿入したいところにカーソルを合わせ,Ctrlを押しながらVを押すとペーストされる.</li>
62
+ </ul>
63
+
64
+
65
+ <h2>notepadの使い方: ショートカットキー</h2>
66
+
67
+
68
+ <ul>
69
+ <li>Ctrl+Sで,ファイルをセーブする.</li>
70
+ </ul>
71
+
72
+
73
+ <h2>コマンドプロンプトの使い方</h2>
74
+
75
+
76
+ <ul>
77
+ <li>上キーを押すと,一つ前のコマンドを表示する.同じコマンドを繰り返す時に便利.</li>
78
+ <li><code>dir</code>で,現在のディレクトリーにあるファイルの一覧を表示する.</li>
79
+ <li><code>dir *.rb</code>で,ファイルの終わりに<code>.rb</code>がついたファイル一覧を表示する.
80
+ <ul>
81
+ <li>このコマンドでちゃんとセーブされているかを確認する.</li>
82
+ </ul></li>
83
+ </ul>
84
+
85
+
86
+ <h2>Rubyとは?</h2>
87
+
88
+
89
+ <p>sglはオブジェクト指向スクリプト言語Rubyを基盤として用いている.もしプ
90
+ ログラミング言語としてのRubyを学びたい場合は直接Ruby についての本を参
91
+ 照する.</p>
92
+
93
+
94
+ <ul>
95
+ <li><a href="http://www.ruby-lang.org/ja/">Ruby</a></li>
96
+ </ul>
97
+
98
+
99
+ <p>下記の書籍をおすすめする.</p>
100
+
101
+
102
+ <ul>
103
+ <li><a href="http://www.amazon.co.jp/dp/4274066428/etocom05-22">プログラミングRuby 第2版 言語編</a></li>
104
+ <li><a href="http://www.amazon.co.jp/dp/4274066436/etocom05-22">プログラミングRuby 第2版 ライブラリ編</a></li>
105
+ </ul>
106
+
107
+
108
+ <h2>OpenGLとは?</h2>
109
+
110
+
111
+ <p>OpenGLとはグラフィックを描画するためのプログラミングにおける方法の一つ
112
+ である.sglはグラフィック描画の仕組みとして内部的にOpenGLを使っている.
113
+ もしsglの提供するグラフィックを超えてグラフィックを使いたい場合は,直
114
+ 接OpenGLを使うこともできる.</p>
115
+
116
+
117
+ <p>OpenGLの使い方は,下記のテキストをおすすめする.</p>
118
+
119
+
120
+ <ul>
121
+ <li><a href="http://www.exa-corp.co.jp/solution/UBIQ/OpenGL/index.shtml">OpenGLプログラミングコース</a>
122
+ <ul>
123
+ <li><a href="http://www.exa-corp.co.jp/solution/UBIQ/OpenGL/OpenGL-text-091.pdf">OpenGLプログラミングテキスト</a></li>
124
+ </ul></li>
125
+ </ul>
126
+ <p class="coda">
127
+ 25th June 2007<br>
128
+ </p>
129
+ </div>
130
+
131
+ <!-- insert site tracking codes here, like Google Urchin -->
132
+
133
+ </body>
134
+ </html>
data/website/howto.txt ADDED
@@ -0,0 +1,56 @@
1
+ h1. 便利情報
2
+
3
+ Ruby初心者のための,知ってると便利に使える情報です.
4
+
5
+ h2. コメントアウトを活用する
6
+
7
+ ある行だけ実行しないようにしたいが,消してしまいたくはないというとき,
8
+ コメントアウトという方法がある.行の最初に@#@を入れると,その行だけを
9
+ 実行しないようにできる.
10
+
11
+ コメントアウトを活用することはとても大事だ.プログラムをかいてみてうま
12
+ く動かなくなったときは,その行を消してしまうのではなくコメントアウトす
13
+ ることによって,情報を保存しつつ動作させないようにする.なにをやったら
14
+ うまくいかなかったのかを記録として残すようにすることが大事である.
15
+
16
+ h2. notepadの使い方: コピー&ペースト
17
+
18
+ * コピーしたい領域をマウスをドラッグして反転させる.
19
+ * Ctrlを押しながらCを押す.その領域がコピーバッファに入る.
20
+ * 挿入したいところにカーソルを合わせ,Ctrlを押しながらVを押すとペーストされる.
21
+
22
+ h2. notepadの使い方: ショートカットキー
23
+
24
+ * Ctrl+Sで,ファイルをセーブする.
25
+
26
+ h2. コマンドプロンプトの使い方
27
+
28
+ * 上キーを押すと,一つ前のコマンドを表示する.同じコマンドを繰り返す時に便利.
29
+ * @dir@で,現在のディレクトリーにあるファイルの一覧を表示する.
30
+ * @dir *.rb@で,ファイルの終わりに@.rb@がついたファイル一覧を表示する.
31
+ ** このコマンドでちゃんとセーブされているかを確認する.
32
+
33
+ h2. Rubyとは?
34
+
35
+ sglはオブジェクト指向スクリプト言語Rubyを基盤として用いている.もしプ
36
+ ログラミング言語としてのRubyを学びたい場合は直接Ruby についての本を参
37
+ 照する.
38
+
39
+ * "Ruby":http://www.ruby-lang.org/ja/
40
+
41
+ 下記の書籍をおすすめする.
42
+
43
+ * "プログラミングRuby 第2版 言語編":http://www.amazon.co.jp/dp/4274066428/etocom05-22
44
+ * "プログラミングRuby 第2版 ライブラリ編":http://www.amazon.co.jp/dp/4274066436/etocom05-22
45
+
46
+ h2. OpenGLとは?
47
+
48
+ OpenGLとはグラフィックを描画するためのプログラミングにおける方法の一つ
49
+ である.sglはグラフィック描画の仕組みとして内部的にOpenGLを使っている.
50
+ もしsglの提供するグラフィックを超えてグラフィックを使いたい場合は,直
51
+ 接OpenGLを使うこともできる.
52
+
53
+ OpenGLの使い方は,下記のテキストをおすすめする.
54
+
55
+ * "OpenGLプログラミングコース":http://www.exa-corp.co.jp/solution/UBIQ/OpenGL/index.shtml
56
+ ** "OpenGLプログラミングテキスト":http://www.exa-corp.co.jp/solution/UBIQ/OpenGL/OpenGL-text-091.pdf
data/website/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
6
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
7
  <title>
8
- sgl
8
+ sgl &#x2192; simple generic library
9
9
  </title>
10
10
  <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
11
  <style>
@@ -30,15 +30,12 @@
30
30
  <body>
31
31
  <div id="main">
32
32
 
33
- <h1>sgl</h1>
33
+ <h1>sgl &#x2192; simple generic library</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sgl"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/sgl" class="numbers">0.3.1</a>
36
+ <a href="http://rubyforge.org/projects/sgl" class="numbers">0.4.0</a>
37
37
  </div>
38
- <h1>&#x2192; simple generic library</h1>
39
-
40
-
41
- <h2>What is sgl?</h2>
38
+ <h2>What is sgl?</h2>
42
39
 
43
40
 
44
41
  <p>&#8216;sgl&#8217; is a simgple generic library to create a program with graphics and sound.</p>
@@ -91,6 +88,17 @@ wait
91
88
  <p>Run the program with <code>ruby test1.rb</code>.</p>
92
89
 
93
90
 
91
+ <code>test2.rb</code>.
92
+ <pre syntax="ruby">
93
+ require "sgl"
94
+ window 100, 100
95
+ background 0
96
+ color 100
97
+ line 0, 0, 100, 100
98
+ wait
99
+ </pre>
100
+
101
+ <code>test3.rb</code>.
94
102
  <pre syntax="ruby">
95
103
  require "sgl"
96
104
 
@@ -109,7 +117,7 @@ mainloop
109
117
 
110
118
 
111
119
  <ul>
112
- <li><a href="../doc/index.html">Document</a></li>
120
+ <li><a href="../doc/index.html" title="Rdoc"><span class="caps">API</span> Documnet</a></li>
113
121
  <li><a href="cocoa.html">cocoa version</a></li>
114
122
  </ul>
115
123
 
@@ -160,7 +168,7 @@ You&#8217;ll see the materials for the classes.</p>
160
168
 
161
169
  <p>Comments are welcome. Send an email to &#8220;Kouichirou Eto&#8221; <eto at rubyforge dot org>.</p>
162
170
  <p class="coda">
163
- 19th June 2007<br>
171
+ 25th June 2007<br>
164
172
  </p>
165
173
  </div>
166
174
 
data/website/index.txt CHANGED
@@ -1,6 +1,4 @@
1
- h1. sgl
2
-
3
- h1. &#x2192; simple generic library
1
+ h1. sgl &#x2192; simple generic library
4
2
 
5
3
  h2. What is sgl?
6
4
 
@@ -40,6 +38,17 @@ wait
40
38
 
41
39
  Run the program with @ruby test1.rb@.
42
40
 
41
+ @test2.rb@.
42
+ <pre syntax="ruby">
43
+ require "sgl"
44
+ window 100, 100
45
+ background 0
46
+ color 100
47
+ line 0, 0, 100, 100
48
+ wait
49
+ </pre>
50
+
51
+ @test3.rb@.
43
52
  <pre syntax="ruby">
44
53
  require "sgl"
45
54
 
@@ -56,7 +65,7 @@ mainloop
56
65
 
57
66
  h2. Pages
58
67
 
59
- * "Document":../doc/index.html
68
+ * "API Documnet (Rdoc)":../doc/index.html
60
69
  * "cocoa version":cocoa.html
61
70
 
62
71
  * Pages below are in Japanese
@@ -0,0 +1,141 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ サウンド機能
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>サウンド機能</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/sgl"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/sgl" class="numbers">0.4.0</a>
37
+ </div>
38
+ <h2>使い方</h2>
39
+
40
+
41
+ <p>サウンド機能の使い方について解説する.</p>
42
+
43
+
44
+ <pre syntax="ruby">
45
+ require 'sgl'
46
+
47
+ useSound # soundを使うことを宣言する.
48
+
49
+ sound = loadSound('sine.wav') # サンプル音をファイルから読みこむ.
50
+ # 同じディレクトリーにsine.wavというファイルを置いておく.
51
+
52
+ sound.play # そのサンプル音を再生する.
53
+
54
+ wait # プログラムがすぐ終了するのをふせぐために待つ.
55
+ # Ctrl+Cで,プログラムが終了する.
56
+ </pre>
57
+
58
+ <p>元となるサンプル音は,マイクからサンプリングしたり,インターネットから
59
+ フリーの音源をダウンロードする.波形編集ソフトを使ってMP3ファイルから
60
+ 切り出したりする方法もある.</p>
61
+
62
+
63
+ <pre syntax="ruby">
64
+ require 'sgl'
65
+
66
+ def setup
67
+ useSound
68
+ window -200, -200, 200, 200
69
+ $y = 0
70
+ $sound = loadSound('sine.wav')
71
+ end
72
+
73
+ def onMouseDown(x, y)
74
+ $y = y
75
+ $sound.play(y / 10 + 60)
76
+ end
77
+
78
+ def display
79
+ line -200, $y, 200, $y
80
+ end
81
+
82
+ mainloop
83
+ </pre>
84
+
85
+ <p>マウスが押されると,その高さに応じた音を再生する.音量も変化する.</p>
86
+
87
+
88
+ <pre syntax="ruby">
89
+ require 'sgl'
90
+
91
+ def setup
92
+ useSound
93
+ window -200, -200, 200, 200
94
+ $x = 0
95
+ $y = 0
96
+ $sound = loadSound('sine.wav')
97
+ end
98
+
99
+ def onMouseDown(x, y)
100
+ $x = x
101
+ $y = y
102
+ $sound.play(y / 10 + 60, x / 4 + 50)
103
+ end
104
+
105
+ def display
106
+ circle($x, $y, 10)
107
+ end
108
+
109
+ mainloop
110
+ </pre>
111
+
112
+ <h2>注意点</h2>
113
+
114
+
115
+ <p>音を同時にたくさん出すと,システム全体が固まる.プログラムが止まるだけ
116
+ でなく,マシン全体が固まる.あまりたくさん音を同時に出しすぎないように
117
+ プログラム側で調整する.</p>
118
+
119
+
120
+ <h2>波形編集ソフト</h2>
121
+
122
+
123
+ <p>AudacityやWave Editor <span class="caps">TWE</span>などのフリーの波形編集ソフトを使ってサンプル
124
+ 音を編集できる.自分が持っているMP3ファイルを元に編集することもできる.
125
+ AudacityなどでMP3ファイルを開き,該当個所のみを切り出して保存しなおす
126
+ とよい.</p>
127
+
128
+
129
+ <ul>
130
+ <li><a href="http://audacity.sourceforge.net/">Audacity</a></li>
131
+ <li><a href="http://www.yamaha.co.jp/product/syndtm/dl/utility/twe/">Wave Editor <span class="caps">TWE</span></a></li>
132
+ </ul>
133
+ <p class="coda">
134
+ 20th June 2007<br>
135
+ </p>
136
+ </div>
137
+
138
+ <!-- insert site tracking codes here, like Google Urchin -->
139
+
140
+ </body>
141
+ </html>
data/website/sound.txt ADDED
@@ -0,0 +1,87 @@
1
+ h1. サウンド機能
2
+
3
+ h2. 使い方
4
+
5
+ サウンド機能の使い方について解説する.
6
+
7
+ <pre syntax="ruby">
8
+ require 'sgl'
9
+
10
+ useSound # soundを使うことを宣言する.
11
+
12
+ sound = loadSound('sine.wav') # サンプル音をファイルから読みこむ.
13
+ # 同じディレクトリーにsine.wavというファイルを置いておく.
14
+
15
+ sound.play # そのサンプル音を再生する.
16
+
17
+ wait # プログラムがすぐ終了するのをふせぐために待つ.
18
+ # Ctrl+Cで,プログラムが終了する.
19
+ </pre>
20
+
21
+ 元となるサンプル音は,マイクからサンプリングしたり,インターネットから
22
+ フリーの音源をダウンロードする.波形編集ソフトを使ってMP3ファイルから
23
+ 切り出したりする方法もある.
24
+
25
+ <pre syntax="ruby">
26
+ require 'sgl'
27
+
28
+ def setup
29
+ useSound
30
+ window -200, -200, 200, 200
31
+ $y = 0
32
+ $sound = loadSound('sine.wav')
33
+ end
34
+
35
+ def onMouseDown(x, y)
36
+ $y = y
37
+ $sound.play(y / 10 + 60)
38
+ end
39
+
40
+ def display
41
+ line -200, $y, 200, $y
42
+ end
43
+
44
+ mainloop
45
+ </pre>
46
+
47
+ マウスが押されると,その高さに応じた音を再生する.音量も変化する.
48
+
49
+ <pre syntax="ruby">
50
+ require 'sgl'
51
+
52
+ def setup
53
+ useSound
54
+ window -200, -200, 200, 200
55
+ $x = 0
56
+ $y = 0
57
+ $sound = loadSound('sine.wav')
58
+ end
59
+
60
+ def onMouseDown(x, y)
61
+ $x = x
62
+ $y = y
63
+ $sound.play(y / 10 + 60, x / 4 + 50)
64
+ end
65
+
66
+ def display
67
+ circle($x, $y, 10)
68
+ end
69
+
70
+ mainloop
71
+ </pre>
72
+
73
+ h2. 注意点
74
+
75
+ 音を同時にたくさん出すと,システム全体が固まる.プログラムが止まるだけ
76
+ でなく,マシン全体が固まる.あまりたくさん音を同時に出しすぎないように
77
+ プログラム側で調整する.
78
+
79
+ h2. 波形編集ソフト
80
+
81
+ AudacityやWave Editor TWEなどのフリーの波形編集ソフトを使ってサンプル
82
+ 音を編集できる.自分が持っているMP3ファイルを元に編集することもできる.
83
+ AudacityなどでMP3ファイルを開き,該当個所のみを切り出して保存しなおす
84
+ とよい.
85
+
86
+ * "Audacity":http://audacity.sourceforge.net/
87
+ * "Wave Editor TWE":http://www.yamaha.co.jp/product/syndtm/dl/utility/twe/
Binary file
@@ -1,5 +1,7 @@
1
1
  body {
2
2
  background-color: #fff;
3
+ background-image: url(grade.png);
4
+ background-repeat: repeat-x;
3
5
  font-family: "Georgia", sans-serif;
4
6
  font-size: 16px;
5
7
  line-height: 1.6em;
@@ -15,7 +17,7 @@ h1 {
15
17
  font-size: 4em;
16
18
  line-height: 0.8em;
17
19
  letter-spacing: -0.1ex;
18
- margin: 5px;
20
+ margin: 5px;
19
21
  }
20
22
  li {
21
23
  padding: 0;
@@ -24,7 +26,7 @@ li {
24
26
  }
25
27
  a {
26
28
  color: #555;
27
- background-color: #eee;
29
+ background-color: #eee;
28
30
  font-weight: normal;
29
31
  text-decoration: underline;
30
32
  }
@@ -55,11 +57,11 @@ table {
55
57
  color: #ff8;
56
58
  background-color: #111;
57
59
  padding: 2px 10px 2px 10px;
58
- border-style: dashed;
60
+ border-style: dashed;
59
61
  }
60
62
 
61
63
  th {
62
- color: #fff;
64
+ color: #fff;
63
65
  }
64
66
 
65
67
  td {
@@ -67,22 +69,22 @@ td {
67
69
  }
68
70
 
69
71
  .success {
70
- color: #0CC52B;
72
+ color: #0CC52B;
71
73
  }
72
74
 
73
75
  .failed {
74
- color: #E90A1B;
76
+ color: #E90A1B;
75
77
  }
76
78
 
77
79
  .unknown {
78
- color: #995000;
80
+ color: #995000;
79
81
  }
80
82
  pre, code {
81
83
  font-family: monospace;
82
84
  font-size: 90%;
83
85
  line-height: 1.4em;
84
86
  color: #ff8;
85
- background-color: #111;
87
+ background-color: #960;
86
88
  padding: 2px 10px 2px 10px;
87
89
  }
88
90
  .comment { color: #aaa; font-style: italic; }
@@ -101,11 +103,11 @@ pre, code {
101
103
  text-align: right;
102
104
  font-family: sans-serif;
103
105
  font-weight: normal;
104
- background-color: #ddd;
106
+ background-color: #fec;
105
107
  color: #141331;
106
108
  padding: 15px 20px 10px 20px;
107
109
  margin: 0 auto;
108
- margin-top: 15px;
110
+ margin-top: 15px;
109
111
  border: 3px solid #141331;
110
112
  }
111
113
 
@@ -114,25 +116,24 @@ pre, code {
114
116
  font-size: 4em;
115
117
  line-height: 0.8em;
116
118
  letter-spacing: -0.1ex;
117
- margin-bottom: 15px;
119
+ margin-bottom: 15px;
118
120
  }
119
121
 
120
122
  #version p {
121
123
  text-decoration: none;
122
- color: #141331;
123
- background-color: #ddd;
124
- margin: 0;
125
- padding: 0;
124
+ color: #141331;
125
+ background-color: #fec;
126
+ margin: 0;
127
+ padding: 0;
126
128
  }
127
129
 
128
130
  #version a {
129
131
  text-decoration: none;
130
- color: #141331;
131
- background-color: #ddd;
132
+ color: #141331;
133
+ background-color: #fec;
132
134
  }
133
135
 
134
136
  .clickable {
135
- cursor: pointer;
136
- cursor: hand;
137
+ cursor: pointer;
138
+ cursor: hand;
137
139
  }
138
-