« September 2006 | Main | November 2006 »

2006.10.28

バグ修正: PalmOS(WristPDA)用アプリGarbageDay v.0.2

すいません。PalmOS(WristPDA)用アプリGarbageDayにバグがあったので直しました。
SleepからのWake時にも画面更新するようにしました。
ダウンロードは以前のエントリから。

PalmOS(WristPDA)用アプリGarbageDay v.0.2

ところで、Treo90の液晶がワキガ臭いのに昨日気づいたんですが、何なんでしょうか……。
ときどき嗅いでしまいます。

自分用メモ

SleepからのWake時のイベントを処理したい場合はNSBSystemLibが必要。
NSBSystemLibに定義されているSetWakeEventを使う。

Start Up CodeのNSBSystemLibロード時とかに、SetWakeEventでイベントコードを指定。

LoadLibrary "NSBSystemLib", "NSL"
NSL.SetWakeEvent 30001

フォームのEvent Codeには、例えば以下のように書いて、Wake時のイベントを処理する。
flushevents()の実行が必要だが、無差別に実行するとclick等の後続イベントが処理されなくなるので、影響が限定的になるようにする。

If geteventtype() = 30001 Then
'flushevents()しないと、SetWakeEventにイベントコードをセット
'している場合、Wake時にハングする
NSL.flushevents()
drawKind()
SetEventHandled
Exit Sub
End If

|

2006.10.27

PalmOS(WristPDA)用アプリGarbageDay v.0.2

NS Basic/Palmで思い出したようにWristPDAで使うアプリを作ってみました。
本当に糞つまんないアプリで恐縮ですが、枯れ木も山の賑わいということで……。

----------------------------------------
PalmOS用分別ゴミ種別表示アプリ "GarbageDay"
----------------------------------------
Name: GarbageDay
Version: v.0.2
Author: moyashi
種別: Free Software
配布サイト: http://moyashi.air-nifty.com/
----------------------------------------

[ Made with NS Basic / Palm 5.0.6 ]

Garbageday01

Garbageday02

ダウンロード

「garbageday_v02.zip」をダウンロード

履歴

v.0.2

 土曜日の午後に起動するとエラーが出ていたので修正
 SleepからのWake時に画面更新をするようにした

v.0.1

 初版

動機

鳥頭ゆえになかなか分別ごみの種別が覚えられないので作りました。
しかし、作る過程で覚えてしまいました。

免責

無保証です。

動作確認環境

PalmOS v.4.1.2 (WristPDA)

WristPDAで動かすことを念頭に置いて書きましたが、恐らく多くのPalmデバイ
スで動作可能かと。

インストール

GarbageDay.prc
NSBRuntime.prc
NSBSystemLib.prc

上記のファイルをHotSyncしてPalmデバイスにインストールしてください。

使い方

初回起動時は初期設定を保存するデータベースを作成する旨のメッセージが表
示されます。異常を示すものではありません。

起動したら、Menu項目のPreferencesを選択し、各曜日の分別ゴミの種別を指定
してOKボタンを押してください。

PushButton上の表示文字と、分別ゴミ種別対応は以下の通りです。

 kanen -- 可燃ごみ
 funen -- 不燃ごみ
 sigen -- 資源ごみ
 none -- 回収無し

メイン画面に戻ると、その日の朝、もしくは翌日朝の回収ごみの種別が表示さ
れます。

12:00PM~23:59PMは、翌日朝の回収ごみの種別を。00:00AM~11:59AMはその日
の朝の回収ごみの種別を表示します。

自分用メモ

文字列変数にオブジェクト名を代入しておくと、それでオブジェクトにアクセスできるというのを知って、Preferences画面で助かった。

Dim objName As String
objName = ”Field" + Str(1003)

objName.text = "Test"

オブジェクト配列みたいなのが使えるとのこと。
フォーム上のコントロールには関数Controls()に整数の引数を渡すことでアクセスできるそうだ。

Controls(1).text

CONTROLS(index as integer).propertyName

フォーム上のすべてのコントロールには、1からForm.countまでのindexが付いている。
でも、これIDEのプロパティインスペクタでは分からないんだよね。
プロパティインスペクタに表示されて、なおかつ任意のindexに付け替えられると楽なのに。

Controls()をループの中で回す際には、コントロールのtypeプロパティで種別を判定して処理、といったことができそうだ。

サスペンドから復帰した際に画面の更新をしたいのだけど、それってどうやるのだろうか。
FormのEvent Codeに来るイベントをフックすればできるかな。
NSBSystemLibのSleep and Wake Event Functions辺りでできそうだ。Tech Note 14に記述あり。(Tech Note 14日本語訳)

|

2006.10.17

Sigmarion IIIやjornada720でもサンプリングシンセサイザー MilkyTrackerを試す

先日のエントリ「Linux ZaurusやPocket PC (Windows Mobile) でサンプリングシンセサイザー MilkyTrackerを試す」の続編となります。

前回のエントリではうまく動かせなかったH/PC(Handheld PC)でのMilkyTrackerの起動に再チャレンジ。

結論としては、動作しました。「GAPI for HPC's」が足りなかったから動かなかったのでした。

PalmOS系を除く多くのOSで動作する、素晴らしいDTMソフトウェアだと思います。

H/PCへのMilkyTrackerのインストール

MilkyTrackerのH/PC上での起動には、aygshell.dllとGAPI for HPC'sが必要です。

aygshell.dllのインストール

aygshell.dllを\Windowsにコピーします。
aygshell.dllは何種類かありますが、ホーミンさん版が今の定番でしょうか。

GAPI for HPC's(gx.dll)のインストール

続いて、「GAPI for HPC's」をWinCESoftからいただいてきてインストールします。
ちょうど昨日「GAPI for HPC’s v3.07 (2006.10.16)」がリリースされたところでしたね。

MilkyTrackerのインストール

MilkyTrackerのサイトからWindows CE版をダウンロードしてきて、解凍するだけです。Sigmarion III、jornada720ならARM用のバイナリを使います。

Sigmarion IIIでのGAPI for HPC'sとMilkyTrackerの設定

インストールしたままではちゃんと起動できません。設定が必要です。

GAPI for HPC'sの設定

GAPI for HPC'sのCABをインストールすると、デスクトップ上に「GAPI Setup」のショートカットが作られるので、それを起動します。以下のように設定します。「Kill Taskbar」をONにしないと、タップ位置がずれたり、タスクバーのある辺りがタップできなくなります。

Milkytrackersig301

Milkytrackersig302

MilkyTrackerの設定

MilkyTracker.exeと同ディレクトリにMilkyConfig.exeという設定用のアプリがあるので、それを起動し、以下のように設定します。「Double Pixels」と「Allow external keyboard events」をONにするのがミソです。

Milkytrackersig303

これで起動できます。

Milkytrackersig304

jornada720でのGAPI for HPC'sとMilkyTrackerの設定

インストールしたままではちゃんと起動できません。設定が必要です。

GAPI for HPC'sの設定

GAPI for HPC'sのCABをインストールすると、デスクトップ上に「GAPI Setup」のショートカットが作られるので、それを起動します。以下のように設定します。「Kill Taskbar」をONにしないと、タップ位置がずれたり、タスクバーのある辺りがタップできなくなります。

Milkytrackerjor701

Milkytrackerjor702

MilkyTrackerの設定

MilkyTracker.exeと同ディレクトリにMilkyConfig.exeという設定用のアプリがあるので、それを起動し、以下のように設定します。「Allow external keyboard events」をONにするのがミソです。

Milkytrackerjor703

これで起動できます。

Milkytrackerjor704

Sigmarion III、jornada720いずれでもキーボードが使えるので、快適に打ち込みができそうです。
W-ZERO3でも使えるでしょうから、MilkyTrackerのために欲しくなってしまいました。

Linux ZaurusでのExit時の画面フリーズが何とかなれば、自分的にはZaurusでMilkyTrackerを使いたいんですけどね。

|

2006.10.11

Linux ZaurusやPocket PC (Windows Mobile) でサンプリングシンセサイザー MilkyTrackerを試す

このエントリにはさらに新しい続編があります「[Zaurus]Linux Zaurusでサンプリングシンセサイザー Milkytrackerを再び試す

このエントリには続編があります。「Sigmarion IIIやjornada720でもサンプリングシンセサイザー MilkyTrackerを試す

Pocket PC(Windows Mobile)、Linux Zaurus、Windows、Mac OS X等で動くFastTracker2互換のMOD TrackerであるところのMilkyTrackerの存在を知るに至り、試用してみました。
Trackerと言っても、ほとんどの人は実態をイメージできないと思われるので、タイトルはあえて不正確な表現にしてます。

MODとは、Amigaに由来する音楽データのことで、シーケンスデータと音色データ(サンプリングデータ)の両方を内包した独特なものです。
標準MIDIファイルと違って、自前の音色を使うことができます。
S3M、IT、XM、MODといった拡張子のファイルがMODデータです。
音色データを含む分、ファイルサイズは大きめになります。

そのMODデータを作成するツールをTrackerといいます。
Trackerは、サンプリングシンセサイザー付きのシーケンサーといった感じで使えます。

Trackerの中でも移植性の高い設計になっているのがMilkyTrackerです。

Linux Zaurus用が存在する希有なTrackerということで、ipkをもらってきて喜び勇んで試してみたんですが、SL-5500をターゲットとしたもので、SL-C3200ではインストールしたままでは動きませんでした。

/home/QtPalmtop/bin/milkytracker_execute.shを編集して、

#!/bin/bash
/home/milkytracker.net/bin/MilkyTracker -bpp 16 -orientation ROTATE90CW

上記のように「-orientation」オプションを「ROTATE90CW」と書き換えます。

続いて、ターミナルのアイコン長押しで出る「アプリケーションをVGA〜」のチェックをONにしてターミナルがQVGAで起動するようにし、コマンドラインから「milkytracker_execute.sh」を起動します。

Milkyscrn002

これで問題無く動くものの、「Exit」で終了させると、そこで画面が止まってしまいます。
タスクスイッチでも止まってしまいました。
MilkyTrackerはSDLを使っているのですが、その関係でしょうか。
X/Qt上のターミナルから起動すると、ターミナル内に収まって動くようです。ただ、その場合は画面が小さくて使いにくいと思います。

「Exit」で元の画面に復帰する方法をご存知の方がいらっしゃったら教えてください。

MilkyTrackerのZaurus上での動作については、MilkyTrackerのBBSの「milky tracker compile on sharp zaurus?」スレッドに情報が集積されてます。

H/PCでの動作についても言及があるので、ホーミンさんのダミーdllをインストールした上でPocket PC(Windows Mobile)用のバイナリをSigmarion IIIで実行してみましたが、これはうまくいきませんでした。うまくいきました。gx.dllが必要でした。

Pocket PC(Windows Mobile)用をiPAQ h2210でも動かしてみました。
こちらにはZaurusのような問題はありませんが、保存したデータが壊れてしまったことがありました。

スクリーンショット/機能概略

※スクリーンショットはLinux Zaurus(SL-C3200)のもの。

シーケンスはTrackerに標準的な数値形式で入力します。
Zaurusではキーボードからの入力が可能で快適です。

Milkyscrn003

適当に用意したwavを読み込んでバキバキ鳴らせます。

Milkyscrn005

Milkyscrn006

波形を描いたり、生成したりできます。
波形のループ指定もできます。

Milkyscrn008

エンベローブの指定が可能です。

Milkyscrn009

「手のひらでこんなことができるなんて」と、感動する人は多いんじゃないでしょうか。
Griff等と違ってフリーウェアですし。

MilkyTrackerではXM形式のデータを保存できますが、これはあまたあるModPlayerで再生可能です。

