部屋を掃除したら漫画が沢山出てきたので書く日記

漫画とか合唱とかUNIXとかLinuxとかについて書く日記です。

タスクスケジューラをコマンドラインから管理する(schtasks)

Windowsには、指定の日時になったら指定の処理を自動で行うための仕組みとして「タスクスケジューラ」という機能があります。
これを使うと、例えば「毎日17:30になったらパソコンをシャットダウンする」みたいな事が出来ます。
「指定時間になったらシャットダウンする」というタスクを元に、この機能をコマンドラインから使うことについて説明します。

前提条件

OS: Windows10 バージョン 1903

がインストールされたパソコンで実行するものとします。

指定時間になったらシャットダウンするタスクを作成

まず、必要なタスクを作成します。これもコマンドラインからできるようですが最初だけなのでGUIから作ることにします。

  • Windowsキーを押下してスタートメニューを表示
  • キーボードから「タスクスケジューラ」と入力し、表示される「タスクスケジューラ」をクリックしてタスクスケジューラを起動

タスクスケジューラ
タスクスケジューラが起動した状態

  • 画面右ペインの「タスクの作成」をクリック、表示される「タスクの作成」画面にて以下の通り入力。
「全般」タブ
名前:シャットダウン
説明:指定された時間にOSシャットダウン実行
  • 「トリガー」タブ -> 「新規」ボタンを押下、「新しいトリガー」画面を開いて以下の通り入力。
開始:実行したい日付と時刻を入力
  • 「OK」を押下して「新しいトリガー」画面を閉じる。
  • 「操作」タブ -> 「新規」ボタンを押下、「新しい操作」画面を開いて以下の通り入力。
プログラム/スクリプト:C:\Windows\System32\shutdown.exe
引数の追加:-s -t 60 -f
  • 「OK」を押下して「新しい操作」画面を閉じる。
  • 「OK」を押下して「タスクの作成」画面を閉じる。
  • 「タスクスケジューラ」画面中央ペインに「シャットダウン」という名前のタスクが表示されている事を確認し、「タスクスケジューラ」画面を閉じる(右上×をクリック、またはファイル -> 終了)

これで、タスクを作ることができました。指定した時間まで待ち、PCがシャットダウンされる事を確認しましょう。

実行日時を変更する

基本的には「タスクスケジューラ」を起動して該当タスクをダブルクリック、「トリガー」を編集して時間を変更すればよいです。
また、定期的にするのでよければ「毎日〇〇時に実行」という指定もできます。

が、私の場合はやりたい日や時間がまちまちで、その都度「タスクスケジューラ」を起動して画面に従い入力、という手続きがだんだん面倒になってきたのでした。

という事で、コマンドから実行することにします。

schtasksコマンドから設定変更する

  • Windowsキーを押下してスタートメニューを表示
  • キーボードから「cmd」と入力し、表示される「コマンド プロンプト」を右クリックして「管理者として実行」をクリック
  • 現在の設定を確認
>schtasks /query /TN "シャットダウン" /v /FO list

以下のように表示される。

フォルダー\
ホスト名:                                       bata64PC
タスク名:                                       \シャットダウン
次回の実行時刻:                                 N/A
状態:                                           準備完了
ログオン モード:                                対話型のみ
前回の実行時刻:                                 1999/11/30 0:00:00
前回の結果:                                     267011
作成者:                                         bata64
実行するタスク:                                 C:\Windows\System32\shutdown.exe -s -t 60 -f
開始:                                           N/A
コメント:                                       N/A
スケジュールされたタスクの状態:                 有効
アイドル時間:                                   無効
電源管理:                                       バッテリ モードで停止, バッテリで開始しない
ユーザーとして実行:                             bata64
再度スケジュールされない場合はタスクを削除する: 無効
タスクを停止するまでの時間:                     72:00:00
スケジュール:                                   スケジュール データをこの形式で使用することはできません。
スケジュールの種類:                             一度だけ
開始時刻:                                       9:12:08
開始日:                                         2019/11/13
終了日:                                         N/A
日:                                             N/A
月:                                             N/A
繰り返し: 間隔:                                 無効
繰り返し: 終了時刻:                             無効
繰り返し: 期間:                                 無効
繰り返し: 実行中の場合は停止:                   無効

