C-TABでバッファ切り替え

Emacsのデフォルトパッケージbsに同梱されているコマンド、bs-cycle-nextとbs-cycle-prevを使う。

(global-set-key (kbd "C-<tab>") 'bs-cycle-next)
(global-set-key (kbd "C-S-<tab>") 'bs-cycle-previous)

同様の機能はiflipbというパッケージによっても提供されている。
emacs.rubikitch.com
iflipbはOS提供のAlt-TAB(MacだとCommand-TAB)と同様の挙動であり、こちらが好みの方はどうぞ。

Emacsにおいてカーソル下の単語をMacの辞書で調べるときのhack

関数の本体はどこかにあった設定を参考にさせていただいた。
my-dictが表題に沿った関数。my-dict2は自分で検索語句を入力する関数。

(defun my-dict () (interactive)
   (let ((url (concat "dict://" (read-from-minibuffer "Search: " (current-word))))
         (browse-url-browser-function 'browse-url-default-browser))
     (browse-url url)))

(defun my-dict2 (key) (interactive "MSearch: ")
   (let ((url (concat "dict://" key))
         (browse-url-browser-function 'browse-url-default-browser))
     (browse-url url)))

(global-set-key  (kbd "C-: C-d") 'my-dict)
(global-set-key  (kbd "C-: C-s") 'my-dict2)

EmacsのFrame切り替えを補助するEmacs Lisp

表題について、以下のElispを見つけたので紹介する。

frame-movementというパッケージである。
github.com

本パッケージにより、'frame-movement/select-next-frame' (次のフレームに移動)と 'frame-movement/select-prev-frame'(前のフレームに移動)という2つのコマンドが提供される。私はsmartrepと組み合わせて以下のように設定してみた。

(smartrep-define-key global-map "C-x 5"
  '(("C-o" . 'other-frame)
    ("C-n" . 'frame-movement/select-next-frame)
    ("C-p" . 'frame-movement/select-prev-frame)))

簡易ボイスチェンジャーのスクリプトを改良:PyQt5のスライダーによりピッチとフォルマントをリアルタイム調整する機能を追加

PyQt5のスライダーを使って、簡易版リアルタイムボイスチェンジャーのピッチとフォルマントを調整できるようにしたということ。スライダーのウィンドウを閉じれば終了する。
当初はTkinterを使う予定だったが、どうにもうまくいかなかったので、PyQt5にした。現状、UIまわりは雑だが、とりあえず動いたので良しとする。
gist.github.com

簡易ボイスチェンジャーのスクリプトを改良:キー入力によるピッチの上下およびフォルマント調整機能

表題の通り。
前回の記事でキー入力を監視できるようになったので、特定のキーが押されたらピッチの上下('u' と 'd')、などの機能を追加したということ。

gist.github.com

PyWorldによる簡易ボイスチェンジャーのスクリプトを改良:キー入力で終了するようにした

以前の記事で紹介したPyWorldによるスクリプトは、実行を終了するときはCommand + Cなどの強制終了が必要だったが、あまりスマートなやり方ではなかった。
tam5917.hatenablog.com

そこで、キー入力を監視して、特定のキー(ESC or 'q')が押下されたらスクリプトを終了するように改良した、という話。

実行環境はMac 10.13.6。Python 3.7.3。PyAudio, PyWorld, Numpyは導入済み。
キー入力監視にはライブラリpynput を用いる。

pip3 install pynput

改良したスクリプト(real_time_vc_keylog.py)は以下。
gist.github.com

MacOSのターミナルで上記のスクリプトを実行する際の注意点として、

  • sudo による実行:これはMacOSのセキュリティ上の制約から来ている
  • 標準エラーに大量の警告:これはthreadingのライブラリ由来かと。とりあえず/dev/nullに捨てる。

というわけで、以下のコマンドラインで実行すると、音声を変換しつつ、キー入力を監視し続ける。冒頭に述べたとおり、ESC or 'q' で 終了になる。

sudo python3 real_time_vc_keylog.py 2> /dev/null

グローバル変数を使うので、これもまたスマートではないが、とりあえず動作したので良しとする。

スクリプトで実装したキー入力の監視機能は以下を参考にしました。ありがとうございました。
PyAudioとpyworldの連携ができますた^^ · GitHub