Skip to content

Instantly share code, notes, and snippets.

Avatar
🔧
I may be a robot...

Retorillo retorillo

🔧
I may be a robot...
View GitHub Profile
View ni-uninstall-0.md

Native Instruments 製品の一括アンインストール

Native Accessには現時点でアンインストールはおろか一括アンインストール機能が提供されておらず、ひとつひとつ「プログラムの追加と削除」からアンインストールを行わなければなりません。手作業だと膨大な手間と時間がかかります。そこでアンインストールするためのスクリプトを作成しました。以下のスクリプトを実行するだけでほとんどのNI製品を取り除くことが可能で、かなりの時間を節約できます。

get-package -name "Native Instruments*" -providerName programs | where name -notmatch "Access|Agent|Editor|Driver"| %{$_.swidtagtext} | select-xml -xpath "*/*" | select-object -expandproperty node | %{ echo $_.ModifyPath; start -wait $_.ModifyPath -argumentlist @("REMOVE=TRUE","MODIFY=FALSE","SILENT=TRUE") }
  • Windows 11環境で確認済みです。
  • PowerShellを管理者権限で実行後、上記コマンドをコピー&ペースト(PowerShellの初期設定だと右クリックで貼り付けができます)ENTERキーを押すと実行が始まります。
@retorillo
retorillo / remove_masks_for_cubism.jsx
Created May 3, 2021
Live2D Cubism Editorに読み込むためにPSDファイルからすべてのマスクを除去します。「塗り」が100%以外である場合(おそらくLive2D未対応)や、ブレンドモードがデフォルト以外の場合に警告を出力してくれます
View remove_masks_for_cubism.jsx
var count = 0;
var warning = [];
var targets = [];
function preprocess(root) {
if (!root) root = activeDocument;
for (var c = 0; c < root.layers.length; c++) {
var disabled = [];
if (root.layers[c].typename === 'ArtLayer') {
var path = getpath(root.layers[c]);
var visible = root.layers[c].visible;
@retorillo
retorillo / bigint_extendedscript.jsx
Last active May 2, 2021
Premiere's Time object computation (Adobe ExtendedScript compatible)
View bigint_extendedscript.jsx
// for Premiere's Time object computation (Adobe ExtendedScript Compatible)
// WORKING IN PROGRESS, NOT WELL TESTED
// License: Public Domain or CC0
// Copyleft (ɔ) Retorillo
function bigint_pad(x, L) {
// NOTE: ExtendedScript does not support String.padStart
var y = x.split(/(?=.)/);
while(y.length < L) y.unshift('0');
return y.join('');
View rename-gopro-mp4.ps1
$TZ = 9; $PN = 'メディアの作成日時'; $E = @{ H='AVC'; X='HENC' }; $S = new-object -comObject shell.application; $I = -1; $D = $S.namespace((get-item .).fullName); 0..512 | foreach { $prop = $D.getDetailsOf($null, $_); if ($prop -eq $PN) { $I= $_; } }; if ($I -ne -1) { dir *.mp4 | foreach { $F = $D.parseName($_.name); $W = '{0}.wav' -f $_.baseName; $M = ($_.name + "`t" + $D.getDetailsOf($F, $I)) -match '^G(H|X)([\d]{2})[\d]{4}.((?i)mp4)\t[^\d]*(\d{4})[^\d]+(\d{1,2})[^\d]+(\d{1,2})[^\d]+(\d{1,2})[^\d]+(\d{1,2}).*$'; if ($M) { $G = $Matches; $J = ((new-object datetime ($G[4], $G[5], $G[6], $G[7], $G[8], "0")) - [timespan]::fromhours($TZ)); $N = 'GOPRO_{0}_C{1}_{2}_{3}' -f $J.toString('yyyyMMdd_HHmm'), $G[2], $E[$G[1]], $_.baseName; rni $_.name ('{0}.mp4' -f $N); if (test-path $W) { rni $W ('{0}.wav' -f $N) } } } }
View google-speech-to-text-quickstart.md

Google Speech-to-Text の QuickStart サンプルコード を実行する

https://github.com/GoogleCloudPlatform/dotnet-docs-samples の「speech/api/QuickStart.cs」を実行するステップ

Visual Studio で必要なコンポーネント

現時点(2021年01月26日)では少なくとも以下のコンポーネントが必要。VS2019 Communityで検証。

  • .NET SDK(dotnetコマンドに必要、コンポーネントインストール後ログインしなおさないとコマンドは使えない)
  • .NET Core 2.1 ランタイム (LTS)
View gist:82899e58d0b0c21e64e991c1af9bddd0
(?:\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffb|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud8
View extract-twemoji-filenames.cs
// ExtractTwemojiFileNames
// Extract all emoji characters from text
// [EXAMPLE] 🕵🏾‍♀️ => 1f575-1f3fe-200d-2640-fe0f
// Licensed under the MIT license
// Migrated from twemoji.js v12.1.3 (Twitter Inc.)
static IEnumerable<string> ExtractTwemojiFileNames(string text) {
Regex regex = new Regex("(?:\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c\udffb|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c\udffb|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udf
View TransparentCutoutDoubleSidedDiffuseShader.shader
// Licensed under CC0, No Rights Reserved
Shader "Custom/TransparentCutoutDoubleSidedDiffuseShader" {
Properties {
_Color ("Color", Color) = (1, 1, 1, 1)
_Alpha ("Alpha Map", 2D) = "white" {}
_Normal ("Normal Map", 2D) = "bump" {}
_Cutout ("Cutout", Range(0, 1)) = 0.5
}
SubShader {
Tags {
@retorillo
retorillo / fontforge_monospaced_font_generationt.md
Last active Jul 20, 2022
fontforgeによる等幅合成フォント作成時の注意点
View fontforge_monospaced_font_generationt.md

fontforgeによる等幅合成フォント作成時の注意点

make.pyはファイル名に使うべきではない

pythonをインストールしている環境ではmakeコマンドよりもmake.pyが優先して実行されることがあり混乱する。

cidFlattenは使うべきではない

同じコード値を示すグリフは複数ある場合がある。 この場合cidFlattenは期待しない結果となる。

View fastdrawingvideo.md

Creating fast drawing video with ffmpeg

ffmpeg -i "concat:video1.ts|video2.ts|video3.ts" -c copy concat.ts
ffmpeg -i concat.ts -an -filter:v "setpts=0.03125*PTS" -c:v libx264 -preset ultrafast -crf 0 m32.mp4
  • Use setpts=0.25*PTS for x4 video, setpts=0.03125*PTS for x32 video.
  • Use -an to remove audio track.