Build Your Own Arcade Controls Forum
Main => Main Forum => Topic started by: saint on April 16, 2007, 12:42:13 am
-
I gotta get me some of this - check out the picture . . . (http://arcadecontrols.com/arcade_main.php#2315)
-
Looks great! Coincidentally red and blue are my cab colors and I could use that exact setup. I might have to build myself something similar. The price is pretty steep though.
-
Isn't it supposed to color with what's on your screen?
-
Yes it is, and isn't this thing patented by Philips ? Called "ambilight" and it's on their more expensive flat TV's.
I have to admit that when I first read about it I thought it was a stupid gimmick, but a friend of mine has it and it does look great. It gives a bit of a movie theatre feeling, although I don't know why....it's nice....
Let me call the folks here in Eindhoven to warn them about their patent ;)
http://www.consumer.philips.com/consumer/catalog/tree/en/us/consumer/TV_GR_US_CONSUMER/FLAT_TV_CA_US_CONSUMER/ce/flat_tv__plasma__lcd_#
-
Hey, that link Saint put up is a Dutch link.......and since Philips is Dutch as well........mmmmmmmmmm maybe Philips is trying to make some more money out of this thing, OR they bought that system to include it in their TV's ?
Anyway, Saint it would be a lot smarter for them to send that review sample to me because we're practicaly neighbors :D :D :D
-
Don't stop them selling it! It would be hellish to take an Ambient PC apart just to get your hands on one of these kits :)
I wonder how it works though... Oh, the joy of an engineering mind... :(
-
It's not all that difficult to do. It's even possible using an LED-Wiz (with the right software, of course)
One would need to write a piece of resident background code which would take a screen cap at certain intervals. Then perform some math on the bitmap to get color averages based on quadrants, strips, etc., of the screen and then light the RGB LED's corresponding to the positions according to the color data.
I think Howard mentioned he was playing with this idea a while back.
RandyT
-
It's not all that difficult to do. It's even possible using an LED-Wiz (with the right software, of course)
One would need to write a piece of resident background code which would take a screen cap at certain intervals. Then perform some math on the bitmap to get color averages based on quadrants, strips, etc., of the screen and then light the RGB LED's corresponding to the positions according to the color data.
I think Howard mentioned he was playing with this idea a while back.
RandyT
Replace the standard black bezel with Polypropylene plastic sheeting and put the LEDs behind the plastic next to the monitor. Talk about BLING. :o Then to take it to the next level have some of the LEDs shining out the back of the cab so the wall takes on the same illumination. Talk about getting immersed in the game.
-
Randy is right there. Euh, that sounds funny :) Anyway, it would not be necessary to do full screen caps, in fact just grabbing a bunch of pixels would be enough. I don't like the A.R.E 's suggestion of adding a cheap PC and screen capture card (though it would work) and I wonder how they grab DirectX screens... (That's a pain, as far as I know.)
What a challenging project...
-
this might have to go into my jukebox that I plan on building this summer.
Randy, why don't you make something like this??
-
Anyway, it would not be necessary to do full screen caps, in fact just grabbing a bunch of pixels would be enough.
Maybe. It depends on the effect you are after. If you want ambient lighting based on the overall hue of the screen, you need to get a pretty good sample. But if you are just concerned with the colors that bleed over the edges, a perimeter sample would suffice.
The other thing to consider is that a full-screen copy to the clipboard is a built-in function of Windows, so implementation would likely be simpler.
RandyT
-
Make it so Randy! :)
-
Make it so Randy! :)
:notworthy: Oh yes mighty wizard of the Bling. Please put your considerable brain power behind this project for us.
-
I don't know if I could do it without stepping on toes, but they may be limited to a method that is very different from what I described above. On the other hand, a non-commercial, 3rd party application designed for use with generic hardware could have fewer ramifications :)
RandyT
-
Less typing, more making.
-
Not the same but.........
use some of those multi color soft change leds that (with blending) end up doing 16 colors and put half a dozen on the back shining on the wall. They fade slowly and you can order them in 10 packs off ebay.
-
Less typing, more making.
Randy, what he said :)
-
Ok, I have the bug. I've checked into a few things and it looks like it could be disgustingly simple to make a quick and dirty app to do this. A ton of config options would add time to the project, but the basics shouldn't take long.
Windows Clipboard seems to work fine under MAME, so as long as it doesn't interfere with gameplay, it should work.
BTW, if this works, it will be a generic utility to set outputs of an LED-Wiz in order to change the color of your CP buttons to something relative to on-screen colors. If you decide to put buttons behind your monitor and point them at the wall, that's up to you ;)
RandyT
-
Generic as in will work with other programs other than Mame? I want to use something like this on the jukebox I am going to make using Freebox. Will your RGBs be bright enough?
-
Generic as in will work with other programs other than Mame? I want to use something like this on the jukebox I am going to make using Freebox. Will your RGBs be bright enough?
If they can blind you just by looking at them then they will be plenty bright enough. ;D
-
Looked into this a little more, especially from the programming side. To build something that does it real time, grabbing screens might not be the right way, due to system load. If you have the CPU power to spare, then there is no issue though 8)
Also, regular screen caps from within Windows are, afaik, GDI based and thus will exclude DirectX sections.
I haven't got a LedWiz, but if there is a sort of DLL interface accessable by more than one application, a background application could sample the screen, and send it's output to a few specified ports of the LedWiz, thus allowing the LedWiz to work with any dedicated app as well as a background 'environment lighting' app.
Does that make sense? Euh ;D
(Hard to find some code samples, here's a little DirectX http://www.geocities.com/foetsch/d3d8screenshot/d3d8screenshot.htm)
-
I think I mentioned earlier that I was able to use the windows clipboard screen grab method under MAME, even at full screen. DirectDraw is enabled, so I'm assuming that it is working.
FWIW, I now have code which does a grid-type sample (user definable frequency) over either the entire screen or just the active app. It performs a bunch of real PITA logic to get an assessment of the main colors. I haven't hooked anything up to an actual LED-Wiz yet, but running WOW in a window next to the output window of my app and the colors are reflecting what's going on in the game. When the screen changes to the blue maze, my control lights blue. When the Worluk appears, it goes red/orange and so on.
It may not be compatible with D3D. Don't know, haven't tried it. It's not "real-time" (currently ~ 300ms intervals) and I still need to transition the changes, but I made a heck of a lot of progress last night. BTW, processor utilization on this system was very low (< 1%) but will change based on the demands you place on speed and accuracy. I also have another method at my disposal which uses an external graphics lib if this one turns out not to work very well. I can carve up the samples to add "zones" down the road if I decide a more advanced implementation is in order.
BTW, does anyone know if "real-time" is important on this kind of thing? If one were watching a movie (which, BTW, doesn't work with this method because the windows capture can't touch the overlay :'() the lighting would really only need to change with scene changes. I can imagine it being very distracting if it was all "blinky blinky" every time something happened on-screen.
RandyT
-
Ambilight on Philips TV's are gradualy changing, but there is a whole range of settings you can choose from.
I wonder how you'll cope with the early games that have black backgrounds ?
-
I wonder how you'll cope with the early games that have black backgrounds ?
That was part the aforementioned PITA logic ;)
Just finished transitioning the changes and it makes a huge difference in the quality of the effect. It also makes the sample time less important.
RandyT
-
Kinda off the topic, but can you add in somehow the lighting "dancing or flashing" to the beat of music?
-
I have an idea that is neither as inexpensive as randy's nor as expensive as the comercial product. 2nd video card+small cheep LCD+duplicate the image from primary card onto second card+put one monitor behind cabinet facing wall= similar effect. eh?
Ok maybe a sill solution, but I think it would work.
Randy your progress on this sounds great, cool idea and potentially another great way to add some GroovyGameBling to our cabinets. Too Cool.
-
It's funny because I was just about to start on this exact same project. I have a brand new HDTV and HTPC and a lot of free time, so I was going to do all of the hardware myself, but hearing that LEDwiz could have support for this feature is awesome.
The main sticking point that I have found for the entire project is that when you take screen shots with Windows, it will not capture the video overlay. Another person who has homebrewed his own project using CCFL tubes normally used in computers used a DirectDraw Filter to get averages for the screen when it has a movie. Unfortunately, he will not release his source...
Anyway, I'm excited that this is happening, and I'm wondering when we'll see some preliminary software.
-
This place always amazes me. Watching with interest.
-
I think I mentioned earlier that I was able to use the windows clipboard screen grab method under MAME, even at full screen. DirectDraw is enabled, so I'm assuming that it is working.
In a window, I assume? Or full screen?
FWIW, I now have code which does a grid-type sample (user definable frequency) over either the entire screen or just the active app.
Using grids is somewhat dangerous, as the screen may be showing a grid, thus confusing your program. A better way may be to use randomly sampled pixels.
It performs a bunch of real PITA logic to get an assessment of the main colors.
Pita?
I haven't hooked anything up to an actual LED-Wiz yet, but running WOW in a window next to the output window of my app and the colors are reflecting what's going on in the game. When the screen changes to the blue maze, my control lights blue. When the Worluk appears, it goes red/orange and so on.
Ah, in a window then :)
It may not be compatible with D3D. Don't know, haven't tried it. It's not "real-time" (currently ~ 300ms intervals)
...
BTW, does anyone know if "real-time" is important on this kind of thing? If one were watching a movie (which, BTW, doesn't work with this method because the windows capture can't touch the overlay :'() the lighting would really only need to change with scene changes. I can imagine it being very distracting if it was all "blinky blinky" every time something happened on-screen.
Well, that one is tricky. If you would follow each and every change it would get blinky indeed. What I understood from the AmbiLight stuff is that it actually samples the whole screen, and tries to be smart. Obviously I don't have a clue what Philips is doing in detail, but I guess it's something like this, in pseudo code: (I'm a PureBasic programmer, so I haven't got a clue what you're working in)
sample screen
if massive changes
change colour aggressively
do not allow another aggressive change for 'n' seconds
else
make small (slow) colour adjustments
endif
I've got some background in electronics (but haven't touched it for 10 years or so) but here's an interesting variation: using the VGA information directly. Looking at VGA pinning, it looks like the RGB information is right there, effectively making the system work with any form of output.
One idea might be to build a little board with three A/D converters, that simply samples the VGA signal, and returns the information to the PC over USB. A small background program would sample this information, and accordingly control a ledwiz. As an alternative, the board might be able to drive the led's directly (which looks like something rather simple, first an opamp to measure the signal, a capacitor to average the signal, another opamp and driver stage to drive the actual leds, though a PWM driver cirbuit and some PIC logic may improve the results).
Oh dear. I'm rambling.
-
PITA = Pain In The :censored:
-
PITA = Pain In The :censored:
Ah :)
I could have a go at such screen colour detection logic, but I'd need to know how to grab the screen. I did some browsing, and it is actually possible to ask DirectX for screen dumps but it looks awfully complicated :-/ A small hardware gadget as I described one mail earlier could do the trick though :-)
-
I think I mentioned earlier that I was able to use the windows clipboard screen grab method under MAME, even at full screen. DirectDraw is enabled, so I'm assuming that it is working.
In a window, I assume? Or full screen?
Full screen.
Using grids is somewhat dangerous, as the screen may be showing a grid, thus confusing your program. A better way may be to use randomly sampled pixels.
"Dangerous" is a bit extreme, no? I mean we are just talking about ambiance lighting, aren't we :)
I haven't hooked anything up to an actual LED-Wiz yet, but running WOW in a window next to the output window of my app and the colors are reflecting what's going on in the game. When the screen changes to the blue maze, my control lights blue. When the Worluk appears, it goes red/orange and so on.
Ah, in a window then :)
For testing purposes yes. But the same method works full screen just as well. Run MAME full-screen with DD enabled, hit "print screen" and then dump the clipboard into a graphics program. If it doesn't work for you, then we can start looking at what's different between our systems.
Well, that one is tricky. If you would follow each and every change it would get blinky indeed. What I understood from the AmbiLight stuff is that it actually samples the whole screen, and tries to be smart.
It has to be. You can't just average the colors on screen because you could have a big lump of one color in the center and other colors distributed across the screen in dithered patterns. You might want the lighting to reflect a blend of the most prominent colors visually rather than mathematically. Special logic needs to be developed to do it effectively.
Honestly, I don't know if I'm interested in "perfection" on this one. It's going to be a very simple app that takes a stab at an interesting effect. To do it properly, there needs to be a ton of user configurable options and a number of different methodologies to do the decision making. That takes a lot of time to implement and there are too many things on my plate at the moment. It's definitely going to be a "usable demo" kind of thing.
RandyT
-
Honestly, I don't know if I'm interested in "perfection" on this one. It's going to be a very simple app that takes a stab at an interesting effect. To do it properly, there needs to be a ton of user configurable options and a number of different methodologies to do the decision making. That takes a lot of time to implement and there are too many things on my plate at the moment. It's definitely going to be a "usable demo" kind of thing.
RandyT
Why not just hand over your code to someone else with more time to handle the perfection. I am not asking for it myself, this is defiantly out of my league.
-
Level42 - fix your weblink! :dizzy: :)
-
Honestly, I don't know if I'm interested in "perfection" on this one. It's going to be a very simple app that takes a stab at an interesting effect. To do it properly, there needs to be a ton of user configurable options and a number of different methodologies to do the decision making. That takes a lot of time to implement and there are too many things on my plate at the moment. It's definitely going to be a "usable demo" kind of thing.
Mmmmm. Yes, you're right there. Quite a few config options. I'd love to work a little on it, but alas, just like everybody else, time is a bit short... (And, to be honest, I don't want to pick up any new projects before I've even build (or started building!) my cab.)
Got most of the parts, now going through multiple designs, and then I'm going to build the bloody thing... And worst of it all, I already plan to build TWO, as I know I'm going to learn enough building number one to fix (some) mistakes on number two...
It's not a bad idea to open the code, I assume you're using a hand full of API calls, plus a DLL of your own making to control the LedWiz. Key problem is the algoritm, stuffing in a few algoritm's with a few parameters should be enough. Yeah, open it up. Make it other people's problem :) That way I can watch from the sideline, and wait for the problems to be ironed out before I purchase a LedWiz :)