Author Topic: Open Laser Show Controller API  (Read 12830 times)

0 Members and 1 Guest are viewing this topic.

Offline cfavreau

  • Moderator
  • Newbie
  • *****
  • Posts: 37
  • Milliwatts: 1
    • View Profile
Open Laser Show Controller API
« on: September 28, 2009, 12:55:27 am »
Everyone!

The 1st version of the Open Laser Show Controller API is done.

What is the Open Laser Show Controller API (besides a mouth full of words)?

The OLSC API is an OPEN software programming interface that makes talking with laser show output hardware easy to write programs for. It gives a common interface to any laser show output hardware. Best of all it is 100% free. Please feel free to download the example projects for your language/development environment of choice and documentation to get started.

Please visit the web site to download examples:

http://www.fab-favreau.com/olsc.html

There are too many files and such to post here.

Any comments/suggestions can be directed towards myself on this forum or you can email me (link off of the web site).

Any software writers or hardware creators that would like to participate please contact me.

Have Fun!

PS:  As a side note, version 2 is under development and a preliminary version can be downloaded from the web site. This version is expected to address several issues that you may find with the API itself. I expect that there will several comments on the API. Version 1 is frozen and Version 2 is the one in development ... so any changes will be made there.

Offline BlinkenLights

  • he's just this guy, ya know?
  • Administrator
  • Hero Member
  • *****
  • Posts: 726
  • Milliwatts: 4
  • Gender: Male
  • 'The Messenger' by Will Cascio
    • View Profile
Re: Open Laser Show Controller API
« Reply #1 on: September 28, 2009, 01:13:50 am »
sounds cool, want a forum area for this that you can moderate?

Offline cfavreau

  • Moderator
  • Newbie
  • *****
  • Posts: 37
  • Milliwatts: 1
    • View Profile
Re: Open Laser Show Controller API
« Reply #2 on: September 30, 2009, 08:04:41 pm »
Heck Yes!  Thanks for offering.  I wasn't sure where to put this... however I think the fellows on this forum would like this more than on other forums...


Offline Fanny Pack

  • Hero Member
  • *****
  • Posts: 645
  • Milliwatts: -20
  • Gender: Male
    • View Profile
Re: Open Laser Show Controller API
« Reply #3 on: September 30, 2009, 08:33:31 pm »
Looks good.  Didn't I work with you on this at some point?  I worked with someone doing something like that but I can't remember who it was.  I have something going on with the drivers in Spaghetti.  Soon Spaghetti will come with no drivers and you will have to download them seperately or have the hardware vendor supply them.  An interface such as yours is key.  I need to take it a step farther though and have their locations added to the registry so that they can be found without having to have them placed in my application folder.  I'm trying to go toward a model like other device drivers instead of the old DOS game sound card type model where you had to choose from a handful of drivers.  Your stuff is a step in the right direction.  It would be nice if the DAC makers would buy into it.

Offline James

  • Administrator
  • Hero Member
  • *****
  • Posts: 2089
  • Milliwatts: 46
  • Gender: Male
    • View Profile
    • LaserBoy !!!
Re: Open Laser Show Controller API
« Reply #4 on: September 30, 2009, 09:09:59 pm »
I'm glad you decided to come to this forum!

I hope you get a lot of activity for your project here.

Could you please provide a paragraph or two about what it is, where it came from, where you want it to go... for those of us who are clueless about such things? ??? ;D

You'll have to forgive me. I'm pretty much intellectually spent on LaserBoy!  :P %)

And I only use a sound card DAC.  8)

James.  :)
« Last Edit: September 30, 2009, 09:13:11 pm by James »
LaserBoy is Sofa King Cool!
But it will never be Alpha King Done!

Offline Fanny Pack

  • Hero Member
  • *****
  • Posts: 645
  • Milliwatts: -20
  • Gender: Male
    • View Profile
Re: Open Laser Show Controller API
« Reply #5 on: September 30, 2009, 10:04:40 pm »
It's pretty simple.  It's a standard API that can be used as a wrapper around existing DACs drivers to make them all have the same interface.  This allows software developers to only have to support one DAC interface.  Someone still has to write the wappers but that only has to be done once and everyone else can reap the benefits.  It's basically the same as MLD drivers for the Mamba software. 

Offline cfavreau

  • Moderator
  • Newbie
  • *****
  • Posts: 37
  • Milliwatts: 1
    • View Profile
Re: Open Laser Show Controller API
« Reply #6 on: September 30, 2009, 11:38:08 pm »
I thought I did write a paragraph about it  :)

Ok here it goes again with different and more words:

Yes Gary was the first person I ever collaborated with to bring forth the project.  It was just a bunch of comments in a header file then.   Not much.

The basic idea is an open as in free no strings attached API for accessing laser show controllers.  This was born out of other companies with ok interfaces that are unwilling to share their API for use by others.   This allows any controller (DAC) to have the same interface as the next DAC.   While this seems to make all DAC's equal it doesn't really.  It only provides a common programming interface which is my main goal since I am a software engineer.

