2012年4月19日 (木)

ドレロ

 オールドタイム&ブルーグラスで使われる楽器として、ドレロというのを紹介した記事を読んだ記憶があります。脈絡からするとドブロのことだった記憶があるのですが…。

 このドレロという言葉、他に聞いたことが無かったので、その頃は、ちょっとした謎だったのでした。

 で、なんとなく出典がこれではないかと、思っているのが、ハリー&ジニー・ウェストのレコードのライナー・ノーツ。

 レコードは、FOLKWAYS FA2352「Songs of HARRY and JEANNIE WEST」

 このレコードの中ではアーティ・ローズという方がすべての曲でドブロを弾いています。FOLKWAYS のいつもの通りに丁寧なブックレットが入っています。このなかで、ジニーさんが解説を書いているのですが、そこで、盛んに Dolero という言葉を使っています。
 ドレロというのが固有名詞かとも思ったのですが、ドレロをポピュラーにしたのはピート・カービーだと書いているので、やはりドブロのことを指しているらしい。
 レコードのジャケットに楽器が見えますが、ドブロ社のドブロのようで、ヘッドストックのマークもどうもそれらしいです。(ミミックならマークも似ているのでしょうけど)

 さてさて、なぜ、ジニーさんは、ドブロのことをドレロと書いたのか?これが謎です。
 ドブロというのはメーカー名で、ギターをマーチンと呼ぶようなものなので、当時は一般的ではなかった?のかも。 ドブロを言い換えるなら、リゾネータ・ギターが普通だと思うけど。

 それとも、Dolero と書いたのは単にお茶目だったのかも。

| | コメント (0)

2012年4月11日 (水)

HPをアップデートしました

アルゴ算法堂のホームページ→お楽しみプログラム の共通ライブラリとユーティリティをアップデートしました。

 ライブラリの方は、今回は殆ど変更が無く、TSEXPR の関数数個追加、ARGREPでブロックをTSEXPRに渡す機能、同様にQSSCRIPTでブロックをTSEXPRに渡す機能が追加されました。

 ユーティリティの方では、Extra.exe を追加しました。SEDを踏襲しながら、TSEXPRを組み込むことで少し現代的?になっています。まだ暫定版ですが、使えると思います。
 SEDのスクリプトを置き換えて(といってもほとんど、正規検索の違いの部分ですが)色々試しましたが、SEDって、ちょっと込み入るとわかりにくくなりますね。

 コマンドは結構整理しました。r / w のファイルコマンドは廃止。r はTSEXPRのFILE()関数をそのまま使えるので不要。w も処理可能だし、たぶん、一番大きな用途は出力の分類だろうから、巨大なファイル以外は、連想配列に入れて置いて、最後に出力すればいいだろうという判断です。

 パターンスペースとホールドスペースを操作するコマンドは、そのまま、残しました。が、TSEXPRの変数が使えるのでホールドスペースは不要かも。
 TSEXPRを評価して条件としたり、両スペースにセットしたり(e Eコマンド)など、随所で使えます。これで、アクロバットをしなくてもそれなりに書けます。

 もう一つのポイントは、条件分岐で使用するステータス。これを表に出して、条件節で使えること、設定を自由にできること、スタックへの退避回復ができること。これでスパゲッティをある程度、避けることができます。

 sコマンドのオプションで置換部分だけを戻せるようにしたのも小さい機能追加ですが、実用上は大きかったです。

 思った以上に使い勝手が良かったので、実用でしばらく運転してみようと思っています。

| | コメント (0)

2012年4月 8日 (日)

関数定義もどき

 またユーティリティの話ですが。

 TSEXPRはちょこちょこ書くための式なので、関数定義とかの言語的な機能はありません。ですが、テキストインタプリタなので、当然ながら、文字列を評価実行できます。いわゆる EVALですね。
 通常はコンテキストを切り替えた小さな世界で文字列を評価するのですが、エイヤっとそのまま、現在のコンテキストでも実行できて、この場合は実行速度は全く変わりません。(式の本体だって、ただの文字列なのだから)

 とりあえず、文字列式の前に「*」を書けば、文字列式を現在のコンテキストで評価実行するようになっています。たまたま、変数(a)に式を書いておけば、*a と書くと aに定義された関数を実行したつもりになれます。

 ここまで来ると、引数をローカルに渡したくなるのは人情。そこで、*a(5,'4')とか書けば、この中で参照できるようにしました。呼び出された側では、Funargc という変数で引数の個数がわかり、funarg[n]で引数を参照できます。まぁ、ちょっと、汚いけど。簡単に実装できるので良しとしました。

 振り返ると、なんとなく、perl の仕組みに似てきた。もともとが小さいシステムを継はぎして互換性をとりながら拡張していくと、発想が似てしまうのかもしれません。

| | コメント (0)

関数のパイプ接続?構文

 ユーティリティねたで恐縮ですが…。

 TSEXPR で書いていると、関数のネストが深くなります。これは、もともと、TSEXPRが単純な式処理を出発点にしているからだと思います。

 例えば、SIN( COS( TAN(X) ) ) のようになることが多い。実際はもっと複雑な式になることが多いです。

 これでは、たまらんと、次のように開きます。

{ A:=TAN(X); A:=COS(A); SIN(A); }

  {....} はこの中で順番に評価して最後の値を返す構造。こうするとわかりやすいから、多少の速度の低下は目をつぶってこう書いていました。Cとかで書いても同じような話ですね。ここは。
 この書き方で気に入らないのは、Aに毎回代入するという部分。どうみても、くどいです。

 で、次の構文を考えました。

[ TAN(X) | COS(SHELF) | SIN(SHELF) ]

 SHELFはたまたま、システム変数で余っていたので流用しました。直前の式の結果を次の式が利用するときはSHELFを使える。最後の式の値が全体の値になる。これだと、結構、綺麗に書けるし、少しはわかりやすくなります。
SHELFは [ ] の中でローカルに使えるように、少しだけシステム側が面倒を見ています。

| | コメント (0)

SED風 その2

 SED風に作ったユーティリティですが、ちょっと、使いやすくしたい。

 機能的なポイントとしては自前の正規検索を組み込んで、さらに、ユーティリティ標準のTSEXPRという式計算も組み込む。
 書きやすさという点では、SEDのスクリプトはやたら改行が多くなるので、できるだけ、コマンドは、ずらずらと書けるようにしました。実際、新しいSEDを触ると「;」が大抵のところで、コマンド区切りとして使えるようになっているんですね。
 SEDに敬意を表して、コマンドは踏襲しています。パターンスペースとホールドスペースという二つのバッファによる方法も一応踏襲。ホールドスペースに関しては、実際は、TSEXPR側の変数が自由に使えるのでなくても良いのですが…。

 できるだけ、似たようにということで、アクションは[アドレス]+コマンドという構造も踏襲。で、このアドレスを検討していると、なかなか面白い。

 もともと、このアドレス、開始 , 終了という範囲指定ができるのですが、これが、スイッチ関数の動作をします。
 スイッチがオフのときは開始条件をスキャンし、これが真になるとスイッチがオン。スイッチがオンのときは終了条件をスキャンし、これがオンになるとスイッチがオフ。境界条件の問題は色々あるのですが、美しい設計です。

 ところが、開始 , 終了が行番号のときはうまく行かない。行番号が一致したらオンという条件を両側に置けばよいのですが、残念ながらSEDは条件の複合ができるので変なことになります。

  5,10 { 3,15 XXX}

 これだと、たぶん、期待するのは 3-10行がコマンドの実行対象だけど、内側の条件では、3が来ないので、永遠に起動しない。
 ということで、簡単に解消するには、最初に指定値を超えたときだけ、オンにするという方法。これでも、変なことが起きます。本家の方のこの手の動作を調べるとなかなか味わい深いです。
 直感的なところを何とかするために、両端が数値の場合だけは、とりあえず、特別扱いで本当に行の範囲を調べるようにしました。

| | コメント (0)

