3680, 3178, 3774

5月31日から昨日6月2日までのコロナウィルスによる死者数は、3680, 3178, 3774人。緩やかに死者数は減少していますが、依然として1日3千人超えの規模です。

 

 

 

 

グラフにしてみると、ギザギザした毎日の揺れの中で、徐々に減少しているのが解ります。

 

減衰率を計算すれば、死者がゼロになる日はいつ頃で、最終的に何十万人になるかが、予測できると思います。あくまで、第2波を想定しない、楽観的な予測ですが。

 

 

 

爆発的感染‥‥とはよく言ったもので、たしかに、爆発の作画で考えてみれば、起爆して広がる時は一気に広がりますが(6〜12コマくらい)、その後の煙の動きは徐々にゆっくりになって、何秒もタメるものです。

 

広がる速度と同じ速度では、収束しないですね。

 

今は、そのタメの余韻の時期なんでしょう。ゆえに、減り方はとても緩やか‥‥なのかも知れませんネ。

 

2〜3年後に、どんな顛末になっているのか。

 

今はただ、成り行きを見守りつつ、自分と自分の周囲を護る日々です。

 

 

 

 


2S1V

ストラトも場合によっては、2シングル1ボリューム(2S1V)で良い!‥‥と思っている人は結構いるんじゃないでしょうか。ハードロック用途なら特に。

 

リッチーさんも、YJMさんも、「中途半端な音色」(ものは言いようです)のセンターPUは使わず、ピッキングの邪魔にならないようにできるだけ下げているようですし、トーンコントロールをバイパスしてダミーにしていると聞いたこともあります。

 

フュージョンをやるんなら、ハーフトーンは絶対に外せない要素ですが、ソロのフロント、リフのリア(鋭い音色のソロにもリア)しか使わない場合、実質不要です。

 

なので、先月〜連休中に休日にちゃちゃっと組んだのが、以下の「ロック専用」ストラトです。いつものプレイテックST250が母体です。

 

白いステッカーは余計だったかな‥‥。

 

 

要らないパーツは全部外しました。

 

多くのギタリストが、1ボリューム2トーンが最大になっているか、演奏のスキがあるときにノブに指を伸ばして頻繁にチェックしているのを見ると、ボリュームはともかく、2トーンは要らない状況も多いと感じてました。まあ、私はもともと、1ハム1ボリュームが好きだったこともあり、ストラトでもトーンを外した次第です。

 

セレクタは、OAK製の3接点に交換して、フロント:フロント+リア:リアの2ハム標準の配線に変えました。トーン用のポットにセレクタを消費しなくなったので、実に簡単に配線できました。

 

トーンポット同様、PUセレクタも、5接点もあると、不用意にハーフトーンポジションになることがあるので、昔ながらの3接点にあえて交換したのです。フュージョンをやるときにはハーフトーンは必須ですが、ハードロックはアルペジオの時にフロント+リアのミックスを使うかも知れないくらい‥‥なので。

 

ピックアップはダンカンのSSL-7です。パワーあり過ぎで、良いセッティングを見つけるのは、時間がかかりそう‥‥です。適度に出力が高いSSL-5のほうが扱いやすいと感じてます。SSL-7も5も、ちゃんとシングルコイルっぽいニュアンスは残っていますので、ハムバッカーのような音色にはなりません。

 

ナゾのステッカーは、知っている人は知っている、Native Instruments(NI)です。ステッカーが余ってたのでアドリブで貼りました。

 

NIは、After Effects使いの人なら伝わる、PC/Macの「音楽環境におけるTrapcode」みたいな超強力なソフトウェア(プラグインなど)開発メーカーです。LINE6とNIは頼りになるメーカーです。

 

細かい部分では、出荷時のテンションピンを全て外して、ローラータイプを1・2弦のみに装着、アームのスプリング(背面)も出荷時のものは全て外し、RAW VINTAGE製のとか色々混ぜて、軽くフローティング状態にしてあります。アームをかけた後にほとんど狂わなくなりましたし、弦のテンションが柔らかくなったので、エグいヴィブラートを多様するハードロック向きにさらになりました。

 

 

 

しかしまだ、全然弾けてないです。弾く暇がないです。現在の複数の仕事が落ち着くまで、イジれません。

 

とにかく、本業をどんどんこなして、コロナ前の仕事の状況を収束して、プライベートに時間の余裕を作るべく、頑張ります。

 

 

 

東京は、ちょっと気を緩めた途端に、東京アラート発令ス‥‥です。

 

15年前くらいに言われていたテレワークや分散型環境が、ようやく真実味をもって、人々に訴えかける日が来た‥‥のなら、コロナウィルスはなんとも皮肉な存在意義‥‥ですね。

 

 

 

 


東京アラート。

東京アラート発令ス。

 

調べてみると、実効力の弱い注意喚起のようで、外出自粛要請ではないそうな。

 

注意喚起をして、明日の満員電車は少しは減るのかね?

 

 

 

まあ、経緯を見守りましょう。

 

 

 


タイムシートの枚数を組み込む

作画作業でも時間表記は必要です。

 

だからと言って、前回書いたのと同じく、タイムコードを1スタートにするのはトラブルの元なので避けねばなりません。

 

何よりも、ぶっちゃけ、タイムコードで1スタートにしているのは、経験の幅が狭い状態を晒しているようなものなので、かっこ悪いです。

 

