日直地獄

小学校では事件が起きる

六角形と歯車で動作するメカニカルっぽいシンセサイザー「HexBeats」を itch.io で公開しました


メインで作っていたゲームの開発が一段落したので息抜きに作っていたアプリがまあ触れる程度の完成度になったのでアルファ版として itch.io で公開した。基本的なアイデアは、Hexの中に歯車が入っていて、歯車が動力を伝え、その動力で音を鳴らす、というメカニカルなシンセサイザーをイメージしたもの。
本当はこのアイデアを使ってパズルゲームなどゲームにできないか考えてたんだけど、ここからゲームにするいいアイデアが全く浮かばなかったので一旦ただのシンセサイザーにして公開した。ブラウザでも動くのでもしよければ遊んでみてください(ブラウザ版はやや動きが怪しいけど…)。

日本語版解説

HexBeatsは、ギアが入った六角形のセルを組み合わせて独自の楽器を作り上げるシンセサイザーです。 ギアを回し、ビートを刻み、シンセサイザーを鳴らして、あなただけのグルーヴを見つけましょう。

概要

六角形の盤面上に、様々な機能を持つ「Hex(ヘックス)」を配置します。 中心にある「Source」から供給される動力を、ギアやトランスミッションを使って伝達し、動力を使って音を奏でます。単純なビートから、ポリリズム、複雑に変化するメロディまで。 視覚的にも楽しめる音楽体験を提供します。

主な機能

  • Basic Hex
    • 動力をそのまま伝える基本的なギア

動力を伝達する方向を指定できる

  • Transmission Hex
    • ギア比を変更し、伝達する回転速度(BPM)を変更します

動力を受ける方向の指定とギア比の指定ができる

  • Switcher Hex
    • 入力を受け取り、設定した角度ごとに出力先を切り替えられるため、展開のあるパターンを作成できます

動力の入力方向と、出力方向の順番を構成できる

  • Kick Hex
    • 回転する円弧が方向マーカーを叩くことでSoundHexをトリガーします
    • Division Count: 円を分割する数(1〜16)を変更し、複雑なポリリズムを生成可能
    • 複数の出力方向を設定することができます

円の分割数とそれぞれの音のON/OFF、音が継続する割合などを指定できる

  • Sound Hex
    • Kick Hex からトリガーを受け取り設定した音を出します
    • 波形は Sine, Square, Saw, Noise, Triangle, Pulse から選択できます
    • スケール設定: メジャー、マイナーなど、音楽的なスケールに沿った設定ができます

音色を指定できる。attackやreleaseなどの調整も一応できる

  • パターンの共有
    • 作成した配置はテキストデータとしてエクスポート/インポートが可能です
    • 良いパターンができたらitch.io のコミュニティ欄に投稿してくれると嬉しいです

操作方法

  • 左クリック: Hexの配置 / 選択
  • 右クリック: Hexの削除
  • マウスホイール: ズームイン / ズームアウト
  • マウスホイール押し込みドラッグ: 画面の移動
  • スペースキー: シミュレーションの再生 / 停止

Antigravityで子供の学習+生活習慣アプリを作ってみた

これまでAIを使った開発はエージェントでしか行ったことがなかったので、そろそろAntigravityくらいは使ったほうが良かろう思って土日でちょこちょこ子供の学習+生活習慣アプリケーションを作っていた。

時間をかければ作れるだろうがこんなに早く作れないし、エージェントで開発と比べて素早く開発できるんですね…という非常に素朴な感想を持った。

Firebase

デプロイ先はFirebaseを使った。子どもたちはGoogleアカウントを持っているので認証も楽だし、家族で利用する程度であればDBも含めて完全に無料で運用できるのが良い。NoSQLなのも仕様がコロコロ変わる場面ではやりやすい感じはある。

データ周り

漢字のマスターデータの作成。学年別漢字配当表は文科省が公開しているのでこれをとってくるとして、
別表 学年別漢字配当表:文部科学省
その読みや用例などを手で集めようと思ったらそれなりに時間がかかってしまうが、指示すればちゃんと集めてくれる。ここは大幅な時短になる。あとこういう作業はやる気を大幅に減損させるので恩恵は非常に大きい。

漢字のヒント

漢字の練習では、思い出せない漢字にヒントを出したい+ヒントを使った漢字はあとでまとめて復習できるようにすると身につくだろうと思ったのですが、ヒントの出し方が難しい。
そこで、一画ずつヒントを出せると思い出すきっかけとして良いし、復習リストのシグナルとしても使えて良さそうと思って、さてどう実装するかと思い出したのが以下のエントリ。
motemen.hatenablog.com
このエントリの情報を渡してこのデータが使えそうだよと伝えるとAIにより一発で実装されてすごかった。

Web以外の技術ではどうか?

既存のGodotEngineのコードでも試したところ、やはり実行環境がないのが痛いのかやや精度が落ちてしまう事がわかった。それでも概ね動いてはいるし、複雑なコンテクストを渡したり、更新された全体方針を書き込んだりするのが非常に楽なのはベンリだな〜と思った。GeminiのGemでもできないことはないが、勝手に更新してくれたりしないしな〜。

Godotでレベル(ステージ)とか敵キャラとか同じ形式でたくさん作るやつはシーンの継承を使う

qiita.com
の2日目の記事です。飛び込みなので軽量なやつ、初心者向きのやつ、昔の自分が困ったやつを思い出して書きます。



Godot Docsはなかなか読み応えがあり、大抵のことは読んでいればわかるが、あれこういう場合どうするんだっけと思うことも多い。

チュートリアルに沿い「最初の2Dゲーム」を完成させ、じゃあ自分も作ってみるかとなったときに、どうやってシーンや敵キャラクターを増やすといいのか?ということに気づきはたと困ってしまう。新たにシーンを作成し、そこに同じノードツリー構造を持たせるのか?大変すぎないか?となる。

こういう場合は、シーンの継承を使うといい。

シーンの継承を使うと、ベースのシーンに変更が加えられたら継承したシーンにも自動でその変更が入る。例えば開発途中で敵キャラにAnimationPlayer入れて演出を加えたくなったときはベースのシーンに変更を加えたら良い。すでに作成した敵キャラのシーンにノードを追加して回らなくても良くなる。

カスタムクラスについては、ドキュメントのGDScriptの章のクラスの項に書いてあるのだが、シーンの継承についてドキュメントには書いてなかった(と思う、書いてたらすいません…)。基本的にシーンの継承とカスタムクラスは同時に使うと幸せになるはずなので、初心者の方は知っておくと良いと思う。

最近はTBSラジオみうら五郎を楽しみにしている。大はしゃぎもせずに好き勝手に裏取りもせず(こっちは居酒屋談義ですら曖昧な記憶はスマホで裏取りしてしまうというのに…)二人であっちこっちに話を展開していくのが面白い。
www.youtube.com
この二人といえば2004年ごろにインターネットラジオでやっていた仮性フォーク(DVDではDTFという名前)が思い出される。ラジオの中でも仮性フォークの知識が含まれることがあるので、前提知識として聞いておくとより楽しい。まあ、仮性フォーク自体が面白いのでもう20年前のラジオだけど前提知識関係なく聞いてもいいと思う。

DTF[童貞期] [DVD]

DTF[童貞期] [DVD]

  • みうらじゅん
Amazon
仮性フォークは大学に入学し上京し初めての夏休み直前に髄膜炎になり入院したときに、入院生活の楽しみにしていた記憶があり思い入れがある。と思ったんだけど、でもノートパソコンとか持ってなかったはずなのでどうやって病室で聞いていたんだろう。偽記憶だろうか…。

Google NestHubで一番便利に使っていた自作のこの機能が動作しなくなってしまった。プログラム通りアルバムには予定の画像が投稿されるのだが、NestHubのフォトフレーム機能側で、このスクリーンショットが除外されてしまう、ということがわかった。最悪すぎる。
何がトリガーとなっているのかはまだ調査していない。例えば予定の画像に写真を合成するなどで対応可能なのか、Exifがあればいいのかなど一切不明。
airreader.hatenablog.com