SED風 その1

 バッチプロセスのデータ処理をユーティリティでやってきたのですが、結構、SEDに惹かれるのは、何だろうと考えてみると、やはり、置換条件を複数書けることかも、と思いました。

 正規検索を実装しているユーティリティの主力は、lextra と cextra というのを持っているのですが、前者が行単位の処理、後者が文字列対応の処理です。行抽出、文字列抽出が本来の機能。(旧版は lxtra と cxtra でした)。
 これに結構強力な置換機能が付いているので、通常はこれで、十分。perl のコマンドで言えば、lextra が s/xxx/yyy/ ができて、cextra が s/xxx/yyy/g ができるといった風。

 検索だけについて言えば、両方とも簡単な複合条件が書けるのでいいのですが、置換では、置換文字列が1種類しか指定できないので、複数条件の置換ができない。いつも、パイプラインに条件ごとに書いてつなげて使っています。

 もちろん、プログラムそのものを書き換えるなら、置換文字列も複数指定できるようにするだけなんだけど、検索と置換の対応の指定がわかりにくくなる。

 結局、検索条件と置換条件をペアにした記述がわかりやすいわけで、それだと、要するに、SED のsコマンドの塊が使いやすいということですね。 

 これは、従来のコマンドの拡張ではなく、新しく起こした方が使いやすそう。一番の重点が複合条件での置換ですが、どうせだから、SED 風に書けて、もうちょい、現代的にしようと、ここ二日ほど、作業をして、使い心地を試しているところです。

| | コメント (0)

2012年4月 7日 (土)

映画ジョン・カーター

 TVで盛んに宣伝が流れている、映画ジョン・カーター。宣伝の画像を見る限り、バローズの火星シリーズの一作目、「火星のプリンセス」のようです。

 ところが、奇異に感じるのは、バローズの火星シリーズだということが、触れられていないこと。シュワルツネッガーがやった「コナン」のときもそんな感じだったから、古いSFの映画化というのは、受けが悪いという判断かもしれません。

 で、さらに、気になるのは、内容紹介。テレビの番組の中でこの映画を紹介するとき、バローズに全く触れないだけでなく、ユニークなキャラクターは、監督の独創的な…など、凄いコメントがされていました。ちょっと見たところ、原作に忠実なヴィジュアライズだと思えるんだけど。

 テレビの映画紹介なんてそんなものなのでしょうね。これを機にバローズの火星シリーズ(ついでに金星シリーズ)の全巻が書店に並ぶとかになれば、嬉しいんだけど。

| | コメント (0)

2012年3月31日 (土)

breakdown !!

 ブルーグラスとかオールドタイムとかを聞いていると共通した名前の曲種があります。たぶん、一番印象に残るのが Breakdown 。そう、例の 「Foggy Mountain Breakdown」とかですね。

 「Breakdown」は、インストルメンタルで速い曲ぐらいのくくりだと思います。たぶん、バンドの数だけ、バンドの名前をつけた「Breakdown」があって、バンジョープレーヤーは、自分の名前をつけた「xxx's Breakdown」を持っているでしょう。

 とはいえ、手持ちのレコードから、いわゆるスタンダードを探すと案外少ないです。

 色々な人が演奏している曲:

  • Blue Grass Breakdown
     元祖、ブルーグラスの Breakdown。多分、この曲がブルーグラススタイルでの最初の「Breakdown」です。もちろん、Bill Monroe。
     他に、Jim&Jessie、Kentucky Colonels、Lilly Bros.、Vic Jordanなど
  • Pike County Breakdown
     これも最初の頃から演奏されています。たぶん、スタンダードなのは、Bill Monroe か、Flatt&Scruggs。
     他に、Goins Brothers、Tony Trischka、John Hickman
  • Shenandoah Breakdown
     やはり、Bill Monroe。
     他には、Josh Graves、Jerry Dougrass、David Grisman
  • Brown County Breakdown
     Bill Monroeがオリジナル。他にDreadful Snakes
  • Dixie Breakdown
     Don Reno。みんな弾いてる曲。
     Dillards / Flying Burrito Bros / John Hickman / Sun Dance
  • Foggy Mountain Breakdown
     Flatt&Scruggs。皆様おなじみの曲ですね。
     Allen Shelton / Carl Jackson / Earl Taylor / Lester Flatt / Lilly Bros / Osborne Bros
  • Earl's Breakdown
     Flatt&Scruggs。Earl Scruggsが自分の名前をつけている曲。
     Bluegrass Cardinals / Carl Jackson / Don Reno / Eric Weissberg / Josh Graves / Larry McNeely / Miller And Lilly / 城田じゅんじ
  • Hamilton County Breakdown
     たぶん、古い曲なのでしょう。
     Tommy Jackson / Doug Dillard / Alan Munde / Sun Dance

