美文网首页
Sibelius插件编写

Sibelius插件编写

作者: 逍遥才子 | 来源:发表于2019-10-17 12:51 被阅读0次

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;
}

相关文章

网友评论

      本文标题:Sibelius插件编写

      本文链接:https://www.haomeiwen.com/subject/dxvmmctx.html