NSFファイル作成に用いるWAVE-DMC変換ツールDMC(DPCM)コンバータをWineの開発パッケージでビルドしてインストールするスクリプト
「GNU/Linux上におけるppmckについてのその後(2010/2/2現在)」のppmckを用いたNSFファイル作成においてサンプリングされた音を鳴らすのには「E」チャンネル(デルタPCM用)を用いるが、音声データファイルは
www.geocities.co.jp/Playtown-Denei/9628/
にリンクがあるDMC(DPCM)コンバータ(DMCconv.exe)というWindows向けツールを用いてWAVE形式ファイルからDMC形式に変換する必要がある。
これはWineで動作するが、ソースが公開されているため、Wineの開発パッケージを用いてGNU/Linux向けにビルドすることはできる。残念ながら、WindowsのAPI/ライブラリに依存しているため、そのままではWineのライブラリに依存しない完全GNU/Linuxネイティブなプログラムとしてビルドして使うことはできない。
下はソースをダウンロード後それを修正し、ビルドを行って専用のWine環境(既定では[ホームディレクトリ]/.wine-dmcconv/)以下にインストールする作業を自動化するスクリプト。
動作にはWineの開発パッケージが必要なのはもちろん、wgetもしくはcurlに加えunzipも必要。
アンインストールするには[ホームディレクトリ]/.wine-dmcconv/以下と[ホームディレクトリ]/bin/dmcconvを削除する。
[任意]ファイル名: wine-dmccomv-install.sh ライセンス: LGPL-2 (or lator)
#! /bin/sh # download/patch/build/install script for DMCconv 0.05 # version 20100224 # (C) 2010 kakurasan # Licensed under LGPLv2+ URL=www.geocities.co.jp/Playtown-Denei/9628/mck/dmcconv005.zip TEMPDIR=$(mktemp --tmpdir -d dmcconv.XXXXXXXX) if [ ${?} -ne 0 ]; then echo "cannot create tempdir" exit 1 fi cd ${TEMPDIR} export WINEPREFIX="${WINEPREFIX:-${HOME}/.wine-dmcconv}" APPDIR="${WINEPREFIX}"/dosdevices/c:/"Program Files"/dmcconv APPDIR_DOS="$(winepath -w "${APPDIR}" | sed 's:\\:\\\\:g')" # fetch if ! wget ${URL}; then if ! curl ${URL}; then exit 1 fi fi echo "593320cdd4fde8a61dbe75edd9f9774d dmcconv005.zip" | md5sum -c || exit 1 # extract unzip $(basename ${URL}) || exit 1 # build fix cat <<EOF | base64 -d | zcat | patch -p1 H4sIAPPff0sCA7VUzW7aQBA+L1LeYUouEGNjCJQotBHhL0Ei0BJoVaVV5PgHViW2u9ikP8khcKhy i9Sfh6jUY3trz730DfoQfYTurrExEEhVqVLiYb+Z8Xzf7Hg0bBggugS0U1W1zKEoS3JWsgjuJssH JYZIqm3PeMOOtYgoiqtz1yKCIKx4QaEA4lZiCwT2KBTWIrCOTbXvajrcGzgatqTezjzYxyceSusH jqjzytY13ZB60Rn4VFGJxUFhCrZDsSH4IIidFoyeKUPdwH3dw+lfrdFGVINz0j96BvfhjScilUvk QOBPLgPJL7NVOQHUyNxkcp7xTptZbtK7nslwkyrKCZp6kfe0DS2soVMFmzFWExTSVRNQ2t9tbbDf Q1o9Tulj07k1iJGEaq1e2UBnhk1JNzr1ej7ArDDGxGS4mMxUDEI2oYWMGERBPAGAomI+hwF+rYOt aBo2u7Gybihu39luWD4Uf2pGIZ5fyB/Q/EOWqlqE6KoTpJa88zSPNoGmEt1xiUnPQnAA2XvthXcl CCWTMK6Nh+NH47fjd1e/r39ORktOpFJ0uLjhUng0pkTu2DWzSu8V4rw7YYqVVqvZ2gaiv3Ax0QGb tusAnwGf2TJaqSktv0rTdf6ujOU6/1InKEVnkigO/URAhvPz4LhDB0uusilgDUnn+NV6ZnK31Val EoO+XXQNQyf+jVVL9eYhxdnAzEHWBBJnyYW5rWPDpF8YOi5Xip09ln0BquKovRhIkhQ0Y74XHwYf v49+jPfGV5dHo0/vP19/HX0Z/aL/3y6Lfk+4jK0sl8HN/5Shmxo2OH32Ya5FtOUbM1gqs+sugJdt y1DAwq4M+fiSSSdSabpluPHHebL4kGsOcNfUNVB7CkHFJ+1K/ibvoGcRBz1utspM+oK7b5ldVJ64 hWRydcDi64+P6Y3ezcBDP2Ipw84tFDurOXbqzcbeKo5+ACxx366hExLB2r8ps6HjT958P3GSxjYx 3cE3vpL5OnPOGbWH+81WO6w2zHVR6g3ecKdZaxHaqD+Y7zETxB0TZX8A2OKPNwIIAAA= EOF # encoding (japanese text) mv DMCconv.cpp{,.cp932} iconv -f cp932 -t utf8 DMCconv.cpp.cp932 > DMCconv.cpp # build wineg++ ${CXXFLAGS} -m32 wavefile.cpp DMCconv.cpp -o DMCconv.exe.so -lwinmm # set PATH / create wine prefix cat <<EOF > path.reg || exit 1 REGEDIT4 [HKEY_CURRENT_USER\Environment] "PATH"="${APPDIR_DOS}" EOF regedit path.reg || exit 1 # install mkdir -p "${APPDIR}" || exit 1 strip DMCconv.exe.so || exit 1 cp DMCconv.exe.so "${APPDIR}" || exit 1 mkdir -p ~/bin cat <<EOF > ~/bin/dmcconv #! /bin/sh IFS="\\0" env WINEPREFIX=${WINEPREFIX} wine DMCconv.exe.so \${@} EOF chmod +x ~/bin/dmcconv # cleanup cd .. rm ${TEMPDIR} -fr
(2010/2/24)スペースを含むファイル名があるとうまく動作しない問題を修正
これで[ホームディレクトリ]/bin/にPATHが通っていればdmcconvというコマンドとしてこのツールが使えるようになる。
使用したバージョン: