challenge Tiny MML

文字列の入力をとり、音を鳴らすプログラムを作ってください。

入力はcがド、dがレ、eがミ、fがファ、gがソ、aがラ、bがシ、rが休符とします。この8文字以外の文字は入力に含まれていないと仮定して構いません。おのおのの音符・休符は八分音符・八分休符とします。

オクターブや音の長さの変更、同時発音などの機能は不要です。

サンプル入力(カエルの歌)

cdefedcrefgagfercrcrcrcrcdefedcr

Posted feedbacks - Pnuts


	
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import javax.sound.midi.*
import static javax.sound.midi.ShortMessage.*
code = [69, 71, 60, 62, 64, 65, 67]
TONE = 120
function play(mml){
  mes = new ShortMessage()
  rcvr = MidiSystem.getReceiver()
  for (c: mml) {
      if (c >= 'a' && c <= 'g') {
          co = code[c - 'a']
          mes.setMessage(NOTE_ON, 0, co, TONE)
          rcvr.send(mes, -1)
          sleep(500)
          mes.setMessage(NOTE_OFF, 0, co)
          rcvr.send(mes, -1)
      } else {
          sleep(500)
      }
  }
  rcvr.close()
}
play("cdefedcrefgagfercrcrcrcrcdefedcr")

Index

Feed

Other

Link

Pathtraq

loading...