思考ノイズ

無い知恵を絞りだす。無理はしない。

関ジャム:「プロが選んだサザンオールスターズ名曲20選」

大ネタ中の大ネタ、サザン特集。名曲の多さ、幅広い年代に愛される楽曲の多さ故、頑張って20曲に収めていたようですが、それでも1時間枠では、一つ一つの楽曲の特徴とか、関ジャム特有の研究的なロジックの説明が薄まってしまい、結果、物足りなくってしまったという印象でした。 関ジャニのセッションをなくしたなど、製作者側の苦節も見えましたが、ユーミン特集のときのようにもう少し楽曲を抑えて一つ一つを濃くするか、2時間スペシャルなどで時間を延ばすなどしないとサザンは収まらなかったのかなと感じています。難しいですね。

というわけでもメモもなんだかただのリストアップみたいになっちゃいました。

83年 マチルダBABY

  • ジャーロッくバンドの進化
  • シンセの使い方が秀逸

79年 思い過ごしも恋のうち

  • 研究して真似しようとしてもできなかった

78年 勝手にシンドバッド

  • 斬新なラテンパーカッション
  • EmとAmのアレンジ

98年 爆笑アイランド

  • 社会風刺、ロック、エレキ
  • ネガティブではなく笑い飛ばす感じ

96年 愛の言霊

  • 言葉が持つ響きとリズムでメロディーを奏でる
  • 言葉の意味を超えたメロディ感
  • 音、メロディ、歌詞が一体となっている

M7というコードの使い方

  • おしゃれになりがち。サザンはおしゃれを超える。
  • さりげなく曲に溶け込ませる
  • 歌のメロディではなく、バックにのせる
  • 計算ではなく、本能的に使っている?

85年 メロディ

  • 日本語と英語の使い方が発音が絶妙

00年 TSUNAMI

  • 昭和の歌謡曲のルーツに顧みて、一字一句日本語が吟味されている
  • ロックと歌謡曲をルーツ
  • 当時の集大成といえる

79年 奥歯を食いしばれ

  • ブルーシーなボーカル
  • 日本では唯一無二な歌い手

18年 闘うもの達へ 愛を込めて

  • 歌詞のSF感を引き出してる

14年 東京VICTORY

  • オクターブ奏法のベース
  • ロックとEDMのハイレベルな融合

一音に一文字の日本語の歌謡法を変えた。 日本語のアクセントの場所を決めて一音に複数の言葉を詰め込む たくさんの情報を詰め込むことができるようになった、ロックの発明

逆に、TSUNAMI,涙のキッスは一音に一文字という歌謡曲トラディショナルな演奏法を披露 トラディショナルな演奏方法においても新しい演奏方法を模索

80年 シャ・ラ・ラ

85年 鎌倉物語

  • 桑田と同じくサザンの声
  • 母性のあふれる声を堪能できる

84年 ミス・ブランニュー・ディ

  • 原がリフをキーボード手引きで行っている

90年 希望の轍

  • イントロの掴みが最高

原の音とり、引き方はブルージー 自動演奏をしないで生演奏のところがすごい

92年 HAIR

  • ユーモアの中での哲学的な世界観
  • 抽象的な詩

92年 ニッポンのヒール

  • ユーモアたっぷりに世間をぶった切る
  • 批判の先にも自分がいて、俺たちはだめだという自虐こみでのユーモア

85年 吉田拓郎の唄

  • 先輩を名指しにしたタイトル「俺なら過去を歌わない」
  • 実は休みにはいる吉田へのエール

84年 よどみ萎え、枯れて舞え

  • あいりんふうけ症 という天才的な造語のセンス

85年 Brown Cherry

92年 慕情

  • いかがわしい歌詞の中に、深い叙調的な歌詞をいれて言葉の威力を増す

TV「関ジャム」: ユーミンの音楽的発明

