Win8如何向音乐应用程序中添加音乐

Win8如何向音乐应用程序中添加音乐,第1张

若要向

Windows

8

Release

Preview

内的音乐应用程序添加音乐,请执行以下 *** 作:

1

在计算机的

Windows

8

默认屏幕上,查找并单击“桌面”图块。您将由此转到经典桌面视图。

2

选择“Windows

资源管理器”(Internet

Explorer

图标旁的

manila

文件夹)。

3

在“库”的下方,选择“音乐”。

4

右键单击“音乐”,然后选择“属性”。

5

单击“添加”。

6

音乐将添加到您用于存储音乐的文件夹中。

7

单击“确定”。

备注:

如果音乐内容采用外部存储(例如,存储在

USB

闪存盘或外部硬盘上),您可以将内容复制或移动到“库的位置”字段中的任何文件夹内,音乐应用程序将从中获取内容。

0x18, 0x30, 0x1C , 0x10,//格式为: 频率常数, 节拍常数, 频率常数, 节拍常数。

我猜测可能是单片机编程。

以0x开头的为16进制数字,它对应声音的频率或节拍。

那么0x18到底代表高音1还是中音3,这取决于单片机生产厂商,一般它会在说明书上说明。

PS:如果你想搞音乐编程,可以使用高级的音乐库文件。

背景:数组可以可以存储其音频地址,让其进行顺序播放和同步播放有两种方式

顺序播放

1使用定时器进行设置传递地址时候,下一个等待音频的播放时间以后在传递地址,这个地方看似没有问题,实际上还是有很大问题的,因为在传递的时候如果数据量大,你就会发现会出现同步播放的情况,因为那个定时和你的音频时间会有误差,数据越大,越明显,还有就是会数组地址更新,这又是问题,更新以后传递过去定时器重新给其定时,这个又给串了,笔者就遇到这个情况了,跳了半天。

2就是下面的方法,我本身是过几秒中我的数组会更新地址,这样会导致程序整体运行一次,可以在音频播放完才运行函数设置一个状态,开始状态设置一个true,将数组传递过去,然后关闭通道,改变状态进行设置flase的情况,然后再可以在音频播放完才运行函数里设置,但播放完到这个数组最后一个音频以后,改变为true,这个时候再接收新的更新后的数组,这样不会出现同步播发的情况。

同步播放

其实就是直接将其地址传递到InnerAudioContextsrc,不管播放时间,直接for循环就可以了。

只有音乐发声汇编程序,没有加入LED灯,供参考。数据代码已改为小星星发声

;

ORG 0000H

SJMP MAIN

ORG 0BH

AJMP TIME0

;主程序

MAIN: MOV SP,#60

MOV TMOD,#01H ;T0定时工作方式

MOV IE,#82H ;CPU 中断允许,T0中断允许

START0: MOV 30H,#00H ;TABLE 相对地址指针

NEXT: MOV A,30H

MOV DPTR,#TABLE ;到TABLE处取 简谱码  节拍 码

MOVC A,@A+DPTR

MOV R2,A ;取到的简谱码  节拍码 暂存于R2中

JZ ENDF ;取到 00 结束

ANL A,#0FH ;否,取低四位 节拍 码

MOV R5,A ;将节拍码存于R5中

MOV A,R2 ;简谱码  节拍 码 给A

SWAP A ;高4位 与 低4位 交换

ANL A,#0FH ;取简谱 码

JNZ SING ;取到的简谱 码不是0,则去发声

CLR TR0 ;取到0 则不发声

SJMP DLY1 ;节拍延时子程序( 随节拍码变化,延时时间不同)

;---------------发声-----------------------

SING: DEC A ;取到的简谱码减1

;(简谱码计数值16位数据存储首地址从TABLE1 《相对地址》0处开始放起,所以要减1)

MOV 22H,A ;存入(22H)中

RL A ;乘2 因为取的数据占两字节(16位)

