Current Project: Native X11 oscilloscope/spectrum analyzer. This implementation uses a MP3 back-end for test otherwise it would link only to libX11. Even so it should still run on raw Linux without a fancy window-manager.
I Had Been Working With An Old DSP56000 Development Kit And...
One day I was moving stuff around and stumbled on an old DSP56000 development system (evaluation kit) and after being a Farmer for a while now I was kind of looking for something more challenging then the fire-pit and this fell into my lap. Actually I think it was the cats that knocked it off the shelf.
Anyway... After moving a bunch of other stuff around. Ugh! I located the original development software as well as the incomplete work I was previously doing.
At this point We were still running MicroSnot machines until one day a friends child dropped Shauna's laptop while running up the stairs and crashed the HD. To shorten the story... Because of the huge inconvenience and expense, apparently because of our neglect, not including the HD replacement which was obviously our fault, I decided to try Linux.
Wow! That was an amazing experience. Not really Linux itself. Note here that I have been developing embedded systems since before a time when operating systems were named by acronym (CPM, DOS, GEM, OSX, TOS, VMS). My first programs were very fundamental and were stored on either paper tape or punch cards. So actually I was a little disappointed in Linux. Not actually the 'Linux' part. Linux itself works flawlessly for me. For our servers. For my workstations. For the laptops even for the network routers. However... While writing simple GUI programs I became hugely disappointed. Again... Not because there weren't awesome libraries to build on but because there are too many. And each one of these libraries (options) dragged along with it massive dependencies. From my point of view the interface seemed poorly designed and not integrated well with the 'Window Manager' In other words... I did not like the division point between the basic window functions and the layers upon layers of abstraction. Not only was there not enough forward thinking but the possibility exists for extinction, for any option chosen, (unmaintained).
But that's not really important to me. I finally regained the ability to continue programming as a stress release. Wo hoo! Other then that the only thing else I really miss is not being able to play GTA anymore. I guess I'll have to get a console. Ha ha!
Oh yeah! After the enlightenment... I converted all the laptops, workstations and servers to Linux.
Picking Up From Where I Left Off...
I was using the DSP56000EVK to acquire signal from the speaker output of my workstation, process it then return information through the serial port for display. Yeah! It was an impractical method but it was the best I could do to make use of the old DSP kit.
Ok... So now I was running Linux. And unlike before I didn't have to pay a huge premium for the tools necessary to write programs. So I was off and running again.
The original goal was to acquire low-bandwidth data and use it to manipulate the DSP to effect it's behaviors as well as providing a graphical interface for that purpose. In addition part of the user interface displayed spectral information as well as level (saturation) in the form of miltiband VU meters.
So... The first step was to figure out how to create a window and manipulate it. After some research I ruled out the various tool- kits commonly used (GTK, QT etc...) and decided to go for the low level guts and glory approach.
Now I am very well versed in user interface coding but I did not expect such a fundamental windowing interface. None the less. Not to be defeated. I proceeded along until I had a working Oscilloscope framework.
Now I Needed Some User Input Methods...
Hmm! Programming without a toolkit was now becoming a bit of a nuisance. Not to be discouraged and since programming mindless code is better then watching mindless television I decided to create a set of window classes. In the form of a library including so far - button, edit, static, progress, tab, tree, list, scrollbar, fader, menu, dialog, frame and some miscellaneous window-manager helper functions as well as 'xdnd'. All using only the native 'libX11' interface.
It wasn't really easy code but it suits my programming style and now that I get to share the library with the various applications I'm writing, in my spare time from being a farmer, it all seems worth it.
But.
I Still Needed To Test The Oscilloscope...
Everything seemed to be working but without data to drive the oscilloscope I couldn't prove it was actually operating correctly thus I needed source material. Well... Crunching the story down a bit. I added a back-end MP3 stream to the scope through 'libmp3lame' and output processing through 'libasound'. I was quite satisfied now. I think I'm going to turn this into a jukebox for my Bar area.
If You Were Paying Proper Attention To The Story...
You might have noticed the sad outcome here was that the original DSP kit that encouraged me to move ahead was now so outdated it was no longer useful research material and was once again abandoned and put back on the shelf. Sob!
Programming Demonstrations:
Available For Download...
When I complete restructuring my version control system I will be making the source available for download under GNU license only wishing I could add prohibiting use on commercial operating-systems. Ha ha!
In the meantime features may or may-not include:
12539