Ringdroid

Ringdroid Android application

Ringdroid is an Android application for recording and editing sounds, and creating ringtones, directly on the handset.
Features
  • Open an existing audio file
  • View a scrollable waveform representation of the audio file at 5 zoom levels
  • Set starting and ending points for a clip within the audio file, using an optional touch interface
  • Play the selected portion of the audio, including an indicator cursor and autoscrolling of the waveform
  • Play anywhere else by tapping the screen
  • Save the clipped audio as a new audio file and mark it as Music, Ringtone, Alarm, or Notification.
  • Record a new audio clip to edit
  • Delete audio (with confirmation alert)
  • Launches automatically in response to the GET_CONTENT intent with a mime type of audio/ if any other application wants to pick an audio file – for example the “Rings Extended” application.
  • Assign a ringtone directly to a contact.
ringdroid_screenshot
ringdroid_screenshot_2

Put songs on your SD card

The first step is to copy songs onto your SD card. Connect your handset to your computer using the supplied USB cable. Your handset will now appear on your computer just like a disk, CD-ROM, flash drive, or external disk would. Copy MP3 files and other audio files to your SD card, and then unmount the drive and disconnect the USB cable.
Android supports common file formats like MP3 and AAC (iTunes, unprotected). It does NOT support WMA files.
Video for Ringdroid
Ringdroid is implemented in pure Java, and it serves as an excellent demonstration of what is possible using the Android SDK. It works identically on the emulator and on an HTC T-Mobile G1 handset.
Ringdroid uses the Android SDK to find media files, play and seek, and record. However, the SDK does not include any functionality for opening and decompressing compressed audio files. So, Ringdroid implements pure-Java audio file parsers. These parsers do not completely decompress the audio. Instead, they simply need to parse headers, frame headers, and just enough information from each audio frame to create a crude representation of the waveform. When the user wants to save a file, the audio file library copies entire audio frames from the original files and assembles them into a valid file of the same format. Thus no decompression or compression of audio ever happens in the pure Java code. The Android SDK is used to actually play the audio.
File formats
Supported file formats right now include:
  • WAV
  • MP3
  • 3GPP/AMR (this is the only format that Android records into currently)
  • AAC/MP4 (including iTunes AAC files)
Editing and audio effects
Right now because the pure Java code only parses the frame structure of the audio file and cannot modify the waveform directly, it’s hard to imagine doing more complicated audio effects like reverb, noise removal, etc. – however, here are some crazy ideas that might actually be possible given the significant limitations:
  • Fade in/out. All we’d need to do is modify the “gain” of each audio frame. This is potentially quite easy for MP3. For 3GPP/AMR it’s also possible but there are often only up to 6 bits of resolution to play with per frame (unless the entire waveform is decompressed). For Ogg Vorbis it seems much harder.
  • Speed up / slow down. You could create a terrible sounding speed-up or slow-down effect by skipping every other frame or doubling each frame.
  • Silence. This is actually not a bad idea. If someone wanted to insert silence at the beginning, middle, or end, it would be relatively easy to add some “blank” audio frames
  • Pitch Change. You could change the sample rate from 8000 to something else, as long as the Android media player supports resampling from that new sample rate.
  • Tones. People could assemble a monophonic musical ringtone by assembling prerecorded audio frames of a tone. If we had tones fpr each audio format we could splice them into any other audio.
  • Repeat. Repeating is pretty easy, if someone wants to repeat a portion of the audio with a particular delay in-between. This potentially gives more control than just having the ringtone looped when it plays back.
Reference to main article on Google Developers

0 comments:

Post a Comment