;所以指针增加量要乘2

MOV DPTR,#TABLE1

;简谱码转换为相应定时器16位计数值

MOVC A,@A+DPTR ;到TABLE1取相应的高字节计数值

MOV TH0,A ;高字节计数值存入TH0和(21H)中

MOV 21H,A

MOV A,22H ;减1的简谱码给A

RL A ;乘2 因为取的数据占两字节(16位)

;所以指针增加量要乘2

INC A ;A 增加 取下一个字节计数值

;简谱码转换为相应定时器16位计数值

MOVC A,@A+DPTR ;到TABLE1取相应的低字节计数值

MOV TL0,A ;低字节计数值存入TL0和(20H)中

MOV 20H,A

SETB TR0 ;启动T0定时器让喇叭发出不同频率声音

;---------------节拍延时-------------------

DLY1: ACALL DELAY ;基本单位时间为1/4拍 187ms

INC 30H ;取下一个简谱码  节拍 码

SJMP NEXT

;---------------歌放完结束---------------

ENDF: CLR TR0 ;关闭T0定时器

AJMP START0 ;反复循环

;T0中断子程序(用来驱动喇叭发出不同频率声音)

TIME0: PUSH ACC

PUSH PSW

MOV TL0,20H ;重装计数值

MOV TH0,21H

CPL P37 ;驱动发声

POP PSW

POP ACC

RETI

;节拍延时187ms

DELAY: MOV R7,#187 ;187ms延时子程序

DLY2: MOV R4,#02

DLY3: MOV R3,#248

DJNZ R3,$

DJNZ R4,DLY3

DJNZ R7,DLY2

DJNZ R5,DELAY

RET

;音符T值表(用来让定时器发出不同的频率)DW 表示一个 计数值 占两个字节存储单元

TABLE1: DW 64260,64400,64524,64580,64684 ;低音SO 低音LA 低音SI  /中音DO 中音RE

DW 64777,64820,64898,64968,65030 ;中音MI 中音FA 中音SO 中音LA 中音SI

DW 65058,65110,65157,65178,65217 ;高音DO 高音RE 高音MI 高音FA 高音SO

;简谱码  节拍码(高4位简谱码 ,低4位节拍码)

TABLE: DB 44H,44H,84H,84H   ; 1 1 5 5      

DB 094H,094H,88h                    ; 6 6 5 -      

DB 74H,74H,63H,63H                ;  4 4 3 3

DB 52H,52H,48h                        ;  2 2 1-

DB 84H,84H,74H,74H                 ; 5 5 4 4

DB 64H,64H,58h                         ; 3 3 2-

DB 84H,84H,74H,74H                 ; 5 5 4 4

DB 64H,64H,58h                         ; 3 3 2-

DB 44H,44H,84H,84H                 ; 1 1 5 5      

DB 094H,094H,88h                     ; 6 6 5 -  

DB 74H,74H,63H,63H                 ;  4 4 3 3

DB 52H,52H,48h                         ;  2 2 1-

END

加入了LED灯,水平有限,效果有点不太好

;

ORG 0000H

SJMP MAIN

ORG 0BH

AJMP TIME0

;主程序

MAIN: MOV SP,#60

MOV TMOD,#01H ;TO定时工作方式

MOV IE,#82H ;CPU 中断允许,TO中断允许

START0: MOV 30H,#00H ;TABLE 相对地址指针

NEXT: MOV A,30H

MOV DPTR,#TABLE ;到TABLE处取 简谱码  节拍 码

MOVC A,@A+DPTR

MOV R2,A ;取到的简谱码  节拍码 暂存于R2中

JZ ENDF ;取到 00 结束

ANL A,#0FH ;否,取低四位 节拍 码

MOV R5,A ;将节拍码存于R5中

MOV A,R2 ;简谱码  节拍 码 给A

SWAP A ;高4位 与 低4位 交换

