Dll版本为A-1.6
InheritExpression.SetCompareLists(path)
这一步是非必须的。路径为文件夹的绝对路径。
var timeLine = new TimeLine().Serialize(midiPath, wavPath, rate, synchroTick, fre_count, vol_count, cycle, showProgress)
几个属性(Midi路径、Wav路径、播放倍率、节奏间隔(优先)、频率采样数、振幅采样数、采样周期、进度Action)均为选填。其中文件路径是绝对路径。
同时有两个引申的实例化方法,可规定究竟市按照播放倍率生成,还是按照节奏间隔生成:
SerializeByRate(midiPath, wavPath, rate, fre_count, vol_count, cycle, showProgress)
SerializeByBeat(midiPath, wavPath, synchroTick, fre_count, vol_count, cycle, showProgress)
Midi全局参数和键参数可被启用或禁用(默认禁用),以同步输出至计分板。
timeLine.Enable(bool enable = true, string param = "")
全局参数有以下几个:(留空表示全体)
timeLine.EnableMidi(bool enable = true, string track = "", string instrument = "", int index = -1, string param = "")
track表示音轨,instrument指乐器,index为键的索引位置。
键的参数有以下几个:
Playsound命令中也有许多参数需要设定,包括最重要的音色名和子表达式
timeLine.Sound_属性(? param, string track = "", string instrument = "", int index = -1)
类似键参数,也是指音轨、乐器、键位置
Playsound的属性有以下几个:
timeLine.EnableWave(bool enable = true, int index = -1, string channel = "", string param = "")
其中索引表示一个采样的索引位置,声道可为"Left"
或"Right"
。Wave的参数有以下几个:
(上面提到的参数若为空则表示全体。)
var commandLine = new CommandLine().Serialize(timeLine)
一个命令序列中有"Start"、"KeyFrame"、"End"三个列表,分别代表初始化命令、命令流、结束命令。
一个命令序列也允许嵌入的其他命令序列。
commandLine1 = commandLine1.Combine(commandLine1, commandLine2)
表示将commandLine2中的所有命令嵌入到commandLine1中(从commandLine1头部开始)。
首先需要实例化导出设置。
var exps = new ExportSetting() { AlwaysActive = true, AlwaysLoadEntities = false, AutoTeleport = true, Direction = 0, Width = 5, Type = ExportType.Universal }
表示保持加载命令流,不保持加载实体,自动传送,向X+延伸,序列宽度为5,通用Schematic格式。
new Schematic().ExportSchematic(commandLine, exps, exportPath)
将命令序列按照导出设置导出为Schematic文件。
//InheritExpression.SetCompareLists(path); //设置对照表文件夹(可选) //时间序列操作 var timeLine = new TimeLine().SerializeByRate(midiPath, wavPath, rate, fre_count, vol_count, cycle); //按照播放倍率生成时间序列 timeLine.Enable(bool enable = true, string param = ""); //设置全局参数 timeLine.EnableMidi(bool enable = true, string track = "", string instrument = "", int index = -1, string param = ""); //设置键参数 timeLine.Sound_属性(? param, string track = "", string instrument = "", int index = -1); //设置Playsound参数 timeLine.EnableWave(bool enable = true, int index = -1, string channel = "", string param = ""); // 设置Wave参数 //命令序列操作 var commandLine = new CommandLine().Serialize(timeLine); //生成命令序列 //导出操作 var exps = new ExportSetting() { AlwaysActive = true, AlwaysLoadEntities = false, AutoTeleport = true, Direction = 0, Width = 5, Type = ExportType.Universal }; //导出设置 new Schematic().ExportSchematic(commandLine, exps, exportPath); //生成schematic