Tue, 22 Jul 2008
さようならblosxom、こんにちはpyblosxom
…数日前からこっそりと、pyblosxomに移行しております。
テンプレートやら設定ファイル、ディレクトリ名もcgi本体も全てpyblosxomと名のつくものはblosxomへ変更しました。絶対何か問題が出ると思っていましたが、特に何もないようです。…柔軟なもんやなぁ。
移行の決め手となったのは…やっぱり、こっちのほうが設計が新しいおかげで色々便利になっているのと、pythonのほうが覚えやすいから、でしょうか。覚えやすいというのは違うか、pythonで書かれたpyblosxomのコードが、初心者なりにとても読みやすかったから、かな。他の、例えばrubyで書かれたblosxonomyを選ばなかったのは、単純に動かせなかったから…それにblosxonomyに関する日本語の情報って、まったくみつけられなかったので。…pyblosxomに関する情報だって、ほとんどないけど。
…いずれにせよ、blosxomの系統以外は考えられませんでした。blosxomは、とても楽しいツールだと思います。pyblosxomにも、その特徴は受け継がれています。
Mon, 14 Jul 2008
ヴィオロンチェロ・ダ・スパッラという楽器そのに
Violoncello da spallaは、バッハ・コレギウム・ジャパンのカンタータ全集36巻から登場しているそうです。今回は39巻を買ってきました。でわさっそく…
バッハ カンタータ全集#39 バッハ・コレギウム・ジャパン |
編成表を見ると、弦パートは上から3x3x2x1x1と、極小の構成。Basso Continuoとは別にVioloncello piccoloのパートがあり、そこにはVioloncello da spallaの奏者として、この楽器の復元者であるDmitry Badiarov氏の名が載っている。Violoncello piccoloのパートが載っていない曲もあり、むりくりVioloncello da spallaをおしこんだわけでもないみたい。通奏低音にはVioloncello(この場合は鈴木秀美氏が弾いているので縦型チェロ)、Violone、bassono、Cembalo、Organoの各楽器が入っている。トロンボーンやオーボエ、リコーダー、それに各パート三名づつとはいえ合唱が入るのであるから、バスをチェロとベース一人づつで支えられるはずもない。と、ここまでは良いのだけれど…
Violoncello da spallaは、向って左側から聴こえてくる。以前に聴いた、寺神戸亮氏のディスクにおいて解説されていたように、Violoncello da spallaはヴァイオリン奏者が持ち替えで弾くものとして考えられている(ヴァイオリンと同じく一指一音の運指なのであるから、当然そう考えられる)のでそれは良いのだけれど、この楽器の出番は各曲に一度あるきりなのである。バスパートは普通にチェロとかが弾き、やや技巧的なオブリガートを弾く場合にのみ、持ち替えが行なわれる。…弾かないでいる間はずっとtacetなの?ヴァイオリンを弾いているの?解説には何も触れられていない。不親切じゃのぅ。バッハの曲では、ブランデンブルク協奏曲第一番で、ヴァイオリンのトップ奏者がViolino piccolo(ヴァイオリンの三度上になる、ちょっと小さい楽器)に持ち替える場面があるけれど、そんな感じなのかな。
…演奏自体は、普通に良い演奏だとしか…こういう場合は、映像付きじゃないと面白みがないよねぇ。でもこの演奏を聴きながら、チェロの演奏技術の発達について色々考えることがありました。例えば、ハイドンの初期の弦楽四重奏曲において、チェロとヴィオラが分化していないケースがあります。まとめてバス声部だよ、みたいな。バス声部からヴィオラが分れチェロが分れ、やっと四声部が対等となるのは、かなり後になってからです。ひるがえって、バロック時代の合奏協奏曲において、チェロが独奏楽器として活躍する場面というのも多々あります(ヴィヴァルディの四季等を思い出してください)。
こういった曲のチェロ独奏のパートはVioloncello da spallaによって弾かれることも多かったのかな、とか想像すると、面白いです。バスとして合奏を支えるには力不足でも、独奏楽器としては不足どころか。トップ横のヴァイオリン奏者の足元にはVioloncello da spallaが立て掛けてあって、出番になるとやおらスパッラをエイとばかりに肩から下げて、ヴァイオリンを膝に置く暇もあらばこそ、弓は?弓は少し重いのに持ち替えないと楽器を鳴らせないのでは…うーん、ちょっとせわしない。でも楽しそう。
Tue, 08 Jul 2008
はじめてのpyblosxomプラグイン、swatchbeatそのさん
ローカル時刻で表わされているエントリの更新時間を、協定世界時へ変換、さらにビール標準時へ変換。これも、もっと良い方法があると思うんだ…
import time, datetime
def get_beat(entry):
if not entry:
return ""
local_time_tuple = entry['timetuple']
year = int(local_time_tuple[0])
month = int(local_time_tuple[1])
day = int(local_time_tuple[2])
hour = int(local_time_tuple[3])
minute = int(local_time_tuple[4])
sec = int(local_time_tuple[5])
ptime = time.mktime((year,month,day,hour,minute,sec,0,0,-1))
gtime = time.gmtime(ptime)
beat_tmp_hour = int(time.strftime('%H', gtime)) + 1
if beat_tmp_hour == 24:
beat_tmp_hour = 0
beat_tmp_hour = beat_tmp_hour * 60 * 60
beat_tmp_min = int(time.strftime('%M', gtime)) * 60
beat_tmp_sec = int(time.strftime('%S', gtime))
# bm_time_delta = datetime.timedelta(hours=1)
# bmtime = gtime + bm_time_delta
# bm_time_tuple = datetime.datetime.fromtimestamp(gtime)
#
# beat_tmp_hour = int(bm_time_tuple[3]) * 60 * 60
# beat_tmp_min = int(bm_time_tuple[4]) * 60
# beat_tmp_sec = int(bm_time_tuple[5])
beat_tmp = int((beat_tmp_hour + beat_tmp_min + beat_tmp_sec) / 86.4)
beat = "@" + str(beat_tmp)
return beat
def cb_story(args):
entry = args['entry']
entry["beat"] = get_beat(entry)
…ともかく、ビール(スウォッチ社本社のあるエリア)標準時を求める部分は、もっとスマートなやりかたが絶対にあるはず。なお、コメントアウトしてある部分は、上手く動きませんでした。
Sun, 06 Jul 2008
はじめてのpyblosxomプラグイン、swatchbeatそのに
…欲しいものは、最初からタプルの中に、望んだ形式で入っているのが分ったんだよ、だよ。
import time
def get_beat(entry):
if not entry:
return ""
local_time_tuple = entry['timetuple']
beat_tmp_hour = int(local_time_tuple[3])
if beat_tmp_hour == 24:
beat_tmp_hour = 0
beat_tmp_hour = beat_tmp_hour * 60 * 60
beat_tmp_min = int(local_time_tuple[4]) * 60
beat_tmp_sec = int(local_time_tuple[5])
beat_tmp = int((beat_tmp_hour + beat_tmp_min + beat_tmp_sec) / 86.4)
beat = "#" + str(beat_tmp)
return beat
def cb_story(args):
entry = args['entry']
entry["beat"] = get_beat(entry)
これで、少しマシな感じに。
はじめてのpyblosxomプラグイン、swatchbeat
このプラグインは、エントリの更新日付けをswatchbeatの形式で表示します。…何か、思っていたのとは違う出来上がりになってしまったのですが…
import time
def get_beat(entry):
if not entry:
return ""
local_time_tuple = entry['timetuple']
# local_time_tuple = int(local_time_tuple) + 32400
# local_time_tuple = str(local_time_tuple)
beat_tmp_hour = int(time.strftime('%H' , local_time_tuple))
if beat_tmp_hour == 24:
beat_tmp_hour = 0
beat_tmp_hour = beat_tmp_hour * 60 * 60
beat_tmp_min = int(time.strftime('%M' , local_time_tuple))
beat_tmp_min = beat_tmp_min * 60
beat_tmp_sec = int(time.strftime('%S' , local_time_tuple))
beat_tmp = int((beat_tmp_hour + beat_tmp_min + beat_tmp_sec) / 86.4)
#ok
beat ="#" + str(beat_tmp)
return beat
#ng
# gmtime_tuple = entry['gmtimetuple']
# beat_tmp = time.strftime('%H' , gmtime_tuple)
def cb_story(args):
entry = args['entry']
entry["beat"] = get_beat(entry)
何か、何か…すごく迂遠なことをしているというか、もっとすぱっと書けそうな気がしてならないというか。それにこれだと、ローカルな日付けでしか情報が取れないんだけど…でも何といっても一番の問題は、local_time_tuple = entry['timetuple']
で何をしているか、どんなデータがこの中に入っているか分っていないこと(他所様のプラグイン、w3cdate.pyからのコピペであるため)。まだダメだなぁ。