[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

URGENT:  Build software interface for hardware controllers

Posted on 2006-04-04
5
Medium Priority
?
252 Views
Last Modified: 2010-04-17
I need to develop alternative uses for the control surface products below.

http://www.mackie.com/products/mcu/index.html
http://www.behringer.com/BCF2000/index.cfm?lang=ENG
http://www.m-audio.com/index.php?do=products.list&ID=controlsurfaces

They implement the MIDI (Musicial Instrument Digital Interface) protocol and are designed for use in real-time
as well as playback or recorded sequences of MIDI commands. (http://www.midi.org/)

As I said I am interested in using products like the ones above to control software.  I believe there is a large class of
individuals in the world whose job it is to control real-time processes with many control parameters.  I believe that
this is generally done by ineffeciently pointing and clicking.  I aim to replacing a point-and-click paradigm for
 these types of jobs with a real-time tactile-parameter-control paradigm using devices like those above.

For example:
1. change cells in an excel spreadsheet or other complicated model
2. instruct software to increase or decrease the duration of some event or subroutine it is carrying out.

I think I am talking about building middleware to sit between these devices and other software.
If possible I would like to use Eclipse in developing a solution/product to do this.  I think Eclipse is great.
But maybe I am way off course and middleware has nothing to do with this.

More broadly speaking, I need to know how to research implementing this type of solution.  I have some programming experience, but
not at the level needed to describe the research that needs to be done or to do the research on how to develop
this type of software myself, or to create a set of software requirements to pay to have somebody build this.

So I guess my question not only what I have descriped above, but also how to requisition a developer to make this
software, and where I might find such individuals to develop it.  And how much it costs.

I know this is a run-on question, and once I get some direction, I would be glad to fork it into multiple questions so
I can award a proper amount of points to those who are helping.

Thanks to all.
0
Comment
Question by:benk-master-flash
  • 3
  • 2
5 Comments
 
LVL 9

Expert Comment

by:gabeso
ID: 16372920
Use object-oriented design for this: I think you are going to be looking at building an abstraction component at the lowest level that interfaces to a midi control of some kind and provides you with universal interface to midi in general.

You can then build other models on top of this layer that provide general functionality to capture the different types of usage and control parameter families.

Then on top of those you build interfaces that use these models: Excel, Eclipse, Web Interace, WAP Device - whatever.

The layered approach is the best way to approach the complexity of the problem because you are talking about something quite general: So you end up building components that use other components moving from the specifics of the midi interface to the particulars of the new interface style.

You don't say what platform this is for: Unix, Windows, Mac?
0
 

Author Comment

by:benk-master-flash
ID: 16373956
Thanks for the response gabeso.

So, I first need to build some sort of software component that is kind of an "adapter", that takes MIDI I/O and provides some other interface (built and defined by me) for say Java, COM, C++ to interface with the hardware.  It is abstract in the sense that it merely provides an interface that must be implemented.  

What would the interface need to define?  I'm unfortunately at a loss for where to begin.

Maybe some interface to map the controls to "events" or "actions", a way to set the "properties/states" of the controls?  Other classes/objects could then respond to/fire , get/set properties and methods of these objects?

Because there is a JAVA MIDI package, could it be that there is something (package, open source project) that will generally fit the above description already availale that I could extend?

0
 
LVL 9

Accepted Solution

by:
gabeso earned 1500 total points
ID: 16374402
Just to give a silly example:

You might have a user interface in which the user juggles coloured balls and can change the effect by adding balls, speeding up, slowing down, changing colours, rates, spin etc

Obviously this has nothing to do with the midi format - they are far apart in representation. But by using layers of translation where objects at a higher level are interpreted through using objects at a lower level you finally get structured output to an external system.

There are two ends to the problem - the user (input) end and the system (output) end: Between the two ends are an as yet undetermined set of layered components that do the work in a structured way.

To get going, don't worry so much about specifics but think in terms of models - at both ends. You can start abstracting the midi interface and at the same time think about what the user is doing and then try to narrow the gap by introducing new layers between them. Then at some point there will be a sequence of models that take you from your new interface models to a midi interface. You might find it more fun just to concentrate on the user interface side of things initially.

If you are thinking in terms of Java as an implementation language then you can model things - perhaps using a UML tool - as java classes.

Probably better to be a paper exercise long before committing to any designs - you should be able to talk/explain your way from the higher layers down towards the actual output format to any nojn-technical third party: Keeping the fact that it is ultimately a midi interface ultimately helps keep things focused!
0
 

Author Comment

by:benk-master-flash
ID: 16375644
Thanks,
What would be the technical name for "layers of translation" as you call it.  This sounds like a rather standard "design pattern" or technique.  Could you find a reference where I can research it more or find examples that I could abstract to my own case..
0
 
LVL 9

Expert Comment

by:gabeso
ID: 16382854
It is a 'design layer' which would contain packages that contain components: while a layer might be abstract (MIDI abstraction layer), the package would be physically real (perhaps a java Jar file called MIDI.jar) and so would the component (perhaps a MIDIController class).

So sets of packages would belong to a layer and that would solve one level of management problems and provide tools for higher layers to use.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Q&A with Course Creator, Mark Lassoff, on the importance of HTML5 in the career of a modern-day developer.
We live in a world of interfaces like the one in the title picture. VBA also allows to use interfaces which offers a lot of possibilities. This article describes how to use interfaces in VBA and how to work around their bugs.
Six Sigma Control Plans
Screencast - Getting to Know the Pipeline

826 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question