ユーミン松任谷由実、もしくは荒井由実。今回の関ジャムはこのユーミンの発明をフューチャー。彼女が世に出た70年代はフォークソング全盛期。シンプルなコード進行に、シンプルな歌詞をのせるのが音楽の主流の時代にもたらした発明についての特集でした。 数多あるユーミンの楽曲を70年代、80年代、90年代にわけて彼女の発明を解説しています。

  • 70年代

  • 当時主流なフォークはアメリカの音楽からの影響を受けていたが、ユーミンはUKロックの影響を多大に受けている。

  • ひこうき雲はUKロックバンド「プロコロハルム」の「青い影」のコード進行を受けている。コードが下がり続けていく進行。

  • 74年 「海を見ていた午後」
    • 歌詞が絵画・風景画をみているような描写。実際の固有名詞を入れて現実感を出しながら、現実の場所とは微妙に異なるが、聞いていて心地のよい言葉を選んでいる。例「山手のドルフィン」=>実際は「根岸のドルフィン」。
    • コード進行はG/Aという分数コードを入れることで、不思議な浮遊感、空気感を演出。
    • 全体的にリアルとファンタジーが入り混じる演出を行っている。
  • 76年 中央フリーウェイ
    • 実際は「中央自動車道」。中央フリーウェイでおしゃれ。
    • 右に競馬場、左にビール工場はリアル描写

*80年代 - 80年 サーフ天国、スキー天国 - 80年 恋人がサンタクロース - 81年 守ってあげたい - 84年 ノーサイド - 85年 シンデレラ・エクスプレス - 88年 リフレインが叫んでる - 89年 ANNIVERSARY

苗場スキー場のタイアップ曲が入るが、当時はバブルスキーブームの前で、時代をさきどっていた。

ここでユーミンの発明を3つほど紹介 - サビでの転調がすごい - 恋人がサンタクロース - 「つむじ風~」の前後、サビの途中でコード進行が GからDへ - 転調の違和感をかんじさせず自然にかつ、サビの途中でさらに盛り上げるポイントをつくりあげている

  • 構成の巧みさ

    • 恋人がサンタクロース
      • Bメロからサビにいくと見せかけて、ギターソロの間奏を挟んだ後に、Bメロ、サビ、のシーケンス
      • 間奏にいくことで高揚感を盛り上げていき、サビで爆発させる
  • カメラの台数を増やした歌詞作り

    • ダイアモンドダストが消えぬ間に
      • 映像的なとらえ方、カメラワークを意識した歌詞、とにかく視点が目まぐるしく変わる
      • 1コーラス目で、「真夏のクリスマス」南半球、2コーラス目で「ひとりの冬」、北半球の冬に代わる。
      • 「紅サンゴ」、「トナカイ」と夏と冬を対照させながら、角という共通点でリンクさせる
      • 同様に、「Diamond Dust」「いくせんの泡」と夏と冬を対比させているが、キラキラという共通点でリンクさせている
  • 90年代

    • 93年 真夏の世の夢
    • 94年 Hello, my friend
    • 95年 輪舞曲(ロンド)
    • 94年 春よ、来い
    • 75年 ルージュの伝言 (映画タイアップ)
    • 73年 ひこうき雲 (映画タイアップ)
    • 99年 シャングリラ (イベントタイアップ)
  • 感想 大ファンでもなかったのですが、さすがに今回出てきたユーミンの曲はすべてわかりました。これはまさに新しい時代を築いた歌手であったことの証左なのでしょう。Apple Musicにアルバムつくって聞いてみようかと思っております。 番組は3つの世代に分けた割に、90年代の「発明」の描写がほとんどなかったのは、彼女の素晴らしい発明については次世代の若者にも浸透し、90年代にはある程度一般化したテクニックになってしまったということなのでしょうか。 たまたま聞いていたラジオ番組「アトロク」で、加山雄三ユーミンが出てきたときに「俺にはできない」と舌を巻いたというエピソードを紹介されていました。それぐらいすごい発明をしたユーミンもある時代で音楽の流れが変わった事を感じた、と発言をしていたとことです。音楽の流れを読み取れるのが一流の証、ではあるのでしょう。こうした流行が音楽史を作っていき、その流れのなかで彼女はこうした発明で、輝かしい一時代をつくったのだと感じました。

TV「関ジャム」 「プロボーカリスト達が選んだ実は歌うのが難しい歌」メモ

