I have been bad about including all of the source etc.. I found out why winamp would not play media... I didn't think about including the plug-ins directory, where the wave-out and other important things are. I also included the missing .frm and .bas files.
I think the color scheme would be a good idea, but I need a way to implement it without resorting to color codes. I never really liked to type in a number that stands for some color. I think that if a screenshot of each screen were captured, an imagemap like thing could be created with links to change the clicked on feature's color.
Originally, that rotating cube was going to serve a purpose, since screen space is at a premium in a vehicle. I cannot figure out how to get good control over it though.
If ya can, look at the IRman code. It really needs some help.
Well, anyways I repackaged the source, and the binary, so now it should work great. I downloaded it on another computer and it worked.
Hehe, I wonder how many people have downloaded it and thought, well this is pretty, but it doesn't play music.
dude, dont know if you saw my above postage... but I can help u out with the IRMan code...... PM/email me if your keen...
As I have no irman to test with, and magnetik seems to have some suggestions for you on that I took a look at some keyboard control issues. Below are a few suggestions and a copy of playmp3.frm with fixed (keyboard) mute functions and a few other minor changes. If you haven't done any work in this form's code since the last time you released the source, then drop it into your project and see what you think.
First, I would suggest putting this line in all your _OnKeyPress event subs right after you get the key value: KeyAscii = 0. This negates the keystroke so your form controls don't get confused. For example, if I use  (on the 10-key pad) for the kbUp key, the sub processes it and changes the selection in the listbox, but your form is still passed the 8 key which causes the listbox to do a text query and jump to the next line starting with an '8'. This can cause really strange behavior (from a user's perspective).
Second, I negated the functionality of the currentvol variable - no longer written to the ini file. Windows does a fine job of keeping track of the volume setting, so I figured this would be one less thing to deal with. Also commented out the set winamp volume call. Should probably set it to some nominal value like 70 % of maximum, but that could be a topic for debate. I also changed / commented code in the OnLoad and OnUnload event subs that correspond with the changes to this and the mute sub.
Third, I fixed the kb mute function and added a muting variable so we ignore all volume related input while mute is on or the muting loop is running. I also added a sleep api declare so we can ramp the volume up/down a little more smoothly. (DoEvents is needed in most loops, but offers no consistent delay) If you change the value of the sleep time (milliseconds) you'll change the mute rate. A user definable variable would give the user the ability to mute as quickly / slowly as they like - 20 would roll off slowly, and 0.01 would be roughly instantaneous.
Fourth, it might be a good idea to create a subroutine for all the actions you want to execute in a form, and then call those subs from within the _OnKeyPress and IRMan_KeyPressed event subs. That way you only have one routine to deal with (and debug) for each event. An example of how this would be useful - I purchased a Creative CIMR100 IR remote to use for my controller. I have no idea if this is any different from an irman (haven't received it yet), but it had a neat little credit-card remote and it was on sale for <$8. =) If it's not functionally equivalent to an irman, I'll put the $30 I saved on it towards beer, write my own class and incorporate the functionality in this app. With encapsulated subs for volume up, mute, track up / down, etc. this would be a lot simpler to implement and debug. Another example would be adding voice command with a third party control.
Along the lines of color schemes, if I have more time this week I'll look into the possibility of a color-picker form. I also would rather have something that could be changed with standard (user friendly) controls instead of using rgb integers in an ini file.
Well, I hope this has been helpful - with a little work and possibly some gps capabilities, Media Engine looks to be the front-end I'm going to be using for my first setup (just received my lcd today).
Thanks for the input. That the freakin awesomest mute I have ever seen. I liked what you have done, so I have incorporated it into the source code. The new code has been uploaded to the site. I still need to build a binary. I will do that tomarrow.
I need to find a place in the program where people like you can add their "signature" and it can be viewed by people running the program.
Magnetik - If you could, grab the source now and check out the Irman timing issues. I am at my end for ideas with them. If you could just post your fixed code here on the vboard I would be happy to add it to the build.
I am going to be working on the mpeg screen soon. I noticed something that needs fixed... On the first run, before you do the "setup", if you go to PlayMp3s in the main menu, winamp will hang. It is because the program looks in the settings.ini file for the last song played. Since there has never been a song, winamp just displays the "open a file" box, which isn't seen b/c of winamp vbhide. Its easily fixed. Maybe, disable playmp3 until a key is made in settings.ini for "hasplayedsong" or something.
I noticed a whole slew of problems when I tried to run code on another machine. Has a lot to do with the program expecting certain filenames and paths to be in the settings.ini file.
BTW: I am not going to charge anyone anything for this ever.
I am slightly pressed for time (I have been in a training class all day) and it is almost 5:00.
I will post here later on tonight.
Updated Source Code
-Thank you phat_bastard and magnetik for your help.
I have uploaded the latest release binary setup. It has many new features such as...
Easy to use setup screens
More tolerant to incorrectly structured directories
The coolest mute ever (Courtesy of phat_bastard)
Improved playlist generation engine
INSTALLTIPS.txt to help explain some of the features
Support for DVD is still in the works. I managed to get mpeg and avi files to play, but have not implemented it into the release yet.
Download Media Engine Beta 1.0.2
Released another update...
Worked on IRman timing more... Now it is more configurable in setup.
Almost have the mpeg / DVD section done.
Found more errors and fixed them (mainly during "first run")
Figured out how to make winamp completely invisible.
Cleaned up code and configured installation so it displays the INSTALL.txt file after installation is completed.
(Hey, if you want to know how to exit the program, press your QUIT key on the main menu.)
Media Engine Beta 1.0.3 Install
Media Engine 1.0.3 Source Code
Looking good. Here are a few suggestions for you (not worth attaching the source files).
I'm not sure what you changed to make winamp less visible, but to really hide it you could edit the line in Winamp_Control.bas that launches it from:
returnvalue = Shell(App.Path & "\winamp.exe", vbMinimizedNoFocus)
returnvalue = Shell(App.Path & "\winamp.exe", vbHide)
This will keep it completely hidden 24X7. =)
You might want to then uncomment the line in playmp3.frm that sets winamp's volume, and set the value to 255 (maximum) so it's completely out of sight + mind. I only mention this because I just installed this on my car-puter with a clean install of win2k, and winamp had a default volume setting of like 20%.
Also, please add the following line to the Form_KeyPress event sub in media_engine.frm and playlists.frm.
after this line >>> keystr = CStr(KeyAscii)
add this >>> KeyAscii = 0
This keeps wacky things from happening in the playlists listbox control.
Nice work with this - of all the players I've tried out in the last few months, this is the best at handling deeply nested directory trees, and the navigation through the trees is awesome. Other than the winamp volume issue and the listbox weirdness, it worked perfectly on a newly installed copy of win2k. I'm syncing my mp3s onto my 'puter overnight, and hope to road test it and my lcd tomorrow. Oh yeah, nice work with the prompt for the media directory!
CarComp, I dont understand your issues with Timing and the IRMan, do you mean delay between keypresses??? that was easy to solve in my program, since the entire program runs off the firing of a SINGLE timer event....
and not the cruddy VB standard timers that only go downto 55ms or so (10ms or so on NT/2K/XP if your lucky) no I am using the multimedia timer that comes with winmm.dll, 1ms resolution and works like a charm... ;) so the event is a very accurate interval and all my animation/etc is hooked off of this one timer (alot harder to write that is sounds.... with the entire application code control by a single event!)
then all I do is have a counter that is incremented each call of the timer, when a IRkeypress is received the counter is reset, and another keypress will not be accepted until the counter is greater than [predefined delay] of course any other IRMan codes/keypress received in that time are removed from the serial port's UART buffer - otherwise that would defeat the whole purpose....
maybe you could use the 'queryperformancetimer' API calls, VERY accurate timings..... and base your IRman timing code off that (assuming this timing is for keypress/code rejection)
finally, I noticed your using IRMAN.OCX??? my implementation just uses the standard MSCOMM32.OCX activeX control to provide access to the serial port, then I have a module to interperet and receive bits/and/bytes from the serial port......
at the end of it, I dont have time to help u with your app, seems u have enuff ppl working on it already (anything more than one is enough IMHO!) but I will gladly pass on my IRman module that u can implement if you like... just shoot me that email... ;)
I have actually figured out the IRman timing issue, I just have not implemented it yet. Yes, my dumbass has only been recently introduced to the MScomm in vb. I am not going to be using any timers really, I am going to use OnComm to generate the signals when you push the button.
Instead of polling the serial port repeatedly, I will just let it "tell" me when it has data.
I still would love to look at your source code. I have not really thought about how to parse the received data. (e.g. I don't know what to do with it), but I only just figured it out on friday.
If I figure out the IRman (I already have a rock solid keyboard system) I should be able to get into making Media engine very customizable. I have not decided how to do it yet (skin it, just change colors, have a few available presets, or just let someone who knows what they are doing look at it.)
I got VB to play DVD without much trouble. I already had AVI & Mpeg as you know.
Ideas people... I need ideas, cause I am spending too much time working with nitty gritty things, instead of making progress in new directions.
Don't forget this is open source... I would appreciate any hard coding anyone feels like doing (phat_bastard- thanks)
Website for code & uploads???
I have completely rewritten the IRman control using the MScomm control. It works great now.