From be0f08329bea74543491ee397c34b505fcdb3a5f Mon Sep 17 00:00:00 2001 From: HarakaraSite Date: Sat, 28 Feb 2026 14:09:08 +0900 Subject: [PATCH] 20260228 --- .gitignore | 2 +- explained/tech_house_groove.md | 35 --------------- script/fix_and_explain_strudel.sh | 74 ------------------------------- script/refactor_strudel.sh | 69 ---------------------------- 4 files changed, 1 insertion(+), 179 deletions(-) delete mode 100644 explained/tech_house_groove.md delete mode 100755 script/fix_and_explain_strudel.sh delete mode 100755 script/refactor_strudel.sh diff --git a/.gitignore b/.gitignore index 58c25a8..e43b0f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -.vscode/sftp.json +.DS_Store diff --git a/explained/tech_house_groove.md b/explained/tech_house_groove.md deleted file mode 100644 index 40f9000..0000000 --- a/explained/tech_house_groove.md +++ /dev/null @@ -1,35 +0,0 @@ -Genre: テクノ / ハウス (Tech House) -Description: このStrudelコードは、ドラムパターン、ベースライン、そしてシンセのメロディを組み合わせたテックハウス風のトラックを生成します。Perlinノイズによるフィルターとゲインのモジュレーションが、サウンドに動きと深さをもたらしています。 - -```javascript -setcps(136/60/4); // BPM 136に合わせてサイクルレートを設定 - -// メロディックなシンセパターン -// supersawとPerlinノイズによるLFOでフィルターを動かし、音に揺らぎを与えています。 -$:note("[- c2 - c2 - [c2|c5] - c2]") // ノートパターンを定義。ランダムなオクターブを挿入。 - .sound("supersaw") // 厚みのあるsupersaw波形を使用 - .lpf(perlin.range(400,800).slow(2)) // Perlinノイズでローパスフィルターの周波数をモジュレーション - .lpq("[0|10]") // ローパスフィルターのレゾナンスをパターンで切り替え - .transpose("[0|0|1]") // ランダムに半音上げることでバリエーションを追加 - .gain(perlin.range(0.4,0.6).slow(2)); // Perlinノイズでゲインをモジュレーションし、音量に動きを与える - -// ドラムパターン -// wchooseCyclesを使って、ドラムサウンドをランダムに選択・重み付けしています。 -// tr606ドラムマシンを使用し、ディストーションとフィルターでキャラクターを付与。 -let snd = wchooseCycles(["bd",3], ["hh?",7], ["cr",1]); // バスドラム、ハイハット、クラッシュシンバルを重み付けして選択 -let snd2 = wchooseCycles(["ht",2], ["lt",1], ["sd",1]); // タムやスネアを重み付けして選択 -$:stack( // 複数のドラムパターンを重ねて同時に再生 - - sound(snd).fast(8).decay(0.5), // ドラムサウンド1を速く再生し、短いディケイを設定 - sound(snd2).fast(8) // ドラムサウンド2を速く再生 - .lpf("<900 800 700>") // ローパスフィルターの周波数をパターンで変化 - .lpq("0 20 30") // ローパスフィルターのレゾナンスをパターンで変化 - .degradeBy(0.5) // サウンドを少し劣化させて粗さを加える - .gain(perlin.range(0.4,0.9).slow(2)) // Perlinノイズでゲインをモジュレーション -).bank("tr606"); // Roland TR-606ドラムマシンサウンドバンクを使用 - -// ハイハットの構造的なパターン -// binaryNとirandを使って、複雑でランダムなハイハットの構造パターンを生成します。 -$:sound("hh") // ハイハットサウンド - .struct(binaryN(irand(15),4)); // ランダムなバイナリ構造でパターンを生成 -``` diff --git a/script/fix_and_explain_strudel.sh b/script/fix_and_explain_strudel.sh deleted file mode 100755 index ded650e..0000000 --- a/script/fix_and_explain_strudel.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash - -# パイプの途中でエラーが発生した場合も終了ステータスに反映させる -set -o pipefail - -# スクリプトの場所 (scripts/) からプロジェクトルート (notebook/) を動的に取得 -BASE_DIR=$(cd "$(dirname "$0")/.." && pwd) -OUTPUT_DIR="$BASE_DIR/explained" -SKILL_FILE="$BASE_DIR/.gemini/skills/strudel_fix_and_explain.md" -GEMINI_REF="$BASE_DIR/gemini.md" -STRUDEL_REF="$BASE_DIR/.gemini/reference.md" - -# 出力先フォルダの作成 -if [ ! -f "$SKILL_FILE" ]; then - echo "Error: Skill file not found at $SKILL_FILE" - exit 1 -fi - -mkdir -p "$OUTPUT_DIR" - -# ファイルが見つからない場合にワイルドカードをそのまま展開しない設定 -shopt -s nullglob - -# 引数がある場合はそれを使用し、ない場合は strudel/ フォルダの全mdファイルを対象にする -if [ $# -gt 0 ]; then - files=("$@") -else - files=("$BASE_DIR/strudel"/*.md) -fi - -echo "Strudel Fix & Explain Skill started..." - -for file in "${files[@]}"; do - # 除外設定 - [ -f "$file" ] || continue - - filename=$(basename "$file") - # 特定のファイルやディレクトリを除外 - [[ "$filename" =~ ^(Strudel Making Sound|Strudel Study)\.md$ ]] && continue - - # 絶対パスに変換して除外ディレクトリに含まれていないかチェック - abs_path=$(realpath "$file") - [[ "$abs_path" =~ /($OUTPUT_DIR|refactoring|script)/ ]] && continue - - echo "Analyzing and fixing $filename..." - - # 一時ファイルに出力 - tmp_file="$OUTPUT_DIR/tmp_$filename" - - # ファイルを引数として直接渡す(STRUDEL_REFも必要ならここに追加) - if ! gemini "$GEMINI_REF" "$STRUDEL_REF" "$SKILL_FILE" "$file" > "$tmp_file"; then - echo "Error: Gemini CLI failed to process $filename" - rm -f "$tmp_file" - continue - fi - - # ファイルが空でないか確認 - if [ -s "$tmp_file" ]; then - suggested_name=$(grep -m 1 "^FILENAME:" "$tmp_file" | sed 's/^FILENAME: *//g' | tr -d '\r' | xargs) - - if [ -n "$suggested_name" ]; then - # FILENAME行を除去して保存 - sed '/^FILENAME:/d' "$tmp_file" > "$OUTPUT_DIR/$suggested_name" - rm "$tmp_file" - echo "Done: $OUTPUT_DIR/$suggested_name" - else - mv "$tmp_file" "$OUTPUT_DIR/$filename" - echo "Done: $filename (No rename)" - fi - else - rm -f "$tmp_file" - echo "Error processing $filename" - fi -done \ No newline at end of file diff --git a/script/refactor_strudel.sh b/script/refactor_strudel.sh deleted file mode 100755 index 6e652b4..0000000 --- a/script/refactor_strudel.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash - -# パイプの途中でエラーが発生した場合も終了ステータスに反映させる -set -o pipefail - -# スクリプトの場所 (scripts/) からプロジェクトルート (notebook/) を動的に取得 -BASE_DIR=$(cd "$(dirname "$0")/.." && pwd) -REFACTOR_DIR="$BASE_DIR/refactoring" -SKILL_FILE="$BASE_DIR/.gemini/skills/strudel_refactor.md" -GEMINI_REF="$BASE_DIR/gemini.md" -STRUDEL_REF="$BASE_DIR/.gemini/reference.md" - -# 出力先フォルダの作成 -if [ ! -f "$SKILL_FILE" ]; then - echo "Error: Skill file not found at $SKILL_FILE" - exit 1 -fi - -mkdir -p "$REFACTOR_DIR" - -# ファイルが見つからない場合にワイルドカードをそのまま展開しない設定 -shopt -s nullglob - -# 引数がある場合はそれを使用し、ない場合は strudel/ フォルダの全mdファイルを対象にする -if [ $# -gt 0 ]; then - files=("$@") -else - files=("$BASE_DIR/strudel"/*.md) -fi - -echo "Strudel Code Analysis & Refactoring Skill started..." - -for file in "${files[@]}"; do - # 除外設定 - [ -f "$file" ] || continue - - filename=$(basename "$file") - # 特定のファイルやディレクトリを除外 - [[ "$filename" =~ ^(Strudel Making Sound|Strudel Study)\.md$ ]] && continue - [[ "$file" =~ /($REFACTOR_DIR|explained|script)/ ]] && continue - - echo "Processing $filename..." - - # 知識ベースとスキルファイルを組み合わせて実行 - tmp_file="$REFACTOR_DIR/tmp_$filename" - - ( [ -f "$GEMINI_REF" ] && cat "$GEMINI_REF"; \ - [ -f "$STRUDEL_REF" ] && cat "$STRUDEL_REF"; \ - echo ""; cat "$SKILL_FILE"; \ - echo ""; cat "$file" ) | gemini > "$tmp_file" - - if [ $? -eq 0 ]; then - # 最初の数行から FILENAME: タグを検索(より柔軟な抽出) - suggested_name=$(grep -m 1 "^FILENAME:" "$tmp_file" | sed 's/^FILENAME: *//g' | tr -d '\r') - - if [ -n "$suggested_name" ]; then - # FILENAME行を除去して保存 (最初の1行目にあると仮定しつつ、sedで安全に削除) - sed '/^FILENAME:/d' "$tmp_file" > "$REFACTOR_DIR/$suggested_name" - rm "$tmp_file" - echo "Successfully refactored and renamed to: $suggested_name" - else - mv "$tmp_file" "$REFACTOR_DIR/$filename" - echo "Successfully refactored: $filename (Rename tag not found)" - fi - else - rm -f "$tmp_file" - echo "Error processing $filename" - fi -done \ No newline at end of file