mieki256's diary



2014/12/24(水) [n年前の日記]

#1 [dxruby] DXRubyとAyameとイントロとループとスレッド

DXRuby は 60FPS でメインループが回っているけど、それより速い周期でループを回す部分を作って、そこでBGMの切り替えをしたら、自然に繋がってるように聞こえないかなと思えてきたので、Ruby の Thread とやらを使って試してみたりして。

_bgmloop2.rb
require 'dxruby'
require_relative 'ayame'

if true
  bgm_intro = Ayame.new('test58intro.ogg')
  bgm_loop = Ayame.new('test58loop.ogg')
  bgm_intro_time = 6.888
else
  bgm_intro = Ayame.new('test59intro.ogg')
  bgm_loop = Ayame.new('test59loop.ogg')
  bgm_intro_time = 13.714
end


bgm_intro.predecode
bgm_loop.predecode

intro_time = 0
bgm_step = 0

# BGM処理用スレッド
t = Thread.new do
  loop do
    case bgm_step
    when 0
      # イントロ再生開始の指示待ち
      nil

    when 1
      # イントロ再生開始
      bgm_intro.play(1, 0)
      intro_time = Time.now.to_f
      bgm_step = 2

    when 2
      # イントロ再生終了待ち
      if intro_time + bgm_intro_time < Time.now.to_f
        # loop BGM 再生開始
        bgm_loop.play(0, 0)
        bgm_step = 3
      end

    when 3
      # loop BGM再生中
      nil

    when 4
      # loop BGM停止
      bgm_loop.stop(1)
      bgm_step = 0

    when 5
      break
    end

    Ayame.update
    sleep(0.001)
  end

  bgm_intro.stop
  bgm_intro.dispose

  bgm_loop.stop
  bgm_loop.dispose
end

fnt = Font.new(24)
Window.loop do
  break if Input.keyPush?(K_ESCAPE)

  if Input.keyPush?(K_Z)
    if bgm_step <= 0
      # BGMを再生していないので、イントロ再生開始
      bgm_step = 1
    elsif bgm_step == 3
      # loop BGM 再生中なので停止する
      bgm_step = 4
    end
  end

  if bgm_step >= 0
    msg = [
      "z : start intro",
      "    intro play start",
      "    intro playing",
      "z : stop loop bgm",
      "    loop BGM stop"
    ]
    Window.drawFont(8, 8, msg[bgm_step], fnt)
  end

end

bgm_step = 5
t.join

試してはみたものの、違いが分からない…。元の ogg の作りがマズいのだろうか。

別スレッド内で Ayame.update を呼んじゃってるけど、これってアリなのかな…。勝手な想像では、おそらく Ayame.update が音の再生開始等の処理も担っていて、となるとメインループ内に Ayame.update を置いておくと再生開始タイミングも 60fps になってしまって意味が無いのではないか、と思って別スレッド内に置いてガンガン呼びまくるようにしてみたのだけど。ちなみにこの状態でも、フェードアウト等の秒数指定は、指定通りに動いてるように聞こえた。

ていうか、メインループ内でBGMを切り替えるやり方も、切り替え時にビミョーにずれてるとは気付かれないのではないか、てな気分になってきたり。何度も聞いてるうちに、よくわからなくなってきた…。

sleepの精度が分からない。 :

Ruby で Thread を使って sleep(秒数) でループを回すソレは、環境によってどうなるか不明という話もあるそうで。

Ruby の sleep() は小数点以下も指定できるので、ミリ秒(ms)単位でもsleepできるように思えるけれど、OSによってsleepできる精度? 分解能? が違ってるそうで。Windows NT の場合、sleep が 10ms の精度?だから、それより小さい値を指定しても意味が無い、という話も見かけた。 しかし、XP、Vista、7、8 とWindowsのバージョンが上がった際に、そのあたり何の変更も無かったのかな、改善されてたりしないのかな、という疑問も。

調べてみたら、Windows の場合、時間を測る仕様は3種類ほどあるらしく。

_QueryPerformanceCounterを実時間計測には使えない - 音宮志久の日々の考え

