2016/05/14(土)YAMAHA XGの音源コントローラを結局作り直した。

XGTGCTL2 開発やめた の続きになる。

あれから10年近く経っても、自分のDTM環境が、MU2000 EXから脱却できていないので、
ドラムやEQを自由にいじりやすくするために結局作っていた。
前のバージョンはHSPで作ってて、ソースコードがスパゲティ状態で、拡張なんてとても無理だったのでC#で書き直している。
gitの使い方の勉強もかねて、GitHub上で公開してみる。

リリース: https://github.com/ttsuki/XGMidiControllerForMU2000EX/releases

これを使って作った曲: Another Wing -Deep White- と、そのソースコード
スクリーンショット:


MIDIファイルからの読み込み機能はあんまり使わないので省いて、
音源とSysExでSEND/DUMPするほか、サクラMMLスクリプトではき出すようにしたりした。

もはやXGという規格がレトロ化してきている昨今。
MOXFを買おうかとか、でもソフトで何でもできる時代だしーと思うと躊躇してしまう今日この頃。

2016/04/03(日)RAMDISKドライバを作る

RAMDISKドライバを作る

ほんとは、これがやりたくてオレオレ認証局とか作ってたんだけど、
調べたところによると、Windowsで使えるドライバ用のコード証明書のCAは決まってて
そればかりか、Windows 10のカーネルモードのドライバのコード署名はEV証明書でないといけないみたいで、
結局、この記事でやってるようにドライバ署名の検証をスルーしないと動かせなかった。
趣味レベルでカーネルモードドライバをちゃんと作ってリリースする道はもはや絶望的だなー……。

この記事では、

Visual Studioでのドライバの開発に必要なものをインストールして、
サンプルドライバをビルド・インストールしてみてから、
RAMDISKの容量が1GBになるよう、ソースコードを改造してみます。

制限

この記事の範疇ではFAT16なので、2GB(一説では4GB?)よりも大きいドライブは作れないはず。
FAT32への対応はすぐできるんだと思うけど、あんまり調べてない。

上記の通りドライバにコード署名できないので、ドライブを使うには、
毎回ドライバ署名の検証をスルーできる状態でWindowsを起動する必要がある。

続きを読む

2011/12/04(日)C#とかの.NET言語で Ogg Vorbis デコードする DLL

はてブ数 2008/05/08 10:03 ソフトウェア::Windowsつーさ

ゲームのBGM用にOggのデコーダが欲しいじゃない?

  • libogg.dllとかlibvorbis.dllとかvorbisfile.dllとかやだなー。DLL 1個でゲーム用にOggデコードしたいなー。
  • 参照設定に追加して、お好みでWaveデコードしてください。もちろん再配布可(ライセンス見てね)

2012.09.30 更新

  • libvorbisを1.3.3 にアップデート。
  • GitHubに引っ越し。

2011.12.04 更新

  • 長らく更新をほったらかしていたので手元の最新版にアップデートしました。
  • ついでに、サンプルとドキュメント(嘘)を整備しました。
  • 実はずいぶん前からループ終了位置も指定できるようになってました。

概要

 C#などの.NET言語からOggVorbisをデコードするライブラリです。
 libogg 1.3.0, libvorbis 1.3.3 を用いています。

・あたかもPCMストリームを扱っているいるようなOggDecodeStreamクラス。
・ストリームを渡せるので、暗号化ファイルやメモリ上のファイルなどに対応可能。
・ループポイントを指定して自動的にループデコードしちゃう機能を搭載。
 1ループ分の波形データだけで、途切れないBGM再生が可能になります。

Special ThanX!!

J-SONさん J-SONさんのサイト (コールバックの呼び出し方法について助言をいただきました)
C#でOgg Vorbis - DLLのビルド (.NET Claimwork 3.0) (ライブラリの使用方法の参考にさせていただきました)

Download

2009/10/03(土)twittime.user.js

はてブ数 2009/10/03 21:43 ソフトウェアつーさ

1時間前っていつよ?

