MIDP: Music and Sound Jussi Pohjolainen TAMK University of Applied Sciences
Sound and Music, the Basics
MIDP 2.0 includes basic audio capabilities
Media API in MIDP 2.0 is a subset of the MMAPI (Mobile Media API).
MMAPI: http://jcp.org/en/jsr/detail?id=135
Subset of the MMAPI that is included in MIDP 2.0 is called Audio Building Block (ABB).
Features: Playing simple tones and sampled audio
Media API can also be used as playing all kinds of media, for example movies.
MIDP 2.0 Media Concepts
Audio data comes in variety of content types.
Content type = file format!
MP3, AIFF, WAF etc.
Content types are specified using MIME types, which use a string to specify a 1) primary and 2) secondary type.
Example: "audio/x-wav"
Content type tells how to translate bits into sound.
Different content types
Wave audio files:
audio/x-wav
AU audio files:
audio/basic
MP3 audio files:
audio/mpeg
MIDI files:
audio/midi
http://www.iana.org/assignments/media-types/
Audio Data Path Audio Data DataSource Player [ speaker ] For example: applause.wav Handles transporting the data to the player Interface in javax.microedition. media
Relationship between classes DataSource Player Manager Control Controllers can control tone and volume Manager creates a player with certain content types and protocols creates
Supported Content Types and Protocols
MIDP 2.0 spec: if sampled audio is supported at all, then 8-bit PCM WAV must be supported.
WAV is guaranteed.. your mobile phone can support other content types, for example mp3.
It is possible to ask (runtime) from Manager which content types and protocols it can handle.
Protocol, for example: http, file, capture .
Manager-class
javac.microedition.media.Manager is the access point for obtaining system dependent resources such as Players for multimedia processing.
A Player is an object used to control and render media that is specific to the content type of the data.
Manager provides access to an implementation specific mechanism for constructing Players.
For convenience, Manager also provides a simplified method to generate simple tones .
Supported Protocols and Content types
To find out at runtime what content types and protocols are supported:
Manager -class
public static String[] getSupportedContentTypes(String protocol)
public static String[] getSupportedProtocols(String content_type)
See example: MediaInformationMIDlet.java
Player Life Cycle
Player has detailed life cycle
Life cycle has states:
UNREALIZED
Player is created, but it hasn't tried to find audio data.
REALIZED
Media data is located.
PREFETCHED
Audio data is fetched and ready to go
STARTED
Audio data is playing
CLOSED
All resources are released
Player States
Creating a Player
Player is created using by Manager class
public static Player createPlayer(InputStream stream, String type)
Example
Player player = Manager.createPlayer(...);
Parameters
Stream to the data file.
String type = content type, example: "audio/x-wav"
Example of creating Player instance
Example
InputStream in = getClass().getResourceAsStream("/relax.wav");
Player player = Manager.createPlayer(in, "audio/x-wav");
Exception handling is necessary, use try catch.
Example: SimpleGameWithSounds.java
(Maybe the most irritating game of all time)
Controlling Players
Player has following methods that control played sound:
setMediaTime(long now) - jump directly to particular point in an audio clip
setLoopCount(int count) - loop
Player Controls
Control classes can control Players
You can obtain a list of Controls for a Player by calling getControls ().
This JSR defines an API that provides culturally correct data formatting, sorting of text strings and application resource processing for J2ME MIDlets running in MIDP over CLDC.
Language Learning Curve IDE Portability Development tool cost Symbian C++ Difficult Many Choices, Carbide C++ Only Symbian Varies S60 Qt Easy Carbide / Qt Creator Windows, Linux, Mac OS X and S60 Free Android Java Average Eclipse unknown Free Maemo C Average Maemo SDK Only Maemo Free Windows Mobile C#, VB Average Visual Studio Only Windows Mobile Varies iPhone Objective-C Average Xcode Only iPhone Free, distribution costs Flash Lite ActionScript Easy Macromedia Flash Excellent Varies Java ME Java Easy Sun Wireless Toolkit Average Free Web (x)html Easy Many Excellent Free
What's next?
Ohjelmistotuotannon uudet suuntaukset
Google Android and iPhone – programming
Used languages and frameworks: Java and Objective-C
Maemo programming is not covered, since Qt will be the framework for developing Maemo apps.
Mobiiliohjelmointi 2: Qt for S60
No more Symbian C++
Qt is very easy C++ - framework for developing apps to Windows, Linux, Mac OS X and S60
Schedule
2009-09-209: Determine the subject of your Project Work
2009-10-08: Exam (13.00 – 14.45)
2009-10-23: Project Work Deadline
2009-10-30: Evaluate other student's project
Exam
Dummy SCMAD certification test
Multiple Choice
48 questions, 0.5 points each, 24 points max
To pass, you must get atleast 26 questions right. (about 55%)
0 comments
Post a comment