タイムコードはタイムコード。タイムシートはタイムシート。コマ番号はコマ番号。

 

別に扱えば良いです。

 

 

 

前回紹介したテキストレイヤーとエクスプレッションによる各種時間表記を、アニメの作画用途に改造しましょう。

 

アニメーターでAfter Effectsを併用している人は少ないとは思いますが、未来のアニメーターはコンポジットにも関わって、あらゆる作画要素をコントロールしたほうが良いですから(表現面でもコスト面でも)、After EffectsのTIPSとして紹介します。

 

After Effects内部の小数点付き秒数を、まずはタイムコードに変換します。ついでに、fpsも取得しておきます。

 

fps=1/thisComp.frameDuration;

tc=timeToTimecode(t = time + thisComp.displayStartTime, fps, true);

 

秒数は、単純に秒の小数点を切り下げた数字で取得します。

 

sec=String(Number(Math.floor(time)+1000)).slice(1);

 

1秒間のコマ番号は、タイムコードのフレーム番号から、取得して1を足すだけです。せっかくタイムコードを変数「tc」に格納したので、利用するわけです。JavaScriptの「暗黙の型変換」ではなく、お行儀よくString()やNumber()で明示的に、文字と数を相互に変換しています。

 

koma=String(Number(tc.split(":")[3])+101).slice(1);

 

1を足すのに、101を足しているのは、表示上の桁数を揃えるためです。01は数値では1になるので、先頭の0を保つために、「101という文字の2文字目以降を取得」するのです。

 

"101".slice(1);

 →"01"

 

After Effectsの時間をフレームにするには、小数点付き秒数から地道に算出する方法もありますし、タイムコードの各桁から算出する方法もありますが、After Effectsビルトインの「timeToFrames()」が手っ取り早いです。

 

komaNumber=String(Number(timeToFrames(t = time + thisComp.displayStartTime, fps, true))+100001).slice(1);

 

 

さらに、どうせなので、何枚目のタイムシートでも読みやすく表記をプラスしましょう。

 

10+9コマって、2枚目の6秒シートの何秒何コマ目でしょう? 2枚目の6秒シートの通し番号の何コマ目でしょう?

 

まずタイムシートには、3秒シートや6秒シートがありますので、タイムシートの長さを定義します。

 

sheetLength=144;

 

144はお馴染みの数字ですね。6秒シートです。

 

この「sheetLength」で、タイムシートの秒と通しのコマを割れば良いです。

 

currentSec=Number(sec)%(sheetLength/fps);

currentKomaNumber=String(Number(komaNumber)%sheetLength+10000).slice(1);

 

さらに現在のタイムシートが何枚目かも計算しておきましょう。シートは「0枚目」と言う呼び方はしないので、二桁に揃えつつ1を足しておきます。

 

currentSheetNumber=String(Math.floor(time/(sheetLength/fps))+101).slice(1);

 

以上で、時間の情報取得は終了です。

 

あとはまとめて表示‥‥ですが、情報量が多いので、改行を混ぜましょう。

 

tc+"¥r"+sec+"+"+koma+" | "+currentSec+"+"+koma+"["+currentSheetNumber+"]¥r"+komaNumber+" | "+currentKomaNumber+"["+currentSheetNumber+"]";

 

 

以上を、テキストレイヤーのソーステキストのエクスプレッションに書き込みます。

 

//基本設定

sheetLength=144;

fps=1/thisComp.frameDuration;

 

//基本情報

tc=timeToTimecode(t = time + thisComp.displayStartTime, fps, true);

sec=String(Number(Math.floor(time)+1000)).slice(1);

koma=String(Number(tc.split(":")[3])+101).slice(1);

komaNumber=String(Number(timeToFrames(t = time + thisComp.displayStartTime, fps, true))+100001).slice(1);

 

//タイムシートの複数枚に対応

currentSec=Number(sec)%(sheetLength/fps);

currentKomaNumber=String(Number(komaNumber)%sheetLength+10000).slice(1);

currentSheetNumber=String(Math.floor(time/(sheetLength/fps))+101).slice(1);

 

//結果表示

"TC "+tc+"¥r"+sec+"+"+koma+" | "+currentSec+"+"+koma+"["+currentSheetNumber+"]¥r"+komaNumber+" | "+currentKomaNumber+"["+currentSheetNumber+"]";

 

以下のように映像に表示されます。

 

 

 

タイムコードはいつもの0スタートの「00:00:00:00」表示。

 

タイムシートの表記は、カット全体の000+00書式(999秒まで対応)と通し番号の00000書式(99999コマまで対応)の他に、タイムシート何枚目の「何秒何コマか」「通し番号何コマ目か」を表示します。

 

まあ、ありえないでしょうけど、シートは99枚まで対応してます。‥‥表示が2桁なので。

 

これで、全体の時間位置と、タイムシート何枚目の時間位置も表示されます。

 

上の映像をみれば、左側は秒数が6秒後もどんどん加算されますが、右側は0秒に表示リセットされます。

 

こうした仕組みが、ユーザのスクリプト(エクスプレッション)でいくらでも自作できるのは、After Effectsの強みです。

 

クリスタにもこうした機能=エクスプレッションやスクリプトがあれば良いのにネ。

 

 

 

 