単独で取り上げられている曲

  • Tennessee Breakdown / Don Reno
  • Tennessee Cutup Breakdown / Don Reno
  • Charlotte Breakdown / Don Reno
  • Dickson County Breakdown / Stanley Bros
  • Baker's Breakdown / Bill Monroe
  • Louisville Breakdown / Bill Monroe
  • A Minor Breakdown / Greenbriar Boys
  • Bill's Breakdown / Moore&Napier
  • Cincinnati Breakdown / Moore&Napier
  • Blue Ridge Break Down / J.E.Mainer
  • C.J.'s Breakdown / Carl Jackson
  • Dawggy Mountain Breakdown / David Grisman
  • Edsel Breakdown / Walter Hensley
  • Hot Burrito Breakdown / Country Gazatte
  • Jerry's Breakdown / Larry McNeely
  • Lonesome Pine Breakdown / Don Stover
    Lonesome Pine Fiddlersの曲。オリジナルを持っていません。
  • White Oak Breakdown / Don Stover
  • Snowflake Breakdown / Jim&Jesse
  • Stella's Breakdown / Nashville Jam
  • Wendy's Breakdown /Miller&Lilly
  • Chinese Breakdown / Don Reno
    NewLostCityRamblersもやっていました。

| | コメント (0)

2012年3月26日 (月)

バックアップディスクが死んだ

 日ごろのプログラマのたしなみで、バックアップだけはまめにとっています。

 ちょっと前までは、プロジェクトのバックアップは、作業中はMOに取って、フィニッシュしたら、CDに焼いて、お蔵入りでした。

 ところが、最近は、データの量が大きくなって、数百ギガバイトなど、結構当たり前になってしまいました。こうなると、CDやDVDでは歯が立ちません。ということで、バックアップのメディアは、ハードディスク。一応、念のため、2セットのバックアップを用意します。
 また、プログラム部分は、小さいので、常用のバックアップディスクに入れておきます。

 ハードディスクは、ドライブも入っているわけだから、使っていないとそれなりに故障が出そうで心配なので、一定間隔で動作検査もしています。

 ということで、点検していたところ、バックアップ用のディスクの1台が、うまく動かないことがわかりました。ポータブルタイプの300GBのものです。フォルダーを開くとCRCエラーが頻発。

 さて、データ自体はバックアップがもう1セットあるからいいけれど、作業が大変です。

 まず、ディスクのチェックをして、エラーを確認。リカバリー指定して、再度チェック。
 しかし、相変わらず、CRCエラーが出る。
 仕方なく、フォーマット。
 また、ディスクのサーフェースチェック。

 これで、エラーが出なくなりました。ディスクの容量が多いので、それぞれ、なんと、数時間かかります。

 さて、回復したけれど、このまま使っていてもいいのか。悩むところ。

 このまま使うにしても、新しいディスクを用意するにしても、もう一台のバックアップからコピーして、比較してと、また、数時間。

 ともかく、容量が大きくなったために、作業は単純だけど、実際に時間がかかる。ちょっと、疲れました。

| | コメント (0)

2012年3月24日 (土)

ペダル

 アナログシンセ用のペダル MS04 もどきの使い方について、いろいろ、こねくり回しているうちに、MIDI版のペダルも面白いかな、とか、思い始めました。

 何をしたいかというと、漠然としているのですが、ペダルスティールのようにペダルを使えたら…。要するにピッチベンド・ペダルです。

 ただ、各音ごとに、ペダルを踏んだときのベンド幅の設定が違うこと。あと、センターを取るのが難しいから、マイナス側のベンドを行わないこと。

 これで、例えばGのコードを伸ばしているときにペダルを踏むと BだけがCに上がるとか、BがAにさがり、GがF#に下がるとか。ペダルスティールのペダルやニーレバーで行うことをキーボードでやってみたい。

 いまどきのマルチ音源ならマルチスプリットして、それぞれのベンドレンジをかえてやれば、単に、外からベンドを受けるだけでもいいかもしれないです。
でも、たぶん、音名ごと(つまりオクターブが違っても同じグループに入れる)わけることができるものって少なそう。ならば、作る価値があるかも。

 マルチ音源で、ベンドレンジの設定ができるとするなら、ペダルに midi-in もつけて、ここで音名グループごとに、チャンネル別に振り分けて midi-outすればいい。

 あ、まずい。本質的には、音名グループー>チャンネルアウトで、十分。ペダルは、ペダルで別にあればいいことになりそう。ペダルは、ボリュームペダルを正側だけのベンドペダルにするだけで十分ということか…。

 ペダルスティールのようにするなら、複数のべダルを一緒にセッティングできるといい。
 しかし、ペダルを普通はそんなにたくさん持っていないから、一つか、二つのペダルで何とか効果的に扱える仕組みを考え出せれば、そっちの方が、使えそう。

