2008/02/19

先日エルおおさかで行われたわんくま勉強会におこし頂きありがとうございました。

ご報告が遅れましたがレポートです。

ふたコマいただいたんですが、ひとコマ目は音楽とDTM(MIDI)の基礎のお話をやりました。ドレミとは、音符とは、音階とは、和音とは、とかごく基礎のところを触れただけなので初心者の方には喜んでいただけたようですが、上級者の方には物足りなかったようで少し工夫をすべきでしたね。

後半はテキスト音楽「サクラ」を用いて実際に曲を作るところを3分間クッキング形式でどんどん作っていきました(実際はデータ作成に7,8時間かかっています)。なにより、ずったずったでドラムを打ち込めるところがウケてましたねwミク講演といっておきながらよく考えるとオケを作る方が時間かかるので実質サクラ講演に近くなってしまいました。でもミクの歌唱力に驚いた方もいらっしゃったようでよかったかなと。ミクの濃い話は私はちょっと無理なのでできればどなたかやっていただけると嬉しいなぁ、と思ったり。ミク単体で歌わせるのもいいですが、オケをつけるとぐっと「それっぽく」なることが示せたかな、と思います。

Audacityのファイルが壊れていた原因はよくわからないのですが、制作環境とデモ環境が違うといろいろ問題のようですね。どこかのファイルが絶対パスでデータを持ってたのが原因みたいです。一回デモ機でやったときはうまくいったんですけどねー?古いファイルを上書きしたのかも?

でもミク&サクラでこれだけのことができるということが示せてよかったように思います。アンケートもおおむね高評価をいただきました。ありがとうございます。これを機にDTMやってみよう、あるいは再開してみよう、サクラを触ってみようという方が結構おられたのがうれしかったです。あとミクのかわいい絵をアンケートに描いてくれた方どうもありがとうございますv

DTMと化学とスクリプトの関係は何かあるのかと聞かれたんですがとくにないですw

春編夏編とか、応用編とか、DTM本執筆とかわんくまテーマソング作曲とかいろいろ振られたんですけどごめんなさい、当分実現しそうにないですw

あと私の講演がやまにょんの濃いー講演にうまくつながったようでよかったです。私だけの話だと物足りなかった方もいたようですし。やまにょん遠いところからありがとー

 

講演資料、データ(完成版、作りかけのも含む)は一足先に自宅サーバーで公開しておきます。

mutaの作った音楽
http://winscript.jp/music/ (下の方)

ソフトのDL・紹介サイト

テキスト音楽「サクラ」 http://oto.chu.jp/

VOCALOID2 初音ミクhttp://www.crypton.co.jp/mp/pages/prod/vocaloid/cv01.jsp

Audacity http://audacity.sourceforge.net/

 

追伸。

この講演はまぁ、ちゃっぴさんが私をそそのかしたことがきっかけで実現したんですが、実はちゃっぴさんから贈り物が届いていました。最後にちょっとだけみなさんにお見せしたんですけど家で写真撮りました。

080219-092146

こんなメッセージが入っていました。これ会場で読むべきだったんですがてんぱってて読めませんでした、ごめんなさい

080219-092500

えーと。これ、「式場 エルおおさか」 で届いたんですけど・・・wwwww

というか、これはあれですね、結婚したいしたいと某所でわめいていた私に、じゃあミクと結婚しちゃえばというちゃっぴ先生のきっついシャレですなw

 

というわけで、みなさんどうもありがとうございました。

次回は3/29 PowerShellの話をやりますのでよろしくお願いします。

元記事:http://blogs.wankuma.com/mutaguchi/archive/2008/02/19/123810.aspx

2007/06/10

たとえば、2階層下のフォルダまで(無限階層じゃないのがミソ)のファイル・フォルダのフルパスを取得するスクリプトを考えます。

dir|%{$_.Fullname;if ($_.PSIsContainer){dir $_|%{$_.Fullname}}}

こんな感じでしょうか。

実行例。-recurseパラメータをつけた場合は3階層目までさらいますが、上記のスクリプトは二階層目で止まります。

PS C:\s> dir -recurse |%{$_.fullname}
C:\s\t
C:\s\新規 「サクラ」用音楽テキスト.mml
C:\s\t\u
C:\s\t\新規 Microsoft Office PowerPoint プレゼンテーション.pptx
C:\s\t\u\v
C:\s\t\u\v\新しいビットマップ イメージ.bmp
PS C:\s> dir|%{$_.Fullname;if ($_.PSIsContainer){dir $_|%{$_.Fullname}}}
C:\s\t
C:\s\t\u
C:\s\t\新規 Microsoft Office PowerPoint プレゼンテーション.pptx
C:\s\新規 「サクラ」用音楽テキスト.mml
PS C:\s>

さて、このForEach-Objectコマンドレット(エイリアスは%)はネストされています。最初の$_.Fullnameは最初のdir(Get-ChildItemコマンドレット)が返すFileInfo/DirectoryInfoオブジェクトのFullnameプロパティを見ています。その次の$_.PSIsContainerもそうですね。$_がフォルダだったら次のdirを実行します。dir $_の$_も最初のオブジェクトです。さてここでふたたびForEachループを回します。ここで実行される$_.Fullnameの$_は、直前のdir $_が返したFileInfo/DirectoryInfoオブジェクトを参照しています。

このようにスクリプトブロックをネスト化した場合、$_にはもっとも内側のパイプラインを通ったオブジェクトが格納されます。

さて、では内側のスクリプトブロックから、外側のスクリプトブロックのパイプラインにわたったオブジェクトを参照するにはどうするのでしょう?この場合、たとえば最初から見て1階層下のフォルダC:\s\tのdirを内側のスクリプトブロックで回す際、外側のC:\s\tのフルパスも合わせて表示したいとき、内側から外側の$_を参照する必要がでてきます。このやり方は実は分かりません(汗 できるのかな〜?

一晩寝たら思いつきました。コロンブスの卵です。外側の$_をほかの変数に入れちゃえばOKですね。

PS C:\s> dir|%{$_.Fullname;if ($_.PSIsContainer){$outer=$_;dir $_|%{"[" + $outer
.Fullname + "]";$_.Fullname;}}}
元記事:http://blogs.wankuma.com/mutaguchi/archive/2007/06/10/80193.aspx

Copyright © 2005-2016 Daisuke Mutaguchi All rights reserved

mailto: mutaguchi at roy.hi-ho.ne.jp

Awards

Books

Twitter