MIDP: Music and Sound

23
MIDP: Music and Sound Jussi Pohjolainen Tampere University of Applied Sciences

Transcript of MIDP: Music and Sound

Page 1: MIDP: Music and Sound

MIDP:  Music  and  Sound  

Jussi  Pohjolainen  Tampere  University  of  Applied  Sciences  

Page 2: MIDP: Music and Sound

Sound  and  Music,  the  Basics  •  MIDP  2.0  includes  basic  audio  capabiliEes  •  Media  API  in  MIDP  2.0  is  a  subset  of  the  MMAPI  (Mobile  

Media  API).  – MMAPI:  hHp://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.  

Page 3: MIDP: Music and Sound

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.  

Page 4: MIDP: Music and Sound

Different  content  types  

•  Wave  audio  files:      –  audio/x-­‐wav  

•  AU  audio  files:            –  audio/basic  

•  MP3  audio  files:          –  audio/mpeg  

•  MIDI  files:                          –  audio/midi  

•  hHp://www.iana.org/assignments/media-­‐types/    

Page 5: MIDP: Music and Sound

Audio  Data  Path  

Audio  Data   DataSource   Player  

[  speaker  ]  

For  example:  applause.wav  

Handles  transporEng  the  data  to  the  player  

Interface  in    javax.microediEon.  media  

Page 6: MIDP: Music and Sound

RelaEonship  between  classes  

DataSource   Player  

Manager  

Control  

Controllers  can  control  tone  and  volume  

Manager  creates  a  player  with  certain  content  types  and  protocols  

creates  

Page 7: MIDP: Music and Sound

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  (runEme)  from  Manager  which  content  types  and  protocols  it  can  handle.    

•  Protocol,  for  example:  hCp,  file,  capture.  

Page 8: MIDP: Music and Sound

Manager-­‐class  •  javac.microedition.media.Manager  is  the  access  point  for  obtaining  system  dependent  resources  such  as  Players  for  mulEmedia  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  implementaEon  specific  mechanism  for  construcEng  Players.  

•  For  convenience,  Manager  also  provides  a  simplified  method  to  generate  simple  tones.    

Page 9: MIDP: Music and Sound

Supported  Protocols  and  Content  types  

•  To  find  out  at  runEme  what  content  types  and  protocols  are  supported:  – Manager-­‐class  

•  public static String[] getSupportedContentTypes(String protocol)!

•  public static String[] getSupportedProtocols(String content_type)!

•  See  example:  MediaInformaEonMIDlet.java  

Page 10: MIDP: Music and Sound

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  

Page 11: MIDP: Music and Sound

Player  States  

Page 12: MIDP: Music and Sound

CreaEng  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"  

Page 13: MIDP: Music and Sound

Example  of  creaEng  Player  instance  

•  Example  •  InputStream in = getClass().getResourceAsStream("/

relax.wav");!•  Player player = Manager.createPlayer(in, "audio/x-wav");!

•  ExcepEon  handling  is  necessary,  use  try  catch.  

•  Example:  SimpleGameWithSounds.java  –  (Maybe  the  most  irritaEng  game  of  all  Eme)  

Page 14: MIDP: Music and Sound

Controlling  Players  

•  Player  has  following  methods  that  control  played  sound:  – setMediaTime(long now)  -­‐  jump  directly  to  parEcular  point  in  an  audio  clip  

– setLoopCount(int count)  -­‐  loop  

Page 15: MIDP: Music and Sound

Player  Controls  •  Control  classes  can  control  Players  •  You  can  obtain  a  list  of  Controls  for  a  Player  by  calling  getControls().  

•  MIDP  2.0  has  only  two  Controls  for  the  Player:  –  VolumeControl  –  ToneControl!

•  Example  of  usage:  –  VolumeControl vc = (VolumeControl) player.getControl("VolumeControl");!

–  vc.setLevel(50);  

Page 16: MIDP: Music and Sound

OpEonal  APIs  

Page 17: MIDP: Music and Sound

Mobile  Media  API  (JSR  135)  

•  Playing  sounds  and  tones  •  Also  capturing  media  – MMAPI  supports  capturing  audio  and  video  from  onboard  hardware  

– Recording  sound,  video  and  taking  pictures  •  hHp://today.java.net/pub/a/today/2005/09/27/j2me4.html  

Page 18: MIDP: Music and Sound

Wireless  Messaging  API  (JSR  205)  

•  Common  API  for  sending  and  receiving  text  and  binary  messages.  

•  hHp://developers.sun.com/mobility/midp/arEcles/wma/  

Page 19: MIDP: Music and Sound

Bluetooth  API  (JSR  82)  

•  ConnecEng  via  Bluetooth  •  Tutorial  – hHp://developers.sun.com/mobility/midp/arEcles/bluetooth2/  

Page 20: MIDP: Music and Sound

JAXP  XML  Parser  (JSR  172)  

•  This  JSR  is  designed  to  provide  a  general  purpose  XML  API  for  the  next  generaEon  of  mobile  devices  

•  Supports  – SAX  2  event  handler-­‐based  parsing  

Page 21: MIDP: Music and Sound

LocaEon  API  (JSR  179)  

•  Enables  developers  to  write  mobile  locaEon-­‐based  applicaEons  for  resource-­‐limited  devices  

•  Determining  device's  locaEon  (GPS)  •  Tutorial  – hHp://developers.sun.com/mobility/apis/arEcles/locaEon/  

Page 22: MIDP: Music and Sound

Mobile  InternaEonalizaEon  API  (JSR  238)  

•  This  JSR  defines  an  API  that  provides  culturally  correct  data  formakng,  sorEng  of  text  strings  and  applicaEon  resource  processing  for  J2ME  MIDlets  running  in  MIDP  over  CLDC.  

•  Tutorial  – hHp://www.ibm.com/developerworks/wireless/library/wi-­‐midapi/  

Page 23: MIDP: Music and Sound

Scalable  2D  Vector  Graphics  API  for  J2ME  (JSR  226)  

•  Scalable  2D  Vector  Graphics  API  for  J2ME  (JSR  226)  provides  MIDlets  with  an  API  for  displaying  SVG  content.    

•  Tutorial  – hHp://developers.sun.com/mobility/midp/arEcles/s2dvg/index.html