Even old-school computer geeks like myself have to admit that the era of the Personal Computer has given way to the era of the Smartphone. Most of what people can't do with phones can be done with a tablet, a Chromebook, or a game console. Businesses will continue to demand Windows and Office, but Microsoft's bad tactical moves with Windows 8 and Surface are part of a reasonable strategy of moving its crucial franchises to mobile devices and the cloud.
The dividing line between computers and mobile devices, which is already straddled by Chromebooks, is defined by keyboards, large displays, and disk drives. Most people don't need the classic tower or desktop cases, and can choose between laptop or all-in-one configurations. Towers are for power users; cheap towers are for replacing existing towers while keeping an existing display. Meanwhile, new displays are becoming stripped digital TVs, with 1080p LCD panels and HDMI interfaces. A new generation of tiny-box computers, led by Intel's NUCs (Next Units of Computing), offers a simple (if still somewhat pricey) means for attaching a full-powered computer to any HDMI-equipped TV.
There are only a few good reasons for building or buying high-end tower computers. The usual reason is being obsessed with PC gaming performance; the more mundane reason is having specific requirements for a server or for a "workstation class" machine to do video transcoding or 3D rendering. I still fantasize about building my next computer, but I'm not a gamer and I'd have no use for "enthusiast" hardware even if I could afford it. I just want to be able to run all the usual free software with glitch-free audio, video, and networking.
Right now, thanks to a great open-box discount at Micro Center, I'm using an HP tower system with a first-generation Intel Core i5 CPU, an NVIDIA video card, and Windows 7. Gliftor Draken's music-making frequently involves a FireWire audio interface and some Windows-only software, so I can't go all-Linux right now. But Windows runs open-source music software like Hydrogen, Audacity, Pure Data, SuperCollider, and CSound as well as general-purpose apps like Firefox, LibreOffice, GIMP, and Processing. And there are other options for real Linux...
The Linux command line environment that runs in a PuTTY terminal on my Windows desktop is generated by a little plastic box connected to the HP tower by a single USB cable. The device is a BeagleBone Black single-board computer contained in Adafruit's black and transparent case. It looks very much like a similar box on a nearby table, but that one contains a different single-board computer, a Raspberry Pi. The Pi sports a full set of cables, including a DC power cable, an HDMI cable to a monitor, and two USB cables connecting a keyboard and mouse. It boots up from an SD card, and runs a Debian-derived Linux distribution with a stripped-down but very functional graphical user interface. An Ethernet cable connects it to a router and allows it to mount volumes on a Windows CIFS network.
This generation of tiny computers represents a meeting between free software and ARM-based system-on-chip devices very much like those used in tablets and smartphones. Of course Linux runs on the ARM architecture, and runs very well; both the Android OS and the software that runs on Chromebooks are themselves customized distributions of Linux. The basic computer boards, without cases, power adapters, and flash memory cards cost forty or fifty dollars. Although the Pi was created to be a general-purpose system for introducing young people to the inner workings of computers, both devices have roots in embedded computing and are very attractive to the "maker" community of self-taught gadget creators. Either can be integrated with any collection of knobs, switches, and analog devices a user chooses, and companies like Adafruit and SparkFun Electronics offer tools and components to support this kind of application.
Before these newer machines came out, the state of the art in personal embedded systems was represented by the Arduino family of devices. The various Arduino cards, costing as little as thirty dollars, use low-end system-on-chip devices that don't have the speed or storage capacity to run a full-fledged operating system like Linux. But this is no failing in the board's intended applications. The Arduino's on-board software serves the purpose of allowing a host computer to download programs into the Arduino's memory. The Arduino software running on a PC host provided a simple GUI for editing and compiling the software to be run on the Arduino. Finally, the Arduino software package includs C-callable library functions to control the Arduino's numerous digital and analog interface pins. An Arduino is not a conventionally powerful computer, but the power it has is fully dedicated to giving a user's program complete realtime control of hardware interfaces, with no competition from an operating system, a GUI interface, or any other programs.
In future articles, I'll be writing about my experiences with these gadgets. I'm hoping that this project will lead to some interesting little electronic musical instruments. For example, an Arduino can monitor buttons, knobs, switches, and sliders on a control panel, and a Raspberry Pi can run SuperCollider to generate high-quality synthesized sound. Can we bring the two together to make virtual analog instruments? Why not?
Wish me luck.