母艦と同じ環境で作業ができるので、STed2同様面白い選択肢だと思います。
公式サイトにチュートリアルの動画があるので、見てみてはいかがでしょうか。

サンプル

Milkyscrn010

Zaurus上で試しに作ったデータを置いておきます。ドラムの音色は懐かしいLinnDrumです。
母艦でwavに書き出してちょっとリバーブをかけてます。

ダウンロード milkytracker-test01.mp3 (464.8K)

このエントリには続編があります。「Sigmarion IIIやjornada720でもサンプリングシンセサイザー MilkyTrackerを試す

|

2006.10.06

今さら「おいでよ どうぶつの森」用支援ソフト「ふうせんタイマー」

おいでよ どうぶつの森用の支援ソフト、「ふうせんタイマー」というのを(今年の2月に)作ってました。
今さら&ゴミアプリではありますが、埋め草に公開してみようかな。

■Windows用

86115912_5

http://hitoriblog.web.fc2.com/fusentimer_win002.zip

■Mac OS X用

86115912_89

http://hitoriblog.web.fc2.com/fusentimer_mac002.sit

おまけ
haniwamix.mp3

------------------------------
ふうせんタイマー Ver.0.0.2
------------------------------

2006.2.13

Windows版 動作確認環境: Windows XP Home Edition Service Pack 2

Macintosh版 動作確認環境: Mac OS X 10.4.3

任天堂DS用ソフト『おいでよ どうぶつの森』用に作った小物です。

効能

『おいでよ どうぶつの森』では、ゲーム内時刻10:04〜15:55の、末尾一桁4〜5の時刻にふうせんが飛んでくることがあります。つまり、約10分毎に飛来する可能性があるということです。

しかし、その時刻に屋内に居ると、当然ふうせんは飛んできません。

このふうせんタイマーは、ふうせんが飛んでくる時刻の到来を、アラームで前もってお知らせするものです。「アラームが鳴ったら屋外へ飛び出す」という行動を取ることで、ふうせんゲットのチャンスを最大限に生かすことができるようになります。

実際には、時刻になってもふうせんが飛来するとは限らないのですが、そのことを意識しているかどうかで、1日のふうせん撃墜数が相当変わってくることは確かです。

使用方法

あるがままにお使いください。

ゲーム内時刻10:03〜15:53の、xx:x3:30にアラームを鳴らします。
つまり、最速飛来時刻の30秒前にアラームが鳴ります。

ゲーム内時刻をリアルタイムとずらしている人向けに、時刻調整機能を付けてあります。PCの時刻をずらすこと無く、ゲーム内時刻と合わせることができます。

備考

Mac OS X版では、
/Users/USERNAME/Library/Preferences/ふうせんタイマー.prefs
という初期設定ファイルを作ります。

Windows版では、実行ファイルと同じディレクトリに、fusentimer.perfs
という初期設定ファイルを作ります。

免責

自己責任でお使いください。

履歴

2006.2.13 Ver.0.0.2

Windows版において、ユーザ名に日本語等2バイト文字が含まれている場合に起動に失敗する問題を回避。

Windows版の配布ファイルが壊れていた? 問題に対応。
Windows XP標準のzip圧縮機能を使ってアーカイブ。

2006.2.10 Ver.0.0.1

初版

|

2006.10.05

Cygwin/i386 Linux用Windows CE(PocketPC)クロスコンパイラCeGCCを試す

このエントリには続編「Windows Mobile用クロスコンパイラ、CeGCC再び」があります。

いつの間にか、Windows CE(PocketPC)用の凄そうなクロスコンパイラがリリースされていたので試してみた。

その名もCeGCC。本家っぽいのキテター!!

ARMベースのWindows CE専用のクロスコンパイラとのこと。
Rainerさんのcelib.dllよろしくunix-likeレイヤーを提供してくれるのがミソのようだ。

i386 Linux、Cygwin向けのバイナリが配布されていたので、とりあえずCygwin用のcegcc 0.1.0をダウンロードしてみる。

