flash钢琴简谱转换程序
昨天玩了个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]; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |