試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

STed2(数値入力方式MIDIシーケンサ)のビルド・インストールメモ

概要

STed2(http://sted2.sourceforge.net/)はMIDIシーケンサの1つで、数値を入力していくST/GT方式*1により、慣れれば非常に効率よくデータを入力できる(操作も完全にキーボードだけで行える)。レコンポーザというソフトウェアのクローンとしても知られている。
更新は2002年11月以来されておらず、最近のディストリにおいてはそのままでは動かないことも多い。が、動かすことはできるし、TiMidity++(標準で対応)や外部音源の音を出すこともできる。

ビルドについて

文字列(改行)の記述が不適切な部分があるため、ビルドエラーが出る。

if gcc -DHAVE_CONFIG_H -I. -I. -I../..     -g -O2 -MT rcptomid.o -MD -MP -MF ".deps/rcptomid.Tpo" \
          -c -o rcptomid.o `test -f 'rcptomid.c' || echo './'`rcptomid.c; \
        then mv ".deps/rcptomid.Tpo" ".deps/rcptomid.Po"; \
        else rm -f ".deps/rcptomid.Tpo"; exit 1; \
        fi
rcptomid.c: In function 'set_tempo_track':
rcptomid.c:837: error: missing terminating " character
rcptomid.c:838: error: 'This' undeclared (first use in this function)
rcptomid.c:838: error: (Each undeclared identifier is reported only once
rcptomid.c:838: error: for each function it appears in.)
rcptomid.c:838: error: expected ')' before 'file'
rcptomid.c:839: error: stray '\' in program
make[3]: *** [rcptomid.o] Error 1
make[3]: Leaving directory `/tmp/work/sted2-20021104/sted2/sayleen'
make[2]: *** [all-recursive] Error 1

これは

--- sted2-20021104.orig/sted2/sayleen/rcptomid.c
+++ sted2-20021104/sted2/sayleen/rcptomid.c
@@ -834,8 +834,8 @@
   if ( rcp->enable_converter_notice == FLAG_TRUE ) {
     int *len;
 
-    sprintf( buf,"
-This file was converted by %s version %s (%s - %s).
+    sprintf( buf,"\n\
+This file was converted by %s version %s (%s - %s).\n\
 Original RCP file is \"%s\" (%s, %d bytes).",
 	     (rcp->command_name!=NULL)?rcp->command_name:rcptomid_name,
 	     VERSION_ID, VERSION_TEXT1, VERSION_TEXT2,

の修正でエラー回避できる。
上の修正にsedを使用した場合のソース展開からインストールまでの流れは下のようになる。

$ tar zxf [sted2-20021104.tar.gzの場所]
$ cd sted2-20021104/
$ sed -i -e 's/\(buf,"\)/\1\\n\\/' -e 's/\(%s).\)/\1\\n\\/' sted2/sayleen/rcptomid.c
(この段階で、必要に応じて他の修正作業も行う)
$ ./configure
$ make
$ sudo make install-strip

しかし、起動して正常に動作させるためには、問題がまだ色々と残っている。

*1:ステップタイム(次のステップまでの時間)とゲートタイム(音の長さ)により曲データを構成する