mieki256's diary



2024/01/27() [n年前の日記]

#1 [basic] FreeBASICでwavやoggを鳴らせるFBSoundライブラリを試用

FreeBASICで、wav、mp3、ogg等を鳴らせる FBSound というライブラリがあると知った。

_jayrm/fbsound: A free sound library primarily for games and demos written by D.J. Peters.
_fbsound 1.2 Windows/Linux (sid wav mp3 ogg mod it xm s3m) - freebasic.net
_fbsound 1.1 (dynamic) Windows/Linux 32 and 64-bit (wav mp3 ogg mod it xm s3m) - freebasic.net
_fbsound 1.0 Win/Lin 32/64-bit (wav mp3 ogg mod it xm s3m) - freebasic.net
_Load Sound in Memory (FBSound 1.2) - freebasic.net

以前はライセンスが不明で敬遠されてた気配があるけど、今現在はドキュメント上で、ライセンスについてちゃんと書いてあるように見える。

Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit で試用してみることにした。複数のwavを同時に鳴らせたらいいのだけど、さて。

インストール :

fbsound-1.2.zip を入手して解凍。
  • inc/ にヘッダーファイル .bi が入っている。
  • test/ に動作に必要な .dll ファイル群が入っている。

inc/ の中身は以下。
fbs3d.bi
fbsound_dynamic.bi
fbsound_oop.bi