実行したい日時を指定する(例:2019年11月14日 11:50とする場合)

>schtasks /change /TN "シャットダウン" /SD "2019/11/14" /ST "11:50" /RU "bata64"

以下のようにユーザのパスワードを聞かれるので入力してEnterを押下。

bata64 の実行者パスワードを入力してください:

正しいパスワードを入力すると以下の通り表示される。

成功: スケジュール タスク "シャットダウン" のパラメーターは変更されました。

再度確認。「開始時刻」と「開始日」が変わっている事がわかる。

>schtasks /query /TN "シャットダウン" /v /FO list

フォルダー\
ホスト名:                                       bata64PC
タスク名:                                       \シャットダウン
次回の実行時刻:                                 N/A
状態:                                           準備完了
ログオン モード:                                対話型のみ
前回の実行時刻:                                 1999/11/30 0:00:00
前回の結果:                                     267011
作成者:                                         bata64
実行するタスク:                                 C:\Windows\System32\shutdown.exe -s -t 60 -f
開始:                                           N/A
コメント:                                       N/A
スケジュールされたタスクの状態:                 有効
アイドル時間:                                   無効
電源管理:                                       バッテリ モードで停止, バッテリで開始しない
ユーザーとして実行:                             bata64
再度スケジュールされない場合はタスクを削除する: 無効
タスクを停止するまでの時間:                     72:00:00
スケジュール:                                   スケジュール データをこの形式で使用することはできません。
スケジュールの種類:                             一度だけ
開始時刻:                                       11:50:00
開始日:                                         2019/11/14
終了日:                                         N/A
日:                                             N/A
月:                                             N/A
繰り返し: 間隔:                                 無効
繰り返し: 終了時刻:                             無効
繰り返し: 期間:                                 無効
繰り返し: 実行中の場合は停止:                   無効

バッチファイルにする

都度都度schtasks コマンドで指定されたオプションを書くのも面倒なので、更に簡略化します。

以下のような記載内容の「shutdown.bat」というファイル名のテキストファイルを作成、適当なフォルダに保存します。

schtasks /change /TN "シャットダウン" /SD %1 /ST %2 /RU "bata64"
schtasks /query /TN "シャットダウン" /v /FO list

コマンドプロンプトを管理者として実行、このバッチファイル格納ディレクトリに移動し、

>.\shutdown.bat 2019/11/15 11:10

と実行すれば実行日時を変更できます。変更したいときにはこれからはこのバッチを実行すれば良くなります。便利ですね。

では。

Windows10のロック画面の画像を保存する

Windows10でログインする前のロック画面では様々な画像が日替わりで表示されますが(Windows スポットライトという機能だそうです)、ある日表示されたハイイロアザラシの赤ちゃんの画像がかわいくて子供たちにも好評だったので、保存したくなったので方法を調べてみました。


windowsfaq.net


こちらに記載の通りなのですが、ちょっと自分なりにアレンジしてやってみました。
Windows Subsystem for Linux (WSL)がインストールされているWindows10パソコンである、という前提です。

%LOCALAPPDATA%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets

エクスプローラでアクセスし、格納されているファイルをとりあえず一時的な作業フォルダにコピー。

作業フォルダを開いたエクスプローラでShiftを押しながら右クリックして表示されるメニューから「Linuxシェルをここに開く」を選択。
WSLのウィンドウが表示されるので、

ls -1 | perl -lne 'printf "mv %s %s.jpg \n",$_,$_'

を実行。各ファイルの末尾に拡張子「.jpg」が付与されるようにリネームされるコマンドが表示されることを確認したら、実際に実行します。

ls -1 | perl -lne 'printf "mv %s %s.jpg \n",$_,$_' | bash -v