ANL A,#0FH ;取简谱 码

JNZ SING ;取到的简谱 码不是0,则去发声

CLR TR0 ;取到0 则不发声

SJMP DLY1 ;节拍延时子程序( 随节拍码变化,延时时间不同)

;---------------发声-----------------------

SING: DEC A ;取到的简谱码减1

;(简谱码计数值16位数据存储首地址从TABLE1 《相对地址》0处开始放起,所以要减1)

MOV 22H,A ;存入(22H)中

RL A ;乘2 因为取的数据占两字节(16位)

;所以指针增加量要乘2

MOV DPTR,#TABLE1

;简谱码转换为相应定时器16位计数值

MOVC A,@A+DPTR ;到TABLE1取相应的高字节计数值

MOV TH0,A ;高字节计数值存入TH0和(21H)中

MOV 21H,A

MOV A,22H ;减1的简谱码给A

RL A ;乘2 因为取的数据占两字节(16位)

;所以指针增加量要乘2

INC A ;A 增加 取下一个字节计数值

;简谱码转换为相应定时器16位计数值

MOVC A,@A+DPTR ;到TABLE1取相应的低字节计数值

MOV TL0,A ;低字节计数值存入TL0和(20H)中

MOV 20H,A

SETB TR0 ;启动T0定时器让喇叭发出不同频率声音

;---------------节拍延时-------------------

DLY1: ACALL DELAY ;基本单位时间为1/4拍 187ms

INC 30H ;取下一个简谱码  节拍 码

CPL P10   LED灯 闪烁

CPL P11

CPL P12

CPL P13

CPL P14

CPL P15

CPL P16

CPL P17

SJMP NEXT

;---------------歌放完结束---------------

ENDF: CLR TR0 ;关闭T0定时器

AJMP START0 ;反复循环

;T0中断子程序(用来驱动喇叭发出不同频率声音)

TIME0: PUSH ACC

PUSH PSW

MOV TL0,20H ;重装计数值

MOV TH0,21H

CPL P37 ;驱动发声

POP PSW

POP ACC

RETI

;节拍延时187ms

DELAY: MOV R7,#187 ;187ms延时子程序

DLY2: MOV R4,#02

DLY3: MOV R3,#248

DJNZ R3,$

DJNZ R4,DLY3

DJNZ R7,DLY2

DJNZ R5,DELAY

RET

;音符T值表(用来让定时器发出不同的频率)DW 表示一个 计数值 占两个字节存储单元

TABLE1: DW 64260,64400,64524,64580,64684 ;低音SO 低音LA 低音SI  /中音DO 中音RE

DW 64777,64820,64898,64968,65030 ;中音MI 中音FA 中音SO 中音LA 中音SI

DW 65058,65110,65157,65178,65217 ;高音DO 高音RE 高音MI 高音FA 高音SO

;简谱码  节拍码(高位简谱码 ,低位节拍码)

TABLE: DB 44H,44H,84H,84H   ; 1 1 5 5      

DB 094H,094H,88h ; 6 6 5 -        -表示有节拍

DB 74H,74H,63H,63H ;  4 4 3 3

DB 52H,52H,48h ;  2 2 1-

DB 84H,84H,74H,74H ; 5 5 4 4

DB 64H,64H,58h ; 3 3 2-

DB 84H,84H,74H,74H ; 5 5 4 4

DB 64H,64H,58h ; 3 3 2-

DB 44H,44H,84H,84H   ; 1 1 5 5      

DB 094H,094H,88h ; 6 6 5 -  

DB 74H,74H,63H,63H ;  4 4 3 3

DB 52H,52H,48h ;  2 2 1-

END

以上就是关于Win8如何向音乐应用程序中添加音乐全部的内容,包括:Win8如何向音乐应用程序中添加音乐、用C语言怎么编写音乐程序、微信开发小程序音乐循环播放怎么用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9764822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存