Music Code Player 是個網頁程式,可以讓你只用純文字就打出音樂。
要播放音樂,你要使用 MML 語法描述音樂
MML 是 Music Macro Language 的縮寫。本程式使用的 MML 語法不分大小寫,所以說 A4
和 a4
是同樣的意思
CDEFGAB
音符,格式為 音高 升降號 長度 附點
。
音高是 A ~ G 中的一個字母,C
是 Do,D
是 Re,E
是 Mi,以此類推。
升降號是 0 或多個 +
、#
、-
或 =
。+
和 #
是升記號,-
是降記號,=
是還原記號。
長度是個正整數,如 4
代表四分音符。可選擇性增加1個附點,效果和附點音符一樣,是延長至原本長度的 3/2。
以上的各部分,除了音高外都可以省略。而且各部分可用空格分隔,也可以完全不分隔。
如 A + 2 .
和 A+2.
都表示升 A (La) 附點二分音符
P
或 R
休止符,和音符的格式很相似,但沒有音高、升降號。如 P 4
和 R4
都表示四分休止符
O
指定八度,後面的數字表示接下來的音符在哪個八度。O4
是涵蓋中央Do的八度範圍。數字越大,音高越高。
如果沒有用 O
指定八度範圍,那麼八度範圍就會預設為 O4
。
O
指令的效果只延續一個音軌,所以每個音軌都要設定一次,才不會套用到預設的「O4
」
<
往後的音符降八度
>
往後的音符升八度
L
設定音符和休止符沒有指定長度時的預設長度,例如 L8 C C C C L16 D D D D
表示 4 個八分音符 Do 後面跟著 4 個十六分音符 Re
可以加上附點,如 L4.
表示往後沒有指定長度的音符都是附點四分音符。
如果音符沒有長度,也沒有用 L
設定長度,那麼音符的長度就會預設為四分音符。
L
指令的效果只延續一個音軌,所以每個音軌都要設定一次,才不會套用到預設的「四分音符」
T
設定節拍速度,例如 T120
是以每分鐘 120 拍來播放。一拍是四分音符的長度。
如果沒有用 T
指定速度,那麼速度預設為 120。
T
指令的效果會套用到所有的音軌上,因此不論 T
指令放在何處,各音軌的節拍都能保持同步。還有,一個音樂可以有多個T
指令
N
用數字來輸入音高,格式為 N 音高 附點
,音高是非負整數,以半音階為單位,並定義 N48
表示中央Do。
N
可以加附點,但是不能指定長度,如果要改變 N
音符的長度,請使用 L 長度
指令
V
設定音量大小。後面接著的數字表示音量,可以是 0~127 之間的整數。
在 MML 相容模式時,音量只能是 0~15 之間的整數
如果沒有用 V
指定音量,那麼音量就會預設為音量上限的一半,無條件捨去至整數。
V
指令的效果只延續一個音軌,所以每個音軌都要設定一次,才不會套用到預設的「V 音量上限的一半
」
&
和樂譜中的連接線一樣,可以把同音高的音符連起來,如 C2 & C4.
表示把二分音符 (2拍) 和附點四分音符 (1.5拍) 連起來,總共 3.5 拍
MML@
進入 MML 相容模式。在 MML 相容模式中,你可以用逗號 ,
分隔音軌
;
離開 MML 相容模式,另外 ;
是單行註解,所以 ;
右邊的文字不會當成音樂播放
指令之間可用空格分隔,但這不是必要的,所以可以視版面需求,在音符間塞入幾個空格。還有,所有指令都不分大小寫
以下的指令是本程式特有的功能
,
(逗號)
往後的音符降八度。如果在 MML 相容模式下,則會進入下一個音軌
'
(單引號)
往後的音符升八度
/
和弦,用法是音符 / 音符 ... / 音符
,如 C/E/G
是同時播放 Do、Mi、Sol。只有第一個音符需要指定長度,其他音符的長度會等於第一個音符的長度
K 調性名稱
設定調號。調性名稱都視為大調解讀。如 KD
表示音樂以 D 大調演奏。設定調號後,往後沒有升降號的音符都會加上調號所指定的升降記號,如 D 大調的 Do 和 Fa 會升半音,這時 KD D E F G A B C
會演奏成 D E F+ G A B C+
。
如果要指定為小調,請將調性名稱設定為它的關係大調,例如一個音樂是 d 小調,它的關係大調是 F 大調,則輸入 KF
。
調號名稱可以輸入升降號,如降 B 大調可用 KB-
表示
調號的設定會延續到所有的音軌
K 升降記號
設定移調,如 K++
表示把往後的音符全部升兩個半音。移調效果發生在音符加上調號和升降號之後,所以 KD K++ F
會演奏升 F 再往上兩個半音,也就是升 G。
可以用這個指令把整個音樂轉調,而且和前一個指令「設定調號」一樣,設定會延續到所有的音軌
如果同一個音軌有多個移調指令 (注意不是設定調號),則移調效果會疊加。例如 K++ K-
會造成音樂升兩個半音,再降一個半音,總效果就是升一個半音。另外 K=
是沒有效果的,因為本程式把它解讀成「升 0 個半音」,不是「消除移調效果」
! 音軌編號
可以切換到其他音軌,是的,這個程式可以支援多音軌。音軌編號是 0 或正整數。例如 !0 C !1 F
會同時播放 Do 和 Fa。
各音軌可以交錯排列,如 !0 C D !1 E !0 F !1 G A
會解讀成 !0 C D F !1 E G A
。
進入 MML 相容模式時的音軌編號是 0,每輸入一個逗號 (,
),就會跳到目前音軌編號 + 1 的音軌,不過並不建議將 MML 相容模式的 ,
和這個功能混用
~
功能和樂譜中的連結線一樣,不過和先前講到的 &
指令有些許不同。在搭配和弦指令 /
使用時,&
會嘗試連結所有在同一和弦的音符,而 ~
需要緊接在音符之後,並且只連結它緊接著的音符。如 c4/e4 & c4/e4
效果如同 !0 c4 & c4 !1 e4 & e4
,而 c4/e4~ c4/e4
效果如同 !0 c4 c4 !1 e4 & e4
(注意第 0 音軌的 C 沒有連接線)