みろりHP


緑色さんの多目的ブログ
みろりえいちぴー
ごゆるりとおくつろぎあさーせ。
| カテゴリ:みろりHP |
アコギ 緑色『AmとEメインの短い曲』



自作曲だぜー! 1分半ほどのインスト曲。

最初のアコギ演奏を公開したときちょろっと書いたように、俺はそもそも作曲がしたくてアコギを買ったんだ。今月でアコギ購入からちょうど一年なので、そろそろやんなきゃなと作曲に挑戦してみた。いやあ楽しめたぜ、タイヘンだったけど。作曲もタイヘンだったし、アルペジオが入ってるから弾くのもタイヘンだった。自分で書いた曲が自分でうまく弾けないときの情けない気持ちがご理解頂けるだろうか。ちなみに、『AmとEメイン』と銘打ってはいるんだけど、これは手の形がAmとEのコードの形だってだけなので、実演奏でこれが何の音になってるのかは俺にはわからん。



無事に完成はしたけれど、以下のような一ヶ月間の試行錯誤があった。
  • ヒマなとき適当に口笛を吹いてメロディを作ってみる。
  • フレーズができたら「こんなんどうかな?」と知り合いに吹いて見せる。
  • 「それってあの曲のフレーズじゃね?」と言われる。ゼロからオリジナルのメロディを作るのは無理筋と悟る。既存のメロディを頭から排除して口笛を吹くってのはめちゃめちゃキツイ。
  • これまでの演奏で知ったいろんなコードを鳴らしてみて、ピンとくるコードを探してみる。
  • 4カポでAmとEの組み合わせは好きかもしれんと思う。
  • そのコードのアルペジオでメロディをいろいろ作ってみる。(これで出来たのが序盤のイントロ、ヴァース部分。)
  • 思いつかなくなる。ここでだいぶ詰まる。
  • 「全部ストロークだったら簡単なのにー!!」とじゃかじゃか鳴らしてるうちに突然歌詞を作り出す
  • 歌詞が完成してしまう。(これのおかげで全体のコード進行が完成。)
  • 俺は歌をうたいたいんじゃなくてアルペジオがしたいんだと思い出す。
  • 「あれ? 作った歌詞の音を全部アルペジオに置き換えればいいんじゃね……!?」
  • 全部アルペジオにしたら、全体の雰囲気が薄味に感じたので、一部ストロークにしたり、和音にしたりする。
  • 演奏練習しながら細かいところを修正して完成。

「作った歌詞をアルペジオに変換すればいいんじゃね?」というのはナイスな思いつきだったと思う。あれが作業のターニング・ポイントだった。いろいろ回り道をしたけど、次回作曲をするならばもっとシンプルに……
  • 好みのコードを繋げてストローク曲を作る。
  • それに歌詞をつける。
  • 歌詞をアルペジオにする。
  • 薄味なところに音を足して調整。
  • あとは演奏しながら思いついた修正を入れる。
って感じでイケるか。

はじめのころは「絵だったら簡単に書けるのに!」と頭を抱えたりもしたが、絵も曲もやることは実際一緒なんだよな。
  • ペン、あるいは音で書きたいモティーフを思いつく。
  • それを象徴するモノ(アトリビュート)をスケッチ。(曲ではコード探しに相当。)
  • アトリビュートを引き立てる装飾をスケッチ。(そのコードを元にメロディをつける作業に相当。)
  • 実際に書く。(演奏に相当。)



これが楽譜。実演奏は一部違うケド。カポは0だろうが1だろうが4だろうが成立する。



| 緑色 | みろりHP | comments(0) |
| カテゴリ:プログラミング |
Python accept_mouse_click pygameアプリ・クリック変換モジュール



前日譚: Python pygameをMacで使うのはヤメとこうぜ
前日譚では問題点がふたつあった。
  • mp3が読めねー
  • キー入力受け付けねー
後者のキー入力をマウスクリックで代用するモジュールを作ったぜ。現在緑さんはMacとWindowsの2台使いなわけだけれど、やっぱMacでもpygameアプリを開けないと不便だ。mp3のほうはムリ。OSがWindowsじゃなければ読み込みをスキップするくらいしか思いつかん。



# accept_mouse_click.py

import pygame.locals as pgl

def switch(event,
           left_click  =pgl.K_z,
           scroll_click=pgl.K_c,
           right_click =pgl.K_x,
           scroll_up   =pgl.K_UP,
           scroll_down =pgl.K_DOWN):
    '''マウスクリックをキー入力に変換します。
    かえたいとこだけ指定してください。
    '''

    change_table = {
        1: left_click,
        2: scroll_click,
        3: right_click,
        4: scroll_up,
        5: scroll_down,
    }

    if event.type != pgl.MOUSEBUTTONDOWN:
        return event

    if event.button not in change_table.keys():
        print('<accept_mouse_click NOTICE> Unknown mouse click:'
              + str(event.button))
        return event

    return DummyEvent(pgl.KEYDOWN, change_table[event.button])

class DummyEvent:
    '''eventのダミー。
    オリジナルのeventがreadonlyだったため、ダミーを作ります。
    ようはtypeの中にMOUSEBUTTONDOWN、keyの中にK_*が入ってりゃいいんだからさ!
    '''

    def __init__(self, type_, key):
        self.type = type_
        self.key = key