エクスプローラに戻り、探していた画像をプレビューから探して保存しておきます。

なお、複数のPCで試してみましたが、表示されているときにやらないとAssetsフォルダ以下には存在しないようです・・・。
画像検索で探した方が見つかるかも

では。

Ubuntu19.10へのアップグレード後にDBD::mysqlでエラー発生

マイUbuntuサーバをUbuntu 19.10にアップグレードした後、毎日の体重をグラフ化したりするのに使用しているHRForecastが正常動作しておらず、エラーを出している事に気づきました。

起きた事

hrforecast.pl --config ./config.pl

を実行しているコンソールに出力されていたのは以下のようなメッセージでした。

install_driver(mysql) failed: Can't load '/opt/hrforecast-income/extlib/lib/perl5/x86_64-linux/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.20: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません at /home/bata64/.plenv/versions/5.28.1/lib/perl5/5.28.1/x86_64-linux/DynaLoader.pm line 193.
 at (eval 158) line 3.
Compilation failed in require at (eval 158) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at /opt/hrforecast-income/extlib/lib/perl5/Scope/Container/DBI.pm line 69.
 at /opt/hrforecast-income/lib/HRForecast/Data.pm line 33.
 at /home/bata64/.plenv/versions/5.28.1/lib/perl5/5.28.1/Carp.pm line 291
	Carp::croak('install_driver(mysql) failed: Can\'t load \'/opt/hrforecast-income/extlib/lib/perl5/x86_64-linux/auto/DBD/mysql/mysql.so\' for module DBD::mysql: libmysqlclient.so.20: M-eM-^EM-1M-fM-^\M-^IM-cM-^BM-*M-cM-^CM-^VM-cM-^BM-8M-cM-^BM-'M-cM-^BM-/M-cM-^CM-^HM-cM-^CM-^UM-cM-^BM-!M-cM-^BM-$M-cM-^CM-+M-cM-^BM-^RM-iM-^VM-^KM-cM-^AM-^QM-cM-^AM->M-cM-^AM-^[M-cM-^BM-^S: M-cM-^AM-^]M-cM-^AM-.M-cM-^BM-^HM-cM-^AM-^FM-cM-^AM-*M-cM-^CM-^UM-cM-^BM-!M-cM-^BM-$M-cM-^CM-+M-cM-^BM-^DM-cM-^CM-^GM-cM-^BM-#M-cM-^CM-,M-cM-^BM-/M-cM-^CM-^HM-cM-^CM-*M-cM-^AM-/M-cM-^AM-^BM-cM-^BM-^JM-cM-^AM->M-cM-^AM-^[M-cM-^BM-^S at /home/bata64/.plenv/versions/5.28.1/lib/perl5/5.28.1/x86_64-linux/DynaLoader.pm line 193.^J^@ at (eval 158) line 3.^JCompilation failed in require at (eval 158) line 3.^JPerhaps a required shared library or dll isn\'t installed where expected^J at /opt/hrforecast-income/extlib/lib/perl5/Scope/Container/DBI.pm line 69.^J') called at /opt/hrforecast-income/extlib/lib/perl5/Scope/Container/DBI.pm line 81
	Scope::Container::DBI::connect('Scope::Container::DBI', 'dbi:mysql:hrforecast;hostname=127.0.0.1', 'bata64', 'XXXX') called at /opt/hrforecast-income/lib/HRForecast/Data.pm line 33
	HRForecast::Data::dbh('HRForecast::Data=HASH(0x5589a8cd0748)') called at /opt/hrforecast-income/lib/HRForecast/Data.pm line 234
	HRForecast::Data::get_complex('HRForecast::Data=HASH(0x5589a8cd0748)', 'money', 'Complex', 'income') called at /opt/hrforecast-income/lib/HRForecast/Web.pm line 110
	HRForecast::Web::__ANON__('HRForecast::Web=HASH(0x5589a84b1848)', 'Kossy::Connection=HASH(0x5589a8aef700)') called at /opt/hrforecast-income/lib/HRForecast/Web.pm line 122
	HRForecast::Web::__ANON__('HRForecast::Web=HASH(0x5589a84b1848)', 'Kossy::Connection=HASH(0x5589a8aef700)') called at /opt/hrforecast-income/extlib/lib/perl5/Kossy.pm line 179
	Kossy::try {...}  at /home/bata64/.plenv/versions/5.28.1/lib/perl5/site_perl/5.28.1/Try/Tiny.pm line 100
	eval {...} at /home/bata64/.plenv/versions/5.28.1/lib/perl5/site_perl/5.28.1/Try/Tiny.pm line 93
	Try::Tiny::try('CODE(0x5589a8aeeff8)', 'Try::Tiny::Catch=REF(0x5589a8aeee60)') called at /opt/hrforecast-income/extlib/lib/perl5/Kossy.pm line 185
	Kossy::__ANON__('HASH(0x5589a8cc7388)') called at /opt/hrforecast-income/extlib/lib/perl5/Plack/Middleware/Scope/Container.pm line 14
	Plack::Middleware::Scope::Container::call('Plack::Middleware::Scope::Container=HASH(0x5589a8ac9ef0)', 'HASH(0x5589a8cc7388)') called at /opt/hrforecast-income/extlib/lib/perl5/Plack/Component.pm line 50
	Plack::Component::__ANON__('HASH(0x5589a8cc7388)') called at /opt/hrforecast-income/extlib/lib/perl5/Plack/Middleware/Static.pm line 18
	Plack::Middleware::Static::call('Plack::Middleware::Static=HASH(0x5589a8aca0e8)', 'HASH(0x5589a8cc7388)') called at /opt/hrforecast-income/extlib/lib/perl5/Plack/Component.pm line 50
	Plack::Middleware::StackTrace::try {...}  at /home/bata64/.plenv/versions/5.28.1/lib/perl5/site_perl/5.28.1/Try/Tiny.pm line 100
	eval {...} at /home/bata64/.plenv/versions/5.28.1/lib/perl5/site_perl/5.28.1/Try/Tiny.pm line 93
	Plack::Middleware::StackTrace::call('Plack::Middleware::StackTrace=HASH(0x5589a8aca178)', 'HASH(0x5589a8cc7388)') called at /opt/hrforecast-income/extlib/lib/perl5/Plack/Component.pm line 50
	Plack::Component::__ANON__('HASH(0x5589a8cc7388)') called at /opt/hrforecast-income/extlib/lib/perl5/Plack/Middleware/Lint.pm line 24
	Plack::Middleware::Lint::call('Plack::Middleware::Lint=HASH(0x5589a8aca2b0)', 'HASH(0x5589a8cc7388)') called at /opt/hrforecast-income/extlib/lib/perl5/Plack/Component.pm line 50
	Plack::Component::__ANON__('HASH(0x5589a8cc7388)') called at /opt/hrforecast-income/extlib/lib/perl5/Plack/Util.pm line 145
	eval {...} at /opt/hrforecast-income/extlib/lib/perl5/Plack/Util.pm line 145
	Plack::Util::run_app('CODE(0x5589a8aca268)', 'HASH(0x5589a8cc7388)') called at /opt/hrforecast-income/extlib/lib/perl5/Starlet/Server.pm line 366
	Starlet::Server::handle_connection('Plack::Handler::Starlet=HASH(0x5589a8a95c90)', 'HASH(0x5589a8cc7388)', 'IO::Socket::INET=GLOB(0x5589a8cc6ef0)', 'CODE(0x5589a8aca268)', '', '', '') called at /opt/hrforecast-income/extlib/lib/perl5/Starlet/Server.pm line 190
	Starlet::Server::accept_loop('Plack::Handler::Starlet=HASH(0x5589a8a95c90)', 'CODE(0x5589a8aca268)', 100) called at /opt/hrforecast-income/extlib/lib/perl5/Plack/Handler/Starlet.pm line 80
	Plack::Handler::Starlet::run('Plack::Handler::Starlet=HASH(0x5589a8a95c90)', 'CODE(0x5589a8aca268)') called at hrforecast.pl line 77
install_driver(mysql) failed: Can't load '/opt/hrforecast-income/extlib/lib/perl5/x86_64-linux/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.20: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません at /home/bata64/.plenv/versions/5.28.1/lib/perl5/5.28.1/x86_64-linux/DynaLoader.pm line 193.

メッセージを精査すると「DBD::mysqlがlibmysqlclient.so.20を見つけられていない」という事が原因だとわかるのですが、発見した当初はCPANモジュールを入れ直したりplenv経由でPerlバージョンを5.30.0にしてみたりと遠回りをしてしまいました(いずれも改善せず)。

で、「libmysqlclient.so.20」が無いらしいという事がわかりましたので確認したところ、

$ ldd /opt/hrforecast-income/extlib/lib/perl5/x86_64-linux/auto/DBD/mysql/mysql.so
	linux-vdso.so.1 (0x00007ffdbc7e0000)
	libmysqlclient.so.20 => not found
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f033e2c3000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f033e0d2000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f033e31d000)