タイムコードを1スタートにするのはやめませんか。

アニメ業界の撮影さん特有‥‥だと思うのですが、タイムコード書式で1から始まる表記を結構目にします。

 

00:00:00:01

 

‥‥タイムシートのコマ番号と記述を合わせたいばかりに‥‥とは思うのですが、23コマ目は、

 

00:00:00:23

 

‥‥ですが、残念ながら、24コマ目は、

 

00:00:01:00

 

‥‥となり、ゼロスタートにリセットされます。

 

タイムコードは0スタートなので、いくら開始時間を1にズラしても、次の秒数からは0に戻ります。

 

意味ないじゃん。

 

むしろ、24コマ目が0:00:01:00になって前倒しになって、ものすごく混乱します。

 

 

 

なんでもかんでも1スタートに変えるのは、アニメ業界のアニメ撮影だけの慣習なので、外では通用しません。

 

一方、アニメ制作は業界内部だけでは完結できません。ポスプロ(編集など)からは一般的なタイムコードで時間の番地が管理されるので、アニメ業界の悪習を改めて、タイムコードはゼロからスタートする習慣を身につけた方が良いです。

 

タイムコードは0スタート、コマ番号は1スタート。

 

タイムコードは、0から23。

 

タイムシートは、1から24。

 

この両方の感覚を同時に扱うことは可能です。慣れれば大丈夫。

 

私はもう20年近くタイムコードとタイムシートの同時使用をしているので、慣れました。慣れることは可能です。

 

 

 

演出スタッフや作画スタッフも、タイムシートの「1コマ」を「1フレ」とか言わないように気をつけたほうが良いです。

 

フレ=フレームはタイムコード、コマはタイムシート。こうして「フレ」と「コマ」の使い方を切り分けた方が明快です。

 

 

 

シートの6フレーム目‥‥とか言うな。シートなら6コマ目と言いましょう。

 

タイムコードの12コマ目‥‥とか言うな。0スタートだと11フレーム目を指しているかも知れないので、不要な行き違い・誤認は避けましょう。

 

 

 

撮影スタッフは、フレームとコマをソフトウェア上で扱う専門職ですから、率先してタイムコードとタイムシートの読み替えを頭の中でできるようにしましょう。

 

書式は1秒目なら‥‥

 

0:00:00:00〜0:00:00:23

 

0+01〜0+24

 

‥‥と、「:」と「+」を使い分ければ良いです。

 

「:」だったら0スタートのタイムコード、「+」だったら1スタートのタイムシートのコマ番号。

 

全然、難しくないでしょ?

 

ラッシュチェックの際に、作監や演出が「12フレ目」とか言ったら、「12フレとは、タイムコード上ですか? タイムシート上ですか?」と聞き直しましょう。

 

たとえ相手がベテランでも、「タイムコードは0スタート、タイムシートは1スタートなので、混乱の原因になりやすいのです。行き違いを防ぐために、お聞きしたのです」と言えば、よほど頑固で意地っ張りなベテランでもない限り、答えてくれますヨ。

 

 

 

アニメの制作現場は、酷く、タイムコードに不慣れです。なぜかというと、リアルタイムでカメラ撮影しないので、全てのカット(バラの1カットごと)がゼロスタートだからです。

 

タイムコードを意識したことのない撮影スタッフは、アニメ制作現場には相当多いでしょう。

 

なので、意識しましょう。ただそれだけでアニメ制作現場の「不思議なタイムコード」を撲滅できます。

 

タイムシートの表記はタイムコードではないことを、改めて認識すれば良いのです。

 

 

 

After Effectsのテキストエフェクトにある「タイムコード」は、まさにタイムコードのためにあるので、タイムシートのコマ番号の表記に使うのはNGです。

 

前述したように、1秒目の最後に0スタートに戻ります。

 

「タイムコードの開始時間」は、単にタイムコードのオフセットを設定するもので、0〜23表記を1〜24に変更する機能ではありません。

 

エフェクト「テキスト」>「タイムコード」で開始時間を1にしても、以下のようなみっともないことになります。

 

この設定で「1スタートにできた!」と思っていても‥‥

 

 

残念ながら、タイムコードはあくまで「0 to 23(24fpsの場合)」なので、0+24の位置で‥‥

 

 

タイムコードだけは、2秒目の0フレームになります。

 

1秒目の0+23までしか通用しない表記なんて、害の方が大きいですよネ。

 

これは「After Effectsのせい」ではなく、「タイムコードを1スタートにした人間のせい」です。

 

 

 

もし、オフライン撮で、映像内にコマ番号やタイムコードを表示したければ‥‥

 

TC 00:00:00:00 - - TS (000+01) - -  000001

 

‥‥のような表記をテキストレイヤーとエクスプレッションで生成して表示させるのが良いです。等幅フォントで綺麗に表示すれば見栄えも良いですし、タイムコードとタイムシートの2書式を併記すればアニメと映像一般の両方の現場に対応できます。タイムシートと照合することが頻繁ならば、1スタートのフレーム番号を添えると、もっと利便性が高まるでしょう。

 

何度も繰り返しますが、タイムコードをタイムシートのコマ番号に流用するのは、無理があるばかりか、混乱の大原因になります。

 