| | コメント (0)

HPをアップデートしました

アルゴ算法堂のHPの、「お楽しみプログラム」でユーティリティ、共通ライブラリをアップデートしました。

 ライブラリのアップデートは、TSEXPR (組み込みの式計算)に関するもので、正規検索のパターンバッファ割り当ての自動化をしました。

 TSEXPRは、ただの文字列をコンパイルもせずに、その場で、インタプリトする設計になっています。コマンドラインの引数の中に埋め込んで使うといった使い方を想定して作られました。たぶん、今でも、この使い方が一番多いでしょう。
 しかし、単独で、というか、ほぼ、この機能を呼び出すだけのコマンドを使うと、昔使われていた?SEDやAWKと同じような処理ができるので、データ処理で使うと結構便利。この使い方だと、式が繰返し解釈されるので、中間コード・コンパイラにした方が速いのですが、「簡単な使い方」では、大げさすぎるし、記述もインタプリタに適した形になっています。

 で、インタプリタで使ったとき、結構嫌なのが正規検索パターン。これは、パターンの文字列を一度内部形式に展開してから実際に検索という手順を踏みます。この展開処理が毎回行われるのが、うっとうしい。
 コンパイラならば、埋め込まれていたり、定数的な使い方をするパターンは、言語のコンパイルのついでに展開してしまえるのですが…。インタプリタだと、そうも、行きません。そこで、TSEXPRでは、明示的なパターンバッファを持っていて、PAT()関数内にパターンを書くと、指定のパターンを展開して蓄える。このパターン番号を指定して検索するという風にしてあります。
 PAT関数は、偶然にも、パターンバッファの番号を返すので、 MATCH(PAT(0,'\w+'),@1) などと、書ける。これだと、毎回バッファ0に展開するけれど、あらかじめ、pat(0,'\w+')を行っておいて、Match(0,@1)とすれば、毎回の展開は避けられる。
 しかし、番号が邪魔。よほどデリケートな場合以外は、番号を意識しないで使いたい。ということで検索パターンの文字列と検索オプションを持っていて、バッファの中の同じものを見つけて使いまわす。なければ、空のバッファを使う。空がなきゃ、古いものから消す。
 この方法で、大抵の場合には、パターン番号を使わないで済むようになります。複数の検索パターンの部分文字列をクロスして使うなどしない限りは、この自動割当で十分でしょう。

 あー、長い説明でしたね。要するに、SED とか AWK 風に正規検索をてんこ盛りで使う書き方をしたとき、パターン番号の指定がウザイので、自動化したということです。

 TSEXPR にコンパイラを付けよ!という話もあるんですが、実測すると、結構、速いです。簡単な式の実行に数マイクロ秒ぐらい。中は、ゆるゆるに書いているのですから、現在のCPUの能力はものすごいということですね。
 このぐらいだと、ファイル処理の速度の方が問題になります。となると、コンパイルしても、メリットは少ないかもしれないですね。

| | コメント (0)

2012年3月23日 (金)

アメリア・エアハルト

 昨日から、アメリア・エアハートの話がメディアに流れています。

 アメリア・エアハートは、第二次世界大戦の前に活躍した、女性の飛行機のパイロットで、世界一周飛行の途中、太平洋上で消息を絶った人。

 どんな人かはよく知らないのですが、この人のことを歌った曲 「AMELIA EARHART'S LAST FLIGHT」 は、学生時代から大好きな曲です。

 「AMERIA ...」を始めて聞いたのは、Green Briar Boys の演奏で、ジョン・ヘラルドの歌がとても気持ちがいいものでした。機会があったら、是非ともお聞きください。ジャンルを越えて楽しめると思います。

 いわゆる名曲なのでいろいろな人が手がけているようですが、手持ちのレコードで探すと案外持っていなくて、Don Stover の 「West Virginia Coal Miner's Blues」に入っているものぐらいでした。
 チャーリー・ウォーラーとジョン・ダッフィが歌っているものも記憶しているのですが、Country Gentlemen の演奏、レコードでは持っていない。北千住の「ハウディ」とかで聞いたのかもしれません。

| | コメント (0)

«VineLinuxで遊んでますの続き