“MuseLive Documents Alpha 2.5.3”的版本间的差异

来自沃社Wiki
跳转至: 导航搜索
 
(未显示同一用户的11个中间版本)
第7行: 第7行:
 
版本:Alpha 2.5.3
 
版本:Alpha 2.5.3
  
'''目前只支持加载固定文件:<code>project.mlp</code>(与主程序在同一目录)'''
+
'''目前只支持加载固定文件:<code>project.mlp</code>(与主程序在同一目录)。'''
  
示例工程的演奏方式记录在<code>sample.txt</code>
+
示例工程的演奏方式记录在<code>sample.txt</code>里。
  
 
=== 软件基本操作 ===
 
=== 软件基本操作 ===
第15行: 第15行:
 
制作工程,打开程序,然后'''保证选中程序窗口''',按键即可触发音频。
 
制作工程,打开程序,然后'''保证选中程序窗口''',按键即可触发音频。
  
===工程文件格式 ===
+
=== 工程文件格式 ===
  
 
==== 概念解释 ====
 
==== 概念解释 ====
第37行: 第37行:
 
所有命令以'''行'''为基础,换行代表一个新的'''命令'''。
 
所有命令以'''行'''为基础,换行代表一个新的'''命令'''。
  
每一行中用空格或者水平制表符分隔开来形成许多'''部分''',但是等号会是一个'''例外''',无论它两边有多少空格(制表符)都会将两边的部分连成一个整体,仍为一个部分'''。
+
每一行中用空格或者水平制表符分隔开来形成许多'''部分''',但是等号会是一个'''例外''',无论它两边有多少空格(制表符)都会将两边的部分连成一个整体,仍为一个'''部分'''。
  
 
当然等号也有'''例外''',一个每一对双引号中的第二个会结束一个'''部分''',所以譬如<code>"a"=b</code>的语句中的等号不会连接左侧,此语法不对。(实则懒得合并左侧)
 
当然等号也有'''例外''',一个每一对双引号中的第二个会结束一个'''部分''',所以譬如<code>"a"=b</code>的语句中的等号不会连接左侧,此语法不对。(实则懒得合并左侧)
第45行: 第45行:
 
====== 匿名值与键/值 ======
 
====== 匿名值与键/值 ======
  
<code>
+
<code>value1 key1=value2 #comment</code>
value1 key1=value2 #comment
 
</code>
 
  
 
<code>value1</code>代表的是一个'''匿名值''',一般是有程序按照既定顺序判定它的意义。
 
<code>value1</code>代表的是一个'''匿名值''',一般是有程序按照既定顺序判定它的意义。
第79行: 第77行:
 
</code>
 
</code>
  
'''注意:因为一对双引号两端只能为空格或者等号,所以譬如<code>"a" {</code>的块头部的双引号与大括号之间不可缺少空格(实则懒得多检测一个字符)'''
+
'''注意:因为一对双引号两端只能为空格或者等号,所以譬如<code>"a" {</code>的块头部的双引号与大括号之间不可缺少空格。'''(实则懒得多检测一个字符)
  
 
==== 工程头部 ====
 
==== 工程头部 ====
第121行: 第119行:
 
====== Page ======
 
====== Page ======
  
命令格式:Page=<page number>
+
命令格式:<code>Page=<page number></code>
  
 
: <code>page number</code>是指当这行命令需要记录到的页码。
 
: <code>page number</code>是指当这行命令需要记录到的页码。
第127行: 第125行:
 
: 其的值可以为<code>*</code>、<code>@</code>或者一个<code>1到32的数字</code>。
 
: 其的值可以为<code>*</code>、<code>@</code>或者一个<code>1到32的数字</code>。
  
: <code>@</code>是一个特殊的页码,它代表初'''始化页''',所有加入到初始化页的命令将会在程序加载工程时被执行,执行完毕后就会被释放。'''当这行命令将写入初始化页后面的<code>Key</code>应当省略,否则会报错。
+
: <code>@</code>是一个特殊的页码,它代表初'''始化页''',所有加入到初始化页的命令将会在程序加载工程时被执行,执行完毕后就会被释放。'''当这行命令将写入初始化页后面的<code>Key</code>应当省略,否则会报错'''。
  
 
: <code>*</code>代表全部页码即1到32,包含它在的命令将存到全部页面。
 
: <code>*</code>代表全部页码即1到32,包含它在的命令将存到全部页面。
第135行: 第133行:
 
====== Key ======
 
====== Key ======
  
命令格式:Key=<key>
+
命令格式:<code>Key=<key></code>
  
 
: <code>key</code>是指当这行命令将会被哪个按键触发。目前允许同页面中有同样<code>Key</code>值的多个命令。未来可能还会支持混合按键值,敬请期待。
 
: <code>key</code>是指当这行命令将会被哪个按键触发。目前允许同页面中有同样<code>Key</code>值的多个命令。未来可能还会支持混合按键值,敬请期待。
第163行: 第161行:
 
命令格式:<code>StagePosition=<x>,<y></code>
 
命令格式:<code>StagePosition=<x>,<y></code>
  
: 该参数仅对<code>Video</code>有效,默认值为<code>0,0</code>。
+
: 该参数仅对<code>Video</code>有效,'''默认值为<code>0,0</code>'''
  
: 请记得将该参数放在<code>Video</code>前,否侧会因为'''顺序性'''而'''失效'''。
+
: '''请记得将该参数放在<code>Video</code>前,否侧会因为顺序性而失效'''。
  
 
: 舞台的坐标系是向右为x轴为正,向下为y轴正方向。
 
: 舞台的坐标系是向右为x轴为正,向下为y轴正方向。
  
: <code>x</code>:舞台上的x坐标位置,这个值从0开始。
+
: <code>x</code>:舞台上的x坐标位置,'''这个值从0开始'''。
  
: <code>y</code>:舞台上的y坐标位置,这个值从0开始。
+
: <code>y</code>:舞台上的y坐标位置,'''这个值从0开始'''。
  
 
: 举例:<code>StageSeat="0,1" #设置video的显示坐标为0,1</code>
 
: 举例:<code>StageSeat="0,1" #设置video的显示坐标为0,1</code>
第184行: 第182行:
  
 
==== 更多的完整例子 ====
 
==== 更多的完整例子 ====
5.1、举例3.1:
 
"@" ChangePage=1
 
  
这个表示在初始化跳转到页面1。
+
# 例一:
注意:由于页码@和*是符号,且不应被识别为操作符,所以应该用双引号括起来
+
 
 +
: <code>"@" ChangePage=1</code>
 +
 
 +
: 这个表示在初始化时跳转到页面1。
 +
 
 +
: '''注意:由于页码<code>@</code><code>*</code>是符号,为了不被识别为操作符,所以应该用双引号括起来。'''
 +
 
 +
# 例二:
 +
 
 +
: <code>"*" 56 Audio="./sample.wav"</code>
  
5.2、举例3.2:
+
: 这个表示在所有页面记录:当按下<code>A</code>时播放当前目录下的<code>sample.wav</code>。
"*" 56 Audio="./sample.wav"
 
  
这个表示在所有页面记录:当按下A时播放当前目录下的sample.wav。
+
: 也就是说,当当前页码为1时,按下<code>A</code>就播放<code>sample.wav</code>。
也就是说,当当前页码为1时,按下A就播放sample.wav。
 
注意:56并不是A的ASCII值,而是WinForms中Keys.A的枚举值。
 
  
5.3、举例3.3:
+
: '''注意:<code>56</code>并不是A的ASCII值,而是WinForms中<code>Keys.A</code>的枚举值。'''
3 "D1" Video="sample.mp4" Stage="2,1"
 
  
这个表示在页面3记录:当按下数字键1时在第3列第2行播放当前目录下的sample.mp4。
+
# 例三:
如果有空格为了表示为一个部分要加双引号,没有空格也可以加双引号。
+
 
 +
: <code>3 "D1" Video="sample.mp4" Stage="2,1"</code>
 +
 
 +
: 这个表示在页面3记录:当按下数字键1时在第3列第2行播放当前目录下的<code>sample.mp4</code>。
 +
 
 +
: '''如果有空格为了表示为一个部分要加双引号,没有空格也可以加双引号。'''
  
 
==== 字符串 ====
 
==== 字符串 ====
请注意双引号只允许两种使用形式:"Key=Value" 或 Key="Value"。
+
 
 +
'''注意:双引号只允许两种使用形式:<code>"Key=Value"</code><code>Key="Value"</code>'''
  
 
==== 注释 ====
 
==== 注释 ====
第210行: 第217行:
 
===== 整行注释 =====
 
===== 整行注释 =====
  
#comment
+
<code>#comment</code>
  
 
第一个字符为井号的行会被注释掉。
 
第一个字符为井号的行会被注释掉。
第216行: 第223行:
 
===== 尾部注释 =====
 
===== 尾部注释 =====
  
abc #comment
+
<code>abc #comment</code>
  
以井号为开头的部分为注释,这种注释生效需要保证前面为空格。
+
以井号为开头的部分为注释,'''这种注释生效需要保证前面为空格'''。
所以上面的内容等效为abc。
 
以下内容不算尾部注释:
 
  
abc#comment
+
所以上面的内容等效为<code>abc</code>。
  
因为井号前面缺少空格所以它会被完整识别为abc#comment。
+
以下内容不算尾部注释:
 +
 
 +
<code>abc#comment</code>
 +
 
 +
因为井号前面缺少空格所以它会被完整识别为<code>abc#comment</code>。
  
 
=== 提问与解答 ===
 
=== 提问与解答 ===
  
# 问答1
+
# 问答一
 +
 
 
#* Q:如何在工程未打开的情况下打开程序?
 
#* Q:如何在工程未打开的情况下打开程序?
 +
 
#* A:备份当前文件(修改文件名称,或移动到其他目录),然后写一个只有一行 ''Project.Version = "2.0"'' 的project.mlp。
 
#* A:备份当前文件(修改文件名称,或移动到其他目录),然后写一个只有一行 ''Project.Version = "2.0"'' 的project.mlp。

2020年8月18日 (二) 19:38的最新版本

返回 MuseLive 文档

MuseLive 文档

基本信息

版本:Alpha 2.5.3

目前只支持加载固定文件:project.mlp(与主程序在同一目录)。

示例工程的演奏方式记录在sample.txt里。

软件基本操作

制作工程,打开程序,然后保证选中程序窗口,按键即可触发音频。

工程文件格式

概念解释

工程

默认是指程序所在目录下的project.mlp文件,目前支持这一个指定名称。

这是一个包含了一堆存放描述和指令的文件。

路径

这里的路径可以是相对路径也可以是绝对路径。

相对路径目前是指依程序所在路径为参考的,而不是工程所在路径。

基本命令原理
命令是如何在程序内部分割的

所有命令以为基础,换行代表一个新的命令

每一行中用空格或者水平制表符分隔开来形成许多部分,但是等号会是一个例外,无论它两边有多少空格(制表符)都会将两边的部分连成一个整体,仍为一个部分

当然等号也有例外,一个每一对双引号中的第二个会结束一个部分,所以譬如"a"=b的语句中的等号不会连接左侧,此语法不对。(实则懒得合并左侧)

注意:请不要使用Annoy+数字形式的键名,如Annoy001,这些都是保留键名!

匿名值与键/值

value1 key1=value2 #comment

value1代表的是一个匿名值,一般是有程序按照既定顺序判定它的意义。

key1代表一个,它位于等号左边,用于描述右边的值的意义。

value2代表一个,它位于等号右边,被左边的键名赋予意义。

comment是一个注释,它不会被程序加载,不对程序运行产生影响。

我们称一个类似value1或者key1=value2的部分为记录参数

blockHeader {

 key1=value1

 key2=value2

}

blockHeader代表块的头部,它的作用是省略在大括号内的头部定义,所以它等效于:

blockHeader key1=value1

blockHeader key2=value2

注意:因为一对双引号两端只能为空格或者等号,所以譬如"a" {的块头部的双引号与大括号之间不可缺少空格。(实则懒得多检测一个字符)

工程头部

第一行必须是Project.Version = "2.0"这是工程版本声明。暂时不支持版本向下兼容,这个也许我会做的。(嗯,也许)

基本格式

页码 (+ 按键) + 一堆值...

参数列表

键名可选参数

键名可选参数是指键名可以省略的参数,但是它们必须在一行代码中按照顺序书写。

目前支持的键名可选参数有:PageKey

完整的一行记录应该是类似这样的代码:Page="*" Key="A" ...

因为PageKey是键名可选参数,所以:上述代码可以等效于:

"*" Key="A" ...

Page="*" "A" ...

"*" "A" ...

其中第三种的会按照默认顺序:Page, Key自动解析为Page="*" Key="A" ...

当然当PageKey如果没有省略键名,它的位置是可以随意的:

"A" Page="*" ...

它会先搜索到Page键然后搜索下一个键名可选参数Key,而Key的键名不存在,所以它会读取第一个匿名值作为Key的值。

Page

命令格式:Page=<page number>

page number是指当这行命令需要记录到的页码。
其的值可以为*@或者一个1到32的数字
@是一个特殊的页码,它代表初始化页,所有加入到初始化页的命令将会在程序加载工程时被执行,执行完毕后就会被释放。当这行命令将写入初始化页后面的Key应当省略,否则会报错
*代表全部页码即1到32,包含它在的命令将存到全部页面。
未来可能会支持范围页面以及混合页面,敬请期待。
Key

命令格式:Key=<key>

key是指当这行命令将会被哪个按键触发。目前允许同页面中有同样Key值的多个命令。未来可能还会支持混合按键值,敬请期待。
其的值为Winforms中Keys的枚举值的名称或者数值,具体可参阅Keys Enum (System.Windows.Forms) | Microsoft Docs
一般原生参数
Audio

命令格式:Audio=<audio path>

audio path:音频文件路径。
举例:Audio="sample.wav" #播放音频sample.wav
ChangePage

命令格式:ChangePage=<page number>

page number:目标页码(只允许为1~32)。
举例:ChangePage=12 #设置绑定的跳转页面为第12页
StagePosition

命令格式:StagePosition=<x>,<y>

该参数仅对Video有效,默认值为0,0
请记得将该参数放在Video前,否侧会因为顺序性而失效
舞台的坐标系是向右为x轴为正,向下为y轴正方向。
x:舞台上的x坐标位置,这个值从0开始
y:舞台上的y坐标位置,这个值从0开始
举例:StageSeat="0,1" #设置video的显示坐标为0,1
Video

命令格式:Video=<video path>

video path:视频文件路径。
举例:Video="sample.mp4" #播放视频sample.mp4

更多的完整例子

  1. 例一:
"@" ChangePage=1
这个表示在初始化时跳转到页面1。
注意:由于页码@*是符号,为了不被识别为操作符,所以应该用双引号括起来。
  1. 例二:
"*" 56 Audio="./sample.wav"
这个表示在所有页面记录:当按下A时播放当前目录下的sample.wav
也就是说,当当前页码为1时,按下A就播放sample.wav
注意:56并不是A的ASCII值,而是WinForms中Keys.A的枚举值。
  1. 例三:
3 "D1" Video="sample.mp4" Stage="2,1"
这个表示在页面3记录:当按下数字键1时在第3列第2行播放当前目录下的sample.mp4
如果有空格为了表示为一个部分要加双引号,没有空格也可以加双引号。

字符串

注意:双引号只允许两种使用形式:"Key=Value"Key="Value"

注释

整行注释

#comment

第一个字符为井号的行会被注释掉。

尾部注释

abc #comment

以井号为开头的部分为注释,这种注释生效需要保证前面为空格

所以上面的内容等效为abc

以下内容不算尾部注释:

abc#comment

因为井号前面缺少空格所以它会被完整识别为abc#comment

提问与解答

  1. 问答一
    • Q:如何在工程未打开的情况下打开程序?
    • A:备份当前文件(修改文件名称,或移动到其他目录),然后写一个只有一行 Project.Version = "2.0" 的project.mlp。