test/*.dll は以下。
fbsound-32.dll
fbsound-64.dll
fbsound-ds-32.dll
fbsound-ds-64.dll
fbsound-mm-32.dll
fbsound-mm-64.dll

この .bi と .dll を、利用したいプロジェクトフォルダにコピーして、ソースの最初のほうに以下を書いておけば、FBSound が使えるようになる。
#include "fbsound_dynamic.bi"

あるいは、.bi ファイルを、FreeBASICインストールフォルダ/inc/ にコピーしておいてもいい。ただ、生成した .exe と同じ場所に .dll群も置いておかないと動作しない。

動作確認 :

test/ 以下にサンプルファイル群が入っているので、各 .bas について、fbc xxxx.bas と打ってコンパイルすれば動作確認できる。

ogg (or wav) を鳴らすサンプルを書いてみた。

_waveplay.bas
' wave play sample with FBSound

#include "fbsound_dynamic.bi"

chdir(exepath())

' FBSound initialize
If fbs_Init() = True Then
    Print "fbs_Init() success."
Else
    Print "Error : fbs_Init() failure"
    Print FBS_Get_PlugError()
    Beep
    sleep
    end 1
End If

dim as integer hWave1, hWave2, hWave3

#ifdef 0

' load wav file
Print "load wav file"
fbs_Load_WAVFile("1.wav", @hWave1)
fbs_Load_WAVFile("2.wav", @hWave2)
fbs_Load_WAVFile("3.wav", @hWave3)

#Else

' load ogg file
Print "load ogg file"
fbs_Load_OGGFile("1.ogg", @hWave1)
fbs_Load_OGGFile("2.ogg", @hWave2)
fbs_Load_OGGFile("3.ogg", @hWave3)

#endif

Print "Play : 1 - 3 key"
Print "Exit : ESC key"

Dim As Boolean running = True
Dim As String k

While running
    Dim As String k = inkey$
    Select Case k
    Case "1": fbs_Play_Wave(hWave1)
    Case "2": fbs_Play_Wave(hWave2)
    Case "3": fbs_Play_Wave(hWave3)
    Case Chr(27): running = False
    End Select
    
    sleep 100
Wend

Print "Exit."

fbc waveplay.bas と打ってコンパイル。waveplay.exe が生成される。

_1.ogg_2.ogg_3.ogg を同じフォルダに入れてから実行すれば、1, 2, 3キーを押すことで ogg を再生できる。

複数のoggを同時に再生することができているので、鳴らすだけでOK系のゲームSEなら使えそうかなと…。

modも鳴らせる :

.wav 以外に、.ogg、.mp3 も鳴らせるけれど、.mod, .xm, .s3m, .it 等、Amiga発祥のデモシーンで使われていた音楽ファイルフォーマットも利用できる。

_MOD (ファイルフォーマット) - Wikipedia

#2 [basic] FreeBASIC + FBWindowsSoundWav.basを試用

FreeBASIC でwav再生するためのライブラリについて調べてる。

以下の投稿ページの中で、Windows と Linux の両方でwav再生するための関数名を同じにしたライブラリが紹介されてた。

_Play Sound WAV (Windows [32-bit], [64-bit], Linux [32-bit], [64-bit]) - freebasic.net

再生の実処理は、Windows、もしくは Linuxに特化した機能を呼び出して実現してるらしい。関数名が同じになるだけでも便利そうだなと思えてきたので試用してみることにした。環境は Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit。

結論を先に書いておく。一応wavは鳴ったけど、ゲーム制作用には使えない印象。

インストール :

前述の掲示板から、ソースコードをコピペして、ローカルで .bi や .bas として保存する。
  • Linux の場合は、alsa.bi と FBLinuxSoundWav.bas をプロジェクトフォルダにコピー。
  • Windwos の場合は、FBWindowsSoundWav.bas をプロジェクトフォルダにコピー。

サンプルは以下。今回は 1.wav というファイルを読み込んで再生する。

_sample.bas
#include "FBWindowsSoundWav.bas"

Dim fb_Wav As FbWAV Ptr

LoadWav("1.wav", fb_Wav)
PlayWav(fb_Wav)

Do
    Var key = Inkey
    Select Case key
    Case "s" : StopWav(fb_Wav)
    Case "p" : PlayWav(fb_Wav)
    Case "q" : Exit Do
    Case " "
        PauseWAV(fb_Wav)
        Sleep(100)
    End Select

    Var sp = StatusPlay(fb_Wav)
    Sleep(100)

    Cls
    Select Case sp
    Case 1 : Print "Play"
    Case 0 : Print "Stop"
    Case 2 : Print "Pause"
    End Select

    Print "Length=" & GetLengthSeconds(fb_Wav) & " seconds"
    Print "s)top / p)lay / q)uit / SPACE : Pause"
Loop

FreeWav(fb_Wav)

fbc sample.bas でコンパイル。sample.exe を実行。pキーで再生。sキーで停止。qキーで終了。

たしかに wav が鳴ってくれたけれど…。前の再生がまだ終わってない状態で連続して鳴らすと、前の再生をブツ切りして、次の音が最初から再生されてしまう。同時に並行して鳴ってほしいのだけどなあ…。

また、ブツ切りされる際に、ノイズもブチブチと入りまくる。

ゲーム制作に使えるライブラリでは無さそうだなと…。

#3 [basic] FreeBASIC + FMODを試用

FreeBASIC から、FMOD (fmod.dll) なるサウンド用ライブラリを利用することができるらしい。

_FMOD
_FMOD - FreeBASIC Wiki Manual | FBWiki
_FreeBASIC Compiler / Feature Requests / #185 FMOD Ex headers for freebasic...
_TUTORIAL: Using FMOD for In-Game Music - Page 2 - freebasic.net

FMODは、商用利用時はライセンス料を払わないといけないサウンドライブラリ。ただ、フリーソフトに使う分には無料で利用しても良いことになっているらしい。あるいは、売り上げが一定額に満たない場合も無料で利用できる、と書いてあるように見えた。昔の Unity みたいな感じだろうか。 *1

気になったので、Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit で試用してみた。

インストール :

現行版のバイナリはユーザ登録しないと入手できないように見えたのだけど、おそらく昔の版なら、別の経路で入手できそう。例えば、以下のページから、UsingFMOD_A_Tutorial.zip もしくは、fmod_example_program.zip を入手する。中に fmod.dll も入ってる。

_TUTORIAL: Using FMOD for In-Game Music - Page 2 - freebasic.net
_QB Express: Issue #26

fmod_example_program.zip を解凍すると、サンプルファイル fmod_example.bas と fmod.dll が入ってる。ちなみに、ヘッダーファイル、fmod.bi は、FreeBASIC 1.10.1 に最初から入っている。

動作確認 :

fbc fmod_example.bas でコンパイル。

ただ、警告が結構出る。もしかすると fmod.dll のバージョンが合ってないのだろうか。しかし、FreeBASIC の fmod.bi には FMOD 3.75 と記述されていて、今回入手できた fmod.dll のバージョンも 3.7.5。バージョンは合ってそうな気がする…。FreeBASIC のバージョンアップに伴う仕様変更に、fmod.bi が追従していないだけだろうか? 随分古いライブラリのようだし。

さておき。一応、wav は鳴ってくれた。別々の音が同時に鳴っているようにも聞こえる。

しかし、一部の wav がループ再生されてしまう…。全ての wav がループ再生されるわけではなくて、特定のwavだけがループ再生になる。何故。ワンショット系のSEにするにはどうしたらいいのか…。

もしかして wav ファイルの中にループ再生するかしないかの情報を盛り込めることができて、たまたま何かの拍子に、その wav にだけ、その情報が入っちゃってるとか…?

ループ再生されてしまう wav を SoundEngine Free 5.23 で開いて、そのまま保存し直してみた。保存し直した wav を使ったらループ再生されない。どういうことだろう…。分からんなあ…。やはり wav にループ再生を指示する何かしらの情報を埋め込めるのだろうか…。

*1: 今の Unity はどういう価格体系になったのかよく知らないので、「昔の」と言っておきます…。

#4 [basic] FreeBASIC + BASSを試用

FreeBASIC から BASSなるサウンド用ライブラリを利用することができるらしい。

_Un4seen Developments - BASS
_Un4seen Developments - BASSMOD

BASSは、非営利目的の場合は無料で利用できる。商用利用の場合はライセンス料を払わないといけない。

たしかこのあたり、DXRuby を触ってた頃も、「作ったゲームを同人ソフトとして販売するだけでも一定額を払わないといけないのはどうなのか。そのゲームが売れるのか売れないのか、全然分からないのに」みたいな話があって敬遠されていた記憶が…。

でもまあ、フリーソフトを作る分には無料で利用できるので、一応試用。環境は Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit。

インストール :

以下のファイルを入手。
bass24.zip
bassmod20.zip

後者は、modファイルを再生するために必要。wav や mp3 を鳴らすだけなら要らない、と思う。たぶん。

それぞれ解凍して、中に入っている .dll (bass.dll, BASSMOD.dll) をプロジェクトフォルダにコピーしておく。

ちなみに…。
  • bass24.zip : 32bit版と64bit版の dll が入っている。
  • bassmod20.zip : 32bit版の dll しか入ってない。

動作確認 :

FreeBASICインストールフォルダ/examples/sound/BASS/ の中にサンプルファイルがある。

demo.bas と small.bas はコンパイルできて、ogg と mo3(oggに対応させたmodらしい)は再生できた。

しかし、mod.bas がコンパイルできない。以下のエラーを出す。
> fbc mod.bas
mod.bas(15) error 58: Type mismatch, at parameter 2 of BASSMOD_MUSICLOAD() in 'If (BASSMOD_MusicLoad(FALSE, sound_file, 0, 0, BASS_MUSIC_LOOP) = False) Then'

色々調べてみたけれど、FreeBASICインストールフォルダ/inc/bassmod.bi の、以下の行を変更したら、コンパイルできるようになった。file のタイプを const zstring ptr に変更している。
declare function BASSMOD_MusicLoad(byval mem as BOOL, byval file as any ptr, byval offset as DWORD, byval length as DWORD, byval flags as DWORD) as BOOL

' ↓

declare function BASSMOD_MusicLoad(byval mem as BOOL, byval file as const zstring ptr, byval offset as DWORD, byval length as DWORD, byval flags as DWORD) as BOOL

しかし、コンパイルはできたものの、生成された mod.exe が、Windowsセキュリティから PUA:Win32/Keygen として警告されてしまう。mod.exe を、オンラインのウイルススキャンサイトに渡してスキャンしてみると問題無しと出てくるので、単に誤検出じゃないのかと思うけど…。

どうせ誤検出だろう、誤検出に違いないと信じて(?)、mod.exe を実行してみたところ、一応 mod が鳴ったことは鳴ったけれど…。ウイルス扱いされるのでは困るよなあ…。生成物を配布できないやん…。

いやまあ、BASSMOD は使わず、BASSだけ使う分には、そういう問題に遭遇しないのかもしれんけど。今の時代に、あえてゲームのBGMとしてmod/s3m/xm/itを鳴らしたい人も居ないだろうから、それほど実害は無さそうな気も…。BGMの類は、えてして ogg か mp3 にして用意することが多いだろうし…。

#5 [basic] FreeBASIC + PortAudioを試用してみたかった

FreeBASICから PortAudio なるサウンドライブラリを利用することができるという話も見かけたのでそのあたりを試してみた。環境は Windows10 x64 22H2 + FreBASIC 1.10.1 32bit。

結論を先に書くけど、PortAudio についての知識を持ってる人じゃないと使えない気配がした。

PortAudioをMinGWでビルド :

PortAudio を使うためには、ライブラリファイル *.a や、ランタイム(?) *.dll が必要になるのだろう。MinGW(gcc 6.3.0) を使ってビルドできないか試した。

_PortAudio - an Open-Source Cross-Platform Audio API
_Notes_about_building_PortAudio_with_MinGW ・ PortAudio/portaudio Wiki
_PortAudio: Building Portaudio for Windows with MinGW

FreeBASICに同梱されている portaudio.bi を眺めたところ、v19_20140130 を対象にしていた。同じバージョンを入手してビルドしたほうが良さそうだな…。

PortAudio のサイトから、pa_stable_v19_20140130.tgz を入手して解凍。

MinGW/MSYS が使える状態にして、portaudio/ の中に入って、bash を起動。configure を利用する関係で、bash上でしか作業できない。

以下を打ったところ、色々なファイルが生成された。
./configure
make

include/ にヘッダファイル、*.h がある。これはビルドする前から元々入っている。

lib/ 以下に、色々なファイルが生成された。更に、lib/.libs/ に以下のファイルが入っている。
libportaudio.dll.a
libportaudio.la
libportaudio-2.dll
  • *.a や *.la が、コンパイル時に必要になるライブラリファイル。
  • *.dll が、実行時に必要になるDLLファイル。

FreeBASICで使用 :

FreeBASIC 1.10.1 32bitで使えそうか試してみる。libportaudio.dll.a, libportaudio.la を、freeBASICインストールフォルダ/lib/win??/ にコピー。

加えて、libportaudio-2.dll をプロジェクトフォルダにコピーするのだけど、これだけでは動かなかった。libmingwex-0.dll とやらも必要になった。MinGWインストールフォルダ/bin/ から探して持ってくる。

ただ、サンプルファイルが皆無なので、使い方が全く分からない…。

別版バイナリを試用 :

FreeBASICの掲示板で、ビルド済みの別版 PortAudio バイナリを配布している事例を見かけた。

以下の投稿ページで、FreeBASIC用にビルドした PortAudio のバイナリが配布されている。FreeBASICの配布パッケージに入ってるものとは異なる、別の版らしい。

_libportaudio-2 dynamic windows linux 32/64-bit - freebasic.net

portaudio.zip を入手して解凍すると、以下のファイルが入っていた。
.
|-- lib
|   |-- lin32                   (Linux 32bit)
|   |   `-- libportaudio-2.so
|   |-- lin64                   (Linux 64bit)
|   |   `-- libportaudio-2.so
|   |-- win32                   (Windows 32bit)
|   |   `-- libportaudio-2.dll
|   `-- win64                   (Windows 64bit)
|       `-- libportaudio-2.dll
|-- enumerate.bas               (sample)
|-- pa_dynamic.bi               (FreeBASIC Header file)
`-- streamcallback.bas          (sample)

5 directories, 7 files

見た感じ、以下のようなファイルなのだろう。
  • Windows 32bit, 64bit用の libportaudio-2.dll
  • Linux 32bit, 64bit用の libportaudio-2.so
  • FreeBASIC用のヘッダーファイル pa_dynamic.bi
  • サンプルファイル enumerate.bas, streamcallback.bas

Wndows 32bit用の libportaudio-2.dll をサンプルファイルと同じ場所にコピーして、fbc streamcallback.bas でコンパイル。streamcallback.exe を実行したらサイン波が鳴ってくれた。

fbc enumerate.bas で enumerate.exe を生成して実行したところ、利用できるデバイスの一覧が表示された。
PortAudio V19-devel (built May 13 2016 04:39:45)

(0) input  Microsoft Sound Mapper - Input
(1) input  マイク (Realtek(R) Audio)
(2) input  ステレオ ミキサー (Realtek(R) A
(3) output Microsoft Sound Mapper - Output
(4) output スピーカー (Realtek(R) Audio)
(5) output Realtek Digital Output (Realtek

これってつまり、PortAudio を使って音を鳴らしたい時は、どれかしらのデバイスを明示的に指定しないと鳴らせないということになるのだろうか…? なんだか面倒臭いな…。

更に別の版を試用 :

上記の版とはまた別の版も見かけた。以下のやり取りの下のほうで、fbPortAudio.zip というファイルが配布されている。

_C/C++ Libraries - freebasic.net

fbPortAudio.zip を入手して解凍したら、*.a, *.dll, *.bi が入っていた。

以下のサンプルファイルをコンパイルしたら、情報を表示したり、サイン波が鳴った。
patest_devs.bas
patest_sine.bas
patest_version.bas

状況が混乱している気がする :

FreeBASIC + PortAudio は、状況的によく分からないことになっている気がする…。

公式の portaudio.bi とは別の版が複数あるようで、一応それらは、付属している .dll を一緒に利用する限り、それらしく動作する。

しかし、公式の portaudio.bi は、使い方が分からない。他の版のサンプルを流用してコンパイルしようとすると、各関数に与える変数のタイプが異なっているようで、エラーが出てコンパイルできない。

加えて、サンプルソースを見ても、実際に音を出すまでに細々とした各種設定をしないといけないようで、何をしているのかさっぱり分からない。

とにかく、公式版に同梱されている portaudio.bi を利用したサンプルが一切存在していない点が非常に困る…。自分でビルドした *.a や *.dll が、ちゃんとビルドできているのか、簡単な動作確認すらできない…。

この、PortAudio、自分の知識レベルではちょっと手に負えないライブラリのようだなと…。

2023/01/27(金) [n年前の日記]

#1 [debian][linux] IdeaPad S10-2 + Debian 11でアレコレ試しているところ

古のネットブック機 Lenovo IdeaPad S10-2 に Debian Linux 11 bullseye 32bit版をインストールしたので、せっかくだから色々試しているところ。

バッテリーの容量をCUIで知りたい。 :

バッテリーの残り容量をCUIで知りたいのだけど、どうしたら…。

以下のページが参考になった。ありがたや。

_Linux(Debian)でバッテリ状態を確認する。 - treedown’s Report
_バッテリーの充電状況や劣化の目安などを調べるコマンド - adbird(広告鳥) 備忘録
_バッテリーの残量を確認する方法 - Qiita

acpi というコマンドや、upower というコマンドがあるらしい。とりあえず、acpi を使ってみた。
sudo apt install acpi
acpi -h
$ acpi -b
Battery 0: Discharging, 46%, 01:10:07 remaining

$ acpi -i
Battery 0: Discharging, 45%, 01:18:48 remaining
Battery 0: design capacity 4860 mAh, last full capacity 2737 mAh = 56%

$ acpi -V
Battery 0: Discharging, 44%, 01:14:00 remaining
Battery 0: design capacity 4860 mAh, last full capacity 2737 mAh = 56%
Adapter 0: off-line
Thermal 0: ok, 40.0 degrees C
Thermal 0: trip point 0 switches to mode critical at temperature 102.0 degrees C
Cooling 0: Processor 0 of 10
Cooling 1: LCD 6 of 10
Cooling 2: Processor 0 of 10

「Discharging, 46%」というのが残り容量で、「design capacity」が設計上の容量、「last full capacity」が最後に充電して100%になった時の容量、ということなのだろう。

液晶ディスプレイの明るさ(LCD 6 of 10)すら取得できるとは…。素晴らしい。それにしても、本来あったはずの容量の 56% しか溜め込めないぐらいにバッテリーが劣化しているのだな…。

upowerコマンドも使えそうなので試してみた。
$ upower -e
/org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/DisplayDevice

upower -e で、取得できるものの種類が一覧表示されるのだろう。この中の、battery_BAT0 というのが名前からしてバッテリーらしい。

-iオプションをつけて、詳細情報を取得。
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               SANYO
  model:                GC86508SAT0
  power supply:         yes
  updated:              2023年01月27日 05時48分32秒 (95 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               discharging
    warning-level:       none
    energy:              10.0548 Wh
    energy-empty:        0 Wh
    energy-full:         29.5596 Wh
    energy-full-design:  52.488 Wh
    energy-rate:         10.368 W
    voltage:             11.08 V
    time to empty:       58.2 minutes
    percentage:          34%
    capacity:            56.3169%
    technology:          lithium-ion
    icon-name:          'battery-good-symbolic'
  History (charge):
    1674766112  34.000  discharging
  History (rate):
    1674766112  10.368  discharging

バッテリーのメーカ名や型番まで表示された。今は亡き三洋製なのね…。

GUIのファイラーをインストール :

thunar と xfe をインストールしてみた。
sudo apt install thunar xfe

ちなみに、LXDE の標準ファイラーは PCManFM で、Xfce の標準ファイラーは thunar。

余談。xfe でググると、Xfce までリストアップされてしまう。全然別のものなのに…。

2022/01/27(木) [n年前の日記]

#1 [nitijyou] 土台の形について調べてる

灯油ポンプを立てておくための台を作りたい。今利用している灯油ポンプホルダーには、壁等に固定するのであろう穴が開いているので、木の板を立てておいてそこに固定すればなんとかなりそうだけど。問題は…どうやって木の板を立てるべきか…。

そんなわけで、Google画像検索でイイ感じの土台の形を探しているところ。これなら十中八九倒れないぞと思えてくる形状を考えないと…。

2021/01/27(水) [n年前の日記]

#1 [love2d] love2dをWebブラウザ上で動かしたい

ふと、love2d用のスクリプトをWebブラウザで動かせないかなと思い立った。

love2d というのは、2Dゲームを作れるフレームワークというか、ゲームエンジンというか。スクリプトの記述はLua言語。無料で利用できる。Windows/Linux/Mac/Android/iOS上で動くらしい。

_LoVE - Free 2D Game Engine

ちなみに、「LoVE」の「o」が妙な文字になってるのが正式名称らしいけど、それだとググった時に都合が悪いので「love2d」と書くことが多い。

少しググってみたら、love.js なるものがあるそうで、ソレを使えば love2d を JavaScript に変換してWebブラウザ上で動かせるようになるらしい。

_Davidobot/love.js: LoVE ported to the web using Emscripten, updated to the latest Emscripten and LOVE (v11.3)
_TannerRogalsky/love.js: LoVE ported to the web using Emscripten

love2d 0.10.0 まで対応してる版と、11.3 に対応してる版がある模様。npm だか Node.js だかをインストールしないと利用できないっぽい。

※ 2021/01/28追記。11.3に対応してると思ったが勘違いで、0.11.0-rc3までの対応だった。

それとは別に、LoVE Web Builder なるサイトに遭遇。

_LoVE Web Builder - Home

Webブラウザ上で .love ファイルを渡してやると、Webサーバ上でビルドして HTML + JavaScript に変換してくれる。ただ、love2d 0.11.1 までしか対応してないらしい。

LoVE Web Builderを試用。 :

せっかくだから、LoVE Web Builder を利用して、HTML + JavaScript に変換できるか試してみる。

環境は、Windows10 x64 20H2 + Firefox 85.0 x64。

  1. 公式サイトの「Package Your Game」というリンクをクリック。変換用のページが開く。
  2. 参照ボタンをクリックして、ローカルに保存されている .love ファイルを指定。
  3. タイトルやウインドウサイズ等を指定。
  4. 「Build Package」をクリックすればビルドされて、生成されたファイル群を zip ファイルの形でダウンロードできる。

ちなみに、.love ファイルの作り方は、関連ファイル(conf.lua、main.lua 等々)を、まとめて1つの .zip ファイルに圧縮して、拡張子を .zip から .love にリネームするだけ。要するに、.love ファイルの実態は .zip ファイル。

そんなわけで、2つほど変換してみた。

_helloworld_like_tic80.html (カーソルキーで上下左右にキャラが動く)

_cubic_bezier.html (マウスの動きに合わせて触手が動く)

さて、動くだろうか…。一応、手元の環境、Windows10 x64 20H2 + Firefox 85.0 x64 では動いてるけど…。

ローカル環境で簡易Webサーバを起動して動作確認。 :

変換・生成されたファイル群は、Webサーバにアップロードしないと動作確認ができないらしい。ローカル環境で動作確認したい場合は、Python を利用して、一時的に簡易Webサーバを立ち上げて確認することができる。

_Python の http.server を使って簡単にWebサーバーを立てる - サーバーワークスエンジニアブログ
_pythonでローカルwebサーバを立ち上げる - Qiita

DOS窓を開いて、.html や .js が置いてあるフォルダをカレントディレクトリにして…。
  • Python 3.x の場合 : python -m http.server 8000
  • Python 2.x の場合 : python -m SimpleHTTPServer 8000
これで簡易Webサーバが起動して、8000番ポートで待ち受け状態になるので、Webブラウザで http://localhost:8000/ にアクセスすればいい。

簡易Webサーバが起動する際に、Windows10のファイアウォールが反応するけれど、「アクセスを許可する」を選んでしまってOK。

_Windows10/アプリごとのファイアウォール設定の変更 - Windowsと暮らす

#2 [nitijyou] 点灯管を購入

部屋のメイン照明に使ってる、30形 + 32形の丸型蛍光灯器具の点灯具合が怪しくて。一定間隔・数秒毎に、一瞬暗くなる。これは蛍光灯の寿命なのか、それとも点灯管なのか。はたまた安定器とやらなのか。

確認した感じでは、どうも32形のほうで症状が出ている気がする。30形だけ点けてる状態では症状が出ないし…。

とりあえず、ホーマックで点灯管だけ買ってきて交換してみた。Panasonic FG-5PL/X。「長寿命点灯管」「3倍長もち」と謳ってる品。ちなみに、今まで付けてた品は、表面に TOSHIBA FG-5P と書いてあった。

32形の丸型蛍光灯は、FG-5P が必要で、30形は FG-1E が必要らしい。

安定器が怪しい。 :

点灯管の交換後に気が付いたけど、器具から「ジー」という音が聞こえ続けていた。ググったところ、そういう音が鳴る時は安定器が寿命だそうで、フツーは器具ごと交換するのが妥当らしい。しかし、今時、店頭で蛍光灯用の器具なんて売ってないわけで。

LEDライトに交換するしかないのかな、とググってみたけど、引掛シーリングローゼット、なるものに固定する必要があるわけで…。部屋の天井には「角形引掛シーリング」がついてるけれど、そこにLEDライトを付けられるのかどうかがよく分からず。その手の画像には、えてして丸いシーリングが映ってるのだよな…。

_引掛シーリングの種類と取り付け方 【通販モノタロウ】
_引っ掛けシーリングの取付け方法

一応、角形引掛シーリングにも、LEDシーリングライトとやらを付けられなくもないのかな…。でも、重みで外れたりしないのだろうか。今現在ついている蛍光灯用の器具は、天井のフックから鎖でぶら下がってるのだけど。LEDペンダントライトなるものを眺めても、全部シーリングからぶら下がってるように見える。フック+鎖でぶら下げるタイプは無いのだろうか。

2020/01/27(月) [n年前の日記]

#1 [nitijyou] 体がだるい

一日中体がだるくて。風邪でもひいたのだろうか…。

2019/01/27() [n年前の日記]

#1 [cg_tools] Inkscapeでキーボード画像を作成する手順をメモ

ここ最近、Inkscapeを使ってキーボードっぽい画像をいくつか作っていたけれど、作業手順を忘れてしまいそうな気がするので今のうちに一応メモ。ちなみに環境は、Windows10 x64 + Inkscape 0.92.4 x64。

キーボードのキーを増やす。 :

まずは、キーボードのキーを1つ分描く。

keys_ss01.png

Inkscape は、塗り(フィル)と線(ストローク)にグラデーションを指定することができるので、そのあたりを使えばちょっとリアルっぽい見た目の画像を作れるはず。もちろん、パスで細かく分けて、ベタ塗りしてそれらしくすることもできるけど。

キーを増やすための下準備として、キー1つ分をグループ化する。選択した状態で、オブジェクト → グループ化。

keys_ss02.png

ちなみに、ショートカットキー、Ctrl + G でもグループ化できるし、ツールバー上に「グループ化」「グループ解除」のアイコンもあるので、そちらをクリックしても目的は果たせる。

タイルクローンを使って、キーを大量に複製する。キー1つ分を選択した状態で、編集 → クローン → タイルクローンを作成。

keys_ss03.png

「タイルクローンを作成」ダイアログが開くので、「行、列」に増やしたい数を、「水平シフト」「垂直シフト」に、それぞれをずらす量を指定して、右下の「作成」ボタンをクリック。

keys_ss04.png

もし、結果が今一つなら、右下の「削除」ボタンをクリックすれば、作成したソレを削除してやり直すこともできる。

キーが大量にクローン複製された状態になった。

keys_ss05.png

上から2段目、3段目、4段目を選択して、位置を調整。また、不要なキーを選択・削除して、数を整える。

keys_ss06.png

ちなみに、Ctrlキーを押しながらマウスをドラッグすれば、縦方向もしくは横方向に制限をつけた状態で位置を移動できる。あるいは、キーボードのカーソルキーを叩いて、縦方向や横方向に移動することもできる。

キー刻印を追加する。 :

キー刻印を追加するために、レイヤーを追加する。レイヤーウインドウの左下の「+」ボタンで、キー刻印を載せるレイヤーを追加。更に、先ほど大量に増やしたキーの下地部分は選択できない状態にしたいので、キーの下地が載っているレイヤーは、鍵アイコンをクリックしてロック状態にする。

keys_ss07.png

テキストツールを使って、キー刻印にしたいテキストを打ち込む。

keys_ss08.png

このままだと、テキストはテキストデータのままなので、パスに変換してやる。パス → オブジェクトをパスへ、を選択。

keys_ss09.png

1文字ずつバラバラにしたいので、グループ解除をしてやる。

keys_ss10.png

1文字ずつバラバラの状態になった。

keys_ss11.png

キーの下地に合わせて配置する。一番左の文字と、一番右の文字の位置を合わせる。

keys_ss12.png

配置したい文字部分を全て選択。

keys_ss13.png

「整列と配置」を使って、位置を整列・配置する。「整列と配置」ウインドウが表示されてなければ、オブジェクト → 整列と配置。もしくは、ツールバー上のアイコンをクリックしても、「整列と配置」ウインドウが表示される。

keys_ss14.png

整列や配置の各ボタンをクリックして、等間隔に配置したり、上下位置を整列したりする。

keys_ss15.png

奇麗に並んでくれた。

keys_ss16.png

他に必要なキー刻印も追加する。以下のような並びになった。

keys_ss17.png

結果画像。 :

結果は、以下のような感じに。

_keyboard_sample_take1.pdf

_keyboard_sample_take1.png

今になって気がついたけれど、ブラウザ、Waterfox上でpdfを表示すると、ストロークのグラデーションが再現されてないな…。Adobe Acrobat Reader DC、もしくは Google Chrome上では、ストロークのグラデーションも再現されているけど…。ブラウザによっては、pdf表示はちょっとあてにならない、ということかな…。

キーの下地を修正したい場合。 :

キー刻印を並べてから、キーの下地の見た目を変えたいときは、タイルクローンのオリジナルを修正してやれば、クローンされた他の部分にも反映される。…先ほど、タイルクローン部分のレイヤーをロックしてたので、ロック状態を外してから作業すること。

タイルクローンの場合、オリジナルの上に、クローンされたソレが重なっているので、そこは注意。おそらく、重なったクローン部分は削除しても構わないような気もする。

keys_ss18.png

選択したソレがクローンなのか、オリジナルなのかは、ステータスバーの表示を見れば確認できる。

keys_ss19.png

一番左に「クローン」と書いてあるし、「Shift + D でオリジナルを探せるよ」と表示されたならクローン、と判断することもできる。

#2 [anime] 「HUGっと!プリキュア」最終回を視聴

最終回だよな…たぶん。ちょっと自信無いけど…。たぶん最終回。

Aパートで新プリキュアが出てきたあたりは、流れに雑っぽさを感じたというか、ノルマ臭が強過ぎて、なんだかなと思ってしまったけれど。Bパートの展開を見て、かなり驚愕してしまった。幼女向けのアニメで、ここまでやるか…。しかも主人公が…。いやはや、このスタッフは本気だ…。

なんとなく、「おジャ魔女どれみ」を思い出したりもして。あの作品も、劇中で登校拒否問題を取り扱ったりして、スタッフの本気を感じたものだけど。今作もなかなか…。シリーズディレクターとして、「どれみ」初期ディレクターの佐藤順一監督が今作に参加しているあたりも、もしかして多少は関係しているのだろうか…。

脚本の坪田文氏についてググってみたら、産婦人科を舞台にした漫画「コウノドリ」の、実写ドラマ版にも参加していた方のようで。それでここまで各描写に力を入れていたのかと、なんだか納得できた気もしたり。

本編を見ていて、今頃になって気づいたけれど。劇中に登場する「はぐたん」という名前には、タイトルにも含まれている「HUG」と、「育む(はぐくむ)」の「はぐ」が含まれていたのだな…。そういう仕掛けは個人的に好き。ていうかOP歌詞にワードが含まれてるのに、自分、鈍いにもほどがある…。

さておき。今回のプリキュアは、色々と革新的な部分があったなと感じていて。

例えば、今までのプリキュアは、「女の子なら誰でもプリキュアになれる」=「男の子はプリキュアになれませんよ」というメッセージをずっと提示していたけれど。今作では、「男の子だってプリキュアになれるよ」「それどころか全人類がプリキュアになれる可能性があるんだよ」というメッセージを打ち出していたわけで。そこにはおそらく、「女の子はこうでなければいけない」「男の子はこうでなければいけない」的な、個々を鑑みない決めつけにはNoを言おう、という昨今の流れを反映したところがあったのだろうなと。しかし、これでようやく、プリキュアという作品が、時代に合わせてアップデートされた、そんな印象も受けたわけで。

その反面、男性にはできない・女性にしかできない、出産というテーマを扱ったあたりも興味深いなと。男女関係なくできることもあれば、女性にしかできないこともあるよね、てなあたりもちゃんと提示していた、とも言えるよなと。

そういったアレコレを、話として上手に組み込めたか、まとめることができたかは、ちょっと判断に悩むけれど。そういったテーマを扱おうとした姿勢は評価されるべきではないか、と思ったりもして。「子供にこんなものを見せるな」ではなく、「子供に見せるものなのだから、むしろ扱わないとダメでしょう」みたいな。

何にせよ、結構な意欲作だったなと…。しかし、ここまでやられちゃうと、次のプリキュアは大変だなあ…。

2018/01/27() [n年前の日記]

#1 [cg_tools] Poser 11 Pro や DAZ Studio を触ってたり

せっかく買ったソフトなのだから下絵作成にでも使おうと Poser 11 Pro を起動してみたのだけど。DAZ Install Manager でDLしたモデルデータが利用できる状態になってないことが分かって、そのあたりどうすれば使えるようになるんだろうと調べているところ。

そもそも DAZ Install Manager を起動したら、昔インストールしたはずのアレコレが一切合切未インストールになっていて首を捻ったり。調べてみたら、以前シンボリックリンクを張りつつ移動したフォルダが全部リンク切れに。おそらく Windows10 のメジャーアップグレードをした際にリンクが切れたのではあるまいか。仕方なく一つ一つ調べ直してシンボリックリンクを作成し直し。

たしか以前は DAZ Studio 4.9 をインストールしていたはず、と思ったけれど、今は 4.10 が出てるのか…。一応インストールしておくか…。

DAZ Studio 側のモデルデータを Poser で使うやり方は…。間違ってるかもしれないけどライブラリの追加登録でイケそうな。自分の環境だけかもしれないけど、DAZ Studioにインストールしたデータ群は、以下に入っていたので…。
C:\Users\Public\Documents\My DAZ 3D Library\

以下を Poser側でライブラリとして登録。
C:\Users\Public\Documents\My DAZ 3D Library\Runtime\
どうやら、Poser は「Runtime」という名前のフォルダに入ってるデータ群を使う、ということになってるっぽい。これで少なくとも、DAZ側のモデルデータ、Victoria 4.2 は Poser側で使えるようになった。

2017/01/27(金) [n年前の日記]

#1 [cg_tools] Windows上でFontForgeを起動しようとしてちょっとハマった

Windows10 x64上で、フォント作成ソフト FontForge を起動しようとしてちょっとハマった。以前、 _unofficial fontforge-cygwin(cygwin版) をインストールしてあったので、batファイルを実行すれば起動するはず、なのだけど、Cygwin/X が起動できねえよ的なエラーダイアログが表示されて。
 A fatal error has occurred and Cygwin/X will now exit.
 Failed to activate core devices.

 Please open /var/log/xwin/XWin.9.log for more information.
 Vendor:  The Cygwin/X  Project
 Release: 1.18.2.0
 Package: version 1.18.2-1 built 2016-03-24

 XWin was started with the following command-line:
 XWin :9 -multiwindow -nomultimonitors -silent-dup-error -listen tcp

DOS窓上では以下のようなメッセージが。
C:\Prog\FontForge>start /B XWin.exe :9 -multiwindow -nomultimonitors -silent-dup-error -listen tcp

C:\Prog\FontForge>xwin-close.exe -wait

      0 [main] sh (2824) C:\Prog\FontForge\cygwin\bin\sh.exe: *** fatal error - cygheap base mismatch detected - 0x134F400/0x11DF400.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facility  and delete all but the most recent version.
The most recent version *should*  reside in x:\cygwin\bin, where 'x' is the drive on which you have  installed the cygwin distribution.
Rebooting is also suggested if you  are unable to find another cygwin DLL.

      0 [main] sh (8844) C:\Prog\FontForge\cygwin\bin\sh.exe: *** fatal error - cygheap base mismatch detected - 0x134F400/0x13CF400.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facility  and delete all but the most recent version.
The most recent version *should*  reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution.
Rebooting is also suggested if you  are unable to find another cygwin DLL.

C:\Prog\FontForge>fontforge.exe -nosplash

C:\Prog\FontForge>xwin-close.exe -close

C:\Prog\FontForge>exit /B 0
cygwin1.dllのバージョンが合ってない、てなメッセージなのだろうか。しかし、ファイル検索してみたけど他の cygwin1.dll が使われてるようには見えない。そもそも fontforge.bat は最初にPATHを変更してから処理をするから、真っ先に cygwin/bin/ 内を探す状態になってるはずだし。

解決策がないかググってみたけど見つからず。ただ、レジストリを眺めたら、
HKEY_CURRENT_USER\SOFTWARE\Cygwin
のあたりが気になって。

試しに該当キーを削除してからWindowsを再起動して fontforge.bat を実行してみたところ起動してくれた。が、本当にレジストリが原因だったのだろうか。分からん…。

ちなみに、 _FontForge Open Source Font Editor から公式版(mingw版)もインストールして実行してみたけどそちらはすんなり起動してくれた。ただ、こちらはメニューのフォントがガタガタしていて…。うーん。

#2 [cg_tools] IrfanViewのOCR機能を試したり

IrfanView のメニュー内にOCRの文字列があったので試しに使ってみたり。OCRってのは、画像からテキストデータに変換してくれる技術というか、文字認識処理、という説明でいいのだろうか。 _光学文字認識(Optical Character Recognition) と呼ぶらしいですが。

以下の記事を参考にして導入。

_IrfanviewでOCRプラグインを使って画像やPDFのテキストを読み取り
_【IrfanViewを極める】OCR機能で英文画像をテキストに変換する | 教えて君.net

使ってみたところ、たしかにテキストに変換してくれた。が、しかし、たしかに精度はよろしくないなと。誤認識だらけ。

2016/01/27(水) [n年前の日記]

#1 [ubuntu] VMware上のUbuntuをインストールし直し

VMware Player上で Ubuntu 14.04LTSを動かしていたら、Google Chrome Stable が「この版のLinuxはもうサポートしねえよ」とメッセージを表示して。Ubuntu LTS版を動かしてるのになんでそんなこと言い出すの、と思って調べたら、どうも Google Chrome Stable は今後64bit版のLinuxしかサポートしねえよ、依存するライブラリの関係で色々あんだよ勘弁な、ということらしくて。なるほど、今までVMware上で動かしてた Ubuntu 14.04LTSは、32bit版だったらしい…。それでこのメッセージか…。

ということで、Ubuntu 14.04LTS 64bit版をインストールし直したり。

Xubuntuって意外と重いのだな。 :

Ubuntu + Unity をインストールした後、lubuntu-desktop や LXDE をインストールしたのだけど。ふと、これが Xubuntu だったらどうなるのかと気になったので、xubuntu-desktop をインストールしてみたりして。どうも自分の環境では、Lubuntuの動作が怪しかったりもするし。ログアウトメニューが時々出てこなかったりとか、なんか怪しい。Xubuntuもそこそこ軽くて安定動作しそうならそっちを使ってみたいな、と。

Xubuntuへの、初回のログイン時に、体感で4〜5分待たされた。結構待たされるな…。その後、2回目、3回目のログインは、さすがに初回ログイン時より速くなったけど。それでも体感では、Unity や Lubuntu(LXDE)の2〜3倍待たされる感じで。

少なくとも、起動するまでの時間だけ見ても、Xfce4は軽量級と言えないものになっているのだなと実感したり。

と言っても、最初から Xubuntu しか使わないつもりであれば、一旦 Ubuntu をインストールせずにいきなり Xubuntu をインストールするだろうし、その場合は余計なものは入らないだろうから、もうちょっと起動も速くなるんじゃないのかと想像したりもして。

もっとも、あちらこちらの Xubuntu の解説記事を読んでも、「もう軽量級ではないよ」「Gnome や Mate と同程度と思ったほうがいいんじゃないか」みたいなことが書いてあるので、「別に軽くなくてもいいんだけど、Unityはちょっとなあ」てな人の選択肢としては有効、みたいなポジションになってるのかなと思ったりもしたけどよくわかりません。というか「とにかく軽いものを」だったらLXDE(Lubuntu)を選ぶだろうから、「Xfceを選んでおきながら軽さを気にするなよ」とか場合によっては言われそうだよなと。

まあ、一体何を持って軽量級とか重いとか判断すべきなのか、軽いけど不安定なのと重いけど安定してるのとどちらがいいか、等々あるよなと…。せっかく無料で試せるのだから、気になったらまず触ってみて、自分がヨサゲと思ったものを使えばいいだけの話ですよね。

どうして32bit版をインストールしてたんだろう。 :

「どうして32bit版をわざわざインストールしてたんだろ…」と考えてたのだけど。32bit版の仮想PCイメージを削除した後で、急に思い出した。Intel Atom機に Ubuntu をインストールして自宅サーバにできないか検証するために、あえて32bit版をインストールしていたのだった。昔の Intel Atom は64bitに対応してないので、32bit版Linuxをインストールするしかなかったのだな…。

失敗した。そういう理由で32bit版を入れていたのなら、そのままにしておくのだった。

考えてみれば…。昔は Linux のGUIアプリを試しに触ってみるとしたら、実機にインストールしたLinuxを使わないと実用(?)にならなかったので、「自宅サーバ上にインストールしたLinux上でもGUIアプリも動かせないと少し困るな」「Google Chrome StableのようなメジャーなGUIアプリが動かないのでは困ることもありそうだ」と思ってしまったけど。今は、仮想PCにインストールすればひとまずLinux関係の実験はできるので、自宅サーバ上では別にGUIを動かせなくてもいいし、Google Chrome Stable が動かなくても何ら問題ないわけで。

64bit版をインストールし直したけど意味が無かったな…。いや、この64bit版は、普段の実験用に使えばいいのか…。別途、32bit版をインストールし直してもいいんだよな。HDDの空き容量が厳しくなってるのがちょっとアレではあるけど。

外付けHDDに仮想PC用のイメージを入れといたほうがいいのかもしれないな…。起動する頻度が高いわけでもないから、外付けHDDの電源を入れたり切ったりする手間も、実機を用意して色んなディストリ入れてマルチブートすることと比べたら、全然楽だし…。

#2 [nitijyou] 犬小屋に入れた湯たんぽは小屋の外に押し出されていたらしい

親父さんの話では、昨夜のうちに、湯たんぽが犬小屋の外に押し出されていたらしい。おそらく、「ワタシの小屋の中に変な赤い何かが居る! コイツ邪魔だ!」的に押し出されたのかな…。入れとけば小屋の中が暖かくなるのに。さすが犬畜生。

小屋の入口にぶら下げておいた、テーブルクロスを切って作った暖簾モドキも、朝にはズタズタに噛み千切られていた。これでは冷気がそのまま入るではないか。それでいて犬自身は、朝も寒さでガタガタ震えていて。さすが犬畜生。馬鹿過ぎる。まあ、去年だか一昨年だかにも暖簾モドキをぶら下げていたけど噛み千切られてしまったので、やっぱりそうなるよな、コイツは絶対やると思っていたよ、てな感じではあるのだけど。

もっとも、人間だって、昔は祈祷すれば病気が治ると非論理的なことを信じていたわけで。動物なんてものは人間も含めて、それぞれの関連性を正しく見出せないのが当たり前、だったりするのかもしれない。

それにしても…。敷いてやったマットは噛み千切られて、もはや粉状になってるし。湯たんぽは蹴りだされてるし。冷気を多少防ぐはずの暖簾モドキも噛み千切られてるし。なのに犬自身はガタガタ震えているし。一体どうしろと。

せめて暖簾モドキはもう一度作るか、材料も余ってるし、と思ったら、親父さんからストップが。噛み千切られてそのへんに散らかされたゴミを片づけるのは俺なんだぞ、もう余計なことはするな、とのお達し。それもそうか…。毎朝片づけるのは面倒だもんな…。

小屋の中に虫でもいるのだろうか。 :

とりあえず犬小屋の中に殺虫剤を噴射してみたり。蜘蛛だったらコレで退治できそうだけど、ノミやダニには効果があるのだろうか。昔、子供の頭についたシラミを退治するためにDDTなるものをかけていたことを考えると、殺虫剤がノミやダニにも効果がありそうかな、とは思うけど。

殺虫剤の記述を確認してみたら、一応、ノミ、ナンキンムシ、イエダニに効果があるよ、と書いてあった。効いてくれるといいけど。

問題は、匂いかな…。犬が、「私の部屋から変な臭いがする!」と嫌がって小屋に入らない、という可能性も。

2015/01/27(火) [n年前の日記]

#1 [pc] ネットブック機上のLubuntuを設定していたり

IdeaPad S10-2 + Lubuntu でアレコレ設定。Rictyフォントを作ったり、samba を設定したり、conkyの設定をしたり。

Rictyフォントを作る過程で、 _本家の Inconsolata より _Google Web Fonts 版 のほうが、Windows の ClearType用に微調整してある、という話を見かけたので、そちらもDLして Windows にインストールしたり。

conky は、メモリ使用量とかCPU使用率とかアレコレをデスクトップ上に表示しっぱなしにしてくれるツール、という認識でいいのだろうか。アレコレ設定した後で気がついたけど、考えてみたらノートPC上でこんなツールを動かしっぱなしにしたら、バッテリーが無駄に消費されちゃうなと。自動起動はしないようにしたほうがいいのかな。どうしたもんか。

2014/01/27(月) [n年前の日記]

#1 [dxruby] タイトル画面をグネグネするアレを書いてみたり

DXRuby の Shader を使って、タイトル画面がグネグネするアレを書いてみたりして。

タイトル画面がグネグネするアレ

与えるパラメータの適切な値がよく分からなくて、オリジナルのソレとはどうも動きが違うのですけど…。それでもまあ、原理と言うか、仕組みとしては、こういう感じなのかなと。

_mbraster.rb
require 'dxruby'

#
# Shaderを使ってMETALBLACKのタイトル画面っぽい処理をするクラス
#
class MbRaster

  @@hlsl = <<EOS
  float ang;
  float lvl;
  float spd;
  float alpha;
  texture tex0;

  sampler Samp = sampler_state
  {
    Texture =<tex0>;
    MinFilter = LINEAR;
    MagFilter = LINEAR;
    MipFilter = LINEAR;
    AddressU = WRAP;
    AddressV = WRAP;
    // AddressV = BORDER;
  };

  struct PixelIn
  {
    float2 UV : TEXCOORD0;
  };
  struct PixelOut
  {
    float4 Color : COLOR0;
  };

  PixelOut PS1(PixelIn input)
  {
    PixelOut output;
    // input.UV.x = input.UV.x + sin(radians(input.UV.x * 360 * spd + ang)) * lvl * 0.25;
    input.UV.y = input.UV.y + sin(radians(input.UV.y * 360 * spd - ang)) * lvl;
    output.Color = tex2D( Samp, input.UV );
    output.Color.a *= alpha;
    return output;
  }

  technique MbRasScroll
  {
   pass P0
   {
    PixelShader = compile ps_2_0 PS1();
   }
  }
EOS

  attr_accessor :core, :shader, :image, :w, :h, :tilew, :tileh
  attr_accessor :rt, :rt_w, :rt_h, :rt_scaley

  #
  # 初期化処理
  #
  # @param [Image] image 使用する画像
  # @param [int] w 描画横幅。nilならウインドウ横幅
  # @param [int] h 描画縦幅。nilならウインドウ縦幅
  #
  def initialize(image, w=nil, h=nil)
    self.core = Shader::Core.new(@@hlsl,
                                 {:ang=>:float, :lvl=>:float,
                                   :spd=>:float, :alpha=>:float})
    self.shader = Shader.new(self.core, "MbRasScroll")

    @image = image
    @w = (w == nil)? Window.width : w
    @h = (h == nil)? Window.height : h

    # 画面を覆い隠すタイル数を求める
    @tilew = @w.quo(@image.width).ceil
    @tileh = @h.quo(@image.height).ceil

    # RenderTarget の必要サイズを求める
    @rt_w = @image.width * @tilew
    @rt_h = @image.height * @tileh

    # y方向で拡大縮小して描画縦横幅に合わせる
    @rt_scaley = @h.quo(@rt_h)

    # Rendertarget生成
    @rt = RenderTarget.new(@rt_w, @rt_h)
  end

  #
  # 描画処理
  #
  # @param [int] x 描画位置x
  # @param [int] y 描画位置y
  # @param [float] u 横方向スクロール位置
  # @param [float] v 縦方向スクロール位置
  # @param [float] ang sinの開始角度。単位は度
  # @param [float] lvl sinの振幅幅
  # @param [float] spd sinの角度変化量
  # @param [Hash] opts オプション
  # @option opts [int] z 描画奥行情報
  # @option opts [float] alpha 透明度。0.0で透明。1.0で不透明
  # @option opts [Object] blend 合成方法。:add や :alpha が使えるはず
  #
  def draw(x, y, u, v, ang, lvl, spd, opts={})
    alpha = (opts.has_key?(:alpha))? opts[:alpha] : 1.0
    blend = (opts.has_key?(:blend))? opts[:blend] : :alpha
    z = (opts.has_key?(:z))? opts[:z] : 0

    self.shader.ang = ang
    self.shader.lvl = lvl
    self.shader.spd = spd
    self.shader.alpha = alpha

    # Shader が参照する画像を RenderTarget に作成
    @rt.draw_tile(0, 0, [[0]], [@image], u, v, @tilew, @tileh).update

    # Shader を使って描画
    Window.drawEx(x, y, @rt, :shader=>self.shader,
                  :scaley=>@rt_scaley, :z=>z, :blend=>blend)
  end

  #
  # 動作確認用。グリッド画像を生成して返す
  #
  # @param [int] w 画像横幅
  # @param [int] h 画像縦幅
  # @return [Image] 生成した画像
  #
  def self.get_grid_image(w, h)
    image = Image.new(w, h, [0, 255, 0])
    image.box_fill(0, 0, w / 2 - 1, h / 2 - 1, [150,250,150])
    image.box_fill(w / 2, 0, w - 1, h / 2 - 1, [100,250,100])
    image.box_fill(0, h / 2, w / 2 - 1, h - 1, [200,250,200])
    image.box_fill(w / 2, h / 2, w - 1, h - 1, [0,220,0])
    return image
  end
end

# ----------------------------------------
# 以下は使用例

if __FILE__ == $0

  image = Image.load("logo.png")
  bg = MbRaster.new(image)

  x = 0
  y = 0
  u = 0
  v = 0
  ang = 360
  lvldef = 0.35
  lvl = lvldef
  spd = 1.0
  cnt = 0

  font = Font.new(14)

  Window.loop do
    break if Input.keyPush?(K_ESCAPE)

    # マウスカーソル座標でパラメータを変えてみる
    ang = Input.mousePosX * 360 / 640.0
    lvl = Input.mousePosY / 240.0  - 1.0
    # spd = Input.mousePosY / 480.0

    bg.draw(x, y, u, v, ang, lvl, spd)
    # u += 1
    # v += 2

    Window.drawFont(4, 4, "ang=#{ang} , lvl=#{lvl} , spd=#{spd}", font)
    Window.drawFont(4, 20, "Please move mouse cursor", font)
    cnt += 1
  end
end
テスト用の画像も置いときます。

_logo.png

スクリプト単体でも実行できるけど、他のスクリプトから呼び出して使うこともできるはず。

スクリプトも画像も、Public Domain / CC0 ってことで。

#2 [dxruby] DXRubyでSTGサンプルを作成

とりあえず、ゲームとしての全体の流れはできたような気がするので、一応公開。

ソースは、Ruby初心者が書いたソレだから、もうグチャグチャで全然参考にならないと思いますが、でもまあ、「DXRubyを使えばこういう感じのゲームも作れそうですよ」という一つの事例・サンプルにはなるかもしれない、と。

ScreenShot0

ScreenShot1

ScreenShot2

ScreenShot3

Windows、かつ、 _Ruby_DXRuby_tmxライブラリ がインストール済みの環境なら、解凍して、ruby main.rb で実行できる…はずです。

_stg_sample01.zip (ソースと画像一式。2.1MB)

Ruby等をインストールしてない環境でも動かせるように、exe化した版も置いときます。(※ 2014/02/02、ドキュメントも同梱)

_stg_sample01_exe_20140202.zip (実行形式。6.4MB)

解凍して、main.exe をダブルクリックすれば、実行できるかなと。一応、RubyをインストールしてないサブPC上でも、動作することは確認しました。

ソースも画像も、Public Domain / CC0 ということで。

ただ、exe版のほうは、tmxライブラリその他を含んでしまってるので、ライセンスはどうなるのか分かりません…。まあ、DLして動作確認する程度なら怒られないのでは、てな気もするのですけど。MITライセンス等のライブラリを実行形式に含む場合は、どういう条件を満たしておけばいいんだろう?

結局、サウンドはつけませんでした。手持ちの素材の中にソレっぽいデータが既にあれば鳴らしてたところなのだけど、どれもなんだかSTG向けのデータじゃなくて…。

画像とBGマップについて。 :

画像とBGマップは、 _OpenGameArt.org にもアップしておきました。ライセンスは CC0 にしておきましたので、自由に使ってください。マップデータの tmx ファイルも入ってますので、 _Tiled Map Editor を使って、マップや敵発生位置を変更・調整したら、そこそこ遊べるゲームになったり…するのかな。どうなんだろう。うーん。

_STG Object Image | OpenGameArt.org
_Side scroll STG BG tile map | OpenGameArt.org

所詮、プログラマーが作った画像なので、どれも正直、出来はイマイチですけど。それでもまあ、サンプルで何かのソースを書く際、テスト用画像としては一応使えるんじゃないのかなと。でも、やっぱり自機が、あまりにもダサイ…。モブ子さんを飛ばしておいた方が良かったのだろうか…?

DXRuby開発版について。 :

※ 2014/02/02追記。 _DXRuby プロジェクトWiki - ファイル置き場 で、過去のDXRuby開発版も公開していただけるようになってました。作者様、対応ありがとうございます。なので、以下は古い情報です。


手元の環境では、Ruby 1.9.3 + DXRuby 1.5.8dev で動かしてたのですけど。

今現在、DXRuby の Wiki から入手できる DXRuby開発版は、Ruby 2.0対応版のみなので…。念のため、自分がDLして手元に残してた、Ruby 1.9対応のDXRuby開発版を、Dropbox にも(勝手に)置いときます。コレ、何か問題があったら、言ってもらえれば消しときますので…。

_dxruby158dev-test-mswin32-ruby19.zip
_dxruby157dev-mswin32-ruby19.zip
_dxruby156dev-mswin32-ruby19.zip

1.5.8dev は .so ファイルしか入ってないので…。1.5.7dev 版もDL・解凍して、.so だけを 1.5.8dev のソレで上書きしてから、ruby install.rb すればインストールできた…ような気がするけど記憶が怪しいです。

ちなみに上記は、Ruby 1.9.x を使ってる場合の話で…。Ruby 2.0 環境なら、 _DXRuby プロジェクトWiki - ファイル置き場 から開発版が入手できますので、そちらを導入してみてもらえればと。

余談。DXRuby開発版って、バージョンによってはバグがあったりするものの、機能がかなり強化されてるので、できれば過去の版もどこかしらで公開しておいてくれると大変ありがたいのですけど。

ていうか、過去版が入手できないと、バグを見つけたとしても、どの版でエンバグしたのかエンドユーザレベルで検証作業ができないことに今頃気づいたりもして。…いや待て。もしかして、SourceForge のソースを眺めて云々、とかすればいいのだろうか。しかしソレ、ちょっとレベル高過ぎて、自分如きでは無理っぽい予感。

tmxライブラリについて。 :

tmxライブラリは、ネットに繋がってる環境で、
gem install tmx
をすれば導入できるはず、です。

2014/02/02追記。 :

コメント欄で、「MITライセンスのライブラリも含める場合は、ドキュメントのどこかに『○○ライブラリ使ってるよ』と書いてけば、まあ大体の場合はヨサゲ」と教えていただいたので、exe版にドキュメントを同梱して、そこに明記しておきました。たぶんこれで問題無い…はず。アドバイス、ありがとうございます。

2017/03/19追記。 :

Dorpboxのpublicフォルダが死んだのでファイルの置き場所を変更。

この記事へのツッコミ

Re: DXRubyでSTGサンプルを作成 by mirichi    2014/01/30 22:36
mirichiです。
tmxはMITライセンスですが、これを含む場合の条件については人によって色々な感じです。
例えばmrubyはMITライセンスで、使う場合にはライセンス表記も特にいらないという立場です。
DXRubyは元MITライセンスで、俺個人の解釈では文面からするとライセンス表記が必要なはずだということで、それが必要無いzlib/libpngライセンスに移行しました。http://ja.wikipedia.org/wiki/MIT_License
これの1に該当するという話ですね。
たぶん、MITライセンスを選択するような人はライセンス表記うんぬんで怒ることは無いと思います。tmxを含むバイナリを配布する場合は「tmx使ってまーす」って書いておけばよいぐらいじゃないでしょうか。

2013/01/27() [n年前の日記]

#1 [nitijyou] Amazonからケーブル等が届いた


分配器は、HDDレコーダとPT1に分配するために購入。一応繋いでみて、HDDレコーダと録画用PCの電源を両方入れてみたけど、思ったより受信レベルは落ちなかった。地上デジタルのほうはブースターで増幅してるせいか、分配前も後も68前後で変わらず。BSのほうはブースターが入ってないけど、58→54前後に。

HDMIケーブルは、録画用PCと液晶ディスプレイを接続するために購入。どうせならデジタルで接続したほうがいいのかなと。繋いでみたけど、最初は黒枠が表示されて困ったり。 _ATI(AMD)のビデオチップはオーバースキャン設定とやらがある らしく、そこを0%にしたら黒枠が無くなってくれた。しかし、まだ問題が。自分が使ってる RDT233WX-3Dは、DVI-D接続時にsRGBモードが選べるので、メインPCの画面はsRGBで表示しているのだけど。HDMI接続時はsRGBモードが選べないようで、異様に明るい画面になってしまう。目が潰れそう…。

2.5→3.5変換ブラケットは、録画用PC内のSSDを固定するために購入。ミリネジとインチネジが同梱されていて少し助かったかも。SSDはミリネジで固定して、ケースへの固定はインチネジを使うのかな。一応3.5FDDベイに入った感じ。

2012/01/27(金) [n年前の日記]

#1 [digital] RD BZ-710でBDを焼いてみた

5枚ほど焼いてみた、というかダビングしてみた。今のところ問題なさそう。焼いたBDは CyberLink PowerDVD 11 Ultra でも再生できた。

予約録画しながら焼けないのが不便。予約録画に差しかかる時間分を焼こうとすると、予約録画できなくなるから今はダメと文句を言われる。DVDにしろBDにしろ書き込む処理には時間がかかるので、その間に並列して別の操作ができないのは極めて不便だなと。

PowerDVD 11の動作が怪しい気がする。 :

起動すると Windows Aero が無効になったまま元に戻らないのだけど、これって正常なんだろうか。一応、詳細オプションで、Aeroを無効に〜のチェックは外してあるのだけど。

#2 [digital] ニンテンドーDS Liteで手描きメモを取れないのだろうか

メモ用紙とシャープペンシルを持ち出して手描きでアレコレ考える作業をPC上でできないかなと。

タブレットは持っているのだけど、使う気分にならず。Intuos 3 PTZ-630、一番小さいサイズより一回り大きいタイプなので、普段は邪魔で机の下に立てかけている状態故、パッと取り出してサクサクと使うというわけにもいかず。そもそも、タブレットはどうにも感覚的に使いづらい。表示デバイスと入力面が分離しているという仕組みがどうにも…。

ふと、ニンテンドーDS Lite を持っていることを思い出した。アレでメモが描ければいいのだけど。

検索してみたが、そんな機能もソフトも無いらしい。そもそもSDカードを差したり等ができないので外部にデータを持ち出しようもないから仕方ないのだろうけど。SDカードを差してどうこうするとなると、マジコン云々の話になってしまうのだろうか。ややこしいことになってきた。何にせよ、世界が閉じている機器なのだなと再認識。

DSi以降なら「うごくメモ帳」なるソフトがあるらしい。…「うごかないメモ帳」でも十分なんだけどな。DS Liteで「うごかないメモ帳」を動かせないものか。

3DSならさすがに最初からそういう機能があるのかな、だったら買ってしまおうか、と思って検索してみたが。プリインストールソフトの中にはそういう機能がなく。「うごくメモ帳」も3DSは未対応らしい。

せっかく液晶タブレット相当の機能を持っているのに、なんだかもったいないなと思ったり。まあ、世界が閉じている機器なのだろうな。

ここはやはり中華Padでも買ったほうがいいのだろうか。と思って検索してみたが、結構値段が高い。

メモ用紙なら100円で買えるし、電気も食わない。今まで通りアナログのソレで我慢するか。

と思いつつ諦めきれずに検索していたら、3DSには「ゲームメモ」なる機能があると知った。これこそ「うごかないメモ帳」。どうしよう。いや待て、コストを考えるとやっぱり。しかしメモを全部電子化してPCにツッコんでおけるのは魅力的。どうしよう。

2011/01/27(木) [n年前の日記]

#1 [nitijyou] 目がちょっとヤバイ

白や黒以外の色が全部赤く見える。なんだコレ。怖い。とりあえず寝る。

2010/01/27(水) [n年前の日記]

#1 [comic] 風光る、19〜2x巻を読んだ

妹から以下略。話は劇的に進んでるわけではないけれど、相変わらず面白い。巻末漫画を読む限り、本当によく調べた上で描いているなとつくづく感心。

個人的に、長船云々のエピソードが好み。身受けがどうこうという話なので、少女漫画かと言われると何か違うような気もするけれど、しかし展開自体は少女漫画らしくてイイ感じだなと。

2009/01/27(火) [n年前の日記]

#1 [pc] MS IntelliMouse Opticalの右ボタンが本格的にまずくなってきた

10回に1〜2回は、シングルクリックがダブルクリックになる。もうダメだ。

ひとまず、妹が IntelliMouse Optical(以後IMOと記述)の予備を持っていたので、しばらく貸してもらうことに。ホイール回転を軽くすべく分解して部品を削ったが、削り過ぎかつ均一に削れず引っ掛かりがあって常用するのをやめた品とのことで。たしかに、ちょっと変な感触のホイール回転。

自分のIMOはどうしようか。5年保証とはいえ、電話代だけで2,000円もかかるのではなあ…。と思ったけど、2009/01/27現在はフリーダイヤルもあるのかしら。 _マイクロソフト ヘルプとサポート のページを見ると、0120-09-0196(ゼロキューマイクロ)、と書いてあるが…。問題は、IMOが一覧にないんだよな…。一応、 _製品別 お問い合わせ - 製品一覧 から辿れるページを全部見てみたら、電話番号は同じだったので、たぶん大丈夫だろうけど。

一応注文もしておいた。 :

NTT-X Store で、MS製品に限ってこの時期送料無料・代引手数料無料らしいので、IMOを1つ注文。

#2 [iappli] 資料DVDをチェック中

特定シーンが見つからない。ひたすらDVDを再生。シーンが切り替わる時刻をメモ。

かなり疲れてきた。作業効率を上げるツールがないものか。

2008/01/27() [n年前の日記]

#1 [anime] ライダーキバ、1話を鑑賞

なかなかイイ感じ。記憶に残った点は以下。 ライダーシリーズは1話と2話のセットで評価しないとアレなので、2話も楽しみ。

それはともかく、吸血鬼と言えばエロが必須だと思うわけですよ。<ちょっと待て。美女の首筋とか、美少年の首筋とか、そのあたりをエロエロに見せる新たな映像テクニックの開拓を今作にはぜひとも期待したいところ。<オイ。…もしかして今回は主人公の入浴シーンがソレだったのか?<えー。…肌の上を流れる液体、というあたりにエロが隠れてそうな気もするけど、この作品は子供も見るだろうから、首筋を流れる血は出せない予感も。いや、吸血鬼モノのソレはチラリズムによるところが大きいのだろうか。服の間から見える生肌がポイント? …もしかすると主人公のマスクとサングラスもチラリズムを狙った故の設定なのだろうか?<えー。

#2 [anime] プリキュア5、最終回

最終回と言っても、タイトルとコスチュームを変えてまだまだ続くわけで…。一旦そういうことを思ってしまうと、なんというか、見ていても特に何かグッとくるわけでもなく。続くことが判ってるシリーズを一旦それらしく終わらせるのって難しそうだなと。

プリキュア5の敵についてなんとなく思ったことをメモ。 :

この手の企画の敵の設定・敵の最後の迎え方って、難しいなと。なんだか、とってつけたような終わらせ方になる場合が多い、ような気もする。や、話がちゃんとまとまるように敵と主人公側の会話を組み立てていくだけでも大変だろうとは思うのだけど。…敵側の背景事情が透けて見えてこないから、何か無理をしてるように見えてしまうのだろうか。

敵側の背景と言えば、今作では会社組織的な見せ方をしていたけれど。そのへんは活かせたのだろうか。
  • 学校 vs 企業
  • 学生 vs サラリーマン
  • 子供 vs 大人
  • 現在の自分達 vs 未来の自分達
そういった図式に持ち込めていた、かしら。中盤あたりはちょっとそれっぽい台詞があったような気もする。また、敵側組織の、仮面をつけて無表情なまま何も喋らない大勢の人間、てな光景は、現実の会社組織とか社会人等の何かを風刺してたのかもしれず。…基本設定をそれなりに活かせていた、ということなのかな。

考えてみれば、サラリーマンが学生に向かって「絶望しろ! 絶望しろ! お前達には、夢も、希望も、未来もないんだよ! 絶望しろ!」と叫びまくるわけだから、とんでもないアニメだったような気もする。こんなアニメを幼女に見せてよかったのだろうか。…あ。そうか。逆に、それらはいかにも「悪」にふさわしい振舞いなのだな。でも、ラスボスと、それまでの敵の組織には、どうも乖離が見えるような気もする。そこに繋がりがあれば、最後の戦いで発生する「浄化」も、また違う印象になったのかもしれないか。

敵と主人公の位置関係としては、時間軸上にそれぞれがあるような気もするし、あるいは、階級・階層・上下関係として位置づけができるのかもしれない。…それは、縦方向や奥方向の位置づけということなのかもしれないけれど。これを横方向に位置づけできないものだろうかと。例えば、会社ではなく、学校・教室・幼稚園を連想させる敵組織だったらどうだろう。でも、主人公側も学校に通ってるし。2つの学園生活を描かなきゃいけないのは物量的にツライ予感。

自由な校風・自主性を重んじる学校に通う主人公と、規則でがんじがらめ・強権的な校風の中に居る敵、という対比とか? む。ゲキレンジャーの設定と通ずるところがありそう。

2007/01/27() [n年前の日記]

#1 [flash] ビットマップ画像をベクターデータにしてFLASH作成ツールに読み込み

送られてきたロゴ画像がビットマップ画像(jpeg)だったので、ベクターデータにしたほうがいいのかなと。しかし、FLASH作成ツール FreeMotion で手作業でトレースするのも面倒。ドローツールで処理したい。

FreeMotion のヘルプを読むと、.svg も読み込めると書いてある。ならばと、Inkscape を起動。jpeg をインポートして、トレース…しようかと思ったけど、Inkscape にはビットマップ画像をベクターデータに変換する機能がついてることを思い出した。試しに変換。パス→Trace Bitmap。イイ感じ。ポイント数が多かったけど、パスの簡略化をかけたら結構減ってくれた。Inkscape svg ではなく、plain svg で保存。

FreeMotion で読み込んでみた。…ポイント数がめちゃくちゃ増えてる。そもそも曲線の持ち方、というか制御の仕方がドローツールのベジェ曲線のそれではないような。結局手作業でポイント削除・曲線を調整していくことに。トホホ。

これを書いてるうちに気がついたけど。FLASH 4 を使えばそもそもビットマップのトレース機能がついてたような…。そっちを使えばよかったかしら。

#2 [anime] いい加減HDDレコーダに溜めた映像を消化していかないと

ということで流しながら作業。

NANA、総集編、白ナナ新婚生活、パパラッチの回。 :

苺図柄のガラスのコップが2つ割れて、ハートの形のように見えるあたり、上手いなと。判りやすいところがグー。原作にあったカットなのだろうか。アニメ版オリジナルのカットなんだろうか。

ケロロ軍曹、温泉とカラーボックス、宇宙で昼食、黄蛙若蛙、転校生の回。 :

赤蛙の「ふつつかものですが〜」の台詞に笑ったわけで。やっぱりいいわ。赤蛙。もし、子供の頃にコレを見ていたら、腹が痛くなるほど笑ってただろうなぁ。

2006/01/27(金) [n年前の日記]

#1 [pc] _斎藤Site ディスプレイ切り替え機を、内部構造で比較する

コメント欄でも書いたけど、気になるページなのでメモ。

今時の機械式切替器だとどういう中身になってるんだらうな。あまり変わらないのか、それとも著しい進化を遂げているのか。…と思ったけど、今時はCPU切替器が主流で、VGA切替器はそうそう作られてはいないのか。となるとキーボードやマウスが接続されているかのように振舞わないといけないわけで、必然的に電子式が主流になる、のであらうか。わからんけど。

2006/01/29追記:今現在のその手の製品の内部写真を見せてもらった :

thxなのです。>g氏。

機械的なスイッチの切り替えであることに違いはないのだろうけど。基板一枚にほとんど収まるようにしてあるあたり、もしかすると画質劣化に関してはかなり改善されてる気配(?)を感じたり。…たぶん。ケーブルよりは、基板一枚にしたほうが、ノイズがのりにくいのかなと想像するのだけど。

#2 [windows] フリーのアンチウイルスソフト avast! 4 Home Edition をインストールしてみた

今までは AVG7 を使ってたのだけど。いつのまにか AVG7 Control Center とやらが常駐しない状態に。再インストールするのもアレなので、avast! 4 Home Edition をインストール・試用してみたり。

AVG7と違って、日本語化されているのは、やはりグッドだなと。しばらくこれで様子を見てみようかと。

_おじいちゃんのメモ - avast! 4 Antivirus :

avast! 4 の解説サイト。日本語化関連を手がけてくれている方が管理人らしく。ありがたや。

_avast! Antivirus Home Edition の設定方法 :

こちらの解説も参考にしつつ設定。

#3 [nitijyou][pc] DVD+R/RWドライブ RICOH MP5125A を譲ってきた

親父さん旧PCには、弟が帰省の際に置いていってくれた、DVD+R/RWドライブ RICOH MP5125A *1 が積んであったのだけど。今回、LG GSA-4163B を積んだので、余ってしまった。もったいないので、先日、imgboard.cgi の件でお邪魔してきた方に譲ってきた。 *2 DVD-R/RW じゃなくて、DVD+R/RWというところがちとアレだけど。相手の方は、今まで 4倍速 CD-R/RW ドライブを使ってたので、多少はメリットもあるだろうと。

セットアップでアレなところはファームウェアの更新作業 :

ファームウェアを更新しないと、x8 DVD+R 等で障害が発生するらしく。

_RICOH MP5125A ファームウェアダウンロードページ からDL。マスタリングソフト = B's Recorder GOLD 3.25 をインストールして。VIA チップ使用M/Bだったので、DMAを無効にして。ようやく、ファームウェア更新。

_BHA - B's Recorder GOLD Ver1.82〜3.28→3.29 アップデータ :

MP5125A のパッケージに添付していた B's Recorder GOLD は、3.25。アップデートすべきかとも思ったけど、修正内容は、単に対応機種を増やしただけのようで。特にアップデートもせず、3.25 のままでいいんじゃないかと判断。

3.xx は既にサポート終了状態。現行製品は Ver 8 らしい。

相手先のPC、Duron 650MHz でも DVD は見れた :

一応、DVD-R や DVD-Video も持っていって再生テスト。-Rは読めるかどうか少し不安だったけど、読み込みは問題なし。

DVD-Video 再生時にCPUパワーが足りないかもしれないと懸念したけれど。 *3 一応、添付のWinDVDで、アニメも実写もそれなりに再生できてるようには見えた。MPEG2の再生は比較的処理が軽いのかもしれん。

*1: 書き込み速度 → DVD+R = 2.4倍速 / DVD+RW = 2.4倍速 / CD-R = 12倍速 / CD-RW = 10倍速。
読み込み速度 → DVD = 8倍速 / CD = 32倍速。
*2: 相手の方の車で、送迎してもらった。
*3: 今回繋いだPCは、Duron 650MHz。

#4 [pc] 8cm FAN を購入

帰り、相手の方にわがままを言って、パソコン工房に寄ってもらった。8cm FAN を2個購入。 帰宅後、PCにつけてみた。音はどちらも、比較的静か。な気もするけどそう頻繁に色んなファンを試したわけでもないので実際のところはよくわからず。ただ、風量はかなり少ない気がする。ケース内部の温度上昇が不安。

_凹みが効く? ゴルフボールのような羽根を採用したファンが発売予定! :

_Golf Fan - ZGF80xx

クリアモデルを購入。店頭では気づかなかったけど、実際につけてみたらLEDが光って。なんだか鬱陶しい…。

5Vでも回せるコードがついてるのはちょっと嬉しいかも。でも、万が一回らなくなった時のことを考えるとちと怖いけど。

ネジではなく、ゴムで取り付けるのはユニークだなと。ゴム部分の使い回しはできないだろうけど。

#5 [pc] DVD-Rをケーズデンキで買おうとしたのだけど4倍速のメディアなんてもう店頭では売ってないわけで

以前、8倍速のメディアで焼いたら、どうもPCのスペックが足りてないのか途中で書き込みが止まるような動きを見せたわけで。ということで、できれば4倍速がほしかったのだけど。店員さんに尋ねても「店頭にある分しかない」とのことで。…とりあえず8倍速の10枚バケツ入りを購入。ついでにCD-Rの10枚バケツ入りも。

#6 [pc] エンハンスドカテゴリ5とやらのLANケーブル

自分のメインPCに使っているLANケーブルが、10BASE-Tの時代に購入したもののような気がしてきて不安になってきたわけで。ということで、ケーズデンキで購入。300円台。

帰宅後、今まで使ってたLANケーブルを眺めたら、ケーブル部分に「CAT.5」と印刷されてた。てことは100BASE-TXでも問題はないケーブルだったということだろうか。

_カテゴリ5とエンハンスドカテゴリ5はどのような違いがありますか :

ISO 11801及びJIS X 5150で制定しているカテゴリ5とANSI/TIA/EIA568Bで制定しているエンハンストカテゴリ5とは、性能としての要求内容はほぼ同じ内容です。 それぞれ規格制定機関の考え方の相違により、エンハンストという言葉をつけるかつけないかということです。従って、日本国内で参考にしている規格としてどちらの規格を使うかはお客様の方で決めていただくことになりますが、その規格によって、カテゴリ5とするかエンハンストカテゴリ5とするか決まってきますが性能は同じものを表現しているのです。

カテゴリ5とエンハンスドカテゴリ5はどのような違いがありますか より

つまり…違いはないってこと?

_ITmedia PCUPdate:いま求められるのは「通信速度と信頼性」──CAT6eケーブル導入のすすめ (2/2) - ケーブル交換だけで10Mbps前後の差が :

ホントなのだろうか。そんなに差がつくものなのだろうか。

_ツイストペアケーブル - Wikipedia :

10BASE-Tを使う上ではカテゴリ3のUTPで可能だが、日本国内では、10BASE-Tによるイーサネット接続が一般家庭・中小企業にも普及し始めたのは1994年ごろであり、パソコンショップ等の店頭でもカテゴリ3のものが見られる事はなく、LANとLANケーブルが普及しケーブルが初めて敷設される段階で既に、カテゴリ5のケーブルが用いられていた。

ツイストペアケーブル - Wikipedia より

そうだったのか…。10BASE-T時代に使ってたケーブルだからといって、使えないわけではないのだな。

2005/01/27(木) [n年前の日記]

#1 [web] _NTP - wiki@nothing

_(via P. Relations)

#2 [zatta] _ケチな人

ビルゲイツの、ちょっといい話。…なのか? たぶん。

#3 [jiji] _Second Term(JibJab.com)

ここに小泉が出てこないのは、米国での認知度が低いってことなんだろうな。
なるほど…。

本当にそうなのかしら、と思って三回ぐらい見てみた。
Koizumi? What is it?
ホントでした。「koizumi? 誰だソレ?」状態ですね。

#4 [cg_tools][prog] _Gimp-RubyのWin32用バイナリ

インストールの手順が。Ruby/Gtkとやらは、ひょっとして要らないのだろうか…? うーん。わからん…。

#5 [cg_tools][prog] Gimp-Pythonのインストール方法

_Re: [Gimp-user] Scheme question
_Re: Scheme question
_Re: [Gimp-user] Scheme question
どれも同じ内容。

_Re: State of Python and The Gimp ?
難しげ。

_[Gimp-developer] Python scripts on Win32 - working now!
関係ありそうだけど、自分、英語が読めないわけで。

#6 [cg_tools][prog] _GTK-Perl And Windows

Gimp-perl を Windows へ移植しようと試みた際に考えられる問題点、かしら。英語読めないのでわかんないけど。

#7 [cg_tools][prog] Gimp-RubyもGimp-Pythonも導入を諦めた

Linux版ならスンナリ入るのかもしれんけど、Windows版はわけがわかりません。諦めました。

自分がやりたいことは、複数ファイルに対して Script-fu スクリプトを適用するという処理でしかないので、他の方法でもどうにかなるだろうし。

ということでActivePerlのスクリプトを作成して対応 :

Perlスクリプトで、複数ファイルに対して処理をする Script-fu スクリプトを自動生成する、みたいな感じで対処。たいしたことはしてませんが、 *1 バックアップも兼ねて一応アップ。ちなみに、GIMP 1.2.5 でしか動作確認してません。

_複数ファイルに対して処理をする Script-fu スクリプト、を生成するPerlスクリプト(.txt)。 *2

一応、使い方についても、メモ。

DLして、make_gimp_runall.pl にリネームして。perlが入ってる環境で、DOS窓を開いて、
perl make_gimp_runall.pl
あるいは、
perl make_gimp_runall.pl 指定したいディレクトリ名
と打てば、 _gimpでバッチ処理 のソレとほぼ同じ、以下のような、Script-fu スクリプトが出力される。
(define (my-run-all)
  (png2xcf "h:/temp/01.png" "h:/temp/01.xcf")
  (png2xcf "h:/temp/02.png" "h:/temp/02.xcf")
  (png2xcf "h:/temp/03.png" "h:/temp/03.xcf")
)
(script-fu-register "my-run-all"
                    _"<Toolbox>/Xtns/Script-Fu/Utils/my-run-all..."
                    "Converts all png to xcf"
                    "yourname"
                    "yourname"
                    "2005/01/28 04:43:09"
                    ""
                    )


この出力結果をファイル保存したいときは、例えば、
perl make_gimp_runall.pl "x:\xxxx\xxxx" > run_all.scm
といった感じで打つ。これで、run_all.scm に出力結果が保存されるので、run_all.scm を 〜\.gimp-1.2\scripts\ 以下にコピーする。あるいは直接、
perl make_gimp_runall.pl "x:\xxxx\xxxx" > 〜\.gimp-1.2\scripts\run_all.scm
でもOK。長くて一々打ち込むのが面倒ならバッチファイルにしてもOK。 *3
これで、GIMPを起動すれば、ツールボックス(?)の、Script-fu メニューの中に項目が増えてるはず。たぶん。

この Perl スクリプトですが、対象の拡張子や、呼び出す Script-fu スクリプト名等、引数を渡すだけで変更できるようにはしていたり。
perl make_gimp_runall.pl --help
と打てば、
usage : perl make_gimp_runall.pl [directory]
        [ie=xxx] [oe=xxx] [sc=xxx] [osc=xxx]
        [gq] [user=xxx] [-h] [--help]

    directory   ディレクトリを指定
    ie=xxx      変換前の拡張子 (default ie=png)
    oe=xxx      変換後の拡張子 (default oe=xcf)
    sc=xxx      各ファイルに用いるスクリプト名 (default png2xcf)
    osc=xxx     出力スクリプトにつける名前 (default my-run-all)
    gq          (gimp-quit 0) を含ませる
    user=xxx    利用者名
    -h , --help このヘルプを表示
こんな感じで説明が表示されます。もちろん、引数を渡すなんて面倒なことをせず、perlスクリプトの中身を直接書き換えてしまってもOK。最初のあたりでデフォルト値を変数に格納してるので、変更しやすい、はず。たぶん。

問題が :

目的は果たせたのだけど、GIMPのレイヤーダイアログの横幅が妙に広くなってしまった。どうやら、階層の深いところのファイルを変換するとそうなるっぽい。 *4

ということで、どこか階層の浅い場所で作業するか、もしくは、ディレクトリを指定しなくてもアクセスできるような場所 *5 に画像を入れて、出力されるスクリプトの内容を若干修正する等したほうがいいのかも。

それにしても :

複数の画像ファイルを別フォーマットで保存する機能、GIMPに標準でついてないのかな。なんだか自分が見落としてるだけのような気もするんだけど。うーん。

Gimp-Ruby か Gimp-Python が Windows版GIMPで動かせればなぁ。GIMPから直接、ディレクトリと、処理する画像フォーマットを選択するだけで、変換できるスクリプトが作れそうな予感もあるのだけど。

*1: Perlに慣れてるから、それでやっちゃったけど。なんとなく、WSHあたりでも、いやひょっとするとバッチファイルでもできそうな気がする。
*2: 日付が変なのは、深夜に作ってたからです。
*3: 〜\.gimp-1.2\scripts\ がどこにあるかは、それぞれの環境によって違うでしょうから、自分で探してください。
*4: 階層が深いと、パスが長くなってしまう → レイヤーダイアログの上のほうにパスが表示されていて、かつ、Gimpで読み込んだファイルの履歴がレイヤーダイアログには残る → 長いパスを表示できるように、ダイアログが横幅を確保する → 横幅が妙に広いままになる。のではないかと。
*5: 例えば、Gimpのインストールフォルダ下の、images フォルダの下とか。

#8 [cg_tools] 回る中華キャノンを連番xcfに変換できたので作業を続行したのだけど

考えてみれば、40ファイルも要らないことに気づいた。例えば、セルアニメ *1 の場合、24fpsだろうけど。えてして動画は3コマ撮りが多かったりするするだろうから、 *2 大体8fpsみたいなものであろうし。となると、40ファイルで1回転ということは、5秒かけて1回転するということに。長すぎ。『クリィミーマミ』かっちゅーの。 *3

ゲームだって、8方向ぐらいパターンを持ってれば、まあまあ見れるのだから、そのくらいでいいよな。たぶん。
*1: いや、セルはもう使ってないはずだけど。
*2: もちろん、常に3コマ撮りというわけではないはずで…。それと、あくまで動画の話。背景は別。短絡的に背景まで3コマ撮りにしないように。<誰にお願いしてるのやら。
*3: いや、クリィミーマミにそういうシーンがあって…。マミを中心に捉えて周囲をぐるぐるとカメラが回り続けるという。そういや、『海がきこえる』のラスト近くでも似たようなシーンがあったような。…監督さん、同じでしたっけか。記憶が怪しい。

2004/01/27(火) [n年前の日記]

#1 [windows] メールが文字化け

WinXP + OE 上で、自宅サーバのcronが出したメールが文字化けしてる。どうも本文をEUCで送ってるみたい>cronの出したメール。Win98の時は文字化けしなかったのだけどなぁ。たぶんいい具合に文字コードを判別してくれていたに違いない。…メーラ側で対処するのは変だな。cronが、EUC以外の文字コードでメール送信できるように設定することってできるんだろうか。調べてみないと。

#2 [windows] IME-2002ってますます悪化してませんか

なんかおかしな変換をするような。区切りがどうも変。それはそうと、「・・・」を「…」に変換したいんだけど、何度打っても「・・・」は「・・・」が第一候補に出てくる。仕方ないので「さんてん」で「…」に変換したり。“santen”と“・・・”。2倍の打鍵量。つまりIME-2002は、従来製品を100%とした場合、なんと50%の性能にまで達したのです。0.5倍にパワーアップですよ。…や、それ、パワーアップって言わない。

#3 [windows] ホイールでアクティブではないウインドウをスクロール

_Live2ch において、非フォーカスウインドウでは、ホイールスクロールができない。不便。対策はないかと探したところ、非アクティブウインドウもホイールスクロール可能にするツールを導入すればいいらしく。最初に、 _WheelPlus を試したが、実行するとIMEのON/OFFができなくなったので利用を諦めた。 *1 次に、 _Wheel Redirector を試したら、こちらは特に問題なく動いた模様。

色々試しているうち、その手のツールを利用しなくても、利用中の _A4tech WWW-11 のマウスドライバ設定で、拡張デュアルホイール機能モードを有効にすれば、同じ動作が得られる事がわかった。 *2 しかし、それを有効にしてしまうと、今度はViXのカタログ一覧表示ウインドウで、「ホイールで常に1行スクロール」が働かなくなってしまう。自分はホイールスクロール量を、標準の3行ではなく6行にしてるので、ViXのカタログ一覧表示ウインドウで6行もスクロールしたら、1ページ以上のスクロールになってしまってよろしくない。ということで、マウスドライバ設定は MS-インテリマウス互換モードのままで Wheel Redirector を常駐しつつ利用する事にする。

一概にフォーカスが云々という問題では無さそう :

ふと、3ペイン画面代表ソフト(?)でもあるOE6でホイールスクロールを試してみたが、こちらは何の対策をせずとも、マウスカーソルの下の領域に対してホイールスクロールが可能だった。 *3 どうもアプリによって、ホイールの扱いが異なるようで。とりあえずOE6で実装できてるということは、このあたりアプリ側で対処する事は不可能ではないのだろうけど。

*1: 別の常駐ソフトとバッティングしてるのかと思い、色々終了させつつ検証してみたが、どうもWheelPlus有効時だけ症状が出ているように見える。自分は、MS製マウスやロジクールマウスを使ってるわけでもないので、もしかすると、そもそもマウスドライバとバッティングしてる可能性も。
*2: 今までは、MS-インテリマウス互換モードにしていた。
*3: マウスドライバ設定は MS-インテリマウス互換モード。Wheel Redirector は無効の状態。

2003/01/27(月) [n年前の日記]

#1 R焼き

メインPCのHDD空きを確保すべくひたすらCD-R焼き。手持ちのRを使い切ってしまった。買ってこないと。そんなわけでサーバ機の中身は全然チェックできてなかったり。メインPC側にテンポラリ領域すら作れずで。R買ってきて空き容量確保できたらチェックするです。スマンです。

どれみ最終回を見た。スタッフの方々、4年間お疲れ様でした。考えてみると、どれみが始まってまもなくの頃に自分は福島に帰ってきたような気がする。どれみが卒業するまでのこの期間に何をしたか。自分が嫌になる。

2002/01/27() [n年前の日記]

#1 うーん

寝てなかったり寒かったりお腹が空いてたりするとイライラしてきますね。
これではイカンな。
寝よう。

2001/01/27() [n年前の日記]

#1 メモを取る

大雪ですな。


某所の某エピソードを目にして思ったり。
オイラ自身が、かつて出来ていたかどうかは別として。

作業手順等、メモを取るのは社会人として基礎中の基礎。
せめてそういう認識ぐらいは無いと。
学生すら授業や講義でノート取る…
と考えると、メモすら取らない・取れない方は学生以下。

例えばお客さん(クライアント)から要望が出たとして。
後になってから、
「○○の件、どうなりました?」
「何でしたっけ? 全部忘れちゃいました。あはは」
では済みませんよね…

ウチの親父さんも、PC操作のメモ取らないんですよね。
で、何度も手順を聞いてくる。トホホ
そこそこ詳しい人間でもメモを取るのだから、知識が無いなら尚のこと取らんと…
まあ、「自分はメモを取らなくても大丈夫」という過信があるのでしょうけど。

そういう場合、教える側が簡易マニュアルでも作るしかない。
会議で議題等、文書にしてメンバーに渡すとでも思って。
トータルで見れば、後から何度も聞かれて時間を割かれるより労力は少なくて済む。
形として残るから、自分は教えてあるという証拠にもなる。
ドキュメントとして、その集団全体の技術蓄積にもなる。
他の人に教える時も、それをコピーして渡せばいい。

問題は、えてしてメモを取らない人は、メモがあることすら忘れるという… (;´Д`)

階下のPCデスクにオイラが書いたIME操作のメモを貼ってるんですが。
ウチの親父さん、目前のソレの存在すら忘れてる。
シャレにならん…

2000/01/27(木) [n年前の日記]

#1 (NoTitle)ここ数日、メイン掲示...

ここ数日、メイン掲示板で新規スレッドが立てられない状態になってましたです。オイラのミスです。申し訳無い。修正しときました (;^_^A

掲示板にも書いてたのですが、記録と言う事でこちらにも事の顛末を書いておくです (^-^;
原因は、この手のcgiでよくあるパーミッション設定のミスでした。ログの個数が一定数を超えると過去ログ用のHTMLファイルを新規作成してそちらにログの一部を書き出す処理をするのですが、その過去ログ生成場所を掲示板のcgiと同じディレクトリィ(755)にしていたため、新規作成が出来なくてエラーが出ていた、というわけです。別個にファイル作成可能なディレクトリィ(777)を用意し、その中でログの管理をする、という形にしましたので問題は解決したと思うです。(そのディレクトリィ内にファイル作成が可能なことも別のテスト用cgiで動作確認しました。これで大丈夫なはず。たぶん…)
一応ローカルでこのへんの動作確認は一通りしているのですが、 _Win用のHTTPサーバ ではパーミッション設定が出来ず全て777で扱われていたため、問題に気づくのが遅くなってしまいました。うーん、やっぱりLinuxインストールしようかな。今までLinuxを導入する必要性を強く感じていなかったので勉強する気があまり起きなかったのですが、今回の事でちょっと気になり始めてます >Linux

スーパーミルクちゃんというアニメをWOWOWで見たです。むっちゃおもろい。ハマリそう。でもあの極太ペンタッチつき線画をアニメさせるのは大変そうな気もするですが。なんか特殊な制作技術とかあるのかな。それとも一本一本手で描いてるのでしょうか。と、どうでもいいところが気になったり。

なんかキーボードの調子が変。もしかして室温かな。0度近辺の室温で使用すると、正常に動かないとか? >キーボード内の石、もしくはM/B上のI/O関係の石?

以上、25 日分です。

過去ログ表示

Prev - 2024/04 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project