昨天玩了个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];
}
}
}
}
}
flash钢琴简谱转换程序
最新推荐文章于 2021-07-26 14:41:38 发布