タグ

ブックマーク / propella.hatenablog.com (6)

  • ミニマル音楽機械 - 言語ゲーム

    自動演奏機械の作業記録。 ふと久しぶりに音の出る作品を作る事にしたんだけど、そこに一つ条件を付けました。全ての部品を糸で縫い合わせて、「ネジや釘、ボンドなど他の方法を使わない事」です。他に釘を使わないで組み立てる方法としては、昔から伝わる組子とか木組というパズルみたいな方法もありますが、ちょっと違って紐を主体とした設計にしてみました。紐は動く部品がある機械と相性が良く、昔の帆船や複葉機によく使われています。引っ張る力だけで押す力が全く無い所が面白いので、いっその事全ての部品に使う事にしました。色々分からない事が沢山あったので結局四つほど試作品を作りました。 まず色々な太さの糸と穴の間隔を試してみて、太めの木綿糸と 10 から 8 ミリ程度の穴間隔を使う事にしました。合成糸の方が強いですが、この太さだと滑りやすく伸びやすいので木綿にしました。 次にフレームの設計。簡単なのは写真のように一枚板

    ミニマル音楽機械 - 言語ゲーム
  • ファイルシステムとしての Git - 言語ゲーム

    Git のコマンド体系は全く歴史に学ばず後世に禍根を残す酷いデザインだが、どういうわけか内部構造は大変素晴らしい。特にファイル構造を一旦キーバリュー式データストアに保存するというのは是非参考にしたいアイデアなので調べてみました。 Git 内部データストアの基機能は、ファイル名を使わず中身だけを保存する事です。ファイル名が無くて後からどうやって保存した中身を取り出すかというと、保存時に SHA-1 という文字列が発行されるのでそれを鍵に取り出します。それでは試しにやってみます。まず準備として新しい Git レポジトリを作ります。 $ mkdir test $ cd test $ git init Initialized empty Git repository in /Users/takashi/tmp/test/.git/ blob 次に、適当な文字列を保存します。 $ echo '適当

    ファイルシステムとしての Git - 言語ゲーム
    youz
    youz 2011/01/06
  • cola/flash ワークスペース - 言語ゲーム

    http://languagegame.org/tmp/ws/flash/Repl.html 今までさんざん同じようなプログラムを作って来たけど、懲りずに昨年 C5 で発表した Chaklboard 以来の新たなワークスペースを作りました。今回の言語は lisp です。Flash 上で動作するため、なんと IE でもちゃんと動きます! 使い方は Smalltalk の物と一緒で、式を選択して Do It か Print It をクリックするだけ、なんて直感的なインタフェース!まだ Wiki としての機能はありませんが、サンプルドキュメントがいくつか用意されていて、例えば (jump "Overview.html") を選択して Do It すると別の画面に飛ぶという具合です。下の欄に文書名を入れても飛びます。特に Flash らしい画像を使ったデモが見たければ、Graphics.html

    cola/flash ワークスペース - 言語ゲーム
  • jolt2 が生成する機械語について - 言語ゲーム

    久しぶりに pepsi & coke を触っているので復習がてらつらつら書きます。特にリビジョン 556 の jolt2 について書きます。まず最初に、基礎知識を簡単にまとめます。 idst http://piumarta.com/svn2/idst/trunk/ には pepsi と jolt いう二つの言語が付属します。 pepsi は Smalltalk に似たコンパイル言語で、C 言語へのトランスレータとして実装されています。実行には gcc が必要です。 jolt とは Lisp に似た言語で、実行時に動的にソースから機械語をコンパイルして実行します。jolt の関数は C で書かれた関数と互換性があり、C ライブラリのコールバックにそのまま使えます。jolt は pepsi で実装されていて、 pepsi のライブラリオブジェクトを利用出来ます。 特に、jolt は実行時にプロ

    jolt2 が生成する機械語について - 言語ゲーム
  • SDL でピコピコサウンドを作ろう! - 言語ゲーム

    今更ですが、C 言語って良いですね。バイト列を直接触って絵を描いたり音を出したりすると、まさにタンジブル(笑)な感じがします。今日はファミコンサウンドにチャレンジです。サウンドというと、ややこしい OS とのやり取りが大変ですが、SDL を使うとその辺楽勝です。 やりたい事: 矩形波の音を鳴らす。とりあえずプーっとだけ鳴らします。 最初に矩形波とは何ぞや?という事から考えます。矩形波とは、ON と OFF が交互の並んでいるだけの単純な波形です。例えば、波長が 1 で、プラスマイナス 1 の矩形波を C で書くとこんな感じでしょうか。 double wave(double t) { return t - abs(t) < 0.5 ? 1 : -1; } こういう風に波長と振幅を 1 にしておくと後で波形を変えたいときに楽かもという配慮です。あとはこれをサウンドドライバに送るだけの話。泥臭い

    SDL でピコピコサウンドを作ろう! - 言語ゲーム
  • Haskell で brainfuck - 言語ゲーム

    ふと思い立って Haskell で brainfuck を書いてみた。そんな事やってる人は沢山いると思うので、一つ制限をつけた。モナドは main 関数の中だけしか使わない。つまり、後は全部副作用なしでやる。 それから、大体の方針を立てた。brainfuck の文法はとても単純なので、もしかしてパーサすらいらないんじゃ無いかと思ったのだけど、ループがある関係上やっぱり最初に構文木を作ったほうがやりやすい。という事でオーソドックスに、ソースコード -> 構文木 -> 実行、と言う順序で進める事にした。 -- Parser data Command = Inc | Dec | Next | Prev | Put | Get | While [Command] deriving (Show, Eq) type Program = [Command] parse :: String -> Prog

    Haskell で brainfuck - 言語ゲーム
  • 1