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 沒有連接線)