という事で、確かにlibmysqlclient.so.20が見つからない模様。

更に

$ cd /usr/lib
$ ls -l ./x86_64-linux-gnu/libmysqlclient.so*
lrwxrwxrwx 1 root root      20 10月  9 22:03 ./x86_64-linux-gnu/libmysqlclient.so -> libmysqlclient.so.21
lrwxrwxrwx 1 root root      25 10月  9 22:03 ./x86_64-linux-gnu/libmysqlclient.so.21 -> libmysqlclient.so.21.1.17
-rw-r--r-- 1 root root 6776968 10月  9 22:03 ./x86_64-linux-gnu/libmysqlclient.so.21.1.17

という事で「libmysqlclient.so.21」はインストールされているが「libmysqlclient.so.20」は無いようです。

とりあえず「libmysqlclient.so.20」というシンボリックリンクを作ればいいかと思い

$ sudo ln -s libmysqlclient.so.21.1.17 libmysqlclient.so.20

してからhrforecastを起動してみましたが事象は改善せず。

ここで同様事象が報告されていないかGoogle検索してみたところ、

qiita.com

を発見。やっぱりまずはシンボリックリンクを作ってみるよね、と思いつつ、

launchpad.net

というようにlibmysqlclient20のパッケージファイル(.deb)が公開されていたのでこれをダウンロードして

