SRXDのMIDIホイール感度を上限を超えて設定するMODを作りました

依然としてSpin Rhythm XD(SRXD)にハマっている私ですが、ついにDJコントローラまで買ってしまいました。 CASIOのXW-DJ1というやつで、大きめのお皿をシュピンシュピンできます。お皿の抵抗が比較的小さいため、スピン後もその慣性が残りやすく、より一層”プレイ”している感覚が得られます。 しかしながらもう製造停止しているんです😭

XW-DJ1

続きを読む

StreamFX(OBS)でCDスピンのように、ソースをクルクル回す

スピンの様子

Discord等のカメラにもOBSのシーンを映すことができると分かってから色々と遊んでおります。さて、今回は上の画像のようにひたすらソースが回転しつづけるアニメーションをStreamFXMove Transitionを使って実現してみます。どちらのプラグインもOBSにインストールされていることを前提に説明していきます。なお、使用したStreamFXのバージョンは現時点で最新のStreamFX 0.12.0 Beta 299ですが、他のバージョンでもさほど変わらないと思います。

続きを読む

ctypesで定義した構造体の配列を初期化する

PythonからWin32APIを直接叩きたい機会があったのですが、PyWin32に使いたかったRAWINPUT周りの構造体や関数が用意されていなかったため、ctypesから使用することにしました。当然Cの引数や返り値をラップする必要がでてくるわけですが、見かけた構造体の配列の初期化の構文で一瞬むむ??っとなったのでメモです。

ctypesのリファレンスの例を借りると、構造体の配列は

from ctypes import *
class POINT(Structure):
    _fields_ = ("x", c_int), ("y", c_int)
TwoPointsArrayType = POINT * 2
array = TwoPointsArrayType(POINT(1,2),POINT(3,4))

という風に書けるわけですね。ただ、任意の数のPOINT配列を作りたいなぁというときに、わざわざ配列タイプをtypedefするのも面倒なので一行で書きたくなるわけです。 そうするとこうなります。

# 10個のPOINTを含むリスト
p_list = []
for i in range(10):
  p_list.append(POINT(i,i))
# ctypeで使う配列
array = (POINT*len(p_list))(*(p for p in p_list))

一瞬C言語のポインタ表現かと見間違えました笑。リストを*で展開して初期化の引数に渡してあげているんですね。慣れればなんてことないですが、初めて見るとなんだこれとなったのでメモでした!

PyInstallerで詳細タブのプロパティを指定する(pyinstaller-versionfile)

exeファイルの詳細タブ

pyinstaller-versionfileを使ってexeファイルの詳細情報を簡単に管理できるようにしようというお話です。

続きを読む

PySide6(Qt6)の覚書

  • 外観
    • テーマの設定
    • ダークテーマ(標準)
    • ダークテーマ(qdarktheme)
      • QToolTipが見えづらい
    • QSSを別ファイルにまとめる
    • QSSセレクタで特定のQWidgetを選ぶ
    • Font family
  • スレッディング
    • QThreadの理解につながる記事
    • 動作が保証されないQPixmapまわり
  • QAbstractTableModel dataメソッドのロール
  • フレームレスウィンドウのDrag&Drop移動
  • PySideで動かしているQtバージョンの確認

この間Qtを初めてちゃんと触ったんですが、その際に学んだTips等をまとめておきます。なお、今回はQMLではなくQtWidgetを対象としています。

続きを読む

Fletでいい感じなフレームレスウィンドウを作る

フレームレスウィンドウ

Fletにはタイトルバーのウィジェットが無く、かわりにAppBarがあります。しかし、このAppBarはデスクトップ向けのGUIとしてはかなり不格好。 (スマホ向けのデプロイも意識してのことだろうから仕方ないけども!)

そんなわけで、上記画像のようなタイトルバーを下記要件を満たす形で作ってみました。

  • タイトルバー部分をドラッグすることでウィンドウを動かせる。
  • ウィンドウはリサイズできる。
  • 右上にコントロールボタンを設定する。
  • 最大化ボタンは、ウィンドウ最大時と非最大時とでアイコンを分ける。
続きを読む