テレ朝でやっている音楽番組「関ジャム」は音楽のロジックをわかりやすく素人に説明するという超良質番組ということ今更ながら気づきました。音楽を含めた芸術作品にもきちんとしたロジックがありそれを理解することはとても心地よさというのに気付いてから、こうした番組が大好物です。 実験的にメモを取ったのでこちらに残してみたいと思います。今後も、時間があるときにメモって行きたいと思いますが、未定。

2018年10月14日放送「プロボーカリスト達が選んだ実は歌うのが難しい歌16選」 ゲスト・

実は難しい4つ(5つ?)の要素ごとに作品例を紹介。

1.音程が取りにくい

「ふゆがは~」はドソドソ。シンプルだけど難しい2回繰り返し 2回目の「ソ」上がりきるのが難しい 「はじまるよ」のひとつひとつのおとをきちんととりにくい。特に間の音

音程が微妙な上がり下がりしていて実は難しい

2人でうたうDuoソングをそれぞれ、メロディーとコーラスが重なるハーモニーのため、実は複雑な主旋律が崩れやすい

Aメロから錆にかけてのシャウトへの変化が難しい

サビの起伏の激しいメロディ。聞きこまないとうたいこむのが難しい

2.キーが高い曲

聞くだけではスムーズだがキーがとても高い さらにサビのハイトーンではノンブレスが続く ブレスはメリハリ。効果をどこにつかうか。本曲はサビ中に入れずに弾き語りだからとてもすごい

  • 愛をこめて花束を Superfly 09年

高い音域。効率よく息を声に変えないと、枯れるし音が外れる

  • 奇跡を望むなら・・・ JUJU 06年

全体的に高いキー。しっかり歌うためには安定感が必要 大サビが特にやばい。ブレスの取り方と安定感が上手

3.リズムが難しい曲

ミディアムテンポにみえて、曲全体がレイドバックで構成されている レイドバック、発声をリズムのテンポの少し後ろに取ることで、曲調に粘りがでる。ただし後ろすぎると不快な遅れとなるため難しいテクニック

  • ハピネス AI 11年

ヒップホップとR&Bが混じっている独特な曲 伴奏がリズミカルなので走ってしまいがちになる テンポが単調で惑わされがちだが、オンビートではなくレイドバックがはいる

4.言葉数が多い

大サビ前の早口パートは言葉数が多く、音程を合わせるのが難しい 「ときには」の「と」は小節が変わる前に食い気味にくる、変則

歌詞量が多く、一つ間違えるとすぐに間違えがち

5. 世界観の表現が難しい

  • 逢いたくていま MISIA 09年

声量がないと痛い目を見る曲 歌声、技術をすべて表現に昇華している 客の呼吸までもコントロールする世界観 ふつうは低い音域が地声、高い音域が裏声だが、低音域を裏声っぽく歌うことで、高音域をしっかりささえられる

音域の高さももちろん難しいが、矢沢にしか歌えない 「泣きの響き」の技術 西城秀樹「ローラ」。感情が音声に含まれる

桑田の声質ではないと成立しない曲

譜面通りうたっただけでは、歌詞の切なさが表現できない。久保田の抑揚が必要な曲

加山の生まれ持った音域のすごさ。80を超えてのこの音域は天性のもの

マッキーとか歌いやすそうで実は超難しいんですよね。CDとかで聞いている分には名曲なのですが、音程がとれずにひどい目に合うこともしばしばです。もう音痴を直すことはあきらめて楽しく歌うという公害体質になってしまいましたが、またカラオケいきたいなりました。 あと個人的に4番の言葉数は、ミスチルの曲、多い感じですよね。「ニシエヒガシエ」とか反則てきな言葉の入れ込みじゃないですか。でも桜井さんが唄うとマジかっこいんだよなぁ。

2つの株を平均的に購入するための株数を計算する

問題

A君は月毎に一定額を貯蓄をしようと考えましたが、銀行の金利が低すぎるのでインデックスファンド(ETF)への積み立てを考えました。ファンドAとファンドBにいままでの額と合わせて評価額が同額になるように毎月割り当てようとしましたが、10口単位での購入のため決まった額範囲内でバランスをとる必要があります。毎月の時価に合わせてそれぞれのファンド何口ずつかう必要があるでしょうか。 <<

という悩みをプログラムで解決してみます