So I noticed that most API's had a very sparse (we will use that word) documentation and practically no examples on how to code hardware for it and not very good examples for how to write software for it.   Basically you get just an API.   Also this was usually in Delphi or something not my language.  The Open Laser Show Controller takes the Open API further and provides ample (maybe not yet but getting there) for getting started in as many languages / IDEs as possible.  Eventually there will be good documentation however comments in the code is the documentation that exists now.

Taking this a step further... the Open Laser Show Controller code also provides a C++ class for dynamically loading the driver DLL's at runtime.  Eventually (soon) this will allow you to just give it a folder where the drivers sit and it will discover all the drivers in the folder.  You can use all of them or just one of them.   This should provide the ability to use hardware from different manufacturers in the same program at the same time.  This is on top of being able to use more than 1 DAC per driver (as exists in most API's now ... just not one from company a and b).

Since the Open Laser Show Controller set of code is more like a HAL (hardware abstraction layer) I would like to eventually add or have someone else add a Vector Graphics Layer so the whole thing will make writing laser show software easier for those of us who like to concentrate on the cooler side of things rather than having to code the wheel over and over again.

Most of the code examples use straight Win32 programming and I have some that use SDL or MFC too.  There are even examples of how to use it for Java applications.

I think I call it an SDK, which includes the API as well as code to use DLL's that feature the API.

Some of the neat things you can do that I have imagined:

*)  Take all of the USB DAC's you have and use a network server to remotely control all of them over Ethernet through the Open Laser Show Controller (OLSC) API.  The server basically talks to an OLSC client on the computer with the controlling software.   You could also have multiple servers and multiple client DLL drivers.   This would add functionality that does not exist for any one but specific manufacturers.
*)  Run multiple DACs from different manufactureres (mentioned above).
*)  I had thought of more ... but can't remember now...

Ok... a bit about the license:

We use the MIT license for the API code.  This lets anyone use it for just about any purpose... commercial or private and poses no code restrictions.  It does not contaminate your code so you don't have to share if you don't want to and you can make money off of it.

And a side note about sound card only fanatics:

For those of you that use Sound Card DACs I have a driver already done that wraps the EZAuDAC DLL.  It would be nice to have a standalone driver DLL but this works well.

If you need any help or have any questions PM me or just send me an email.  The link is off of my web site I think.

Ok enough blah blah blah...

Thanks for reading!

Offline cfavreau

  • Moderator
  • Newbie
  • *****
  • Posts: 37
  • Milliwatts: 1
    • View Profile
Re: Open Laser Show Controller API
« Reply #7 on: September 30, 2009, 11:40:19 pm »
Yeah .. .it is the same as MLD drivers (but better?)... that takes the steam out of it.... :P

Offline drlava

  • Sr. Member
  • ****
  • Posts: 314
  • Milliwatts: 18
    • View Profile
Re: Open Laser Show Controller API
« Reply #8 on: October 01, 2009, 12:50:50 am »
the MLD drivers are a common dll function interface.. if this is what I think it is, then what you are providing is more along the lines of the EzDACInterface code that I sent you.. I.E. it is not just a common dll interface, but instead the groundwork for loading many different dlls into a program and the code to talk to them from within the program in the same way?  If it's the latter I don't see the need for dll wrappers.  If it's the former, how is it different from Weartronics' open interface specification?

Offline James

  • Administrator
  • Hero Member
  • *****
  • Posts: 2089
  • Milliwatts: 46
  • Gender: Male
    • View Profile
    • LaserBoy !!!
Re: Open Laser Show Controller API
« Reply #9 on: October 01, 2009, 02:06:42 am »
Very cool.

Thanks for filling in the info!  ;D

James.  :)
LaserBoy is Sofa King Cool!
But it will never be Alpha King Done!

Offline cfavreau

  • Moderator
  • Newbie
  • *****
  • Posts: 37
  • Milliwatts: 1
    • View Profile
Re: Open Laser Show Controller API
« Reply #10 on: October 02, 2009, 02:42:05 am »
Ok. A little more clarification.

1) Not much different from Weartronics specifications.  Even has the same name.  Would like to point out that I started this one over 6 months ago.  So this would be the Open Interface Specification.

2) Similar in effort to the EZDACInterface however the big difference would be that the DLL's that are dynamically loaded all have the same interface where as the EZDACInterface needed to be recomipiled to add new DAC's.  This interface you just have to put them in the same folder and the interface C++ object or whatever will take care of the details.  It presents you with a big list of interfaces.  The big idea here is to avoid recompiling to support new / updated interfaces... maybe even convince people to just code in this DLL format so there are umpteenth DLL's for 1 DAC floating around.  The EZDACInterface was useful because it provided code to code some of the first DAC DLL's. 

On second thought go around ... it is like the EZDACInterface however the work is done in the DLL and not the application to curtail the need to recompile the application when the DAC interface changes (bugs, updates, new DAC, etc.)



 

SMF spam blocked by CleanTalk