$ sudo dpkg -i ./libmysqlclient20_5.7.26-1_amd64.deb

でインストールしてからhrforecastを再度起動したところ正常に起動しました。

なお、参照した記事ではやっているapt installはいらんのでは(libmysqlclient20というlibmysqlclient21とは別のパッケージを入れたので)と思うので、とりあえずこのまま運用してみます。

考察

  • アプリケーション稼働サーバでむやみにOSアップグレードするのは軽率(ただし反省はしていない)
  • DBD::mysqlが将来アップデートされたら「libmysqlclient.so.21」を使うようになる?そうなったらこの事象は起きなくなるのではないか


では。

LinuxでSCSIデバイス(sdデバイスとsgデバイス)の対応を調べる

LinuxSCSIバイスを示す、sdデバイス(/dev/sdX)とsgデバイス(/dev/sgX)の対応を調べる必要があったので手順をメモします。

お前は何を言っているんだ

www.ibm.com

に、

Linux での SCSIバイスには多くの場合、ユーザーがそのデバイスを認識しやすいような名前が付けられます。例えば最初の SCSI CD-ROMは /dev/scd0 です。SCSI ディスクには /dev/sda、/dev/sdb、/dev/sdc のようなラベルが付けられます。デバイスの初期化が終わると、LinuxSCSI ディスク・ドライバー・インターフェース (sd) が SCSI READ と SCSI WRITE コマンドのみを送信します。