積み立てをおこなっているのですが、国内インデックスと海外インデックスのバランスを取りながら毎月購入をしたいんですよね。購入時期になった時の悩みが10口単位の口座を何ずつ買えばよいのか、ということになります。解決するためのプログラムを書いてみました。Git Hubにコード上げてます。

github.com

解説

まず本日の価格を設定する必要があります。関数で適当に設定しますが、一応ランダムに変更するように設定しました。ファンドは2つあるので数値で識別します。

def stock_value(stk):
    if stk == 0:
        value = 1400
    elif stk == 1:
        value = 1000
    err = random.randrange(-100, 100)
    return value + err 

あとは初期設定。現在持っているそれぞれのストック数、価格などを適当に設定します。

# Current stocks you have
purchased_stock = [90, 110]
# range to purchase in next time
purchase_range = [50000, 60000]
# amount of unit to buy in next time 
buy_balance = [0, 0]
# List for buy units
balances = []
# Dispersion
vers = []
# current value for each account 
stk_value = [stock_value(0), stock_value(1)]

10口単位でそれぞれの株数を上げながら、購入する価格のレンジ内に収まる株数をチェックします。総当たりです。

total_value = sum([buy_balance[i]*stk_value[i] for i in range(2)])
while total_value < purchase_range[1]:
    while total_value < purchase_range[1]:
        # If the balance is in purchase range,
        # culculate dispersion and add lists
        if purchase_range[0] < total_value :
            balances.append(list(buy_balance))
            values = sum([(purchased_stock[i]+buy_balance[i]) * stk_value[i] for i in range(2)])
            ver = sum([((purchased_stock[i]+buy_balance[i])*stk_value[i] - values/2)**2 for i in range(2)])
            print(buy_balance, stk_value, total_value, values)
            vers.append(ver)
        buy_balance[0] += 10
        total_value = sum([buy_balance[i]*stk_value[i] for i in range(2)])
    buy_balance[0] = 0
    buy_balance[1] += 10
    total_value = sum([buy_balance[i]*stk_value[i] for i in range(2)])

それぞれの組み合わせの中で分散値が一番低いものを選びます。それが、総額のバランスがとれた今回の組み合わせの口数を示す番号となります。

# Checking minimum dispersion in the list
idx = vers.index(min(vers))

結果

BALANCED PLANが今回買うべき株数になります。

 ======== RESULT ========
CURRENT STOCK VAL:  [1440, 943]
CURRENT STOCK    :  [90, 110]
CURRENT PURCHASED:  [129600, 103730]
CURRENT VALUE    :  [1440, 943]
PURCHASE RANGE   :  [50000, 60000]
BALANCED PLAN    :  [10, 40]
AFTER PURCHAE    :  [144000, 141450]

漫画「一丁目のトラ吉」

anond.hatelabo.jp

ブックマークコメントでも書いたのですが、「一丁目のとら吉」という漫画が実家に置いてあってよく読んでました。誰がどのようにして買ったのか全く不明だったのですが。 この増田をみてついつい思い出して検索したところ、電子書籍でもあるんですね。本当にいい時代。 5巻完結、そういえば途中までしかなくて続きを読んでいなかったこととも思い出してついつい一括購入しちゃいました。

主人公は猫のこの作品。さらに特徴として猫同士は言葉によるコミュニケーションがとれるのだが、人間の言葉は象形文字のような言語で、「なにか言ってるんだろうけど、内容は詳しく理解できない」様子が表現されています。ネコ語、人間語なる解釈もでてきます。

f:id:bython-chogo:20180729112556p:plain

この物語は飼い主家族や妹猫のチビ、犬のモジャとの「家族・家庭」、さらには飼い猫、野良をふくめたご近所さんの猫たちとの「外」とのコミュニティを舞台として、人間社会に適応して生活を送る猫たち物語をトラ吉の目線からすすめられていきます。何気ない人間の日常が猫目線になると途端に滑稽に見えてくるような描写や、捨て猫、責任感が薄い飼い主など猫を取り巻く日常の中の社会問題が当事者?の視点から書かれているので実はよりリアリティが浮きだってくるように見えます。

私が特に好きな話はシロクロという猫の回です。 ごはんだけ特定の家からいつももらって普段は野良のように生活をしている半野良のシロクロは、その飼い主家族が自分をおいて突然引っ越しをしてしまったことを知ります。

f:id:bython-chogo:20180729121421p:plain

それでも、もぬけの殻となった家の前を離れようとしないシロクロ。まわりの猫も彼を諭すのですが頑に居座り続けます。そんななかその家に別の家族が引っ越してきます。シロクロとその新しい家族とのやりとりがトラ吉目線で進められます。

作者のセツコ・山田さんは自分の家族や飼い猫をモデルにして実際に起きたことをベースに猫目線で描いているのかと思われます。猫を愛し、よく観察していなくてはこんなリアルな話はなかなか書けないのではないでしょうか。

猫好きにこそぜひ読んでいただきたい作品となります。

反復性肩脱臼の手術から1年経過

早いもので反復性肩脱臼からおよそ一年たちました。

bython-chogo.hatenablog.com

このブログでは機械学習系の記事をメインで書いていますが、いまだに半分以上のアクセスがこちらの記事のようです。同じ悩みを抱える人は意外と多く、どのような手術なのか気になって人も多いみたいですね。こういうレポートって大事なんだなとアクセスログを見るたびに思います。そこで一年後どうなっているかの記録と、思い出せる限りの1年の経過も残しておきたいと思います。

現在、1年後の状況

当然ですが、不自由なく普通に生活ができています。手術した左肩はきちんと後ろまでまわせますし、脱臼することはないです。可動域は右と比べて少ないのは否めないと思います。後ろに回すと引っ張られる感じはありますが、人口のひもで固定しているので仕方ないのかと思います。あとリハビリを頑張ればもっと行くのかもしれませんが、私生活でその必要は感じられないので私個人としては十分といえます。

一年の経過

  • 術後すぐ:術部の回復をおこなうため、サポータによる固定で過ごします。利き手ではなかったので、まだよかったですが、それでも不自由でした。寝るときもつけたままでねるので、寝返りもできないし、ずっと吊っている左肩の肩こりはとてもひどかったのを覚えています。リハビリも週に2回です。
  • 術後一か月経過:サポーターは外せますが、可動域はとても狭いです。前から上に手を上げようとしても最初は90度まであがりませんでした。生活にも影響がでます。左手を使って胴体から離して行わなくてはいけない作業は大変です。高いものを取るとかは右手でもできますが、何気に靴ひもを結ぶことは両手を使わなくてはならず、さらに胴体から離れてやる作業なので難しいです。リハビリは引き続き週二回です。
  • 術後三か月経過:だんだんと可動域が広がっていきますがまだ制限がでます。前から上に腕を上げる運動は180度までもう少しのところで止まってしまい、なかなかそこから改善せずもどかしい思いをしました。診断の時もリハビリが芳しくないということでもし次回の診断までによくなければ筋肉を柔らかくする注射をうつといわれました。結果として一か月後の診断では合格点がでてその注射はうたなくてもよくなりましたが。それを受けてリハビリの回数も週1回になりました。
  • 術後六か月経過:運動が解禁されて、ジム通いもスタートしました。可動域も実生活に問題がない程度まで動くようになりました。そこから数か月してリハビリも終わりとなりました。

というわけでリハビリが不安になった時もありましたが、結果として日常生活にはなにも問題ないレベルまで回復しました。脱臼するかもしれないと可動域をセーブしていた術前が嘘のように特に何も気にせずに生活をしています。半年以上のリハビリはありましたが、今後の人生や老後のことも考えるとやってよかったとはっきりと言えます。お悩みの方は半年以上はすこし不自由ですが、なるべく早いうちに決断することをおすすめします。

f:id:bython-chogo:20180501002752p:plain:w300

<SVM> サポートベクタマシン自主勉強(1):方針

ちょっと間が空いてしまいましたが機械学習のエントリとなります。前回最後にちらっとお話ししたのですが、サポートベクタマシン(SVM)に足を突っ込んでみたいと思っています。

SVMのコーディングが自力でできない問題

ただ、このSVMは何回か挑戦して失敗している経緯があります。前回のようにはじパタ本だけでは私のレベルでクリアができない代物となります。そこではじパタと合わせて、「異常検知と変化検知」の内容と相互補完してみています。

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

異常検知と変化検知 (機械学習プロフェッショナルシリーズ)

そこでやっと、SVMの概要について理解した。。。。つもりでした。しかしながらいざこれをスクリプトに落とそうとするとどう書いていいのかわからない。つまりロジックがわかったつもりでも、実行に移すとなるとどうしていいのかわからなくなってしまいました。

頼るべきはGoogle先生集合知

しかしながらもうすでに歴史のあるこの分野では検索してしまえばいくらでもコードが出てきます。今回は以下のサイトさまのコードを拝借してやはりアヤメデータを使った分類を行ってみました。

qiita.com

こちらのコードは y = x の線形で分離をして  t を1, -1とわけています。アヤメデータもとりあえず、3種のうちの最初の1種を1, その他を-1としてインプットするコードに改造をしてみました。 その結果が以下となります。

f:id:bython-chogo:20180430230944g:plain

おぉ、なんとなく分類する線が学習を経るごとに赤と緑の間にはいっていきますね。赤が1としたアヤメデータなのでうまくいっているようです。

ここからスタート

SVMについてまとめることはたくさんありそうです。ラグランジュ乗数法、正則化、双対問題、KKT条件、カーネルトリック。数学的要素が多くどこまでカバーできるかわかりませんが、まず次回はこのスクリプトについて解いていくことから初めてみようかと思います。正直きちんと着地できるかまだ不明瞭ではあります。

コード

Jupyter Notebookで実行しています。

import sys
import numpy as np
from sklearn import datasets
import itertools
import matplotlib.pyplot as plt
#inline pyplot

from matplotlib import animation
from IPython.display import HTML

iris = datasets.load_iris()
features = iris.data
feature_names = iris.feature_names
targets = iris.target

class SVM():
    def __init__(self, v1=0, v2=2, t=0):
        self.X = np.array([features.T[v1], features.T[v2]]).T
        self.T = np.array([1 if i==t else -1 for i in targets])
        self.N = self.X.shape[0]
        self.d = self.X.shape[1]
        self.alpha = np.zeros(self.N)
        self.beta = 1.0
        self.eta_al = 0.0001
        self.eta_be = 0.1
        self.v = [v1, v2]

    def test(self):
        print(self.X.shape)
        print(self.T)
        print(self.N)
        print(self.alpha)
        
    def plot_map(self, w, b):
        plt.subplot(1, 1, 1)
        seq = np.arange(4.0, 8.0, 0.02)

        plt.xlabel(feature_names[self.v[0]])
        plt.ylabel(feature_names[self.v[1]])
        plt.xlim(4, 8)
        plt.ylim(0, 8)

        plt.plot(seq, -(w[0] * seq + b) / w[1], 'k-')
        #plt.autoscale()
        plt.grid()
        for t, marker, c in zip(range(3), '>ox', 'rgb'):
            #print(self.X[self.T==1], 0)
            #print(self.T)
            plt.scatter(
                features[targets == t, self.v[0]],
                features[targets == t, self.v[1]],
                marker=marker,
                c=c,
            )
            #print(linear_pro(w, np.array([1.,1.,1.])))
        plt.show()
        
        
    def rtin(self, show=False):
        
        k_w = np.array([-100.0, -100.0])
        k_b = -100.0
        value = []
        for _itr in range(1000):
            for i in range(self.N):

                self.delta = 1 - (self.T[i] * self.X[i]).dot(self.alpha * self.T * self.X.T).sum() - self.beta * self.T[i] * self.alpha.dot(self.T)
                self.alpha[i] += self.eta_al * self.delta
            for i in range(self.N):
                self.beta += self.eta_be * self.alpha.dot(self.T) ** 2 / 2

            index = self.alpha > 0
            w = (self.alpha * self.T).T.dot(self.X)
            b = (self.T[index] - self.X[index].dot(w)).mean()

            value.append([w, b])

            if (np.power(np.array([k_w - w]), 2) < 0.00001).all() and (k_b - b) ** 2 < 0.00001:
                print(_itr)
                break

            if _itr % 10 == 0 and show:
                self.plot_map(w, b)        
            k_w = w
            k_b = b
        return value
svm = SVM(t=0)
_ = svm.rtin(True)