FSO ringtones

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(Add use of playbin to make ringtone format agnostic)
Line 76: Line 76:
  
 
[[Category:Add-on data]]
 
[[Category:Add-on data]]
 +
[[Category:FSO]]

Revision as of 17:46, 4 September 2008

Key pages on:
FSO

(Other distributions)


The ringtone in milestone 2 is stored here:

/usr/share/sounds/Arkanoid_PSID.sid

Now to change it is a little bit of fun.

first change directory to

/usr/lib/python2.5/site-packages/framework/subsystems/oeventd/

and open the file receiver.py

  1. this will be /var/lib/python-support/python2.5/framework/subsystems/oeventd/receiver.py if you are using FSO under Debian

Change the line that reads:

decoder = gst.element_factory_make( "siddec", "decoder" )

to

decoder = gst.element_factory_make( "mad", "decoder" )


and change the line that reads:

filesrc.set_property( "location", "/usr/share/sounds/Arkanoid_PSID.sid" )

to

filesrc.set_property( "location", "/usr/share/sounds/ringtone" )

If you would like to play most formats of audio file (including ogg), change the play() function to this

   def _play( self ):
       self.player = pipeline = gst.Pipeline( "oeventd-pipeline" )
       sink = gst.element_factory_make( "alsasink", "sink" )
       playbin = gst.element_factory_make( "playbin", "playbin" )
       playbin.set_property( "uri", "file:///usr/share/sounds/ringtone" )
       playbin.set_property("audio-sink", sink)
       pipeline.add(playbin)
       
       bus = self.player.get_bus()
       bus.add_signal_watch()
       bus.connect( "message", self._onMessage )
       pipeline.set_state(gst.STATE_PLAYING)
       logger.info( 'playing ringtone' )
       self.ringing = True

There does seem to be a lag of a few vibrations before the sound starts but that might desirable. (I didn't compare against the original code). The code to specifically handle formats, (oggs for example) can be a little complicated and makes things messy. Since, it seems like this code is changing in FSO, I'm leaving it for the moment.

Then

mv receiver.pyo /home/root 
  1. receiver.pyo will be receiver.pyc in FSO under Debian


python
 >>> import py_compile
 >>> py_compile.compile("receiver.py")
 >>> quit()
  1. You may not have the py_compile module. You can install them like this:
opkg install python-compile
/etc/init.d/fso-frameworkd restart && /etc/init.d/zhone-session stop && sleep 2 && /etc/init.d/zhone-session start
  1. I've only run the above restart commands in Debian so I'm not sure if they are the same in the default FSO image
  2. the default zhone-session file doesn't have a working restart command, hence the stop->sleep 2->start

zhone for FSO seems to be launched by Xsession.d so maybe try:

/etc/init.d/xserver-nodm restart

Now you can link /usr/share/sounds/ringtone to any mp3 (or other sound file if you took the second option) and that will be your ringtone

Personal tools
Key pages on:
FSO

(Other distributions)


The ringtone in milestone 2 is stored here:

/usr/share/sounds/Arkanoid_PSID.sid

Now to change it is a little bit of fun.

first change directory to

/usr/lib/python2.5/site-packages/framework/subsystems/oeventd/

and open the file receiver.py

  1. this will be /var/lib/python-support/python2.5/framework/subsystems/oeventd/receiver.py if you are using FSO under Debian

Change the line that reads:

decoder = gst.element_factory_make( "siddec", "decoder" )

to

decoder = gst.element_factory_make( "mad", "decoder" )


and change the line that reads:

filesrc.set_property( "location", "/usr/share/sounds/Arkanoid_PSID.sid" )

to

filesrc.set_property( "location", "/usr/share/sounds/ringtone" )

If you would like to play most formats of audio file (including ogg), change the play() function to this

   def _play( self ):
       self.player = pipeline = gst.Pipeline( "oeventd-pipeline" )
       sink = gst.element_factory_make( "alsasink", "sink" )
       playbin = gst.element_factory_make( "playbin", "playbin" )
       playbin.set_property( "uri", "file:///usr/share/sounds/ringtone" )
       playbin.set_property("audio-sink", sink)
       pipeline.add(playbin)
       
       bus = self.player.get_bus()
       bus.add_signal_watch()
       bus.connect( "message", self._onMessage )
       pipeline.set_state(gst.STATE_PLAYING)
       logger.info( 'playing ringtone' )
       self.ringing = True

There does seem to be a lag of a few vibrations before the sound starts but that might desirable. (I didn't compare against the original code). The code to specifically handle formats, (oggs for example) can be a little complicated and makes things messy. Since, it seems like this code is changing in FSO, I'm leaving it for the moment.

Then

mv receiver.pyo /home/root 
  1. receiver.pyo will be receiver.pyc in FSO under Debian


python
 >>> import py_compile
 >>> py_compile.compile("receiver.py")
 >>> quit()
  1. You may not have the py_compile module. You can install them like this:
opkg install python-compile
/etc/init.d/fso-frameworkd restart && /etc/init.d/zhone-session stop && sleep 2 && /etc/init.d/zhone-session start
  1. I've only run the above restart commands in Debian so I'm not sure if they are the same in the default FSO image
  2. the default zhone-session file doesn't have a working restart command, hence the stop->sleep 2->start

zhone for FSO seems to be launched by Xsession.d so maybe try:

/etc/init.d/xserver-nodm restart

Now you can link /usr/share/sounds/ringtone to any mp3 (or other sound file if you took the second option) and that will be your ringtone