自分はd:\cygwinをcygwinのルートにしているので、d:\cygwin以下にtarballを展開。
.bashrcのPATHに/opt/cegcc/binを足して、「. .bashrc」する。

ただ、自分のcygwinが古めだからか、はたまた非NTFS(FAT32)だからか、シンボリックリンクらしきものが機能せず、arm-wince-pe-gccが起動しない。
思考が停止したのでシンボリックリンクを手動で本物に差し替えて解決する。
普通にlnkでよかったのかもしれない。

とりあえず、適当なソースを書いてみる。

#include <stdio.h>

int main(void);

int main(void)
{
FILE *fp;
if((fp = fopen("/test.txt", "w")) == NULL)
{
return(-1);
}
fputs("test\n", fp);
fclose(fp);
return 0;
}

んで、コンパイル。

arm-wince-pe-gcc test.c -o test.exe

ActiveSyncで出来たtest.exeをデバイス(iPAQ h2210)にコピー。
ちなみに、コピーにはcecopyというのを使ってる。ActiveSync中のデバイスにコマンドラインからコピーできるのでお気に入り。

実行に必要なdllもデバイスの\windowsにコピー。
結構サイズがデカい。けどしょうがない。

D:\cygwin\opt\cegcc\arm-wince-pe\lib\cegcc.dll
D:\cygwin\opt\cegcc\arm-wince-pe\lib\cegccthrd.dll
D:\cygwin\opt\cegcc\arm-wince-pe\lib\libstdc++.dll

今思えばd:\cygwin\opt\cegcc\arm-wince-pe\lib\device\以下にあるdllをコピーすればよかったのかもしれません。(追記:2007.03.02)

でもって、test.exeを実行。ルートにtest.txtがデキテター!!
標準出力とかはどうなっているのかはよく分かってない。

このCeGCC、結構よく出来てるらしく、「Just another Ruby Porter,」によると、Rubyがほぼそのままビルドできるらしい(自分の誤解かもしれんが)。

まだまだwork in progressな感じみたいだが、そのうちWindows CE(PocketPC)上にも酒池肉林な環境が出来たりするんだろうか。Emacsとか。

ちなみに、UnixyなOSで使えるActiveSync代替ソフトウェア、SynCEというのがあるそうだ。

|

2006.10.03

ZaurusでMIDI制作 Z-MUSICコンパイラzmc3と標準MIDIファイルコンバータz2m3のZaurus向けパッケージ

テキストで書いたZ-MUSIC v3形式の曲データから標準MIDIファイルを生成するツールである、わいやぎさん作zmc3とz2m3のLinux Zaurus向けパッケージを作りました。不具合が無い限り、非公式最新版を使うのがよろしかろうと思います。

zmc3

非公式最新版(評価未完): zmc3 v0.98.10 (May 27th, 2006)

「zmc3_0.98.10_arm.ipk.bin」をダウンロード

安定最新版: zmc3 v0.97 (Jan. 27th, 2003)

「zmc3_0.97_arm.ipk.bin」をダウンロード

z2m3

非公式最新版(評価未完): z2m3 v1.27 (May 12th, 2006)

「z2m3_1.27_arm.ipk.bin」をダウンロード

安定最新版: z2m3 v1.19 (May 29th, 2002)

「z2m3_1.19_arm.ipk.bin」をダウンロード

使い方

テキストエディタでZ-MUSIC v3仕様のソースコードを書き、zmc3コンパイラにかけ、さらにz2m3コンバータにかけます。

zmc3 test.zms; z2m3 test.zmd

これで標準MIDI形式のtest.midが出来ます。簡単。
出来たmidファイルをtimidityで再生すれば、Linux Zaurus上で曲データ作成から再生まで通しでできます。

Z-MUSIC v3とは?

わいやぎさんの書かれた「Z-MUSICとは?」を読んでいただくのが一番ですが、かいつまんで説明します。