マルチメディアタイマーとやらを使えば 1ms 単位で測定できるらしいから、もし、Windows版の Ruby がそのあたりを使ってたら、昔と違って 1ms の精度で sleep できたりするのかも、と素人考えで思ったりもしたけど、そのへんの実装に何か変化があったのかどうかも分からない状態で。

ひとまず上のソースで、sleep(0.001) を sleep(0.0005) にしてみたら、CPU使用率が急激に上昇したので、指定値が何かしらの形で反映されてる、ような気もする。

曲データの作り方でも誤魔化せそう。 :

例えばだけど、イントロ部分の最後で、
  • シンバル? クラッシュライド? を「バシャーン(シャンシャンシャン…)」と鳴らしてる上にループ部分を載せてみたり
  • ドラムだけ叩いて「ダダダダダッ、ダンッ…(シーン)…」と意図的に無音部分を作ったり
  • Glitch でテンポを崩したり
等をすれば、繋がりが誤魔化せるんじゃないのか、とも。

#2 [nitijyou] 自転車で買い物に

蛍光灯が1本切れたのでケーズデンキまで。ついでにダイソーとリオンドールに。

20Wタイプの蛍光灯を買ってきたけど、帰宅後、家族から予備があると知らされて、ギャフン。

先日購入したコンデジ、Canon PowerShot A3300IS を入れるケースをケーズデンキで物色したけれど。値段が 1,280円とか、一番安いモノでも980円とかで悩んでしまったり。中古のデジカメだから、既に傷だらけなわけで。そこまで払うのもなあ…。ということで、ダイソーでそれっぽいケースを購入して済ませようと。金属のファスナーがついてるケースだからよろしくないのだけど。傷をつけない・増やさないことを考えたら、金属のファスナーはマズいのではないかなあ。でもまあ、100円だから…。

リオンドールでガムや夜食等を購入。

#3 [zatta] 「ピーピー音」は警告音にならない話

ウチの親父さんは歳をとって聴力が衰えてしまい、人の会話は聞き取れるのだけど、高い周波数の音は聞き取れない状態でして。なもんだから、家電等が発する「ピーピー音」は、周波数の問題で聞こえないのであります。 コレ、全部聞こえない。たまに家族が、「アレ? 今のピーピー音は何?」と尋ねても、「俺には何も聞こえなかったぞ」と返されるわけで。

日本のメーカがコストダウンで努力して、結果、ピーピー音で知らせる仕様に落ち着いて、そういう家電等が普及してるのが現状だろうけど。これからはお年寄りがもっと増えるわけですよ。つまり、ウチの親父さんのように、「ピーピー音」が聞こえない方も増えてくるのは間違いないわけですよ。だから、この仕様で延々作り続けてたらマズいよなと。警告音のつもりで鳴らしても、そもそも音が聞こえないのでは、ソレって警告音にならないわけで。

だからと言って、「どうせ聞こえないなら削ってしまえ」「更なるコストダウンが期待できるわい」てなわけにもいかない。目を離していても機器の状態が変わったことを伝えるためには、音を発するのが手っ取り早いわけでして。

さて、どうすればいいのだろう?

喋らせるのはどうか。 :

とりあえず、これからは、家電に喋らせればいいんじゃないかなあ、と夢想するのですが。

ウチの親父さんも、例えば Panasonic製のFAX付き電話機は、フツーに使えているのです。ソイツは喋るんです。「用件が○件あります」「FAX用紙を入れてください」「送信ボタンを押してください」 ―― 人の声の周波数だから、「ピーピー音」が聞こえない親父さんでもモーマンタイ(無問題)。

とは言え。喋らせるとなると色々問題は出てくるだろうなと。
  • 部品のコストが高くなる。
  • 耐久性が不安。警告を発する家電は、どれも熱の変化が大きめだったり、若干水に濡れることもありえる機器。チップの稼働温度範囲を超えないか。スピーカのコーン紙がふやけないか。(今なら違うスピーカ種類もある?)
  • せっかく機能をつけても、お年寄りが、「自分はまだ年寄りじゃない!」「だからそんな機能はどうでもいい! 要らん!」と言い出して、機能・仕様を否定しそう。
