Hatena::Groupmml

spacecadetの日記分店

2007-11-16

効率アップの方法メモ

| 23:09

繰り返しなどのプログラミングを標準マクロからpythonにおきかえる試みを本家のブログで始めたばかりです。

ここにもアイディアメモを貼ります。

ベースパターンを生成する関数

def pat_bass1(octave,tone):
	pat='o%dX<X16X16>X<X16X16>X<X16X16>X<X16X16' % octave
	return re.sub('X',tone,pat)

この関数は、指定したオクターブ(変数octave)を起点に、ベースの音(tone)をある一定のリズムで刻むパターンを作って返すものです。

プログラム

#coding:shift_jis
import re,os,string

song =[]
def main():
	for x in range(8):
		song.append('t128')
	play(['l8v7q6 @w10 @3 o3 @E1,0,40,30,30','r'])
	play([pat_bass1(3,'f') + pat_bass1(3,'d-') + pat_bass1(3,'e-') + pat_bass1(3,'c')])

#ベース生成
def pat_bass1(octave,tone):
	pat='o%dX<X16X16>X<X16X16>X<X16X16>X<X16X16' % octave
	return re.sub('X',tone,pat)	

#基本ルーチン
def  play(track):
	for ch,seq in enumerate(track):
		song[ch] +=seq + '\n'
def cmd_play():
	for i in song:
		if i <> '':
			print i + ';'
if __name__ == '__main__':
	main()
	cmd_play()

できる音

t128l8v7q6 @w10 @3 o3 @E1,0,40,30,30
o3f<f16f16>f<f16f16>f<f16f16>f<f16f16o3d-<d-16d-16>d-<d-16d-16>d-<d-16d-16>d-<d-16d-16o3e-<e-16e-16>e-<e-16e-16>e-<e-16e-16>e-<e-16e-16o3c<c16c16>c<c16c16>c<c16c16>c<c16c16
;