flash钢琴简谱转换程序

来源:互联网 发布:飓风算法目测已中招 编辑:程序博客网 时间:2024/04/27 05:12

昨天玩了个flash版钢琴http://www.51240.com/gangqin/,感觉挺不错的,觉得没简谱不好弹,就做了个flash的简谱转换程序,把简谱转为flash钢琴的按键键位,好了
上代码,swf钢琴文件在这里http://dl.dbank.com/c0clm72xpd
///////////////////////转换案例《天空之城》////////////////////
/*
671'71'3'736561'5334341'31'1'7#4#477671'71'3'736561'53341'71'2'2'3'1'1'76#57#561'2'3'2'3'5'2'1'71'3'7(3'和声)671'71'2'1'554'3'2'1'3'3'6'6'5'5'3'2'1'1'2'1'2'5'3'3'6'6'5'5'3'2'1'1'2'1'2'76


MNONOQNJMLMOL
JJKJKOJOON#K#KNN
MNONOQNJMLMOL
JJKONOPPQOONM#LN#LM
OPQPQSPONOQN(Q和声)
MNONOPOLLRQPOQQTTSSQPO
OPOPSQQTTSSQPO
OPOPNMMNONOQNJMLMOL
JJKJKOJOON#K#KNN
MNONOQNJMLMOL
JJKONOPPQOONM#LN#LM
OPQPQSPONOQN(Q和声)
MNONOPOLLRQPOQQTTSSQPO
OPOPSQQTTSSQPOOPOPNM
*/

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
//////////////////////flash钢琴音节转换 a-g低音 h-n中音 o-u高音 v-z超高音
//1-A 1-H 1-O 1-V 
//2-B 2-I 2-P 2-W 
//3-C 3-J 3-Q 3-X 
//4-D 4-K 4-R 4-Y 
//5-E 5-L 5-S 5-Z 
//6-F 6-M 6-T 6- 
//7-G 7-N 7-U 7- 
        private static char chbase0 = 'H';
        private static char chbase = 'O';
        private static char chbase2 = 'V';
        private static char chbase3 = 'V';
        private void button1_Click(object sender, EventArgs e)
        {
            string strshuziyinjie=richTextBox1.Text;




            //前序处理模块  形如153456+41234+4+3+2+1
            if(char.IsDigit(strshuziyinjie[0]))//第0个字符
                richTextBox2.Text+=Convert.ToChar(Convert.ToInt16(chbase)+(strshuziyinjie[0]-'1'));//数字转字母


            for(int i=1; i<strshuziyinjie.Length; i++)
            {
                if(char.IsDigit(strshuziyinjie[i]))
                {
                    if(strshuziyinjie[i-1].Equals('+'))//前一个字符是'+',则转为高音节 如+7
                        richTextBox2.Text += Convert.ToChar(Convert.ToInt16(chbase2) + (strshuziyinjie[i] - '1'));//数字转字母
                    else
                        richTextBox2.Text += Convert.ToChar(Convert.ToInt16(chbase) + (strshuziyinjie[i] - '1'));//数字转字母
                }


                if (strshuziyinjie[i].Equals(' '))
                    richTextBox2.Text += ' ';
            }


            //671'71'3'7 \\ 36561'5 \\ 334341'3 \\ 1'1'7#4#477 \\ 671'71'3'7 \\ 36561'5 \\ 3341'71'2'2'3'1' \\ 1'76#57#56 \\ 1'2'3'2'3'5'2' \\ 1'71'3'7(3'和声) \\ 671'71'2'1'55\\ 4'3'2'1'3'\\3'6'6'5'5'3'2'1' \\ 1'2'1'2'5'3' \\3'6'6'5'5'3'2'1'\\ 1'2'1'2'76








           








            
        }


        private void button2_Click(object sender, EventArgs e)
        {
            string strshuziyinjie = richTextBox1.Text;
            //后续处理模块 形如 1-2-4-53423+4+2+3+4+56+4
            for (int i = 0; i < strshuziyinjie.Length - 1; i++)
            {
                if (char.IsDigit(strshuziyinjie[i]))
                {
                    if (strshuziyinjie[i + 1].Equals('+'))//后一个字符是'+',则转为高音节如7+
                        richTextBox2.Text += Convert.ToChar(Convert.ToInt16(chbase2) + (strshuziyinjie[i] - '1'));//数字转字母
                    else if (strshuziyinjie[i + 1].Equals('-'))//后一个字符是'-' 则转为低音如5-
                        richTextBox2.Text += Convert.ToChar(Convert.ToInt16(chbase0) + (strshuziyinjie[i] - '1'));//数字转字母
                    else
                        richTextBox2.Text += Convert.ToChar(Convert.ToInt16(chbase) + (strshuziyinjie[i] - '1'));//数字转字母
                }
                else if (!strshuziyinjie[i].Equals('+') && !strshuziyinjie[i].Equals('-'))
                    richTextBox2.Text += strshuziyinjie[i];


            }


            if (char.IsDigit(strshuziyinjie[strshuziyinjie.Length - 1]))//第 strshuziyinjie.Length-1个字符
                richTextBox2.Text += Convert.ToChar(Convert.ToInt16(chbase) + (strshuziyinjie[strshuziyinjie.Length - 1] - '1'));//数字转字


        }




        private void button3_Click(object sender, EventArgs e)
        {
            string strshuziyinjie = richTextBox1.Text;
            ////////////////////////////////////////////////增高7个音阶模块
            for (int i = 0; i < strshuziyinjie.Length; i++)
            {
                if (char.IsLetter(strshuziyinjie[i]))
                {
                    richTextBox2.Text += Convert.ToChar(strshuziyinjie[i] + 7);
                }
                else
                {
                    richTextBox2.Text += strshuziyinjie[i];
                }
            }
        }
    }
}