タイムコード、タイムシートの(0+0)書式、通しのフレーム番号は、それぞれ別物として扱い、何でもかんでもアニメのタイムシート基準で思考する癖から脱皮しましょう。

 

 

 

アニメはフィルムで作ってた伝統が‥‥と言うのなら、フィートはどうしたんでしょう。

 

「3ブツ」は、3秒前と3フィート前の2種類がありますが、リーダー(10から3までのカウントダウン)を見て、24fpsビデオのリーダーか24コマフィルムのリーダーか、見分けはつくでしょうか。

 

「アニメはフィルムが基本だから」と言うのなら、当然、見分けがつくでしょう。3フィートが何秒なのかは、35mmフィルムを知っていれば当然わかるはずですが、アニメ作画や演出はおろか、撮影スタッフでも知る人は少ないです。

 

つまり、自分の誤認を取り繕うために、フィルムを引き合いに出しているに過ぎません。

 

フィルム云々じゃなくて、タイムシートのコマ番号しか扱ったことがない人が、タイムコードを間違った使い方をしているだけです。

 

 

 

After Effectsにはエクスプレッションがあります。

 

テキストエフェクトのタイムコードなんかに頼らず、エクスプレッションで対処しましょう。

 

エクスプレッションには、timeToTimecodeやtimeToFrames、timeToCurrentFormatなどの便利な関数が用意されているので、活用しましょう。

*プロジェクトの時間表示をフレームにしている場合は、timeToCurrentFormatはタイムコードにはなりません。私はプロジェクトの時間表示はタイムコードにすべきと思いますけどネ。アニメ村の限定された意識ではなく、映像世界のグローバルな感覚を、アニメ制作スタッフもそろそろもつべきです。

 

fps=1/thisComp.frameDuration;

tc=timeToTimecode(t = time + thisComp.displayStartTime, fps, true);

sec=String(Number(Math.floor(time)+1000)).slice(1);

koma=String(Number(tc.split(":")[3])+101).slice(1);

f=String(Number(timeToFrames(t = time + thisComp.displayStartTime, fps, true))+1000001).slice(1);

"TC "+tc+" - - TS ("+sec+"+"+koma+") - - "+f;

 

 

101とか1000を足しているのは、桁数を揃えるためです。フォントは等幅の英文フォントを選びます。時間の表記は、整然と美しくなければネ。

 

レンダリングすると、この通りです。フォントは等幅のCourierのBoldを使って、字間が動かないようにしています。

 

 

タイムコード、タイムシート、コマ(フレーム)の通し番号、全て表示すれば、どの場面でも使えます。

 

もし、CC2020を使っていて、表記がズレるようなら、After Effects新バージョンにおける小数点の誤差ですので、0.001などをtimeに足してケアします。CC2020に限らず、昔のバージョンから小数点の誤差は厄介でしたので、上述のエクスプレッションでも、できるだけ小数点を扱う場面を控えています。

 

 

 

たしかに、タイムコードを扱う現場にいないと、タイムコードを流用してタイムシートの表記に合わせるようなことは、やっちゃいがちです。

 

私も20年前くらいは、危うい感じでした。タイムコードとタイムシートの境界を曖昧にしていました。

 

しかし、ポスプロの立ち合いや、実写作品に関わったり、欧米の映像関連会社などと関わるようになると、タイムコードをちゃんと扱わないと、とんでもない事故になることがわかりました。‥‥なりかけた寸前で、私は悪習を直せましたけどネ。

 

 

 

今、日本のアニメ業界は、映像技術的に10年以上の遅れをとっています。アニメ業界は、外界から閉ざされた竜宮城なのです。

 

しかし、今後、生き残って発展するためには、海底の竜宮城から地上に戻らねばなりません。

 

海底には、映像に限らず様々な分野における新技術の日差しが届かないからです。

 

「デジタル作画」が停滞している理由も、「デジタル作画を竜宮城の中でおこなおうとしている」からに他なりません。

 

2020年代、2030年代に、1970〜2010年代の方法論が通用し続けると思いますか?

 

アニメ撮影にありがちな1スタートのタイムコードに、その「竜宮城感覚」を見いだす時、そろそろ、「なんでも1スタート」の悪習から抜け出る時期‥‥ですネ。

 

 


splitとjoinとsliceで。

文字列から任意の部分を取り出す際に、その文字列に規則性がある場合は、JavaScriptのスプリットとジョインとスライスでほとんどのことが可能です。

 

例えば、

 

XY08_055_T1

 

から、T=本撮を表す文字を取り出す場合は、

 

"XY08_055_T1".split("_")[2].slice(0,1);

 

‥‥で可能です。

 

xy_08_055_t1

 

から「t」を取り出すなら、

 

"xy_08_055_t1".split("_")[3].slice(0,1);

 

です。

 

charAt()を使うのも良いですが、sliceだけでも可能です。

 

テイクの後の数字を取り出す場合は、それぞれ、

 

"XY08_055_T1".split("_")[2].slice(1);

"xy_08_055_t1".split("_")[3].slice(1);

 

です。sliceは範囲指定も「以降全部」も可能なので、色々と使えるのです。

 

ちなみに、文字を1文字ずつバラバラにしたい場合は、

 

"XY08_055_T1".slice("");

 

‥‥で可能です。私はこのあたりの知識はAppleScriptから流用しました。「AppleScript's text item delimiters」というヤツです。1つの言語をつっこんで習得すると、別の言語でも応用が可能になりますヨ。

 

 

 