Z-MUSICは、かつて一世を風靡したSHARPのパソコン (Personal Workstation) X68000シリーズで広く使われた「X680x0用内蔵音源(FM音源とADPCM音源)/MIDI音源制御システム」です。

それを汎用化したものがzmc3です。オリジナルのZ-MUSICは音源ドライバとコンパイラで構成されていましたが、zmc3はZ-MUSIC v3仕様のMMLをzmd形式へコンパイルするコンパイラです。zmc3からはオリジナルにある機種依存(FM音源やADPCM音源の制御)部分は削除されています。ドライバはありません。

zms、zmd形式のデータを直接再生するプレイヤーというものも存在しますが、普通はz2m3を使ってzmdファイルからmidファイルを作ります。
標準MIDIファイルを最終生成物、zmdは中間ファイルとして扱うでしょう。
だから、現在の認識としては標準MIDIファイル作成環境、ということでいいかと思います。

Z-MUSIC v3仕様のソースコードとはどんなものか。以下のようなものです。

[volume 127] [velocity 127]

abcfgab

いわゆるMMLですね。BASICを知っている人なら、PLAY文が高機能化したものと思ってもらうのがいいでしょう。

MMLから標準MIDIファイルを生成する環境は他にもありますが、Z-MUSICは、元来の高機能に加え、わいやぎさんの手による効率化、便利化がハンパでなく、いまだ存在意義を残しています。
ほかの処理系との比較を前述のわいやぎさんのページで行なっていますので、読んでみると面白いと思います。

X68000の血脈を継ぐと勝手に思っているLinux Zaurus上でZ-MUSICが動くことには、ある種の人々にとって特別な感慨があることと思います。

注意点

Linux Zaurus向けのバイナリについての質問を、作者であるわいやぎさんに直接送らないようにしてください。

ただ、zmc3/z2m3そのものにも不完全な部分はあり、現在進行形でメンテナンスされています。
Linux Zaurus向けバイナリで出た問題が、もし公式に配布されているWin32版でも出るようであれば、以下のZ-Music BBS等へ連絡してみてはいかがでしょうか。

Z-Music BBS

わいやぎさん、バイナリ配布にご快諾いただき、ありがとうございます。

備考

Linux Zaurus向けにビルドする際、ソースコードをnkf --unixでEUC-jp/LFに変換しました。
これをやらないとビルドできませんでした。
このことに伴い、コマンドヘルプはEUC-jpで表示されます。

CFLAGSに-fsigned-charを加えてビルドしています。

warning: comparison is always true due to limited range of data type

がたくさん出たからです。

Emacs用のZ-MUSIC編集モード

やっぱりZ-MUSIC用のメジャーモードがあります。
wabeeさんのz-music-mode.elです。それを使うと編集が楽になります。
各種編集支援機能のほか、Emacsからzmsのmidファイルへのコンパイル、midファイルの再生、ストップができます。

wabeeさんのZ-MUSICの解説も分かりやすいです。

timidityと組み合わせて使う場合の.emacs.elの設定