いやあモジュールを作るのにも慣れてきたなあ! クラスなんかもサクッと作っちゃったりしてね! ほんで使い方が以下。

for event in pygame.event.get():

    # 左クリックをZキー、スクロールボタンをAキーに変換したい場合。
    event = accept_mouse_click.switch(
        event,
        left_click=K_z,
        scroll_click=K_a
        )

    if event.type == KEYDOWN:
        # 以下、キー入力を受け付けるスクリプト……。
こんなのをこれまでのpygameアプリにぺたぺた貼り付ければ、Macでもマウス操作で遊べるようになるというわけだ。



今回のポイントは DummyEvent クラス。このモジュール、ようは event オブジェクトの中身を覗いてみて、マウスクリックだったらキー入力に入れ替えるってことをしてる。でも実は event オブジェクトの野郎が生意気にもreadonlyだったんだよな。だから書き換えられない。どうしたもんかと頭を捻ったのだが、こいつがどんな高度なクラスから生成されたオブジェクトだろうと、結局必要なのは type パラメータと key パラメータに定数が入ってるという事実だけなんだよな。であれば、そのふたつのパラメータをもったオブジェクトを自分で作っちまえばいいじゃんという流れで解決。やったー!

| 緑色 | プログラミング | comments(0) |
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>
+ みろりHP内検索
+ 閲覧記事
+ 過去記事アーカイブ
+ カテゴリ
+ 年月選択
  • 2017年 10月 (3)
  • 2017年 09月 (6)
  • 2017年 08月 (6)
  • 2017年 07月 (8)
  • 2017年 06月 (4)
  • 2017年 05月 (7)
  • 2017年 04月 (8)
  • 2017年 03月 (7)
  • 2017年 02月 (10)
  • 2017年 01月 (6)
  • 2016年 12月 (8)
  • 2016年 11月 (8)
  • 2016年 10月 (5)
  • 2016年 09月 (5)
  • 2016年 08月 (7)
  • 2016年 07月 (9)
  • 2016年 06月 (6)
  • 2016年 05月 (8)
  • 2016年 04月 (10)
  • 2016年 03月 (10)
  • 2016年 02月 (8)
  • 2016年 01月 (9)
  • 2015年 12月 (9)
  • 2015年 11月 (6)
  • 2015年 10月 (5)
  • 2015年 09月 (4)
  • 2015年 08月 (8)
  • 2015年 07月 (5)
  • 2015年 06月 (3)
  • 2015年 05月 (7)
  • 2015年 04月 (8)
  • 2015年 03月 (12)
  • 2015年 02月 (8)
  • 2015年 01月 (4)
  • 2014年 12月 (5)
  • 2014年 11月 (5)
  • 2014年 10月 (7)
  • 2014年 09月 (4)
  • 2014年 08月 (7)
  • 2014年 07月 (6)
  • 2014年 06月 (4)
  • 2014年 05月 (12)
  • 2014年 04月 (9)
  • 2014年 03月 (6)
  • 2014年 02月 (6)
  • 2014年 01月 (8)
  • 2013年 12月 (7)
  • 2013年 11月 (10)
  • 2013年 10月 (10)
  • 2013年 09月 (9)
  • 2013年 08月 (11)
  • 2013年 07月 (10)
  • 2013年 06月 (9)
  • 2013年 05月 (15)
  • 2013年 04月 (11)
  • 2013年 03月 (5)
  • 2013年 02月 (7)
  • 2013年 01月 (6)
  • 2012年 12月 (9)
  • 2012年 11月 (10)
  • 2012年 10月 (10)
  • 2012年 09月 (4)
  • 2012年 08月 (2)
  • 2012年 07月 (7)
  • 2012年 06月 (13)
  • 2012年 05月 (13)
  • 2012年 04月 (15)
  • 2012年 03月 (4)
  • 2012年 02月 (12)
  • 2012年 01月 (9)
  • 2011年 12月 (5)
  • 2011年 11月 (13)
  • 2011年 10月 (2)
  • 2011年 09月 (2)
  • 2011年 08月 (1)
  • 2011年 06月 (1)
  • 2011年 05月 (4)
  • 2011年 04月 (10)
  • 2011年 03月 (8)
  • 2011年 02月 (11)
  • 2011年 01月 (14)
  • 2010年 12月 (14)
  • 2010年 11月 (17)
  • 2010年 10月 (17)
  • 2010年 09月 (19)
  • 2010年 08月 (22)
  • 2010年 07月 (18)
  • 2010年 06月 (16)
  • 2010年 05月 (19)
  • 2010年 04月 (15)
  • 2010年 03月 (22)
  • 2010年 02月 (18)
  • 2010年 01月 (18)
  • 2009年 06月 (2)
  • 2009年 04月 (1)
  • 2007年 12月 (10)
  • 2007年 11月 (7)
  • 2007年 10月 (9)
  • 2007年 09月 (4)
  • 2007年 07月 (5)
  • 2007年 06月 (11)
  • 2007年 05月 (6)
  • 2007年 04月 (4)
  • 2006年 01月 (20)
  • + ブックマーク
    + 最近のコメント
    + アクセスカウンター
    全体(since 2010.02.03.)
    今日… 昨日…