これらの SCSIバイスは汎用的な名前すなわちインターフェース (/dev/sg0、/dev/sg1、/dev/sga、/dev/sgb など) を持っている場合があります。これらの汎用ドライバー・インターフェースを利用すると、SCSIバイスに直接 SCSI コマンドを送信することができ、通常 SCSI ディスク上に作成されてディレクトリー配下にマウントされるファイルシステムを使う必要がなくなります。

と記されている、

  • 「/dev/sda、/dev/sdb、/dev/sdc」のような表記のものをsdデバイス
  • 「/dev/sg0、/dev/sg1」のような表記のものをsgデバイス

と仮に呼ぶ事にします。

で、以下のような事情があります。

  • sdデバイスは一対一でsgデバイスに対応している。(例:/dev/sdbは/dev/sg3と対応)
  • SCSIリザーブなどのオペレーションをする時にはsgデバイスを指定する必要がある
  • sdデバイスの一覧と、sgデバイスの一覧は探しやすい(/dev以下をlsとかすればOK)
  • しかしどのsdデバイスがsgデバイスと対応しているかはわかりにくい

という事で、sdデバイスとsgデバイスの対応を調べる必要がありました。

前提条件

Ubuntu 19.10
CentOS 6

で確認しました。

方法1.sg_mapコマンドで確認する

$ sudo sg_map -i

以下のように表示される。

/dev/sg0  /dev/sda  ATA       TOSHIBA DT01ACA3  ABB0
/dev/sg1  /dev/sdb  ATA       TOSHIBA DT01ACA3  ABB0
/dev/sg2  /dev/sdc  ATA       WDC WD15EARS-00Z  0A80
/dev/sg3  /dev/sdd  ATA       WDC WD15EARS-00Z  0A80

これによって

sg0がsda
sg1がsdb
:

と対応していることがわかります。

この手順を使う条件

sg3-utilsがインストールされている事と、スーパユーザ権限で実行する必要あります。

Ubuntuの場合は

sudo apt install sg3-utils

CentOSの場合は

sudo yum install sg3_utils.x86_64

でインストールできます。

方法2./proc以下のファイルで確認

$ cat /proc/scsi/sg/device_strs

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

ATA             TOSHIBA DT01ACA3        ABB0
ATA             TOSHIBA DT01ACA3        ABB0
ATA             WDC WD15EARS-00Z        0A80
ATA             WDC WD15EARS-00Z        0A80

上から順に、1行目がsg0、2行目がsg1・・・となる。
あとはデバイス情報から何となくsdデバイスが何かを推測する。

この手順を使う条件

/proc以下のファイルの読み取り権限のあるユーザで実行する必要があります。

何らかの都合(お客様システムのサーバである、など)でsg3-utilsがインストールできない場合はこちらの方法でがんばって調べましょう。


では。

アマチュア合唱団の活動中に登場する著作権 2019春

マチュア合唱団で活動していると、著作権は避けて通る事が難しい事柄です*1
そして日本で音楽の著作権を管理している団体の最大手はJASRACなので、いきおい著作権に関する事例の登場人物としてJASRACが多く登場する事になります。

実体験やJASRACに照会したりしてこれまで確認したことを参考に書いてみます。
なお、関連する法令やJASRACの方針の改定などは日々発生する事ですので、最新の情報はJASRAC等に都度確認する事をお勧めします。

前提条件

ここに記載している内容に登場する楽曲は、JASRACが権利を管理しているものとします。

Youtubeニコニコ動画に演奏動画をアップロードしてもいいのか

演奏した合唱曲の音源または動画をインターネット上で無断で公開する事は「著作権上問題がある」と長らく言われてきました。
このブログでも言及したことがありますが、2019年3月現在、アップロードできます。詳細は以下を参照ください。

www.jasrac.or.jp

