1.概述
1.1.Sibelius
1.1.1.介绍
目前主流的打谱软件有:Sibelius,Finale,Overture等等。Sibelius 是目前世界第一的五线谱制作软件。支持PC和MAC PC为中文版Sibelius来自音乐巨匠西贝柳斯的故乡(《芬兰颂》作者)。它的功能全面,很多作曲家都很喜欢用这个软件。其乐谱记号是十分全面的,上所有的乐谱都可以应付自如,软件超大,再v6.2之前的版本解压后需4.8G。
1.1.2.Sibelius插件
Sibelius为使用者提供插件接口,开发者可以通过此接口来开发基于Sibelius的插件,Sibelius插件采用自研语言MenuScript设计,但此语言功能并不是很强大。
1.2.关键词
Sibelius、插件、Pligin
1.3.入门
要进行Sibelius插件开发,首先要仔细阅读Sibelius插件开发文档(附件),然后再通过Sibelius自带的插件程序学习语法以及一些API的使用。
1.4.开发环境
本文通过一个移调输出批处理的程序作为示例,Sibelius版本为7.1破解版
2.示例项目
2.1.项目创建
1.启动Sibelius并打开一份.sib乐谱文件
2.点击菜单:文件--插件--编辑插件,打开插件编辑窗口,再次窗口可以找到所有已经安装的插件
3.点击新建,名称:移调转换批处理,菜单名称:移调转换批处理,类别名称:测试
4.新建之后,在插件菜单找到刚刚新建的插件双击
5.出现的插件详情界面就是我们开发的主界面,这里有三个区域,方法:这里可以定义方法,与其他编程语言里面的方法含义相同,这里不再赘述;对话框:即界面,这里可以定义一些界面出来供用户操作;数据:这里是定义全局变量的地方,这些全局变量可以在方法和对话框里面使用。
2.2.项目编写
1.添加方法:ex,无参数
2.双击Run方法,调用ex方法,输入ex();
3.确定Run方法关掉对话框,双击打开ex方法,这里在编写代码的时候建议用SublimeText编写,编写完成后复制到编辑框内
4.详细代码:
folder = Sibelius.SelectFolder("");
if (IsObject(folder))
{
numfiles = folder.FileCount;
Sibelius.CreateProgressDialog("正在处理",1,numfiles);
filenum = 0;
continue = True;
array = CreateSparseArray("Cb","Gb","Db","Ab","Eb","Bb","F","C","G","D","A","E","B","F#","C#");
for each SIB file in folder
{
filenum = filenum + 1;
shortname = file.NameNoPath;
filename = file.NameWithExt;
filenamenoext = file.Name;
saveFolder = file.Path;
str1 = SplitString(shortname,"+",false);
str2 = str1[2];
preS = Substring(str2,0,1);
if(Sibelius.Open(filename,True))
{
score = Sibelius.ActiveScore;
sel = score.Selection;
sel.Clear();
sel.SelectPassage(0,10000);
array.Length = 15;
x = 0;
for each s in array
{
continue = Sibelius.UpdateProgressDialog(filenum, shortname&"_"&s&"大调");
if (continue = False)
{
Sibelius.DestroyProgressDialog();
return False;
}
sel.Transpose(Sibelius.CalculateDegree(preS,s,true),Sibelius.CalculateInterval(preS,s,true));
score.SaveAs(filenamenoext&"_"&s&"大调_向上", "SIBL", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向上");
score.SaveAs(filenamenoext&"_"&s&"大调_向上", "PNG", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向上");
score.SaveAs(filenamenoext&"_"&s&"大调_向上", "PDF", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向上");
score.SaveAs(filenamenoext&"_"&s&"大调_向上", "Midi", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向上");
score.SaveAs(filenamenoext&"_"&s&"大调_向上", "XML", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向上");
sel.Transpose(Sibelius.CalculateDegree(s,preS,false),Sibelius.CalculateInterval(s,preS,false));
x=x+1;
}
for each s in array
{
continue = Sibelius.UpdateProgressDialog(filenum, shortname&"_"&s&"大调");
if (continue = False)
{
Sibelius.DestroyProgressDialog();
return False;
}
sel.Transpose(Sibelius.CalculateDegree(preS,s,false),Sibelius.CalculateInterval(preS,s,false));
score.SaveAs(filenamenoext&"_"&s&"大调_向下", "SIBL", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向下");
score.SaveAs(filenamenoext&"_"&s&"大调_向下", "PNG", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向下");
score.SaveAs(filenamenoext&"_"&s&"大调_向下", "PDF", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向下");
score.SaveAs(filenamenoext&"_"&s&"大调_向下", "Midi", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向下");
score.SaveAs(filenamenoext&"_"&s&"大调_向下", "XML", true,saveFolder&"导出/"&shortname&"/"&shortname&"_"&s&"大调_向下");
sel.Transpose(Sibelius.CalculateDegree(s,preS,true),Sibelius.CalculateInterval(s,preS,true));
x=x+1;
}
Sibelius.Close();
}
}
Sibelius.DestroyProgressDialog();
return true;
}
网友评论