twitter を web から使っていると、「1時間前」などという表記がアバウトすぎて、逆にいらいらするので表示を日時にしてくれるブックマークレット UserJSにした
導入すると、「約3時間前 webで」が「10/03 20:40 [2時間58分前] webで」みたいになります。

Opera10 のみ動作確認。

twittime.user.js
保存されるときは文字コード(UTF-8で!)にお気をつけください。

// ==UserScript==
// @name          Twittime
// @namespace     http://tu3.jp/
// @include       http://twitter.com/*
// ==/UserScript==

function twittimeUpdate() {
    if(window.getSelection().rangeCount > 0) return;
    var entries = document.getElementsByClassName("published timestamp");
    for(var i=0; i<entries.length; i++)
    {
        var nowDate = new Date();
        var pubDate = new Date(entries[i].getAttribute("data").split(/'/)[1]);
        
        var dta = new Array(pubDate.getFullYear(), pubDate.getMonth()+1, pubDate.getDate(), pubDate.getHours(), pubDate.getMinutes(),  pubDate.getSeconds());
        var pDate = (nowDate.getFullYear() != dta[0] ? dta[0]+"/" : "") + dta[1]+"/"+(dta[2]<10?"0":"")+dta[2];
        
        var pTime = dta[3]+":"+(dta[4]<10?"0":"")+dta[4];
        
        var deltaStr;
        var deltaSec = (nowDate.getTime() - pubDate.getTime())/1000;
        var dsa = new Array(Math.floor(deltaSec/86400), Math.floor(deltaSec%86400/3600), Math.floor(deltaSec%3600/60), Math.floor(deltaSec%60));
        if (deltaSec < 60) deltaStr = "" + dsa[3] + "秒前";
        else if(deltaSec < 3600) deltaStr = "" + dsa[2] + "分" + (dsa[3]<10?"0":"")+dsa[3] + "秒前";
        else if(deltaSec < 86400) deltaStr = "" + dsa[1] + "時間" + (dsa[2]<10?"0":"")+dsa[2] + "分前";
        else deltaStr = "" + dsa[0] +"日"+(dsa[1]<10?"0":"")+dsa[1]+"時間前";

        entries[i].innerHTML = pDate + " " + pTime + " ["+deltaStr+"]";
    }
}

setInterval("twittimeUpdate()",1000);


2009/07/21(火)発狂★BMSがしたい

はてブ数 2009/07/21 16:35 ソフトウェア::Windowsつーさ
2016.12.31 追記
時代が進めば便利な者が出てくるもので、
http://tumblr.ribbit.xyz/post/129562866015/bemusicseeker-%E6%AD%A3%E5%BC%8F%E7%89%88%E3%82%92%E5%85%AC%E9%96%8B%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F-v030
こちらのツールの方が便利そうです。

まとめてダウンロードできるサイトはないかn(殴

まぁ、それはさておき仮にダウンロードしたとしても
私はBMSをちゃんと整理できていないので、
どこにどの曲があるか行方不明なんですよね……。

うーん。

……。

20090721053117.png

差分のインストールを簡単にやってくれる感じで。

BMSがインストールされているフォルダをDnDで登録してから、
インストールしたいBMSファイルをドロップすると、探してくれます。
たまに間違えますが……

BmsSabunSuggester.zip
やる気のないソースコード付き

タグ: BMS 差分 譜面 簡単 インストール 自動 検索

そんなん車輪の再発明だろが、というコメントをお待ちしております。

2008/06/05(木)UltraVNCでWin+Rキーを押してはよくイライラしている方に捧げるDLL

はてブ数 2008/06/06 00:34 ソフトウェア::Windowsつーさ

ZIP ultrawinr.zip

rICHeD32.dll という奇妙な名前のDLLが入っています。x86向けにビルドしてます。
このDLLをUltraVNCのビューワ.exe と同じところにおいて、ビューワに読み込むDLLを勘違いさせてみた場合、VNCの窓が前面にあるときだけ、WinキーがCtrl+ESCに化けます。ファイル名を指定して実行とか、デスクトップの表示とか、その辺をよく使っていて、かつVNCごしにはそれが使えなくていらいらしている人向けのDLLです。

続きを読む