動画投稿(共有)サイトにおけるJASRAC管理楽曲を含む動画の配信利用については、サイトを運営している事業者側が許諾手続きを行っていますので、JASRACと許諾契約を締結しているサイトであれば、動画の投稿者が個別に許諾を得なくても、JASRAC管理楽曲を含む動画をアップロードすることができます。
ただし、利用方法によっては、手続きが必要となるケース等がございますので、以下のフローチャートおよびご利用上のご注意を必ずご確認下さい。

個人が自分で演奏した録音や動画であれば、ほとんど問題なく利用できると思います。団体だったり、外国の曲をアップロードしたい場合は別途条件が付くようです。
あと、Youtubeだけでなく以下のリスト記載のサービスなら同条件で利用できます。

www.jasrac.or.jp

なお、著作隣接権の侵害がないように、合唱団であれば指揮者、伴奏者、合唱団員といった、演奏に関係する全員からアップロードする事の合意を得なければいけません(さもなくば公開後に揉めるリスクがあります)。
また、自分たちが主催していないイベントでの演奏録音の場合は該当イベントの主催者に連絡して許可を得る必要があります(さもなくば略)。
ちなみにニコニコ動画で自分たちの演奏動画がまったく心当たりがないのにアップロードされている例がいくつかありますが、著作隣接権を侵害されている事になります。揉めたくないので放置していますが当然良い気持ちはしません・・・。

自分たちで編曲した曲を演奏してもいいのか

一般的な合唱曲ではなく、POPSを自分たちで合唱用にアレンジして歌いたい場合は、その曲の権利者から許可を得られれば演奏できます*2
なお、ここでいう「権利者」は多くの場合出版社、レコード会社等の企業、法人であり専用の窓口が存在しますので、しかるべき連絡先から所定の手続きをすれば許可を得る事が可能です。
この場合、以下に記述されている通りJASRACは関係しません。

www.jasrac.or.jp

なお、JASRACでは編曲権・翻案権の譲渡を受けていないため、編曲することなどについて許諾することはできません。

ただしJASRACに問い合わせると、権利者が誰(どこの会社)かと、連絡先を教えてくれます。

高校の吹奏楽部がコンクール等で市販の楽譜から一部を省略する等の「編曲」をして演奏することは良くある事らしく、該当の出版社の窓口で申請を行っているようです。

なお、編曲の許可はされない事もありますし、許可する条件として利用料が発生する事もあるようで、曲や権利者によってまちまちです。
参考に私が所属している合唱団が東京都合唱連盟主催のイベントに出場するにあたり独自に編曲した楽曲を演奏するために色々調べて許可を得ようとした2ケースについてご紹介します。

ケース1:某有名テーマパークのCMソング

JASRACから紹介してもらった権利者である某企業の窓口に電話したところ、「アマチュア団体には原則許可していない事にしているので不可」との回答。つれない。

ケース2:某80年代ヒットソング

JASRACから紹介してもらった権利者である某企業(ケース1とは別のところ)の窓口に電話したところ、「別にいいっすよどうぞどうぞ」的な回答を受ける。
これだけだとあまりにもアレなので一応メールでも回答してもらう。

では。

*1:NHKの受信料のように敢えて無視する例も聞きますが・・・

*2:JASRAC管理楽曲を演奏するにあたっての申請は別途必要です

REGZA Z1の録画用HDD交換をやってみました

はじめに

自宅の液晶テレビ(東芝 REGZA 42Z1)に番組録画用に接続して8年ほど使用しているUSBハードディスク(HDD)から異音(高周波音)がするようになったのを受けて交換したので作業内容を以下の通り記します。