喋って教えてくれれば、そもそも、「アレ? 今のピーピー音は何?」なんて疑問も出てこないわけで、あらゆる年齢のお客さんにとって便利じゃないのか、とは思うのですが。

喋ること自体は、問題無く実現できそうではあるけど。随分昔から ―― 自分が学生の頃から、ADPCMで波形を圧縮して持ってROM容量節約するとか電話機関係ではフツーにやってたし。今なら、 _YAMAHAが1チップで歌を歌わせちゃったり してるし。

それに、「ウチの全ての製品で必ず喋らせるのだ。それがウチの会社でもやれる社会貢献の形や」と方針さえ決めてしまえば、共通部品として大量生産できてコストダウンにも繋がるだろうし。

ただ、一番の障害は、「喋らせる必要あるの?」「ピーピー音でいいじゃん」と言い出す人達の存在、かもしれず。

まあ、別に、「ピーピー音」と同じコストで、お年寄りでも聞こえるぐらいに改善された警告音を実現できるアイデアがあるなら、それで問題無いわけで。何にせよ、これからはそのへん何かしら一工夫が必要だろうなー、と思うのでした。

#4 [anime][zatta] 子供は一種類じゃない

随分前の話なのですけど。とあるアニメーターさんが、
「自分が子供だったとしてもローニャは見ない」
「子供ってのは、もっと俗っぽいものが好きなのだ」
と発言してる場面を目にしまして。

自分もソレを読んで、半分は同意しつつ、半分は、ソレちょっと違うよなー、と思ってしまったので、そのへんの思考をメモ。只の思考メモです。

子供ってのは、年齢によって嗜好が変わるよなと。要は、「子供」という単語で一括りにするのは無理があるよなと。

ざっくり大別しただけでも…。 このへん、子供向けの作品に取り組んでる人なら、「いやいや、もっと細かく分類できるよ?」と言い出しそうですけど。あくまでざっくりと、てな話ってことで一つ。

戦隊シリーズを例に出すと説得力が出てくるのかな。戦隊シリーズも、「入学」「卒業」「再入学」があると言われているのです。…「入学」じゃなくて「入園」だったのかな。単語・呼称が怪しいですけど。
前述の、とあるアニメーターさんが思い浮かべたであろう子供像は、「悪ガキ時代」の子供ですわな。その時期の子供は、たしかに低俗なモノが大好き。「まいっちんぐマチコ先生」とか…例として古いか。とにかく、その時期の子供なら、ローニャのような作品は馬鹿にして見ないだろうと自分も思うわけですが。

でも、ローニャの場合、監督のお子さんがまだ小さいらしいので、そこに向けて、つまりは「良い子時代」の子供に向けて作ってる気がするわけですよ。

自分も、「あらいぐまラスカル」「ペリーヌ物語」「母をたずねて三千里」「赤毛のアン」等を見てた時期があって。今見ると退屈な作りだけど、当時は何も考えず、毎週ポケーッと見てたわけで。そういった「良い子時代」なら、ローニャは全然イケそうだよなと。

何の話だっけ。えーと。

要するに、大人が「子供」という単語を耳にした時、瞬間的に特定の子供の姿を脳裏に思い浮かべてしまいますが。実際には、その思い浮かべた子供像より、もっと幅広い、色んな子供の姿が存在しているので、そこはちょっと気をつけないといかんのかもしれんなあ、てな話かなと。

大人って物忘れが激しいから、自分が子供だった頃の事すら結構忘れちゃうもんで。一応記憶に残ってても、特定の時期の子供時代しか覚えてないから、そのイメージしか持てなくて。

なので、「自分が子供だったとしても〜」と思った時は、「ちょっと待て。その子供時代って、どの子供時代のこと?」と自分に少し問いかけてみると、少し正確に状況を把握できるのかも、などと思ったりもしましたが、それって難しいですわな。自分が通ってきた色んな子供時代をすぐに思い出すことができないからこそ大人なわけでして。なかなか難しい。

てなことを思ったのでメモ。

コレ、前にも書いたかなあ…。もうそんなことすら思い出せなくなってる自分…。

以上、1 日分です。

過去ログ表示

Prev - 2014/12 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project