精华内容
下载资源
问答
  • 关注我们微信的童鞋可能还记得,昨天我发了一章关于UNO+喇叭就可以播放歌曲...那么既然要写库,我们来一步步分析我们要完成的工作吧:1、如何把简谱用程序里的数据表示出来。2、表示出来的数据如何解析。3、解析出来...

    关注我们微信的童鞋可能还记得,昨天我发了一章关于UNO+喇叭就可以播放歌曲的文章。

    文章到最后也没有完成整个天空之城歌曲。因为实在是太麻烦了。。

    于是今天就苦思冥想,想借此机会整理出一个简谱的播放程序。借此来播放所有简谱写成的歌曲。既能提高复用性,也很有趣。先来看看成果吧。

    那么既然要写库,我们来一步步分析我们要完成的工作吧:

    1、如何把简谱用程序里的数据表示出来。

    2、表示出来的数据如何解析。

    3、解析出来的数据如何播放。

    来看看我分解出来的三个问题,可以看到第三个问题非常简单,之前的文章已经解决了这个问题。一个普通的UNO+一个小喇叭+Arduino的tone函数就可以搞定。

    一、那么先来解决第一个问题:

    如何把简谱用程序里的数据表示出来。

    这里设计到我们如何来设计这个存储数据的结构的问题。一开始我是想兼容现有的乐谱的格式的。现有的乐谱格式倒是有一些,但是却没找到相关的资料,所以也没办法兼容了。

    所以我只能做一个没办法的办法,自己设计这个数据。

    Arduino使用的是C++语言,数据处理相比较起高级语言是比较麻烦的,而且芯片本身速度也比较慢,所以我选择的是最简单的方案,用字符串来存储。

    那么问题来了,我们有哪些数据需要保存?先来看看简谱。

    看了谱子眼花缭乱。。。简单介绍下:

    数字代表音调 1234567分别代表do re mi fa sol la xi

    数字下面的点代表下降一个8度

    数字上面的点代表上升一个8度

    和数字同样的横线 “-”代表延长

    数字下方有横线,代表8分音符。2个横线代表16分音符。

    数字前面的#代表这个音调要升半调。

    可以看见乐谱上的信息很多,那么我们要一一记录这些信息,最终我设计的数据是这样的。

    举个例子:

    n61f4,n71f4,n10f34,n71f4,n10f3,n30f3代表以下音符。

    n代表没有#号,如果有#,则用s代替。

    6代表la

    1f代表6下面有1个点,若上面有一个点则用1s代替

    4代表这个音符是8分音符

    1代表全音符

    2代表2分音符

    3代表4分音符

    4代表8分音符

    5代表16分音符

    6代表32分音符

    可以看见第三个音符后面有个点,这个叫延长符号,及要延长他本身一半的时间,他是一个4分音符,点就代表要延长8分音符的时间。所以f后面有2个数字34,这样即可延长时间。

    这样就基本把简谱表示出来了。

    二、我们再来解决第二个问题

    解析我们表示的数据。

    C++解析字符串比较麻烦,所以设计的时候每个音符都用‘,’隔开,这样就方便解析。

    解析函数如下。

    void MELODY::playMelody(char *Melody,int playSpeed){

    const char *d = " ,";

    char *p;

    char cgy[10];

    int noteDuration=0;

    int i,j;

    uint8_t thisNote1=0,thisNote2=0;

    p = strtok(Melody,d);

    sprintf(cgy, "%s", p);

    while(p)

    {

    char note[]="0000000000";

    noteDuration=0;

    for (i=0;*(p+i)!='\0';i++){

    note=*(p+i);

    }

    for (int j=4;j

    int time;

    switch(note[j]){

    case '1':time=1;

    break;

    case '2':time=2;

    break;

    case '3':time=4;

    break;

    case '4':time=8;

    break;

    case '5':time=16;

    break;

    case '6':time=32;

    break;

    case '7':time=6;

    break;

    }

    noteDuration += playSpeed/(time);

    }

    if (this->debug)

    this->serial->println(noteDuration);

    if (note[0]=='n'){

    switch (note[1]){

    case '1':thisNote1=0;

    break;

    case '2':thisNote1=2;

    break;

    case '3':thisNote1=4;

    break;

    case '4':thisNote1=5;

    break;

    case '5':thisNote1=7;

    break;

    case '6':thisNote1=9;

    break;

    case '7':thisNote1=11;

    break;

    }

    }

    else if (note[0]=='s'){

    switch (note[1]){

    case '1':thisNote1=1;

    break;

    case '2':thisNote1=3;

    break;

    case '4':thisNote1=6;

    break;

    case '5':thisNote1=8;

    break;

    case '6':thisNote1=10;

    break;

    }

    }

    if (note[3]=='f'){

    switch (note[2]){

    case '0':thisNote2=4;

    break;

    case '1':thisNote2=3;

    break;

    case '2':thisNote2=2;

    break;

    case '3':thisNote2=1;

    break;

    case '4':thisNote2=0;

    break;

    }

    }

    else if (note[3]=='s'){

    switch (note[2]){

    case '1':thisNote2=5;

    break;

    case '2':thisNote2=6;

    break;

    case '3':thisNote2=7;

    break;

    case '4':thisNote2=8;

    break;

    }

    }

    if (note[1]=='0'){

    thisNote2=0;

    thisNote1=0;

    }

    tone(this->pin, notefr[thisNote2][thisNote1],noteDuration);

    int pauseBetweenNotes = noteDuration*1.1;

    delay(pauseBetweenNotes);

    noTone(this->pin);

    if (this->debug)

    this->serial->println(cgy);

    p=strtok(NULL,d);

    sprintf(cgy, "%s", p);

    }

    }

    头文件中,我将每个音对应的频率设置成为一个数组,方便解析。

    至此,左右的工作的都完成了,只需要将简谱输入成我刚才的格式就可以播放音乐啦,当然还是比较麻烦,但比上次的效率高了很多,上次2个小时大概输入了1半,这次半个小时就输入了整首歌。

    现在附上程序的地址,想要库的可以去下载哦:

    https://github.com/rainbowyu/LD_ArduinoLib/tree/V1.02

    如果喜欢观看类似科技新奇事物,以及了解创客圈最新资讯,或者您对Arduino有所耳闻,可以关注我们微信公众号,一定会带给您最新的资讯,最实用的教程,以及创客最新的玩意。

    微信公众号:liudaosixway

    也可以加入我们Arduino技术支持qq群:329657595

    展开全文
  • 昨天我发了一章关于UNO+喇叭就可以播放歌曲的文章。 文章到最后也没有完成整个天空之城歌曲。...那么既然要写库,我们来一步步分析我们要完成的工作吧: 1、如何把简谱用程序里的数据表示出来。
    昨天我发了一章关于UNO+喇叭就可以播放歌曲的文章。

    文章到最后也没有完成整个天空之城歌曲。因为实在是太麻烦了。。

    于是今天就苦思冥想,想借此机会整理出一个简谱的播放程序。借此来播放所有简谱写成的歌曲。既能提高复用性,也很有趣。先来看看成果吧。


     


    那么既然要写库,我们来一步步分析我们要完成的工作吧:

    1、如何把简谱用程序里的数据表示出来。

    2、表示出来的数据如何解析。

    3、解析出来的数据如何播放。


    来看看我分解出来的三个问题,可以看到第三个问题非常简单,之前的文章已经解决了这个问题。一个普通的UNO+一个小喇叭+Arduino的tone函数就可以搞定。


    一、那么先来解决第一个问题:


    如何把简谱用程序里的数据表示出来。

    这里设计到我们如何来设计这个存储数据的结构的问题。一开始我是想兼容现有的乐谱的格式的。现有的乐谱格式倒是有一些,但是却没找到相关的资料,所以也没办法兼容了。

    所以我只能做一个没办法的办法,自己设计这个数据。

    Arduino使用的是C++语言,数据处理相比较起高级语言是比较麻烦的,而且芯片本身速度也比较慢,所以我选择的是最简单的方案,用字符串来存储。

    那么问题来了,我们有哪些数据需要保存?先来看看简谱。



    看了谱子眼花缭乱。。。简单介绍下:


    数字代表音调 1234567分别代表do re mi fa sol la xi

    数字下面的点代表下降一个8度

    数字上面的点代表上升一个8度

    和数字同样的横线 “-”代表延长

    数字下方有横线,代表8分音符。2个横线代表16分音符。

    数字前面的#代表这个音调要升半调。


    可以看见乐谱上的信息很多,那么我们要一一记录这些信息,最终我设计的数据是这样的。



    举个例子:

    n61f4,n71f4,n10f34,n71f4,n10f3,n30f3代表以下音符。


    n代表没有#号,如果有#,则用s代替。

    6代表la

    1f代表6下面有1个点,若上面有一个点则用1s代替

    4代表这个音符是8分音符

    1代表全音符

    2代表2分音符

    3代表4分音符

    4代表8分音符

    5代表16分音符

    6代表32分音符

    可以看见第三个音符后面有个点,这个叫延长符号,及要延长他本身一半的时间,他是一个4分音符,点就代表要延长8分音符的时间。所以f后面有2个数字34,这样即可延长时间。

    这样就基本把简谱表示出来了。


    二、我们再来解决第二个问题

    解析我们表示的数据。

    C++解析字符串比较麻烦,所以设计的时候每个音符都用‘,’隔开,这样就方便解析。

    解析函数如下。


    void MELODY::playMelody(char *Melody,int playSpeed){
    const char *d = " ,";
    char *p;
    char cgy[10];
    int noteDuration=0;
    int i,j;
    uint8_t thisNote1=0,thisNote2=0;
    p = strtok(Melody,d);
    sprintf(cgy, "%s", p);
    while(p)
    {
    char note[]="0000000000";
    noteDuration=0;
    for (i=0;*(p+i)!='\0';i++){
    note[i]=*(p+i);
    }
    for (int j=4;j
    int time;
    switch(note[j]){
    case '1':time=1;
    break;
    case '2':time=2;
    break;
    case '3':time=4;
    break;
    case '4':time=8;
    break;
    case '5':time=16;
    break;
    case '6':time=32;
    break;
     
    case '7':time=6;
    break;
    }
    noteDuration += playSpeed/(time);
    }
    if (this->debug)
    this->serial->println(noteDuration);
    if (note[0]=='n'){
    switch (note[1]){
    case '1':thisNote1=0;
    break;
    case '2':thisNote1=2;
    break;
    case '3':thisNote1=4;
    break;
    case '4':thisNote1=5;
    break;
    case '5':thisNote1=7;
    break;
    case '6':thisNote1=9;
    break;
    case '7':thisNote1=11;
    break;
    }
    }
    else if (note[0]=='s'){
    switch (note[1]){
    case '1':thisNote1=1;
    break;
    case '2':thisNote1=3;
    break;
    case '4':thisNote1=6;
    break;
    case '5':thisNote1=8;
    break;
    case '6':thisNote1=10;
    break;
    }
    }
     
    if (note[3]=='f'){
    switch (note[2]){
    case '0':thisNote2=4;
    break;
    case '1':thisNote2=3;
    break;
    case '2':thisNote2=2;
    break;
    case '3':thisNote2=1;
    break;
    case '4':thisNote2=0;
    break;
    }
    }
    else if (note[3]=='s'){
    switch (note[2]){
    case '1':thisNote2=5;
    break;
    case '2':thisNote2=6;
    break;
    case '3':thisNote2=7;
    break;
    case '4':thisNote2=8;
    break;
    }
    }
    if (note[1]=='0'){
    thisNote2=0;
    thisNote1=0;
    }
    tone(this->pin, notefr[thisNote2][thisNote1],noteDuration);
     
    int pauseBetweenNotes = noteDuration*1.1;
    delay(pauseBetweenNotes);
     
    noTone(this->pin);
    if (this->debug)
    this->serial->println(cgy); 
    p=strtok(NULL,d);
    sprintf(cgy, "%s", p);
    }
    }


    头文件中,我将每个音对应的频率设置成为一个数组,方便解析。



    至此,左右的工作的都完成了,只需要将简谱输入成我刚才的格式就可以播放音乐啦,当然还是比较麻烦,但比上次的效率高了很多,上次2个小时大概输入了1半,这次半个小时就输入了整首歌。


    现在附上程序的地址,想要库的可以去下载哦:

    https://github.com/rainbowyu/LD_ArduinoLib/tree/V1.02


    展开全文
  • 现在的难题在于——如何识别琴谱并析出琴谱中的音频段! 想请问各位,有没有类似的开发包? 我查过关于乐谱的OCR,但它好像只是识别和分割琴谱。具体不知道它怎么应用,不知道能不能将分割出来的琴谱相应地分析出...
  • 要翻译的论文是利用NMF转录多声部音乐的开山之作,浅显易懂地介绍了如何利用NMF对钢琴曲进行乐谱翻译,值得一看。 摘要  在本文中我们提出一种新方法用来分析由固定谐波格式的音符构成的复调乐曲片段(例如钢琴...

    NMF(非负矩阵分解),由于其分解出的矩阵是非负的,在一些实际问题中具有非常好的解释,因此用途很广。在此,我给大家介绍一下NMF在多声部音乐中的应用。要翻译的论文是利用NMF转录多声部音乐的开山之作,浅显易懂地介绍了如何利用NMF对钢琴曲进行乐谱翻译,值得一看。论文地址:Non-Negative Matrix Factorization for Polyphonic Music Transcription

    摘要

           在本文中我们提出一种新方法用来分析由固定谐波格式的音符构成的复调乐曲片段(例如钢琴音符)。由于音符结构固定,我们可以将乐曲进行线性变换,利用非负矩阵分解来估计音符的谐波结构和每个音符出现的位置。这种方法非常简单,而且无需先验信息,只需要利用观测值即可完成估计和识别。

    1. 引言

           多声部音乐转录在很长一段时间内都难以解决。虽然许多基于先验知识的系统获得了很好的识别效果,但是非常非常复杂。在本文中,我们提出一种轻量级的方法,该方法和场景分析有些类似,也是数据驱动的,但是没有利用任何关于音乐结构的先验知识。我们方法的基本出发点是对冗余数据进行压缩[1],冗余压缩的思想在过去的几年发展迅速,在不少应用中取得了很好的效果。最近冗余压缩被用来解决多声部音乐转录问题[2][3],并取得了非常鼓舞人心的结果。在本文中,我们将从不同的角度出发解决同样的问题。事实上,仅仅通过对乐曲的频谱进行非负矩阵分解即可完成多声部音乐的转录。

    2. 非负分解

    2.1 定义和代价函数

           受到Paatero关于正矩阵分解[5]的启发, Lee和Seung首先提出了非负矩阵分解(NMF)[1]。给定一个大小为M*N的非负矩阵X,NMF的目标是寻找两个非负矩阵W(M*R)和H(R*N),然后用W和H的乘积来近似表示X(其中R的维度小于M和N),并使误差最小。定义代价函数如下:

    其中,表示Frobenius范数。此外,我们也可以定义另外的代价函数:


    其中,表示Hadamard积(矩阵元素的点乘),同理除法也是矩阵元素的点除。这两个代价函数都满足,当时代价等于0。公式2中的函数有些类似Kullback-Liebler收敛。计算W和H的公式在附录A。
           NMF也可以被解释为降置分解,使得,从而会有,其中是大小为R*M的非负矩阵,+表示Moore-Penros矩阵的逆。后面的公式可以让我们将NMF和PCA、ICA等联系起来。事实上,当代价函数为公式1时,NMF等价于PCA的一个旋转(ratation)(PCA采用同样的代价函数,但约束是正交约束)。基于这样一个事实,我们猜想NMF等价于满足Plumbley条件[6]的非负ICA分解。

    用更通俗的术语来解释,NMF其实是用矩阵H的行来刻画矩阵X的行,矩阵W的列来刻画矩阵X的列。参数R则用来衡量刻画的能力。如果R=M,则可以精确分解,此时W和H没有提供更多有用信息。当我们降低R时,则W和H的元素开始描述X的主元素。如果我们选择合理的R,我们就可以对X的主元进行提取。下一节会介绍一个简单的例子。

    2.2 幅度谱的NMF

           给定一段音频信号:

    其中,g(*)是一个周期为的门函数,是任意标量,同时远小于。然后计算这段音频的L长度幅度谱x(t) =||DFT( [s(t) … s(t + L)])||。可以将x(t)的每一列堆在一起构成一个非负矩阵X(M*N),其中N表示总共有多少帧信号,M=L/2+1是每一帧的变换结果,表示频率。图1是一个幅度谱的矩阵X。

    下面对X进行NMF分解。在做之前,我们先介绍X的几个特点。除了几个明显的线能量很大之外,其余部分能量极低,从而可以从中看出某种固定的模式。换种解释,上面的幅度谱是一个冗余度非常高的幅度谱(一个压缩工程师最期望见到的情况)。对该矩阵进行NMF分解会让我们见识到冗余是如何利用紧凑的矩阵消除的。我们采用的代价函数为公式1,R=2,分解的结果为图2。


    检查分解的结果会让我们获得一些重要信息。H矩阵的两行包含两个时间序列刻画了X的横轴(每一行表示每一个频率出现的强弱信息,与X的亮线相对应)。W矩阵的每一列刻画了X的纵轴(每一列表示一个频率值,与X中的两个频率相对应)。组合H的第n行和W的第n行(图2中W是横着画的)就可以恢复出X矩阵。

           在后面的章节中,我们将X变成包含音乐信号的幅度谱来进一步验证上面的想法。我们可以看到,当X是实际音乐的幅度谱时,分解出的W和H矩阵会包含音乐中出现音符的频谱以及该音符的时间信息。上面的例子也告诉我们NMF也可以处理音符重叠的情形(图1中的上下两条频谱有重叠),下面介绍实际音乐的例子。

    3. 实际音乐幅度谱的分解结果

           在本节,我们将展示对钢琴曲进行NMF分解的结果以及可能遇到的问题。我们首先研究不重叠的音符,然后研究重叠音符,最后对一整段多声部钢琴曲进行分解。所有的钢琴曲都来自于Keith Jarrett演奏的G小调巴赫赋格曲XVI[7],采样率44100Hz,单声道。

    3.1 不重叠音符

           第一个例子先看一下只有几个不重叠音符的赋格曲片段。下面的片段音符之间没有明显的重叠(延音是较弱的重叠)。

    这段乐谱包含五个事件四个不同的音符。首先获得信号的幅度谱,然后选择公式1作为代价函数同时R=4进行NMF分解。DFT的长度是4096,加汉宁窗。分解结果如图3。

    可以明显地看出,H矩阵的每一行表示四个音符的时间信息(哪一时刻出现,强弱变化),W矩阵的每一列是它们对应的频谱。W每一列中最低有效频率分别为193.7Hz,301.4Hz,204.5Hz和322.9Hz,分别对应音符。与实际音符的基频相比出现偏差的原因是由于DFT频率分辨率不够所致。一般情况下,单个峰值不能识别具体的音符,但是综合考虑基频和谐波就可以确定W矩阵每一行代表哪一个音符。

           做完上面的实验,很容易就会想到如果R不等于实际的音符个数会怎样。当R小于实际音符的个数时,我们没有足够的能力去区分这些音符,只能对上面的频谱进行部分分析。另一方面,我们也可以选择一个很大的R,此时根据算法选择的不同也会有不同的结果。采用公式1的NMF倾向于将主导音符的能量分散到W和H的不同行列中(使H更平均)。为了避免这种效应,我们可以将代价函数修改为:

    该公式不仅可以确保我们分解出的结果可以近似表示原信号,同时也避免生成能量很低的H矩阵。公式4类似于Hoyer[8]介绍的代价函数。参数用来调节好的信号重构和低能量之间的平衡。公式4强迫NMF避免将音符的能量分散到H的多个行中,从而提高了单行的能量值,其他能量较低的行也就变成了噪音。但是利用公式4需要确定一个好的值。

           如果我们不确定R的值,最便捷的方法就是选择公式2作为代价函数。这时,多出来的音符计算出的H矩阵就是一系列小的波峰,对应的W矩阵列就是一个能量很低的频谱(可以认为是静音或者环境噪音)。对前述四个音符的乐谱利用R=5进行NMF分解得到的结果如图4。

    总体而言,辨识非音符的成分非常容易,在我们的分析中不是一个难题。

    3.2 重叠音符

           下面开始分析赋格曲的第二部分,该部分包含重叠音符:

    上述乐谱有十个事件七个不同的音符。倒数第二个时刻有两个重叠音符()。利用公式2对上述乐谱进行R=7的NMF分解,结果如图5。

           令人失望的是,虽然我们成功地进行了分解,但是获得了一个非音符的成分,同时两个重叠的音符也被当做一个成分。很容易解释,正如前面所说,NMF只是根据当前信号进行分解而不依赖于先验知识,所以每一个独立的事件都被当做一个新的成分。所以我们特别强调一点,该方法的目的不是为了提取音符,而是提取独立的事件。由于我们没有对提取音符提供足够的信息,算法只能将独立的事件看做音符。

    可以通过提供更多的数据来使所有的音符都被识别成独立的事件。将前面两部分的钢琴曲合在一起我们就多了一个独立的音符,从而足够我们分辨两个重叠的音符,如图6所示。可以看出,通过增加一个独立的音符,我们可以完美地进行转录。

    当钢琴曲变长时,上述过程也可以很好地扩展。图7展示了R=27时对赋格曲前7段进行分解的结果。分解收敛之后,我们删除了两个不包含音符的成分。将结果与赋格曲的乐谱进行对比,我们发现识别结果已经很好地展示了整个乐谱。出现的几个错误一是将当成了一个成分,二是没有跟踪(可能的原因是它只出现了一次)。

    4. 结论

           我们在本文中提出一种基于NMF分解的多声部音频转录方法。新方法无需非常强大的计算能力和复杂的算法设计即可获得非常好的结果。但是,该方法的一个缺点是音乐片段中的音符必须具有固定的谐波格式。今后的工作将尝试利用其它表达能力更强的分解来解决该问题。

    5. 引用

    [1] Barlow, H.B. “Sensory mechanisms, thereduction of redundancy, and intelligence”. In Symposium on the Mechanizationof Thought Processes. National Physical Laboratory Symposium No. 10. (1959)

    [2] Smaragdis, P. “Redundancy reduction forcomputational audition, a unifying approach”. Ph.D. dissertation, MAS department,Massachusetts Institute of Technology,(2001).

    [3] Plumbley, M.D., S.A. Abdallah, J.P.Bello, M.E. Davies, G.Monti and M.B. Sandler. “Automatic music transcription andaudio source separation”. In Cybernetics and Systems, 33(6), pp 603-627,(2002).

    [4] Lee, D.D. and H.S. Seung, “Learning theparts of objects by non-negative matrix factorization”. In Nature 401,pp788-791,(1999).

    [5] Paatero, P. “Least squares formulationof robust nonnegative factor analysis”. In Chemometrics and IntelligentLaboratory Systems 37, pp23-35, (1997).

    [ 6 ]Plumbley, M.D. “Conditions fornon-negative independent component analysis”. In IEEE Signal ProcessingLetters, 9(6), pp177-180, (2002).

    [7] Jarrett, K. “J.S. Bach, DasWohltemperierte Klavier, Buch I”, ECM Records, CD 2, Track 8 (1988).

    [8] Hoyer, P. “Non-negative sparse coding”,In Neural Networks for Signal Processing XII, Martigny, Switzerland, (2002).

    展开全文
  • var xx1 = ["乐谱中的调号为( )调", "写出a自然小调...", "以下乐谱如何正确组合( )"]; var xx2 = {"0分":{"乐谱中的调号为( )调":"2","调式分析。":"2","将下列乐谱移为C大调。":"2","正确组合以下乐谱...
    var xx1 = ["乐谱中的调号为(   )调", "写出a自然小调音阶。", "以G为冠音,构写增四、减五音程。", "调式分析。", "将下列乐谱移为C大调。", "正确组合以下乐谱。", "以下乐谱应如何正确组合(    )"];
    var xx2 = {"0分":{"乐谱中的调号为(   )调":"2","调式分析。":"2","将下列乐谱移为C大调。":"2","正确组合以下乐谱。":"2","以下乐谱应如何正确组合(    )":"2"},"10分":{"以G为冠音,构写增四、减五音程。":"2"},"20分":{"写出a自然小调音阶。":"2"}};
    console.log(xx1);
    console.log(xx2);
    function getData(score, list, result){
        var target = result[score] || {};
        var arr = [];
        for(var i=0; i<list.length; i++){
            arr.push( parseInt(target[list[i]] || 0) );
        }
        return arr;
    }
    
    var a = getData('0分' , xx1, xx2)
    console.log('0分 ' + a)
    var a = getData('20分' , xx1, xx2)
    console.log('20分 ' + a)
    var a = getData('10分' , xx1, xx2)
    console.log('10分 ' +a)

     

    转载于:https://www.cnblogs.com/linsx/p/7086632.html

    展开全文
  • 初二音乐教学工作计划 音乐是一门情感的艺术,在音乐的教学过程中,根据学生身心发展规律和审美心理特征,如何制定工作计划?下面是小编收集整理关于初二音乐教学工作计划的资料,希望大家喜欢。初二音乐教学工作计划...
  • 学生基本情况分析: 本学期,我担任的是二年级的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读简单...
  • 一、学生基本情况分析:本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读...
  • 学生基本情况分析: 本学期,我担任的是二年级的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读简单...
  • 学生基本情况分析: 本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读简单...
  • 一、学生基本情况分析 本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读...
  • 学生基本情况分析: 本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读简单...
  • 一、学生基本情况分析 本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读...
  • 音乐教师工作计划.doc

    2021-01-15 17:01:54
    学生基本情况分析: 本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读简单...
  • 学生基本情况分析: 本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读简单...
  • 一、学生基本情况分析:本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读...
  • 学生基本情况分析: 本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读简单...
  • 一、学生基本情况分析:本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读...
  • 学生基本情况分析: 本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读简单...
  • 学生基本情况分析: 本学期,我担任的是二年段的音乐教学,学生的基本情况了解得比较透彻,毕竟相处一年了,大部分学生在唱歌的姿势上,习惯较好,而且表情也较丰富,能根据歌曲情绪进行表达,部分班级还能识读简单...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

如何分析乐谱