アンダースコアを日本語の接続詞「の」に変えたい場合は、それぞれ、

 

"XY08_055_T1".split("_").join("の");

"xy_08_055_t1".split("_").join("の");

 

これは、「変換」しているのではなく、一旦アンダースコアで分解したのちに、「の」という文字で連結しているのです。

 

XY08の055のT1

xyの08の055のt1

 

この方法を転用すれば、変換にも使えます。‥‥AppleScriptでは常套手段ですが、JavaScriptでも可能です。

 

"今日の三鷹は雨です。".split("三鷹").join("高円寺");

結果:"今日の高円寺は雨です。"

 

普通はreplaceを使うでしょうが、こういう方法もあります。

 

なので、ファイル名から拡張子だけを除外したい時にも使えます。

 

XY01.03.128.T1.MOV

 

なんていう名前(まあ、こういう名前はないですけどネ)は、普通にドットで区切ると、拡張子の.MOV以外も全てバラバラに分解されちゃいますが、

 

XY01, 03, 128, T1, MOV

 

「.MOV」で区切れば、ファイル名のカット名部分だけを取り出せます。

 

"XY01.03.128.T1.MOV".split(".MOV")[0];

結果:"XY01.03.128.T1"

 

"XY08_055_T1.mov".split(".mov")[0];

結果:"XY08_055_T1"

 

 

 

大文字小文字が混在していて、いちいち分割する文字列の条件を変えなければならない場合は、いっそのこと、全て大文字か小文字に変換したあとで処理するのも手です。

 

"XY08_055_T1.mov".toUpperCase().split(".MOV")[0];

結果:"XY08_055_T1"

 

 

 

いずれの場合にせよ、事前の「名前の規則」が整然と規定されていることが必須です。

 

そして、人間の目視による運用と、プログラムにおける処理の利便性の、両方をいい感じで兼ね備えた名前を規定できれば、ベストですネ。

 

私の思想だけで言えば、作品、話数(パート)、カット番号、種別、バージョン番号は、全て同じ文字列で分割していたほうが、人の目にもコンピュータの処理にも、両方に優しいと思います。

 

xy_01_001_vfx_t2

zz_a_032_gen_t1

→ 頭から順に読んでいけば、命名規則を詳しく知らなくても、内容が伝わります。

 

でもまあ、まずは整然とした名前の規定をおこなうことが先決です。

 

しかし、今のアニメ制作現場は、名前の規定すら曖昧で、各セクションが別々の規定で運用するほど、連携が希薄です。

 

中々、未来のオンライン運用への道は険しい‥‥ですネ。

 

 

 


連想配列を使おう

アニメ業界の撮影さんのエクスプレッションは、ifやmatchは使う一方で、連想配列はあまり活用していません。

 

this_comp‥‥という表記を最近見かけましたので(現在はthisComp)、相当古いバージョンのAfter Effectsからエクスプレッションを受け継いでいることもありましょう。

 

私もそうでしたが、言語を覚えたての頃は、結構まわりくどい書き方をしているものです。

 

JavaScriptの場合、いちいち「何らか==trueだったら」「何らかが0以外ならば」という書き方をしなくても、「何らかだったら」というシンプルな書き方でOKです。

 

AppleScriptは明確に真偽値でない場合はNGですが、JavaScriptは、false、0、""、以外は真とみなされるので、書き方が短くて済みます。

 

2020年になった今、雛形を点検して整頓してみるのも良いですヨ。

 

 

 

「何撮か?」というボールドの表示で、今でもifを見かけます。

 

ifで延々と改行して条件分けする方法は、初心の頃にはやりがちです。

 

例えば、「XY」という作品略号で、

 

XY04_012_T2 → 作品「XY」4話 Cut12 本撮テイク2

XY11_201_K1 → 作品「XY」11話 Cut201 タイミング撮テイク1

 

‥‥という書式の場合、撮影の種別を示すTやKなどを、コンポジション名から取り出す流れは、

 

compType=thisComp.name.split("_")[2].charAt(0);

 

‥‥のようになりましょう。

 

TやKやSを「何撮」という文字列に関連づけて生成する際に、ifを使うと、

 

if(compType=="T"){

typeText="本撮":

}else if(compType=="K"){

typeText="タイミング撮":

}else if(compType=="S"){

typeText="線撮":

}else if(compType=="Y"){

typeText="予告":

}

 

‥‥となりますが、何回もelse ifやtypeText=を書くのは、正直、野暮ったいです。

 

なので、連想配列の出番。

 

typeList={T:"本撮",K:"タイミング撮",S:"線撮",Y:"予告"};

 

‥‥のような連想配列を記述して、キーワードで呼び出します。

 

typeList[compType];

 

ifとelseに比べて、たったの2行で済みます。

 

typeList={Y:"予告",S:"線撮",K:"タイミング撮",T:"本撮"};

typeText=typeList[compType];

 

 

if文より明解で簡潔、メンテもしやすいです。

 

もし「何撮」かが増えた場合は、連想配列の内容を増やせば良いだけです。elseで行を増やすより、扱いやすいです。行をスクロールせずに1行で判読できます。

 

 

 

連想配列を複合化して、辞書のようなものを作ることもできます。

 

