2011年3月3日木曜日

AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する方法 - AWK

AWKプログラムを動かす
AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKの入力ファイルは、AWKプログラムの中で追加、変更、削除(= キャンセル)する事が出来ます。
変数 ARGC と ARGV を使います。


**** 手順
o 3つの手順について纏めました。
    + 1. 入力ファイルを後で追加する方法
    + 2. 読み込み予定の入力ファイルを削除(= キャンセル)する方法
        + (この手順を応用すると、入力予定のファイル名を変更する事も出来ます。)
    + 3. 後ろに続く入力ファイルをまとめて削除(= キャンセル)する方法

o 1. 入力ファイルを後で追加する方法
    + 次の書き方が便利です。「 ARGV[ARGC++] = "ファイル名" 」
    + ARGV[ARGC] に追加したいファイル名を入れた後に、ARGC に 1 を加えます。
--------
BEGIN {
    ARGV[ARGC++] = "ネギパーティ参加者.txt";
    ARGV[ARGC++] = "ネギパーティ参加者その2.txt";
}
{
    print "参加者 :" $1 "さん";
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


o 2. 読み込み予定の入力ファイルを削除(= キャンセル)する方法
    + 次のように書きます。「 ARGV[消したいファイルの順番] = "" 」
--------
BEGIN {
    ARGV[1] = ""; # 最初に読み込むファイルをスキップします。
}
{
    print "参加者 :" $1 "さん";
}
--------

    + ARGV[1] に別のファイル名を指定すると、AWKは指定したファイルを読み込みます。

o 3. 後ろに続く入力ファイルをまとめて削除(= キャンセル)する方法
    + 次の書き方が便利です。「 ARGC = (合計ファイル数 + 1) 」
--------
BEGIN {
    ARGC = 2; # ファイルを最初の1つだけ読み込みます。
}
{
    print "参加者 :" $1 "さん";
}
--------

    + この他に、2番目の方法を使って、ARGV のファイル名を1つずつ消す方法もあります。


o 詳しい情報はこちらです。
    + ARGC = ARGVに入っている要素の個数
    + ARGV = AWK起動時に指定した入力ファイル名とコマンド名
    + ARGIND = ARGVにおける現在入力中ファイルの位置 (Gawk専用)


**** メモ
o BEGIN だけでなく、ファイル読み込み中に変更する事が出来ます。
    + 読み込み中のファイルを削除した時の動作は、処理系によって異なります。
    + 詳しくは、「ARGC = ARGVに入っている要素の個数
o 現在のファイルの位置を調べたい時は、変数 ARGINV のメモ「ARGIND = ARGVにおける現在入力中ファイルの位置」(Gawk専用)をどうぞ。
    + この変数は Gawk限定ですが、メモ欄に、mawkなどでも動かす為の情報を載せました。


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKプログラムを動かす
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > 入力ファイルを手入力する
    AWKPATH = コマンドでAWKファイル名を指定する時、ファイルの場所を省略する(Gawk, mawk32専用)
    BEGIN = 最初に実行する

Edison プラグインで、WAVファイルからピアノロール(= MIDI)に変換する方法 - FL STUDIO

ミキサー
○FL9.1
Edison は、WAVファイルなどの音声ファイルを加工するプラグインです。
その中に、音声ファイルからピアノロールに変換する機能があります。

o 大雑把に、音の傾向を把握したい時に便利です。
o 変換するのは、ノート(= 音符)と Velocity (= 音を弾く強さ)だけです。
o 正確な譜面にしたい時は、後で手作業で修正します。


**** 手順
o ミキサーを開きます。F9 キーが簡単です。
o ミキサー画面右上の空いている欄で、左側の▼を押します。
o 選択肢が出てきますので、「Select」-「Edison」
o Edison 画面の紫色部分に、音声ファイルをドロップします。
    + もしくは、紫色部分をクリックして、音声ファイルを選びます。
o 紫色部分に音声ファイルの波形が出てきます。内容を確認したい時は、左上にある横向き▲ボタンを押します。

o ここで、おもむろに、チャンネルウインドウを手前に出します。
o そして、ピアノロールに置き換えたい所を、緑色に光らせます。
    + 楽器名ボタンの右隣にある、光る部分です。

o Edison 画面に戻って、左から4つ目。工具アイコンをクリックします。はさみマークの右隣にあります。
o 選択肢が出てきますので、右下付近にある、「Convert to score and dump to piano roll」。

o ピアノロールに変換した後は、Edisonは不要です。
    + Edison 画面を閉じたい時は、Edison画面右上のx印。
    + ミキサーから Edison プラグインを外す時は、Edison を選択した時の▼をもう一度押します。
        + 選択肢が出てきますので、「Select」-「(none)」


**** 確認したバージョン
o FL STUDIO 9 Producer Edition   Version 9.1.0 (Signature Bundle)


==
関連ページ:
    ▼ミキサー(= Mixer)
    ▼FL STUDIO
    ▼制作メモ
    > Wave Candy プラグイン = 現在鳴っている音の波形を視覚的に確認する
    Fruity Balance プラグイン = エフェクトを通す途中で音量や定位を変更する
    ミキサートラックの名前を初期値に戻す

2011年3月2日水曜日

FOR /L = FOR文で普通に数を数える方法 - Windowsのコマンドプロンプト(bat,cmd)

WindowsコマンドのFOR
○Windows XP
コンピューター言語の FOR 文と言えば、数を数えて繰り返す例が良く出てきます。
Windowsの FOR コマンドで普通に数を数えたい時は、FOR に /L オプションを付けます。


**** 書式
--------
for /l %変数名 in (初期値, 増分, 最後の数) do 実行するコマンド
--------

o コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + 但し、変数名に限り、大文字小文字を区別します。
o /l = /L オプションです。
o %変数名 = 変数になる名前です。変数名は1文字で指定します。(例: %i)
    + バッチファイルでは、%%変数名。「%」を2つ書きます。
    + 変数名のおすすめは、英字1文字。こちらはヘルプに書かれています。
        + 大文字小文字を区別しますので、使う時には気を付けます。
        + (仕様外の動作)実際には、英字の他に、数字や、漢字などの全角文字も使用出来ました。(= Windows XPの場合です。)
o 初期値 = 最初に変数に入る値です。整数で指定します。
    + 負の数も指定出来ます。
    + 実数を指定すると、小数点以下を無視するみたいです。
o 増分 = 繰り返す時に増やす数です。整数で指定します。
o 最後の数 = 終了条件となる数です。整数で指定します。
    + 増分計算する時に「この値を通過」すると、実行は止まります。
o 実行するコマンド = DO の後に書きます。
    + 複数並べたい時は、丸括弧(= 小括弧)で括る事も出来ます。
        + 括弧内で「環境変数を設定し、その値を参照する」時には、小技が必要になります。
        + 詳しくは、「バッチファイル。IF文やFOR文の中で複数コマンドを書く時の注意点
    + 大掛かりになる時は、CALL文が便利です。
    + 変数の使い方については、こちらをどうぞ
        + 「%変数の使い方
        + 「環境変数の使い方。置換と部分文字列

** 構文の区切り文字について
o カンマ区切りですが、空白区切りでも正しく動きました。
    + もっとも、ヘルプには書いていませんので、カンマを付けて書く事をおすすめします。


**** 戻り値 ( ERRORLEVELの値。確認分のみ )
o (設定なし) = このコマンドは、ERRORLEVELの値を更新しません。
    + 但し、FOR の中で実行するコマンドが ERRORLEVELの値を更新する事があります。
    + 「[1 の使い方が誤っています。」 = FOR文の書き方が間違っています。FOR の文法を見直して下さい。


**** 使用例
o コマンドプロンプト画面で動かす時の書き方
--------
@echo off
for /l %i in (3, 9, 39) do echo ミクさんの買い物カゴの中身。ネギ %i 本
echo on
--------

    + コマンド名やキーワードは、大文字小文字のどちらでも大丈夫です。
    + /l = /L オプションです。

o バッチファイルで動かす時の書き方
--------
@echo off
echo 蕎麦に合うネギを買いに来たミクさん。
for /l %%i in (3, 9, 39) do echo ミクさんの買い物カゴの中身。ネギ %%i 本
echo お蕎麦の事を忘れていませんか。ミクさん。
--------

    + 変数名の前に「%」を2つ付けます。


**** メモ
o 繰り返し文の途中で強制的に止めたくなった時は、「Ctrl」キーを押しながら「C」キーを連打します。
    + 短い処理の場合、3回程度押すと止まります。
o 途中で停止したい時は、「Ctrl」キーを押しながら「S」キー。


**** 確認したバージョン
o Windows XP Service Pack 3


==
関連ページ:
    ▼FOR = 繰り返し実行する
    ▼Windowsコマンド。制御文と環境変数▼ABC順
    ▼コマンドプロンプト画面
    ▼制作メモ
    > FOR のオプション無し = FOR文でファイルだけを処理する、もしくは、文字列を処理する
    FOR /D = FOR文でフォルダーだけを処理する、もしくは、文字列を処理する
    FOR /R = FOR文でサブフォルダーも処理対象にする
(2011年5月16日追加と訂正。書式欄の変数名。大文字小文字を区別する。推奨は英字のみ)