人気ブログランキング | 話題のタグを見る

├mid音楽

MIDI 名曲探しの前提、ノックアウト処理について

SRCシナリオが1000を超える場合、容量は10GBを超えているかもしれない。
こうなってくると、EverythingやDevasを使った検索も難しくなる。
邪魔なファイルが多すぎて、検索が重くなるのだ。

我々がやりたいのは、シナリオのプレイではなく、mid音楽の発掘である。という事は、極論を言えば
「midファイルと、Readme.txtと、シナリオのフォルダ構造だけあれば良い」という事だ。

「10GBもあるSRCシナリオ群を、いかにして1GBまで削減するか?」
それが、midファイルの発掘作業の根幹だ。


この手のフォルダ・ファイルの削減を、私はノックアウト、ノクアと読んでいる。
生物学の遺伝子の研究でも、この手のノックアウトはよく使われる手法である。
それを流用することで、midファイルの探索を高速化するわけである。

たとえば、
ノクアSRC■1■シナリオ群フォルダ.bat
というバッチ・ファイルを作って、容量の削減をする実行する。コードは、

# 変数設定
$env:HOGE="ほげ"
# 文字コードの設定
chcp 65001
# 目的のディレクトリに移動
cd C:\Users\あなたのユーザー名\Desktop\解凍済み
# 削除するフォルダ名のパターンを定義
$patterns = @("(?i)^Bitmap$", "(?i)^Data$", "(?i)^Map$", "(?i)^Eve$", "(?i)^Lib$", "(?i)^Unit$", "(?i)^サンプルセーブ$", "(?i)^サンプルセーブデータ$", "(?i)^セーブデータ$", "(?i)^サンプルボイス$", "(?i)^Story$", "(?i)^System$", "(?i)^Scenario$", "(?i)^SaveData$", "(?i)^Save$", "(?i)^SampleSaveData$", "(?i)^SampleSave$", "(?i)^Sample$", "(?i)^image$", "(?i)^Include$", "(?i)^Html$", "(?i)^Event$", "(?i)^Bitmap$", "(?i)^サンプル$", "(?i)^インクルード$", "(?i)^イベント$", "(?i)^サンプルデータ$", "(?i)^シナリオ$", "(?i)^システム$", "(?i)^Test$", "(?i)^SaveDate$", "(?i)^Savefile$", "(?i)^pilot$", "(?i)^Anime$")
# 再帰的にフォルダを探索し、パターンに一致するフォルダを削除する関数
function Remove-MatchingFolders($path) {
Get-ChildItem -Path $path -Directory -Recurse | ForEach-Object {
$folderName = $_.Name
foreach ($pattern in $patterns) {
if ($folderName -match $pattern) {
Remove-Item -Recurse -Force -Path $_.FullName
Write-Output "Deleted folder: $folderName"
break
}
}
}
}
# ルートディレクトリで関数を呼び出す
Remove-MatchingFolders "C:\Users\あなたのユーザー名\Desktop\解凍済み"


これによって、SRCシナリオ群から大量のフォルダが消失する。

次に、いらなそうなファイル群を削除する。
名前は...
ノクアSRC■2■シナリオ群ファイル.bat
とでもしておく。

