フィボナッチミュージックというのをみかけて、groovyで実現したかったので、再びチャレンジ 2007/10/21

やりかけてたことにチャレンジ。
フィボナッチミュージックというのをみかけて、groovyで実現したかったので、再びチャレンジ

元ネタ

  • L'eclat des jours(2007-08-07)
    http://arton.no-ip.info/diary/20070807.html#p01


  • ほとんど、そのまま、groovy + quicktimeにしてみました。

    勉強になったことはループのuptoという書き方。
    あと、rubyのputs。

    import quicktime.QTSession
    import quicktime.std.music.ToneDescription
    import quicktime.std.music.NoteChannel
    import quicktime.std.music.NoteRequest

    QTSession.open()
    NoteChannel noteChannel = new NoteChannel(new NoteRequest(new ToneDescription(1)))

    def fib(n){
    if(n<2) {
    return n
    }
    fib(n-2)+fib(n-1)
    }

    s = 1

    1.upto(30) { n ->
    x = fib(n)
    noteChannel.reset()
    println x
    x %= 19
    x += 40
    println x
    noteChannel.playNoteRaw(s as int, 60)
    s = x
    sleep(100)
    }
    QTSession.close()


    最後あたり再帰での計算が重くなります...Orz...

    参考
  • プログラマメモ2: groovyでmidi演奏の最初の一歩 - quicktimeを使って
    http://programamemo2.blogspot.com/2007/08/groovymidi-quicktime.html
  • :