Euclidean Rhythm

Basic paper: The Euclidean Algorithm Generates Traditional Musical Rhythms

Python code

# Making Euclidean Rhythm with Bjorklund's distribution
# by hTaka
import sys

class EuclideanRhythm:
    def getRhythm(self,steps,hit,shift):
        self.result = ""
        if hit > steps:
            raise NameError("Number of hit must less than steps")
        pause = steps - hit
        leftUnit = "X"
        rightUnit = "."
        print "process>{0}|{1} / left:{2} right:{3}".format(("["+leftUnit+"]") * hit , ("["+rightUnit+"]") * pause , hit , pause)
        self.makeEuclidRhythm(hit,pause,leftUnit,rightUnit)
        if abs(shift)%steps != 0:
            print "Result> Steps:{0} hit:{1} shift:{2} [{3}] (before shift)".format(steps,hit,shift,self.result)
            self.shiftRhythm(steps,shift)
        return self.result
    
    def makeEuclidRhythm(self,numL,numR,leftUnit,rightUnit):
        unitBuffer = leftUnit
        if numR==0 or numR == 1:
            self.result = leftUnit * numL+ rightUnit * numR
            return
        if numR > numL:
            m,k = numR,numL
            isRightRemain = True
            leftUnit += (rightUnit * (m // k))
        else:
            m,k = numL,numR
            isRightRemain = False
            leftUnit += rightUnit
        if isRightRemain:
            print "process>{0}|{1}  / left:{2} right:{3} {4} {5}".format(("["+leftUnit+"]") * k, ("["+rightUnit+"]") * (m % k), k , m%k ,"RightUnit Remain with" , "[" + rightUnit + "]")
            self.makeEuclidRhythm(k,m%k,leftUnit,rightUnit)
        else:
            print "process>{0}|{1}  / left:{2} right:{3} {4} {5}".format(("["+leftUnit+"]") * k, ("["+unitBuffer+"]") * (m - k), k, m-k,"RightUnit Replace with Left" , "[" + unitBuffer + "]")
            self.makeEuclidRhythm(k,m-k,leftUnit,unitBuffer)

    def shiftRhythm(self,steps,shift):
        if shift > 0:
            shift = shift % steps
            self.result = "{0}{1}".format(self.result[steps - shift :],self.result[0 : -1 * shift])
        if shift < 0:
            shift = (abs(shift) % steps)
            self.result = "{0}{1}".format(self.result[shift :],self.result[0 : shift])
        return


def main(arg):
    try:
        steps = int(arg[1])
        hit = int(arg[2])
        shift = int(arg[3])
    except:
        print "Args error! usage: python EuclideanRhythms.py <STEPS> <HIT> <SHIFT>"
        print "using hard coded params."
        steps,hit,shift = 16,7,0
    rhythm = EuclideanRhythm()
    print "Result> Steps:{0} hit:{1} shift:{2} [{3}]".format(steps,hit,shift,rhythm.getRhythm(steps,hit,shift))

if __name__ == '__main__':
    main(sys.argv)

Result

process>[X][X][X][X][X][X][X]|[.][.][.][.][.][.][.][.][.] / left:7 right:9
process>[X.][X.][X.][X.][X.][X.][X.]|[.][.]  / left:7 right:2 RightUnit Remain with [.]
process>[X..][X..]|[X.][X.][X.][X.][X.]  / left:2 right:5 RightUnit Replace with Left [X.]
process>[X..X.X.][X..X.X.]|[X.]  / left:2 right:1 RightUnit Remain with [X.]
Result> Steps:16 hit:7 shift:0 [X..X.X.X..X.X.X.]

MODO801

MayaにもMaxにも飽きて最近はこればっかり使ってます。すごく使い心地がいいです。

スペーシングチャートと言うツール(ワークフロー?)がなんだか使いやすそう。ま、僕はキャラクタアニメーションとかしないんですけどね。

SpacingChart_small

あと、Acropora™と言うプロシージャルなボクセルモデラーを見つけました。かなりニッチなソフトですけど、岩とか地形の素を作るには便利かも。

terrain_small


Mac版MonoDevelopの「かな」と「英数」キー

ご無沙汰です!暑いです。

昨年よりUnity3Dの勉強を始めましたが、なかなか思い通りにはかどらず。今日はMacでプログラムに使用しているMonoDevelopの話です。

2014年8月23日追記: keyremap4macbookがkarabinerと改名したあたりから以下の対処法が有効でなくなっています。
コードを打つ前につい「英数」キーを押す癖が有るんですが、なぜか割り当てられているのがスペースです。「かな」キーでもスペースを打ててしまうのですが今回はこの2つのキーを機能しなくするTipsです。

KeyRemap4MacBook」というユーティリティを使用します。任意のキーを別のキーに変更するソフトです。アプリケーションを指定してキーマッピングを変更することも出来るのでこれを使って対処しました。

インストールが終わったら、メニューよりPreferenceウィンドウを開きます。

Preferenceを開く
Preferenceを開く

「Misc&Uninstall」タブより「Open private.xml」ボタンを押し開かれたフォルダに入っている「private.xml」ファイルを開き、

private.xmlを開く
private.xmlを開く

以下を書き込みます。



	
		monodevelop
		com.xamarin.monodevelop
	
	
		Disable kana eisuu key control in monodevelop
		private.appdef.monodevelop
		monodevelop
		__KeyToKey__ KeyCode::JIS_EISUU, KeyCode::VK_NONE
		__KeyToKey__ KeyCode::JIS_KANA, KeyCode::VK_NONE
	

保存したらPreferenceウィンドウへ戻り「Relaod XML」ボタンを押します。リストの一番上に「Disable kana eisuu key control in monodevelop」と言う項目が現れますのでこれにチェックを入れ有効にします。これでMonoDevelopでは「英数」と「かな」キーが機能しなくなります。

リロードと有効化
リロードと有効化

久しぶりの更新ですがちゃんと日本語書けてます?


お知らせ〜 mizuochi & the understanding CDリリース!

understanding_press
普段お仕事でお世話になっている、Mizuochiさん(画像左の方)がCDをリリースされるという事でお知らせ〜。先日ふらっと会社に来られて営業(?)されていかれました。

UNDERSTANDING[Amazon.co.jp]

試聴しないことには何とも…と言う方は明日「FM 千里 三嶋真路のROCK BREAKERS 16:00~17:00」にて取り上げられるらしいです。ListenRadioより[全国のラジオ曲 > FM千里]で視聴できます。詳しくはご本人のブログよりお願いいたします。

1980年代「天王寺のThe Who」と呼ばれ、後のモッズムーブメントの礎となった幻のバンドThe Bongs。
そのフロントマンだったミズオチがシーンに戻って来た。
ブリティッシュビート、フォーク、ロックンロール、、、、。あらゆるエッセンスから大好きだけをチョ イスして、飾り気のない、心からの歌を、ロックを忘れかけたみんなに向けて 「呑めないパブロッカー」がお届けする、mizuochi & the underastandingの ファーストアルバム「UNDERSTANDING」遂にリリース!

「モッズムーブメント」僕にはピンと来ないんですが、40代以上の話なんですか?「呑めないパブロッカー」ってのは確かに、飲みにいった事は無い。(でもよく食べはりまっせ!)

僕もええ歳こいてこんな事できるとええなぁ。