# 変数設定
$env:HOGE="ほげ"
# 文字コードの設定
chcp 65001
# 目的のディレクトリに移動
cd C:\Users\あなたのユーザー名\Desktop\解凍済み
# 削除するファイル名のパターンを定義
$patterns = @(
"(?i)^alias.txt$",
"(?i)^animation.txt$",
"(?i)^effect.txt$",
"(?i)^icon.txt$",
"(?i)^item.txt$",
"(?i)^pilot_dialog.txt$",
"(?i)^pilot_message.txt$",
"(?i)^sp.txt$",
"(?i)^robot.txt$",
"(?i)^terrain.txt$",
"(?i)^non_pilot.txt$",
"(?i)^unit.txt$",
"(?i)^word.txt$",
"(?i)^.*画像について.*.txt$",
"(?i)^.*登場キャラクター.*.txt$",
"(?i)^.*添付アイコン.*.txt$",
"(?i)^.*更新.*.txt$",
"(?i)^.*シナリオ.*.txt$",
"(?i)^.*ユニット.*.txt$",
"(?i)^.*マップ.*.txt$",
"(?i)^.*キャラクター.*.txt$",
"(?i)^.*インクルード.*.txt$",
"(?i)^.*アイコン.*.txt$"
)
# 再帰的にフォルダを探索し、パターンに一致するファイルを削除する関数
function Remove-MatchingFiles($path) {
Get-ChildItem -Path $path -File -Recurse | ForEach-Object {
$fileName = $_.Name
foreach ($pattern in $patterns) {
if ($fileName -match $pattern) {
Remove-Item -Force -Path $_.FullName
Write-Output "Deleted file: $fileName"
break
}
}
}
}
# ルートディレクトリで関数を呼び出す
Remove-MatchingFiles "C:\Users\あなたのユーザー名\Desktop\解凍済み"

この2つのバッチ処理によって、大量のフォルダ・ファイルが消失し、高速な検索が可能になる。
これはmidファイル探索の基礎の基礎、大前提とでも呼ぶべき、下処理である。
本当なら、もっと最初に書いておくべきだったが、
「前提を忘れてしまうのが人の性質」
であるために、遅れてブログに投稿することになってしまった。


いま、私が書いているような内容は、2010年のSRC界隈だったら、考えられないような非常識な行為である。
しかし、ChatGPTの登場、AIの進化は、プログラミング能力の意味を変えた。
「技術を隠すことで、自分の利益を最大化する」
そういう時代は終わりつつある。

そもそも、このバッチ処理からして、私が書いたものではなく、ChatGPTが書いたものである。
それを、私が独占することには、何の意味もない。
2024年、「知識の無価値化」が急速に進んでいる。
私は、その情勢に流されて、ブログに書きたいことを書いているに過ぎない。



あとは...
# 変数設定
$env:HOGE="ほげ"
# 文字コードの設定
chcp 65001
について書いておきたい。
私は、これを「おまじない」だと考えている。
よく分からないけど、最初にこう書いておくことで、あらゆるトラブルを未然に防げることが多いのだ。


文字コードに関わるトラブルは、コマンドプロンプトではよく起こる。
それを、たった2行で防げるのなら、いつでも変数の宣言をしておくのが、礼儀作法だろう。

「おはようございます」
「こんにちは」
「こんばんわ」
みたいなものだ。よく分からなくても、やっといた方が利益になるのだ。

おそらくは...
・日本語の文字コードにかかわる技術者
・マイクロソフトのコマンドプロンプトに関わる技術者
ここらへんの人でないと分からないような、深い事情があり、複雑怪奇として言いようのない挙動をするのだと思う。

・日本語
・コマンドプロンプト
この2つは、根本的に相性が悪く、「おまじない」を知っていれば使いこなせるが、
「おまじない」を知らないものはエラーばかり起こる。

これは、ほぼ「呪い」と呼んでも良い。
おそらく、これはバグではなく、人為的な行為なのだろう。それほど、
「コマンドプロンプトは、日本人の一部の人しか、使うことが許されない」
そういった類の、非常に便利だが危険なツールなのだと思う。

2024年の今、SRCシナリオ群からmidファイルの発掘をするときに、基礎の基礎として、コマンドプロンプトが絶対に必要になる。
1979年...もう45年も前のMOS-DOSコマンドプロンプトが、いまだにエース級の活躍をしてしまう。この事実は私を戦慄させる。

「コマンドプロンプトはとっつきにくいソフトであるが、Everythingよりも遥かに重要なソフト」
そう言う人がいたとしても、一面の真実があるのだ。

by axiote | 2024-06-11 19:51 | ├mid音楽 | Comments(0)

RSSリーダーは https://axiote.exblog.jp/atom.xmlで


by axiote
カレンダー
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30