android JetPlayer音乐播放器 (JET播放器和JET引擎)

本文介绍了Android平台上的JET引擎,它是一个交互音乐引擎,用于控制游戏的声音特效。文章详细解释了如何使用JetPlayer类进行JET文件的加载、播放及队列管理,并概述了MIDI格式的基本原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

> The Android platform includes a JET engine that lets you add interactive playback of JET audio content in your applications. You can create JET content for interactive playback using the JetCreator authoring application that ships with the SDK.

> Here's an example of how to set up JET playback from a .jet file stored on the SD card:
JetPlayer jetPlayer = JetPlayer.getJetPlayer();
jetPlayer.loadJetFile("/sdcard/level1.jet");
byte segmentId = 0;

// queue segment 5, repeat once, use General MIDI, transpose by -1 octave
jetPlayer.queueJetSegment(5, -1, 1, -1, 0, segmentId++);
// queue segment 2
jetPlayer.queueJetSegment(2, -1, 0, 0, 0, segmentId++);
jetPlayer.play();

> The SDK includes an example application — JetBoy — that shows how to use JetPlayer to create an interactive music soundtrack in your game. It also illustrates how to use JET events to synchronize music and game logic. The application is located at JetBoy. http://developer.android.com/resources/samples/JetBoy/index.html

  在Android中,还提供了对Jet播放的支持,Jet是由OHA联盟成员SONiVOX开发的一个交互音乐引擎。其包括两部分:JET播放器和JET引擎。JET常用于控制游戏的声音特效,采用MIDI(Musical Instrument Digital Interface)格式。
  MIDI数据有一套音乐符号构成,而非实际的音乐,这些音乐符号的一个序列称为MIDI消息,Jet文件包含多个Jet段,而每个Jet段又包含多个轨迹,一个轨迹是MIDI 消息的一个序列。
  JetPlayer类内部有个存放Jet段的队列,JetPlayer类的主要作用就是向队列中添加Jet段或者清空队列,其次就是控制Jet段的轨迹是否处于打开状态。需要注意的是,在Android开发中,JetPlayer是基于单子模式实现的,在整个系统中,仅存在一个JetPlayer的对象。JetPlayer的常用方法包括:

-- 代码:Ringtone对铃声的播放
getJetPlayer() //获得JetPlayer的句柄
clearQueue()    //清空队列
setEventListener()    //设置JetPlayer.OnJetEventListener监听器
loadJetFile()    //加载Jet文件
queueJetSegment()    //查询Jet段
play()    //播放Jet文件

-- 下面是Jet的一般播放过程:
private boolean muteMask[][] = new boolean[9][32];
JetPlayer mJet = JetPlayer.getJetPlayer();    //获得JetPlayer的句柄
mJet.clearQueue();    //清空当前队列
mJet.setEventListener(this);    //设置消息监听器
mJet.loadJetFile(mContext.getResources().openRawResourceFd(R.raw.level1));//加载文件
byte sSegmentID = 0;
mJet.queueJetSegment(0, 0, 0, 0, 0, sSegmentID); //查询Jet段
mJet.queueJetSegment(1, 0, 4, 0, 0, sSegmentID);
mJet.queueJetSegment(1, 0, 4, 1, 0, sSegmentID);
mJet.setMuteArray(muteMask[0], true);
mJet.play();    //播放

-- JetBoy游戏深入解析(中)——JetPlayer类解析- https://blog.youkuaiyun.com/andinker/article/details/83949963

JET播放器和JET引擎。

  JET:一个在嵌入式设备上的音乐播放器(JET is an interactive music player for small embedded devices, including the those running the Android platform)
  JET engine:一个控制游戏声音特效的引擎,其使用MIDI格式,并可以控制游戏的时间进度(一个精确的时钟是一个游戏必不可少)。

-- JetPlayer则是Android SDK中提供的控制JET engine的类。
关于MIDI(Musical Instrument Digital Interface:乐器数码接口)我们简要说明下:
  MIDI是用于在音乐合成器(music synthesizers)、乐器(musical instruments)和计算机之间交换音乐信息的一种标准协议;
  MIDI不是声音信号,在MIDI电缆上传递的不是声音,而是发送给MIDI设备或其它装置让它产生声音或执行某个动作的指令;
  MIDI主要有以下优点:生成的文件比较小,因为MIDI存储的是命令,而不是声音波形;容易编辑命令比编辑声音波形要容易的多;可以作为背景音乐,因为MIDI音乐可以和其他的媒体,比如数字电视、图形、动画等一起播放,这样可以加强演示效果;
  每个物理MIDI通道(MIDI channel)分成16个逻辑通道,每个逻辑通道可以指定一种乐器,在MIDI信息中,用4个二进制位来表示这16个逻辑通道;
  MIDI数据是一套音乐符号的定义,而不是实际的音乐,所以MIDI文件的内容被称为MIDI消息(MIDI message/MIDI event)。一个MIDI消息由1个8位的状态字节并通常跟着2个数字字节组成。在状态字节中,最高有效位设置为“1”,低4位用来表示这个MIDI消息是属于那个通道的,其余3位的设置表示这个MIDI消息是什么类型(通道消息-channel message,系统消息-system message)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值