Ask Slashdot: Physical Input Devices For Developers?
First time accepted submitter paysonwelch writes "I am a developer and entrepreneur and I am considering developing a very graphically rich and custom interface for my latest application which does charting and analysis of large data sets. The application would feature lots of gauges, knobs and levers. As I was thinking about this I said to myself, why not hook up physical knobs and levers to my computer to control my application instead of designing them in 2D bitmaps? This could potentially save screen space and provide tactile feedback, and a new way of interacting digitally with one's application and data. So my question is whether or not anyone out there has advice for building a custom solution, perhaps starting with a mixing board, or if there are any pre-fab kits / controllers for achieving this?"
I would do some research into inputs for Flight Simulators and I'm not talking about the big commercial ones. The hardcore fans build quite sophisticated flight sim setups in their home all with custom controls to match their aircraft of choice with all the knobs, switches and levers. There are quite a few companies that cater to them as well.
I am a developer and entrepreneur and I am considering developing a very graphically rich and custom interface for my latest application which does charting and analysis of large data sets. The application would feature lots of gauges, knobs and levers.
Labview's already been invented, man. Get yourself a project box and some synchros, servos, stepper motors, and you're all set.
/discussion
lots of dials and knobs via midi boxes.
sound cards used to be able to import midi control data.
alternately, if you are into diy, arduino for the pure hardware interface and then send serial rs232 data up to the host (via usb but its still serial inside). you can read knobs via the a/d pins on the arduino and you can read buttons via port expanders or local pins.
--
"It is now safe to switch off your computer."
Electronic musicians have been demanding high-quality tactile interfaces for many years. There are various USB MIDI controllers on the marked with various arrangements of knobs, buttons, keys and other moving things. Check out M-Audio and Alesis and other big names, and you might get some good ideas.
X-Keys or Monome or any one of a million Control Surfaces, for starters. Or Arduino obviously. Personally I think that for a lot of applications the best solution is to drop the knobs and switches, take apart an old USB keyboard, and build a custom button-based interface using the matrix board. Interface it with hotkeys built into your app, and this way it shows up as a regular HID without needing specialty drivers.
"Once in Hawaii I had sex with a 102 year old male turtle. It is difficult to argue that it was consensual." - Steve Ma
People who use software for music production like tactile controllers as well. There's a range of products out there from the korg nanokontrol (~59US) series up to the euphonix line (~1000US+). Most nowadays use USB and older ones tend to use MIDI. Motorized knobs are hard to come by in this market, but lots of products use LED rings to provide visual feedback since the encoder is endless. Motorized faders on the other hand (is this a lever? lol) are rather plentiful and not too expensive. Start your search with "control surfaces" and possibly some other terms like 'DAW' or 'MIDI' or 'USB'
The electronic music/DAW/DJ crowd has been all over this sort of stuff for some years.
Something like the Aurora is an open source hardware example; but there are a large number of devices at various price points and levels of openness that boil down to a whole bunch of knobs, buttons, and sliders, with some sort of computer-compatible interface(often MIDI or USB-MIDI device, sometimes with a driver or plugin for Ableton or Max specific to the device).
The audio guys may not map 100% to your requirements; but they have the advantage of being a reasonably large, reasonably active, community with a fair amount of existing hardware available off the shelf.
As an alternative, many contemporary microcontrollers are capable of serving as USB slaves. Something like a teensy is pretty cheap and makes it dead easy to turn inputs from buttons and sliders and rotary encoders and things into USB HID keycodes.
Yep. If you want to waste a couple of hours, read this story from a couple of days ago to get a taste of the difficulties of trying to cater to people. (For what it's worth, here's my contribution to the debate.)
I am curious about the details behind your thoughts. The only key to your target audience is that it does "charting and analysis of large data sets". Could be a number of industries, from finance to utilities looking at PMU data from the electric grid. It makes a difference - you're an entrepreneur and developer (although your home page says you're an artist), so it'd seem to be a safe assumption that you want to commercialize this. If that's the case, you want to consider the physical location of where this is going, how complicated it'll be to provide input and get output, how quickly people will need to react, how much space they'll have around them, how many will need to be installed at a location, etc., etc. All of those considerations make a big impact on whether this is even a workable idea in the first place.
As fidget42 said - hire someone who does this stuff for a living. That is, if I'm correct in my assumption you actually want to commercialize this.
While the Guitar Hero guitar was a PITA for retailers (huge box, took up space), it wasn't the game itself that sold people, nor the controller. It was when people put the controller on, that it conveyed a feeling of "I'm a rock star".
That feeling itself is what made GH a great game. Same holds true to flight sims, driving games with steering wheels and plastic guns. They add an emotion to the game that isn't there with a gamepad/joystick/keyboard+mouse.
I got a chance to meet Kai Huang at a class I was taking and he was telling me that when they brought the controller to the VC guys. The VC guy put on the controller and before even playing the game told Kai and his brother that he was sold on it. The VC guy said, "I don't know how to play guitar, but I feel like a rock star!"
If you really want to do a custom interface and have a little hardware skills you should try an Arduino. You can interface to any hardware device and feed the data to the computer over serial USB.
http://www.trossenrobotics.com/p/phidgets-encoder.aspx?feed=Froogle
Griffin Powermate. Been around a while, affordable.
http://store.griffintechnology.com/powermate-1
Let the net do your shopping to save $bucks.
Lots more out there, this has easy interface via USB.
Red
http://www.3dconnexion.com/products/spacepilot-pro.html
Probably not exactly what your looking for, but its top notch hardware with a reasonably nice SDK. Depending on exactly what your app does, the multiple axiseses of control might also be beneficial.
Surely it doesn't have an infinite number of them, hence, the reason Jesus invented multiplexing and data buses.
Oh Please No just get an iPad it's much better :^)
http://www.phidgets.com/
I've used Phidgets in the past for exactly this application (research into UIs for large data). Lots of premade USB controls available and easy to hook up most analog controls to their IO boards. I went to the local electronics shop and bought a slew of buttons, knobs and slides and had no problem hooking them up with phidgets.
For programming, I wrapped the C library in Python using SWIG.
-Chris
Physical knobs work much better than touch screen 'knobs'. Also, red and green are the worse colors to use. Out of the color blind or partially colored blind people (and there's more than you think), red-green color blindness is highest percentage.
Making dynamic GUI in the sense that the controls move around is a great way to confuse users. They can't build muscle memory when you do that and have to take a moment and think about what they're trying to do instead of just doing it.
Vibration, really? Cheap touchscreens don't vibrate, it sounds like the user doesn't/shouldn't be holding the device (so they won't fell the vibrations only hear them), and if you mean visible vibrations in the GUI that's bad too: the user's finger will be covering the control and watching a whole screen vibrate is annoying (and gives some people headaches). Real controls provide real feedback. Knobs and slides can have notches or bumps in them.
Pop-ups are one of the best ways to annoy users. Avoid them as much as possible.
If you're concerned about needing to customize things after the product is build, create prototypes first. If your final product requires UI changes, it wasn't created properly.
Your way is much more complex with the additional software, sounds like it would cost more money, and requires high tech which has a greater change of breaking or having something go wrong. Stay with KISS, go with the hardware controls.
I'm developing features for software defined radio. Higher end radios, for those of you who don't know, tend to have a lot of controls. Bandwidths, IF shift, notch filter(s) with frequency and Q settings, AGC decay, intercept and knee, frequency, band, memories, panadaptor controls, waterfall controls, demodulator type, demodulator settings... it really goes on for quite a while.
Initially, I mapped a whole bunch of functions to keys, but eventually ran out of keys. Sure, there are on-screen controls, but they're not as nice as physical knobs. Essentially similar to the problem the submitter faces, at least in some respects.
So, my solution? First, a Griffin Tech Powermate knob for tuning -- because that's what you do most of with a radio. Big knob, very precise, easy to use. Then, a Behringer BCR2000 B-control rotary control deck. Cost was about $156 from Amazon. This is a MIDI device that can map any of 32 knobs and 24 buttons to arbitrary functions. Coding to the device was relatively simple; implement a MIDI learn function, then map whatever seemed fun to a physical knob or button. The board will remember several scenes, too, so you can set up a bunch of controls all at once. Works great. There's another version of the board with a somewhat similar price but a different complement of controls, works similarly, though I think it's a bit more biased towards audio concepts (faders, specifically.)
There are other physical control solutions that utilize MIDI out there as well, but I have found none as economical as the BCR2000. BTW, I don't have anything to do with Behringer other than as a satisfied customer.
I've fallen off your lawn, and I can't get up.
@kiwimate thanks for the response. I will definitely check those stories out. My thoughts about this are general in the sense that as developers we often only use keyboard / mice. If you think of AV professionals though they often use mixing boards to get work done more quickly and finely tuned. So why are generic components not more readily available for general development purposes? Surely by using a potentiometer it could provide much more precise resolution than a mouse, faster and easier than typing in decimal numbers. In a sense you answered your own question. Using physical input devices other than a keyboard and mouse could be expanded to many different industries. I'm not really looking to commercialize this, most of my work is for personal interest. As far as my website, I am working on bringing a blog online for my technical non-artistic interests. I considered combining them however art people usually don't get technology and vice versa. It's a turn-off for people visiting a single website with diverse interests. My opinion is that its better to specialize when presenting information. It's an idea and this is my starting point, to get input on possibilities. Perhaps I could hire someone to do it, but I enjoy the process of learning and adhere to the old adage that "if you want something done right do it yourself".
No, don't use knobs .. what's wrong with using a 2nd display .. with a touch based UI.
Touch based UIs only work if you are looking at them.
Car analogy: imagine a car with all of the controls on an iPad, which you put on your lap. Try driving while watching the road.
No need to make anything by yourself. Just get a Korg NanoKontrol, and you'll have enough knobs. It's very cheap too: about 30USD.
Nobody so far pointed that out. I'm doing electronic R&D and manufacturing in small quantity, and I can tell you that while the R&D for your thingy is ridiculously simple (I can do it within a few days easily) you will lose your shirt on manufacturing it.
Another issue is flexibility. Unless your product is a control for a nuclear power station, which is designed once and then used for 25 years with no changes, you will experience different needs. With GUI changes are easy. With hardware they are between hard and impossible.
Customization is part of that problem. Some people are righties, other are lefties. You can remap controls only if your physical knobs are laid out symmetrically. Are they? What if they aren't, and can't be? Then you have a problem.
All in all, I think hardware controls are good only in a fixed, closed system. You still have limited flexibility because every knob can be mapped to do whatever, but if knob A only rotates 270 degrees but you need at least 3600 degrees (or continuous rotation, with an optical encoder) then you are out of luck.
Or Simulink & an XPC.
Hell with an XPC box and a few dozen knobs we built an entire engine hardware in the loop simulator. Knobs for air pressure, engine speed, throttle position, etc. Took one of our technicians about 3-4 days to get all built up.
Or if you're poor an arduino and some Pots. That's all "Knobs" and "sliders" are. Go read up on voltage dividers. Get yourself a A/D converter. Feed one side 5V, Set 0V to 0%, 5V to 100%. Tada read it with the Arduino and you have yourself actual inputs.
Here's one already done with an Arduino. The more pots you want find something with more analog IO.
Buy a project box from from radio shack drill some holes, put it all in. You could probably do most of it for under $50.
The op is right, such things are easy to design, but the per copy cost for software controls is near zero while a controller box will cost you a minimum of $100 or so including labor with no upper bound depending on complexity and materials.
However, you will have no piracy issues or weird DRM code to irritate your customers. Also a lot of folks are more willing to pay big bucks for tangible objects. Even when not in use it might be a nice status symbol to have on a desk or in a doctor's office. I see more medical equipment than I want to, and most of it consists of a small computer in a big fancy box with maybe a custom sensor or two.
a controller box will cost you a minimum of $100 or so including labor
There are other headaches that a pure software guy is likely to not be aware of. For example, hardware requires shipping; sometimes that is expensive. Hardware wears out and breaks - and tell me about breakage of things that are designed to be handled all day long! Spills of coffee and other funny liquids, hits with massive objects, cords ripped out - he will see it all. Worst of all, he will replace all that stuff essentially for free. Maintenance on this level (below Dell and IBM :-) is not a profit center.
But as you say it's not rare when an otherwise dull business plan is saved by a smart piece of custom hardware that nobody has. Or perhaps not saved (just ask the CueCat about that.) You are right that often hardware is sold where, in truth, no hardware is needed. But it makes many people happy. The seller gets to eat that day, and the buyer knows that the entire set is supported, and if something fails it's not his problem but the manufacturer's. The manufacturer is also comfortable knowing that no weird, bottom rung hardware is plugged into his carefully tuned system.
With regard to DRM, though, it's a mixed bag. First of all, hardware dongles can be had for a few dollars if you want them. But more and more ISVs don't want them. Why? Because they are that very hardware that get lost, breaks, and requires physical handling. The cost of an incremental copy that was zero suddenly becomes $20 + shipping, and that's something that can be tolerated only if your software is sold for much more than that.
Today's computers are loaded with unique IDs. If you want you can get serials of a bunch of serialized parts (CPU, m/b, video card, HDDs) plus MAC address (forgeable but hardly anyone knows how to,) and all the other hardware information that is not unique within the make and model but is different across many customers. If you combine just a few of those identifiers you get an excellent dongle, and you don't need to pay even a cent for it. All you need to do is just a simple RSA code to encrypt and to check signatures, all neatly provided to you within Windows. Your biggest problem is not false positives, it's false negatives.
But, one says, how do I move the license from box to box? It's easier to do by individually licensing each box, or issuing a site license, or maintaining your own license server for floating licenses. Rare is the software that is so impossibly expensive that every single copy has to be counted. And if your s/w is truly that gem, get a dongle, hire a team for support, and still you will be rolling in dough. Everyone else should stop quaking in their boots. Besides, most of specialized software is never cracked; and software that is cracked is cracked regardless of how hard it was supposed to be :-)
Since you say this is for personal interest, I shall link you to what I use for sliders/knobs.
This is rather useful. 30 knobs, 9 sliders, many buttons and doubles as a fully weighted piano. Whole thing is powered over usb bus and I picked mine up on special for $450. usb midi compliant so no drivers required, works nicely with whatever midi subsystem your os uses.
Trouble these days would be finding one, production stopped some years ago.
Programming wise midi support is probably the best way to go with this, large support for varying hardware much of which has knobs and sliders.
The better solution than a potentiometer is a shaft encoder, most of which provide two pulses in quadrature, thereby allowing you to sense direction in the lead-lag relation of the two pulses, and avoid the need for an ADC.
--- Bill
I'd say close, but today, I don't know if I'd actually look at a potentiometer (pot). Pots tend to be noisy (or get that way) and you have the A/D issues that go with it - there are encoders that look/feel like good pots (sliders or rotary), just get one with the right number of counts, and go at it - of course, you'll have to play with "do I want to mimic linear or audio taper" and the like, but it's really just "a small matter of code"
-- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso