2012年2月28日火曜日

日記ちゃんLMMS 0.4.13

LMMS - Linux MultiMedia Studio
気が付いたらバージョンアップされてた。いんすとーるなう!
 
 以下変更のGoogle翻訳。
LMMS (Linux MultiMedia Studio) - Browse /lmms/0.4.13 at SourceForge.netより

=======================================
LMMS 0.4.13リリースノート
=======================================

我々は、LMMS 0.4.13のリリースをアナウンスすることをうれしく思います。このバージョンは、
0.4.xシリーズのメンテナンスリリースです。それはv0.4.12で見つかったさまざまなバグを修正
と以前のバージョン。様々な新しいとさらにバージョン0.4.13船
主にmasterブランチからバックポートされた機能。

(特に保管人は、このリリースを構成していると助けた人すべてに感謝します
)をテストし、バグを報告アップ!


バージョン0.4.13のための要約:
===========================

コア:
ステファン中古FendtのRCフィルタの*初期加算
*標準フィルター:24 RCフィルタのDBのバージョンと同様にボーカルのフォルマント·フィルタを追加しました
* InstrumentTrack、NotePlayHandle:固定ノート離処理
* ComboBoxModel:モデルが空の場合)(currentTextでクラッシュしない
*ミキサー、パターン:MIDIベースの機器と固定パターンの凍結
* AutomationPattern:固定loadSettings()は値が1つだ
* AudioFileWave:ソフトウェアのメタデータ文字列として追加 "LMMS"
* SIDの楽器プラグイン:coarseModelsの固定不足しているセーブ/ロード
* 3rdparty/libsamplerate:バージョン0.1.8に更新

GUI:
*ノブに磁気効果(initの値の場合)を追加
*ピアノロール:(+左クリックをシフトする)の選択機能から削除
*ピアノロール:シフトを保持することによってメロディーのサイズを変更する際に注意して保存する
*ピアノロール:トーンマーキング機能を追加
*ピアノロール:スケール&アルペジオコンボボックス
*ピアノロール:最小値と初期幅を修正
* SampleTrack:プロジェクトのロード時にセット/更新は、サンプルのツールチップ

プラグイン:
*その他のzynaddsubfx:サンプルレートを変更するエコーエフェクトの修正クラッシュ
*その他のzynaddsubfx:ENV:固定エンベロープのスケーリング
*その他のzynaddsubfx:静的解析からプルーニングコード
微分音* ZynAddSAubFX:デチューンの値の固定フォーマット
* CALF:現在の​​Gitマスターに更新
* SWH LADSPAプラグインを更新し、不足しているhermes_filterプラグインを追加しました
* LVSL:(自動化)VSTのコントロールとVSTプリセットのサポートを追加

その他:
*ポーランド語のローカライズファイルを追加しました
*更新ドイツ語ローカライズファイル
更新MinGW64ランタイムとGCCでビルドされた* Win32/Win64構築し、
Qtの最新バージョンを出荷


より詳細な変更がで得ることができる

http://lmms.git.sf.net/git/gitweb.cgi?p=lmms/lmms; =ログ、H = v0.4.13
(または "gitのログv0.4.12 .. v0.4.13")


ダウンロードで入手できます。

http://sourceforge.net/projects/lmms/files/


詳細については、プロジェクトのホームページで入手できます。

http://lmms.sourceforge.net

とWiki

http://lmms.sourceforge.net/wiki

LMMS流通プラットフォーム(LSP)をも注意してください:

http://lmms.sourceforge.net/lsp/

 
 まあ相変わらずVSTi開くと落ちるけど。

日記ちゃんマキシマム


435円。安いな。
内容の要領を得ないが、ケツイDSみたく細切れになるのかもしれない。
なんとなくスペルプラクティスを思い出したが。

2012年2月26日日曜日

日記ちゃん

いつだかに言ってたフリック入力なスクリーンキーボードを作るべく
ちょいちょい調べているが、
まずスクリーンキーボードの機能を組む段階で詰まった。
 
 ひとつしたのウィンドウにキーを送信すればいいのだけど、
キー送信はアクティブなウィンドウにしかできないっぽいのね。
でも自分をクリックすると自分がアクティブなっちゃってキーをうまく送信できなくなる。
AttachThreadInputだとか、WM_NCACTIVATEだとかいろいろ調べたら出てきたんだけど
どうにもうまくいきそうでいかない。
 
 で、結局はCreateWindowExにWS_EX_NOACTIVATE | WS_EX_TOPMOSTをしていして、
自信はアクティブにならず最善面表示するウィンドウを作成するようにしたらかなり簡単にうまくいった。
キー送信も自分はアクティブにならないから
自動的にターゲットのウィンドウがアクティブになってて、そのままキー送信される便利具合。
 
 テスト的な実装で、WM_LBUTTONDOWNがきたらkeybd_eventをするだけで想定したの動きになった。
これからスクリーンキーボードを作ろうという方は、この方法はどうだろうか?
あとはボタンを置いてボタンごとにkeybd_eventの処理を書くだけ。半角全角キーがちょっと面倒なようだけど。
 
 タスクバーにのらないみたいだからまだなんかウィンドウスタイルを指定する必要があるみたいだけど。
CreateWindowEx 関数
思いっきり書いてあったけど。WS_EX_APPWINDOWを足せよ!とのこと。

#define _WIN32_WINNT 0x0500
#include
 
 
LRESULT CALLBACK wndProc(
  HWND hWnd,
  UINT msg,
  WPARAM wParam,
  LPARAM lParam )
{
  switch (msg)
  {
  case WM_DESTROY:
    ShowWindow( hWnd, SW_HIDE );
    PostQuitMessage(0);
 
    break;
  case WM_CREATE:
    break;
  case WM_LBUTTONDOWN:
    {
      keybd_event( 'A', 0, 0, 0 );
      keybd_event( 'B', 0, 0, 0 );
      keybd_event( 'C', 0, 0, 0 );
      keybd_event( VK_RETURN, 0, 0, 0 );
    }
 
    break;
  default:
    return DefWindowProc( hWnd, msg, wParam, lParam );
  }
 
  return 0;
}
 
 
 
int WINAPI WinMain(
  HINSTANCE hInstance,
  HINSTANCE, PSTR, int )
{
  LPCTSTR WINDOW_NAME = TEXT("sample");
 
  WNDCLASSEX wc;
  wc.style    = CS_HREDRAW | CS_VREDRAW;
  wc.lpfnWndProc  = reinterpret_cast( wndProc );
  wc.cbClsExtra  = 0;
  wc.cbWndExtra  = 0;
  wc.cbSize    = sizeof( WNDCLASSEX );
  wc.hInstance  = hInstance;
  wc.hIcon    = NULL;
  wc.hIconSm    = NULL;
  wc.hCursor    = LoadCursor( NULL, IDC_ARROW );
  wc.hbrBackground= reinterpret_cast( GetStockObject(WHITE_BRUSH) );
  wc.lpszMenuName  = NULL;
  wc.lpszClassName= WINDOW_NAME;
  if ( !RegisterClassEx(&wc) ) return 0;
 
  HWND hWnd = CreateWindowEx(
    WS_EX_NOACTIVATE | WS_EX_TOPMOST | WS_EX_APPWINDOW,
    WINDOW_NAME, NULL, WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
    NULL, NULL, hInstance, NULL);
  if ( !hWnd ) return -1;
 
  ShowWindow( hWnd, SW_SHOWNORMAL );
  UpdateWindow( hWnd );
  
  MSG msg;
  for (;;)
  {
    if ( !GetMessage(&msg, NULL, 0, 0) ) break;
    TranslateMessage( &msg );
    DispatchMessage( &msg );
  }
 
  
  UnregisterClass( WINDOW_NAME, hInstance );
  return msg.wParam;
}

2012年2月22日水曜日

日記ちゃん


 アンデフの再販サントラが届いた。後ついでに買ったセンコロサントラも。
発送通知から一日で来るとは思ってなかったから完全に油断してた。
 画像見て、光源が蛍光灯だと影の解像度低いなーとかぼんやり考えてた。

2012年2月8日水曜日

日記ちゃんパックファイルエディタ


 データ順序を任意に決定できるよう修正した。
いままでできんかったんかい。
これまではファイル名のハッシュ順で並べていたのでデータ位置がファイル名依存だったが、
読み込み時にファイル順序情報を保存することで実現した。
 バージョンアップ等でデータを追加するときは後ろの方に一か所にまとめておくと差分作成時に有利になると思われる。
 ついでにソート機能とかつけたがしばらくは使用しない機能だろう。
マニフェスト情報をはるか昔に作成たきり変更してなかったから矛盾が発生してる問題が発覚している。
確認してないがおそらく「いめーじぺたぺた」「ActiveWindowRecorder」もマニフェストファイルがおかしいと思われる。そのうち直す。
 
 
 ためしに追加データを後方に置いたパックファイルで差分パッチを作ってみたところ、
80MBから70MBになって若干の効果がみられた。zipファイルに圧縮すると35MBぐらい。
作成時間もとても若干短くなったが、正直焼け石に水。
今のところWDiffとPatchWise Freeの2種類でそれぞれパッチを作成して、
ユーザーに好きな方を選んでもらう予定でいる。

2012年2月3日金曜日

日記ちゃん

ためしに差分パッチを作成してみたところ、
パッチ自体が80MB、
パッチ適用前の全体が117MB、適用後が123MB。
80MBて。はははナイスジョーク。
zipで圧縮して40MBくらいまで縮んだが、もうちょっと何とかしたい。
 次なんか作るときはパッチあてることを考えて差分データを後ろにおけるよう考慮したい。
具体的にはパックファイル周り。

 最大往生ロケテが盛り上がっている一方そのころ。
100MBの差分チェックに丸一日かかって、ようやく半分ほど。
しかもテストに作成してみているだけで中身ができてるわけじゃないところが悲しい。
 とかなんとかいってたら後半バイナリが一致してるのか一気に最後までチェックして完了した。
 
 PATCHWISE.COM - Personal Patch Utility: PatchWise Free
 ほかのパッチ作成ツールはどんなもんじゃろと試してみてるが、
これを使うとパッチのサイズが20MB程度、作成時間も短く、適用時間も短時間ですむ。
しかし、パッチ適用するときにフォルダ選択ウィンドウで対象フォルダを指定しないといけない。
 個人的にはパッチをカレントに持って行って実行するタイプのほうが好きなもので、
なかなかガッツリ満足いかない。
 Free版だからか差分が1世代しか適用できない、ぽい。
たとえばver1.0, ver1.1, ver1.2とあったとき、
ver1.2を適用しようと思うと、ver1.0とver1.1の両方のデータ差分が必要になる。
が、差分作成からパッチ生成まで一連なので無理くさい。
パッチデータのみ作成ボタンはあるが「PatchWise Freeでは無効です」とでるから、
free版では無理なんだろう。
 
Lameije Corporation
udm差分ファイル作成ツール
 は、シェアウェアに適用するには有料版を使用する必要があるのでスルーした。
2100円とかなりお安い。
上記サイトを見たかんじ、フォルダを指定する必要がありそうだからやはり意図した動作から少し外れる。