Page 1 of 2 12 LastLast
Results 1 to 20 of 22
  1.    #1  
    Since it has been a rather intensive labor of love, I just wanted to let everyone know about the project I am working on, and which was just published on the official App Catalog. Search for Wormp3 since I am not allowed to post links yet.

    Wormp3, source available at Github under Epik and Wormp3 (to the moderator, I don't really care about posting a link to the package, but I really want to be able to post a link to the source, so if someone could assist on that, I would be much appreciative), is my attempt to try and create some music processing libraries for WebOS. Note that as it stands, you won't be able to just download and compile the code, since I have not created a make file for it, and it requires the Palm SDK libraries. It is on my to do list to try and fix that, or at least fully document how to get it working. Would love to hear from anyone with experience implementing that kind of thing.

    Currently, all I have implemented is a Kaiser window based FIR filter for re-sampling. The interpolation uses a 16 bit table, so the theoretical error bound for the re-sample is pretty small. I do allow for re-sampling above the Nyquist limit (x2 the number of samples in the original), but only because I think the aliasing sounds cool, not because I think I can disregard the laws of sample processing. The filter is implemented entirely using fixed point math, so it should be able to run on the Pixi, although I can't test it since I don't have access to that device. Also, it makes almost no use of the PDK aside from SDL and OpenGL, so it should be easy enough to use the Palm Internals package instead of the Official pdk.

    I am currently working on adding pitch shifting, so if anyone has any experience using FFT on the device, I would love to hear from you (currently using KISSFFT). Particularly if you have a good idea about how to derive Atan2(x,y) with a fixed point representation.

    Also, although this started out as my attempt to get in on the Hot Apps PDK competition, I am not really interested in creating yet another mp3 player for the pre, as I think the ones that are out there are already good enough. What I am really interested in is the post processing, so if you are a developer of a closed source mp3 player and would like to try and add some filtering, I would be happy to work with you and keep it closed source, provided I get to open source any improvements to the actual filter algorithm portion of the code that results (just the actual processing algorithm, I am fine keeping how you get the byte stream into the filter closed if you need).

    As it stands now, the code is released under the LGPL since it uses MPG123 and some other LGPL libraries. However, I have no problem releasing my non-derivative original product under the BSD license if you ask.

    Finally, the player also required that I implement an OpenGL based file chooser. If anyone is interested in that section of the code, I would be happy to assist.
  2. #2  
    Sprint|Samsung Epic
  3. #3  
    And the link to your source:

    epik's Wormp3 at master - GitHub
    Arthur Thornton

    Former webOS DevRel Engineer at Palm, HP, and LG
    Former webOS app developer (built Voice Memos, Sparrow, and several homebrew apps and patches)
    Former blogger for webOS Nation and webOS Roundup
  4.    #4  
    Thanks.
  5. #5  
    @nyuepik

    Wow! Everything you mention sounds fascinating (although half of it is over my head). If I understand you correctly, you not only have access to speed and pitch, but you also have the access/knowledge/skill to modify the raw audio data in any way you please? My thoughts are running wild with the possibile apps that could be created... everything from an on-device music editing suite including triming and resaving songs; to an equalizer that could permanently resave a song with the chosen settings; to a kareoke app that could adjust the audio data to minimize the vocals and have the user lay their own voice over it; to a DJing app that could mix different portions of songs (vocals/beats) together and resave it as one; or at the very least a DJ app that would adjust the speed and pitch of two sequential tracks so that they flow together seemlessly?!
    Developer of: FFplayer - a file/folder based music player. FFplayer home
  6.    #6  
    Well, I don't know yet if pitch correction in real time is possible. I know that it is possible if you are willing to wait long enough, but I am still in the early stages of implementation. Trig functions don't translate well to fixed point math.

    I know re-sampling in real time is possible, and that there are enough free cycles to theoretically save the byte stream to memory. So you could definitely compose something, provided you have a way to save it. Problem is Palm limits the ability to write files. You would probably have to do it as a jail break, but I don't know enough about that to say for sure.

    My guess is the karaoke app would be tough, since you would need to get the FFT right, and that is the most processor intensive part, but maybe. Will have a better idea once I get pitch working.
  7. #7  
    Wouldn't want to do that to music, but might come in handy for some podcasts....
    My device history:

    - Jim J.

    (On Sprint for many years)
  8. #8  
    @nyuepik

    When you say Palm limits the ability to write files, are you talking about Palm App Catalog restrictions, or WebOS programming restrictions? I personally don't care about ever getting into the Palm App Catalog (you may feel differently yourself). Right now I'm making use of Jason Robitaille's amazing File Mgr Service for File I/O access. If you havn't heard about it yet, take a look...
    http://www.precentral.net/homebrew-apps/filemgr-service
    Developer of: FFplayer - a file/folder based music player. FFplayer home
  9.    #9  
    I have only ever worked with the pdk, so you probably have a better idea than I do of the limitations of WebOS File I/O. If you have write access, then you could easily save an edited song.

    What call are you using to play songs at the moment with your player? In order to get access to the byte stream I use MPG123, which is LGPLed. Not sure if that would be a problem for you.

    Also, has anyone tried out the program? I saw a few commentors on the app store saying the program crashed on them, and I want to see if it is a broader problem.
  10. #10  
    I'm currently just using a simple HTML5 Audio object. I'd be willing to try using MPG123 if you guide me (I've never worked with it before). Of course that would mean I'd better start learning the PDK as well.

    As for Write access, the only thing that File Mgr Service provides is writing to a text file. I'm not sure if the byte stream could be written that way and then later have the file extension renamed appropriately? If not, then we'd probably need Jason Robitaille's help but he's a busy man.

    Anyway, I'll try out your program and let you know what I experience.
    Thanks
    Developer of: FFplayer - a file/folder based music player. FFplayer home
  11.    #11  
    MPG123 is pretty easy; I have already written the interface class, and the compile flags --arm_nofpu and accurate rounding are all you need to get it to decode fast enough. The only tricky part is getting access to the library itself. If you are willing to go open source, then you just compile it statically. If you want to stay closed source, you will have to make sure that you can get it on the device as a shared library.

    I am also assuming you wrote your program in Javascript? If so, you will have to figure out how to call the PDK. If you can figure out those things, then it would be pretty easy to modify my code and use it to handle your music playing and stuff. (MPG also does streaming, which is a nice plus, I just didn't want to do the GUI work needed for it).
  12. #12  
    I just tried out your app. Functionally its perfect, with no performance issues. However the user interface is a little counter intuitive. I've PM'd you some feedback.
    Thanks
    Developer of: FFplayer - a file/folder based music player. FFplayer home
  13. #13  
    as soon as the music starts the app closes.
    Please hit the thanks button if I helped you

    If you've enjoyed my patches please feel free to donate towards further development.

    Follow the link below.


  14.    #14  
    @RealMayo - thanks, but I realized that I only have enough time to either work on the music side or the gui side, not both. As long as you were able to play the song and adjust the speed, I will leave making user friendly to others.

    @2sslow - can you give me a bit more info about the song. What rate was it encoded at? Things like that. Also, you running a stock pre from Sprint? Or something else? Did the song play correctly at all?

    There is clearly something wrong with how it plays on certain phones, but it runs fine on the ones I have tested, so I can't figure it out.
  15.    #15  
    Oh, and if you are really interested in incorporating byte stre environmentam stuff, you should download Cygwin (can't post links just yet). Do that, and I can talk you through building MPG123. Also Eclipse CDT is the development environment I use.
  16. #16  
    I'm curious if those people having performance issues with the app are those who are testing it with a song purchased through iTunes, thus containing heavy DRM. Could the DRM be getting in the way? When I tested your app I used a song that I ripped from one of my CDs, and as I mentioned, everything worked fine. By the way I'm using a 1 year old Sprint Pre (which is definitely not stock either, since I have tons of homebrew stuff running on it).... if that helps at all with your debugging.
    Developer of: FFplayer - a file/folder based music player. FFplayer home
  17.    #17  
    My initial guess is that the people having problems are either using the Pre Plus, don't have their phones on developer mode, or are using mp3's that are some strange format. Developer mode is my best guess, since running stock could be introducing an error with how I handle threads. I will try fixing my threading code and resubmit to see if it fixes things.

    Also, I was thinking about saving music files more. I am pretty sure it would be possible to save a Wav format music file using the txt extension changing method. Saving as an MP3 or similar format is not possible under any circumstances, the encoding process is just too much.
  18. ird
    ird is offline
    ird's Avatar
    Posts
    156 Posts
    Global Posts
    167 Global Posts
    #18  
    zcorder can write audio files, maybe take a look at the source to it. it's on the webosinternals git
    I'm sure. Unless you're trying to avoid homebrew solutions.
  19.    #19  
    Yeah, it should be pretty easy to write the file. However, I am still having problems with getting the pitch shifting. I have a working vocoder in place, but it wont play nice with my sampling code. So now I have to rewrite my fft code so it can handle a larger chunk of data, which should hopefully fix the problem.
  20. #20  
    @nyuepik
    Would you be open to working together to build an EQ sometime in the future? I'd do most of the front end while you'd do most of the back end? I'm not ready to focus on this just yet however, because I still want develop my app further at this time.
    Last edited by RealMayo; 09/28/2010 at 01:00 PM.
    Developer of: FFplayer - a file/folder based music player. FFplayer home
Page 1 of 2 12 LastLast

Tags for this Thread

Posting Permissions