typeDic={T:{jp:"本撮",en:"FINAL",summ_jp:"本番撮影",summ_kana:"ファイナルテイク",sect:"撮影工程",cont:"撮影工程における本番素材を用いた作業"};

 

Tというキーワードで、本撮にまつわる様々な情報を引き出せます。‥‥まあ、ここまで細かくする必要はないでしょうが、一例として。

 

typeDic[T][sect];

=結果は「撮影工程」

 

typeDic[T][cont];

=結果は「撮影工程における本番素材を用いた作業」

 

‥‥まあ、ここまで凝る必要もないとは思いますが、ifしか使わない時に比べて、格段にできることが広がります。

 

 

 

連想配列‥‥という言葉の「響き」は、聴き慣れないので難しく感じますが、要は「ラベル付きのリスト項目」です。

 

無作為に箱の中に詰めるより、1つ1つにラベルを貼っておけば、判別しやすくなって取り出しやすくなりますよネ。

 

聞けば「なんだ、そんなことだったのか。日常生活でも普通にあることだね。」と納得できることなんですが、「連想配列」などと言われるとなんだか難しく感じます。

 

クラス型オブジェクト、インスタンス、インヘリタンス‥‥とか聞くと、「ちんぷんかんぷん」と敬遠しがちです。

 

しかし、「型をあらかじめ作る」「型から実体を作る」「違う型を作る際に、元の型から要素を継承する」と言われれば、「あー、あるよね、そういうやり方」と思えるわけです。

 

プログラムは、「難しげな用語」に怖気付いたら負けです。

 

難しげな用語を、どういう意味か調べれば、さほど怖くはありません。恐ろしく難解な物事だったら、こんなに世界中にプログラマなんて溢れていませんよネ。

 

アニメ制作だって同じです。「密着マルチ」「付けパン」なんて聞くと、何のことか部外者はわかりませんが、現場で用語の意味と内容を知れば、普通に扱えるようになります。

 

言葉の響きに物怖じするなかれ。

 

 

 

連想配列は、エクスプレッションでも自動処理でも使えます。

 

Adobe CCなら、PhotoshopやAfter Effects、macOSなら様々なAppで、活用可能です。

 

JavaScriptに限らず、他の言語でも、「キーとバリュー」、つまりキーワードと項目の内容を関連付けるリスト(配列)は用意されていますので、考え方さえ覚えたら、様々に応用できるようになります。

 

 


ミュージック(旧iTunes)の曲の時間合計・2

今さらAppleScriptを覚える気にはなれない。‥‥まあ、そうですよね。私は20年以上AppleScriptを使い続けていますが、2020年の今なら、そう思います。

 

なので、JavaScript。

 

前回書いたAppleScriptによるスクリプトは、JavaScriptで同じことが記述できます。内容を翻訳できます。

 

実はAppleScriptのエディタは、言語を切り替えてJavaScriptでも書けるんです。

 

 

 

After Effectsのエクスプレッションや自動処理でおなじみの書式が通用します。

 

なので、Music.appの選択項目の合計時間を表示するスクリプトはJavaScriptとAutomatorで作ったほうが、今は実用性があるでしょうネ。

 

クイックアクション書類を作って保存すれば、ミュージックの「サービスメニュー」に自作のアクションがリストされます。

 

 

 

 

「JavaScriptを実行」を追加して、JavaScript文を書きます‥‥が、なんだこれは。

 

エディタ部分の配色がまっくらで読めませんネ。

 

なので、スクリプト文を以下に。ただ実行するだけなので、入力もパラメータも不要です。

 

function run() {

    

var app=Application("Music");

app.includeStandardAdditions=true;

var w=app.windows[0];

var td=0;

for(var i=0;i<w.selection().length;i++){

td=td+w.selection()[i].duration();

}

app.displayDialog((Math.floor(td/60))+"分"+(Math.round(td%60))+"秒");

return true;

}

 

 

曲の時間(duration)は秒単位(小数点付き)で扱うので、単純に足した後で読みやすいように整形すれば良いです。何のヒネりもないシンプルな内容なのは、前回と同じ‥‥というか、前回のAppleScriptの内容をJavaScriptに翻訳しただけなので、includeStandardAdditionsなどの独特な追加部分以外は、書き方の作法こそ違いますが内容は同じです。

 

for文とか、Math.floorやroundは、After Effectsのスクリプトでもおなじみですネ。

 

After Effectsでエクスプレッションやスクリプトを覚えておけば、ミュージックにも応用できる‥‥というわけです。

 

まあ、alertではなく、displayDialogだったりと、癖は多少ありますが、基本的な書式はいつものJavaScriptでOK。

 

制御について知りたい人は、英文だけどコレを読めば大体概要は掴めます。

 

OS X 10.10 Release Notes

https://developer.apple.com/library/archive/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/OSX10-10.html#//apple_ref/doc/uid/TP40014508-CH109-SW1

 

 

 

スクリプトやプログラムを覚えておけば、「性能としては存在するのに、表立った機能として存在しない」、コンピュータのポテンシャルを引き出せます。

 

曲のそれぞれの秒数を合計する‥‥なんて、コンピュータができないわけがない‥‥のに、機能として存在しなければ、分単位までしかユーザは情報を取得できません。

 

‥‥それとも、電卓で手作業で各曲の合計秒数を算出します?‥‥いやいや、そんな無駄な時間は人生がもったいない。

 

PhotoshopやAfter EffectsのJavaScriptに馴染んだら、他でも応用が効くようになりますから、まだスクリプトに着手していない人はチャレンジすることを強くお勧めします。

 

 


ミュージック(旧iTunes)の曲の時間合計

ミュージック.appで、プレイリストの細かい秒数まで知りたい場合、どうすれば良いんでしょう。何か、秒数まで表示できるオプションがあるでしょうか?

 

あるかも知れませんが、私は知らないので、スクリプトでちょちょいと処理します。

 

以下のAppleScriptを実行すれば、現在選択中の曲(トラック)のデュレーション合計がわかります。

 

 

スクリプト文は以下。

 

tell application "Music"

    set td to 0

    tell front window

        repeat with i in selection

            set td to td + (duration of i)

        end repeat

    end tell

    display dialog ((td div 60) as text) & "分" & ((td mod 60) as integer as text) & "秒"

end tell

 

 

 

現在表示されているウィンドウの選択項目を順々に調べて、曲の時間を集計します。凝ったところは何もない、シンプルなスクリプトですネ。

 

AppleScriptがわからなくても、文面を読めば、なんとなくでもやっていることが解りますよネ。

 

 

 

これで90分カセットの片面にギリギリ入る合計時間を調整できます。もちろん、曲のチョイスは手作業ですけどネ。

 

片面45分だからといって、44分でプレイリストを組むと、最後の曲が終わった後で、最大で2分の無音が続きます。実際の片面の長さは46分くらいなので、曲が終わったらすぐにテープを巻ききってパタンと再生が終わるように組むと、快適ですヨ。

 

 


カセットライフ

コロナウィルスの自粛期間中に、VHSテープの売り上げ伸び率が首位に躍り出たとか。‥‥売り上げ総数ではなく、伸び率なので、全く売れてなかったものが売れるようになっただけ‥‥ではあるみたいですが、コロナウィルスの緊急事態宣言中に、VHSに何が起こったんでしょうね。

 

‥‥などと人のことを言っている私の生活は、数年前から「カセットテープ」が復活しており、自宅でも作業場でもカセットを息抜きに聴いています。作業場ではひとりで作業する際‥‥ですけどネ。

 

 

 

現在、カセットテープの種類の選択肢は、ほぼ無いに等しいです。かつての雄、マクセルが頑張って生産を継続していますが、今や「UR」のみ。数年前に入手できたULも消え、SONYのHFも消えました。(私はまだストックが20巻くらいはあります)

 

録音する機器も、ノーマルポジションのみで、ドルビーBすらついていないので、音質はかなり妥協せざる得ません‥‥が、高音質に拘りたいなら、いまどきカセットなんて使う必要はないので、それでよし、です。

 

私が使っているラジカセはコレです。白と黒の2台を2カ所で使っていますが、安定して動作していますヨ。

 

 

このソニーのラジカセは、ステレオミニプラグの外部入力があるので、外部の様々な音源から録音できます。デジタルデータの音源でも、カセットに録音するだけで、様々なアナログニュアンスが追加され、柔らかい「オールドPAF」のような音になります。‥‥オールドPAFは言い過ぎか。

 

メガベース機能のおかげで、ラジカセにありがちな小口径スピーカーのペラい音ではなく、厚みを感じる音も出せます。(オフにも設定できます)

 

AppleのMusic.appのプレイリストで46分くらいで作って、ラジカセに録音すれば(私的使用に限定=著作権法30条「私的使用のための複製」を踏まえておきましょう)、テープの収録時間ギリギリまで使い切れる「マイベスト」が作れます。90分テープは片面45分ではなく、余分に1分くらいの長さがあるので、46分で作っておくと、片面へ裏返す際に便利です。(テープはリニアだからさ‥‥)

 

64bitのmacOSカタリナのMusic.appは、今まで通りiTunesのスクリプトが使えるので、秒数まで把握してコントロールしたプレイリストを作れます。プレイリストには分数までしか表示されないので、スクリプトで秒数まで把握して、テープの尻尾まで音楽が詰まったカセットが作れますヨ。

 

 

iMacとラジカセの共演‥‥なんて、80〜90年代には思いも寄らなかったですネ。

 

 

 

私は仕事では4KやHDRなどの高品質フォーマット(やがて「標準」フォーマットになりましょうが)に関わっていますが、「高品質」を盲信しているわけじゃないです。むしろ、人間の感覚をできるだけロスなく媒介するためのデジタル高品質が必要だと考えています。

 

一方、「品質にこだわる」とは、必ずしも最新の高品質が基準になるわけではないです。「ノスタルジー品質」というカテゴリもあります。私がカセットを今でも愛用する理由は、まさに「ノスタルジー品質」基準です。

 

カセットの音は、ビット数やサンプリング周波数の低いデジタル波形データとは全く違います。

 

機械装置や電気回路の曖昧なニュアンスがまとわりついた、いわゆるローファイな音です。

 

私はギターを弾くので、ローファイはサウンドメイキングの極めて重要な要です。「音が歪む」「原音からかけ離れた音になる」という性質は、もはやヴィンテージの風格すら漂います。

 

カセットに音を記録すると、まずハイ落ちします。しかし、ビットレートの粗末なMP3とは違い、メロー(って言葉は今はほとんど使いませんが)なニュアンスになります。もしカセットの記録音を再現したければ、デジタルなら96KHz-24bitのプロセシングは必要かと思います。

 

加えてコンプレッション。「テープコンプレッション」の強烈なコンプ感は、テープの大きな魅力です。音が割れる近くまで音量を追い込むと、咄嗟の過大入力の際にダイナミックレンジの圧縮効果がかかります。私はギターでも深めのコンプが好きなので、テープコンプレッションのニュアンスも好きなのです。

*ラジカセの中には自動レベル機能(リミッター)が付いているのもあり、テープコンプレッションと似たニュアンスになりますが、アタックやディケイの癖で容易に聴き分けられます。ラジカセの自動レベルは元に戻るまでの反応が大袈裟なんですよネ。

 

決して原音に忠実ではないカセットの音は、

 

角がとれた優しい音

可聴域におさまった聞きやすい音

ワウフラッターによる微妙な音ゆれのアナログ感

テープヒスノイズが環境ノイズと馴染む効果

 

という、まさにデジタルサンプリング技術が突破した旧時代の技術課題が、皮肉にも「大きな魅力」になっています。

 

高価なスタジオモニターヘッドフォンでガチ聴きするのではなく、ラジカセのスピーカーからテキトーに音を流す‥‥のが、ちょうど良いです。

 

 

 

「高音質」には拘りませんが、「音質」には拘っているからこそ、ラジカセを今でも使うのです。

 

私は192KHzで24bitのサウンドインターフェイスを使う一方で、古き品質のニュアンスも愛好しています。

 

ハイを知るからこそ、ハイ以外の味わいも恋しくなるし、ローの良さも改めて認識するのです。

 

そして、ローもハイも、両方の感覚や経験が必要だと解ってくるのです。

 

*40年前の小学生の頃に弾いてたグレコ・レスポールから抜き出したギターの回路。音量調節って、音量の信号を直に調整するのではなく、アース(グランド)に逃す(ショートさせる)量で調整するって、知ってました? ‥‥今更ながら電気回路の面白さを、レストアで再認識しています。

*デジタルばかりだと、ハンダ付けとか等身大の感覚を忘れがち‥‥ですよネ。

*ちなみに、この回路(3PUのちょっと特殊なレスポール)はProcreateで実体配線図っぽく描きとってメモしてあり、CTSの新品カスタムポットやオレンジドロップのコンデンサ(巨大!)に総入れ替え、セレクタ(=これが3PUゆえに特殊でな)やジャック、PU、配線材など、全ての電気回路をリプレースする予定です。

 

 

 

 

こんな話を書くと、「アニメだってローファイが‥‥」とか言い出す人間が出てきそうですが‥‥、おいおい、都合よく便乗するなよ、です。

 

今のアニメ制作は、ローファイを狙って解像度や色域を昔のレベルに抑えているのではなく、10年前の品質レベルのままでしか運用できないからです。

 

アニメ制作事情は決してローファイの良さゆえに、1.5KSDRを選んでいるのではなく、制作環境やシステムの都合に大きく影響されているがゆえです。自由にローもハイも選択できるわけではないのは、4Kにいまだに踏み出せない状況が無言で物語っています。

 

ローファイを目指すなら、16ミリフィルムのシミュレーションをしなくちゃね。

 

今回のコロナの影響で、アニメ制作も次世代に転換して、ローもハイも自由に扱えるよう進化したいものです。

 

4KHDRが扱えるようになれば、そこで改めて、16ミリの素朴な風合いが愛しく感じられるでしょう。そして、あえて、限定された色域やモーションでアニメを作ることもあるでしょう。

 

 

 

最近はテレワークのご時世ゆえに、ビットレートの低い音声をそこら中で耳にします。カセットテープより格段に劣る音質です。

 

カセットの音は、インフラの都合による粗いデジタル音声ではなく、長年の技術が育んだレトロな質感です。

 

まあ、ノスタルジーは多分に含まれてはいますが、今でもテープディレイやアナログコンプ、真空管アンプのシミュレーションが、デジタルプロセスに存在することを考えれば、アナログの揺らぎが大きな魅力を放ち続けているのは確かなこと‥‥ですネ。

 

 

 

ちなみに‥‥、クラシック音楽は、基本的にカセットテープとの相性は悪いです。テープヒスやワウフラッターがもろに打撃となって、不快な音になってしまいます。

 

クラシック音楽全般は、Amazon MusicのHDで96KHzのデジタル音源を、それなりに良いヘッドフォン(K240とか)でじっくり聴くのが心地よいです。

 

カセットに合うのは、ポップス、歌謡曲、アニソン、ジャズ、フュージョン、ロック‥‥と言ったバンド編成〜ドラムとベースの「リズム隊」が存在する楽曲ですネ。

 

ジャズも、オール生楽器(ピアノもベースもドラムもアコースティック)のビル・エヴァンスではなく、ジョージ・ベンソンとかウェス・モンゴメリーなどの「電気楽器」が含まれているタイプだと、カセットに合います。

 

ハイとローを両方持っていれば、自分の好みに合わせて使い分けられます。

 

2020年代の今だからできる特権‥‥ですネ。

 

 



calendar

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930    
<< June 2020 >>

selected entries

categories

archives

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM