Specifications I know. I usually get them from other people. At least I did. Just like those sentences, I can with this project – do whatever seems appropriate. Like ugly long sentences, that are hard to read because I make you look for that period until you mind is figuratively (and even make unnecessary asides just to let you know that “literally” would be entirely wrong in this context; and you already knew that) exhausted.
Specifications are easy!
The process we’ve had so far in creating a specification for ourselves has been harder than I anticipated. It’s all fun and games to wish for all the coolest features you could think of, but in the end we’re making a product to satisfy a need. Which is simple.
I want to play a gig. I do not want to spend time during sound check fiddling about and making a mess. Give me a stereo out for the audience, and a stereo out for the band.
Play the two tracks simultaneously.
Really. It’s that simple.
Specifying uncovers hidden wants
I’ve just said all a band wants to do is to have two tracks playing. One for the audience, and one for themselves. But then… It’s not that simple.
Let the ARMADA lead
One of the reasons for bringing along that laptop with the project on is to control on stage instruments using MIDI. Ok then… Let’s add a MIDI interpreter, and have the unit emit MIDI messages from a MIDI 0 file. I promise you, there will be more on that later!
Let’s say we’ve covered all the reasons for bringing the laptop. Now there’s another problem. They did not bring the laptop!
Let the ARMADA store
How do we transfer the files from the laptop to the unit? We’ve come up with several options. Let’s have a quick rundown:
- Only one SD card slot. The user would then add the files in a specified convention so that the unit detects them as a backing track and a click track.
- USB Host. Plug in a USB flash drive and the liveARMADA could read off it during playback. This will demand that no one in the band is as forgetful as I am.
- USB Device, Mass Storage. Plug device in and upload files to it as you would a normal USB drive.
There’s also the option, for all of the above, to have some kind of app that helps you format and do things right.
As of writing this, we’re aiming for the last version where the liveARMADA will become a mass storage device when plugging it in to the USB connector. Behind the scenes it will store the data on an SD card, which may be accessible to the user. Not sure about this one yet.
Specifying uncovers what subjects to research further
MIDI has already been brought up as a subject that will need more investigation.
Furthermore, the storing and retrieving of data actually brings some technical difficulties too. It can (and should) be solved with the magic of something called Direct Memory Access (DMA). As with the parsing of MIDI, I promise there will be some write-up of our challenges while implementing data streaming.
For the particular case of streaming data into an audio DAC, there’s a standard. It’s a protocol with a typical serial interface and it’s called I²S. It’s not to be confused with I²S and actually has more similarities with a SPI bus.
TL;DR Specifications are still boring, but here it is
- All audio 24 bit @ 44.1 kHz, phase coherent
- Stereo XLR for Front of House (backing track for audience) with digital attenuation
- Stereo XLR for the band (click track) with digital attenuation
- Stereo jack amplified headphone with digital volume control
- MIDI in & MIDI out
- Able to parse and play MIDI 0 files alongside the two audio tracks
- User friendly way of uploading tracks (to be decided)