(load-library "hilit19")
(load-library "zmusic-mode")
(add-hook 'zmusic-mode-hook
(function (lambda () (hilit-highlight-buffer))))
(setq zmusic-playmidi-term-command "killall timidity")
(setq zmusic-playmidi-device "")
(setq zmusic-shell-filename "bash")
(setq zmusic-playmidi-command "timidity")
(setq zmusic-playmidi-option "")
(setq auto-mode-alist (cons '("\\.zms\\'" . zmusic-mode) auto-mode-alist))

SIGSTOP問題の回避

Zaurusでzmusic-modeを使う場合にはSIGSTOPが問題になってきます。
zmusic-shellとしてシェルを動かしているからです。
サスペンドさせ、次にレジュームしたときにはshellがstopしてしまいます。

これによって、レジューム後にtimidityでの再生関連機能が動かなくなります。
スペシャルカーネルを入れる、SIGSTOP対策済みシェルを使うなどしていない場合は、zmusic-mode.elのzmusic-shell関連の関数に修正が必要です。

具体的には、zmusic-term-playmidiとzmusic-playmidiを以下のように修正します。
from hereからto hereまでを挿入します。
SIGSTOPでシェルがstopしている場合はプロセスを殺しています。

zmusic-playmidiでは、timidityで再生中だった場合には、併せてtimidityをkillしてます。
これにより、zmusic-playmidiによってコンパイルしたmidiデータのプレビュー中に再度zmusic-playmidiを実行した場合には、頭から再生し直す動作としています。

(defun zmusic-term-playmidi ()
"略"
(interactive)
;; from here
(if (and (get-process "zmusic-shell")
(eq (process-status (get-process "zmusic-shell")) 'stop))
(delete-process "zmusic-shell"))
;; to here

(defun zmusic-playmidi ()
"略"
(interactive)
;; from here
(if (not (string= (shell-command-to-string "ps ax | grep timidit[y]") ""))
(shell-command "killall timidity"))
(if (and (get-process "zmusic-shell")
(eq (process-status (get-process "zmusic-shell")) 'stop))
(delete-process "zmusic-shell"))
;; to here

画面が狭いため、コンパイル時のメッセージ表示Windowを、Errorが無い時には消す関数を書いてみたのですが(きっと同じことを思う人は多いでしょう)、うまく動かせてません……。
単体で実行するとうまく動くものの、zmusic-run-compileの中から実行するとうまく動きません。

2006.10.7追記:うまく行かない理由が分かりました。compile関数が非同期実行だからですね。コンパイルが終わる前に見に行ってしまう。こういう場合は、変数compilation-finish-functionにb rを引数に取るラムダ式を代入しておくと、compile関数終了後に自動実行してくれるようです。これで希望の動作ができました。

(setq compilation-finish-function
(lambda (b r)
(progn
(let ((compile-window-name "*compilation*")
(compile-window-error-keyword-regexp "Error"))
(if (bufferp (get-buffer compile-window-name))
(progn
(set-buffer compile-window-name)
(goto-char (point-min))
(if (not (re-search-forward compile-window-error-keyword-regexp nil t))
(if (windowp (get-buffer-window compile-window-name))
(delete-window
(select-window
(get-buffer-window compile-window-name)
))
)
(display-buffer compile-window-name)
)
)
)
))
))

zms2mid

zmusic-modeでは、zmsをmidに変換するコマンド、zms2midがあることが前提となっていますので、書きます。zmc3でzmsからzmdに、z2m3でzmdからmidに変換するので、それを橋渡ししてやるスクリプトを書くわけですね。これをパスの通ったところに置きます。

#!/bin/sh

#///////////////////////////////////
#
# zmc3 / z2m3 helper script
#
#///////////////////////////////////

##################################
# help
##################################

if [ "$1" = "" ]; then
echo "usage: zms2mid [source file name (without extension name)] [option]"
echo ""
echo "Option:"
echo " clean delete [source file name].zmd and [source file name].mid."
echo ""
return 0;
fi

if [ ! -f "${1}.zms" ]; then
echo "ERROR: source file not found."
return 1;
fi

##################################
# clean
##################################

if [ "$1" != "" -a "$2" = "clean" ]; then
if [ -f ${1}.zmd ]; then
rm ${1}.zmd
if [ $? = 0 ]; then
echo "delete ${1}.zmd"
fi
fi

if [ -f ${1}.mid ]; then
rm ${1}.mid
if [ $? = 0 ]; then
echo "delete ${1}.mid"
fi
fi

ls -l ${1}.zms

return 0;
fi

##################################
# zms -> zmd
##################################

zmc3 $1
if [ ! $1 ]; then
echo "ERROR: zmc3 failed."
return 1;
fi

##################################
# zmd -> mid
##################################

z2m3 $1
if [ ! $? ]; then
echo "ERROR: z2m3 failed."
return 1;
fi

ls -l ${1}.zms ${1}.zmd ${1}.mid

|

« September 2006 | Main | November 2006 »