方針

  • 交換元HDD内の番組データは交換先HDDでも視聴できるようにすべて移動(コピー)させる(抽選に当って子供が出演したNHK Eテレの番組録画データなど、大事な番組データが色々あるので消したくない)。
  • 予約設定しているテレビ番組の連ドラ録画予約に影響が出ないようにする(家族からクレームが来るので)。
  • テレビの仕様上録画できる番組数は500個までという事もあり交換元HDDの容量(2TB)を超過しそうな事態はこれまで起きていないが、せっかくだからより大きいサイズ(3TB)のHDDに交換する。
  • HDDのファイルシステム(xfs)を操作できるOSとしてUbuntuVirtualBox仮想マシンで構築、Ubuntu上でデータのコピーを行う(Ubuntuインストールできる物理マシンが用意できなかったため)。
  • コピーはrsyncにて実施し、中断して再開しても差分のみコピーされるようにして作業時間の効率化を図る。
続きを読む

最近買ったイカス合唱楽譜について

昨年は通勤中にスマートフォンからYoutubeを検索しまくり、自身の所属している合唱団のために「あまり演奏されていない良い合唱曲」を探すのを日課にしていました(いまも継続してやってますが)。

その結果として良いと思って購入したいくつかの合唱曲の楽譜を紹介します。別に興味が無いと思いますが自分のストレス対策なので良いのです。

Wanting Memories


Cantus: Wanting Memories – Ysaye Barnwell



Sweet Honey in the Rockというグループの楽曲です。作詩、作曲は同グループ元メンバーのYsaye Maria Barnwellです。


Wanting Memories by Sweet Honey in the Rock

パナムジカなどの日本の通販サイトでは見つけられず、以下のアメリカの通販サイトにてドル建てで購入しました。
なお、上述の動画は男声合唱ですが*1楽譜は混声合唱版のみしか見つけられませんでした。

www.jwpepper.com

Baba Yetu


Baba Yetu - Christopher Tin arr Derek Machan

「St Patrick's College Wellington」というニュージーランドの学校の生徒によるこの演奏を見てグッときました。
元々はシヴィライゼーションⅣというゲームの主題歌で、ゲーム音楽としては初のグラミー賞を2008年に受賞して当時話題になりました。

こちらの原曲や混声合唱版はオーケストラ付きのものしか見当たりませんでしたが、この男声合唱版はピアノ伴奏で演奏できるのでハードルが低いと思います。


Christopher Tin - Baba Yetu (Official Music Video)

こちらは日本の有名な合唱楽譜通販サイト「パナムジカ」で購入できます。

www.panamusica.co.jp

RAMKALI


Ramkali (Indian folk) - National Taiwan University Chorus

台湾大学のNTU Chorus(台大合唱団)が演奏しているこの演奏を聴いてかなりグッときました。

インドのラーガと呼ばれる音楽の様式を取り入れた曲との事ですが、私はストリートファイターⅡのダルシムステージを想起しました。

2018年11月の東京男声合唱フェスティバルでかながわフリーダム・シンガーズで演奏した「Wedding Qawwali」と同じEthan Sperry編曲によるもので、こちらも演奏効果抜群の曲と思われますが前半のホーミーみたいな音が出せるのかが一番気がかりです。
楽譜にはバリトンとベースに「modulate vowels」、すなわち母音を変えながら歌えという指示が書かれています。なので別にホーミーのような倍音が鳴らなくても良いのかもしれません。

bata64.hatenablog.jp

こちらもパナムジカで購入できます。

www.panamusica.co.jp

追分節

柴田南雄が1973年に発表したシアター・ピースです。個人的には日本を代表する合唱曲だと思っています。


追分節考(豊中混声合唱団)

演奏CDは複数枚持っていましたが楽譜は持っておらず、上述の楽譜をパナムジカで買おうとしたときにもうちょっと買うと送料無料との事だったので買う事にしました。

この楽譜で注目は前半の「演奏について」で素材となっている民謡のオリジナル演唱音源が「カセット・テープ」にて提供され、「全音楽譜出版社から借りられる」事です。以前見た古い版の楽譜にそう書かれていたのが、今回買った第26刷(2018年5月25日発行)でも同様だったので思わずtwitterでつぶやいてしまいました。

すると以下の情報を教えてくださる方が登場しました。現在はCDで配布されているようです。良かった。


では。

*1:youtubeには混声合唱の動画も多数あります