hardware and software for electronic music 

rsdio's Recent Posts

Wed, May 17, 2017, 22:15

MIDI and USB-MIDI should be about equally useful. USB-MIDI does not make DIN irrelevant because the timing is tighter for DIN even though the bandwidth is lower. USB-MIDI creates 1 ms jitter due to the USB frame timing. If you run everything through USB-MIDI, then it does alter the timing to a degree in exchange for gaining higher bandwidth.

The USB-MIDI part of the firmware should support both controllers and synths, the only difference being that one is mostly an input and the other is mostly an output.

Tue, May 16, 2017, 01:12

Thanks, @thetechnobear - I just realized that a USB hub would allow the existing hardware design to support both the Soundplane and a USB-MIDI synth. Just more firmware to write.

Of the USB to MIDI DIN solutions, aren't they mostly USB Devices? I know of one or maybe two USB-MIDI Host to DIN solutions, and I recall them being a lot more expensive than USB-MIDI Device to DIN. It seems moot with hub support, but I'm curious as always.

Sun, May 14, 2017, 21:45

@chrisharrisx, I'm thinking that one touch per port would allow excellent bandwidth for expression. Another option would be to assign a physical port to a Zone, but I have not studied the typical use cases for Soundplane Zones yet. The latter might be more useful if you want to assign a particular hardware synth to a Zone, assuming that the synth is polyphonic.

@thetechnobear, I don't understand what a USB-MIDI Host would connect to. Usually only MIDI controllers connect to USB-MIDI, but the Soundplane would be the controller in this scenario. I'm assuming that a USB-MIDI Device would actually be compatible with more things, but then we're talking about a computer Host and the whole point of this project is to circumvent the computer that the Soundplane connects to currently.

Another consideration is that this product has devoted its USB port to Hosting the Soundplane, and the kinds of CPU chips that can handle two USB ports are typically more expensive than those that handle just one USB port, not to mention the extra USB jacks that would be needed.

If by iHost you mean an interface to iOS, then that could be expensive considering the various hurdles that need to cleared in order to talk to iOS using Apple's proprietary Device-to-Host switching protocol. Apple has something like USB OTG, but the protocol is different for an iOS Device. I think I'll understand what you're thinking of if you mention specific pieces of gear that you'd want to hook up, because then I could investigate the details.

Thanks for the feedback!

I'm seriously considering RTP-MIDI, but I have no idea how much firmware development effort that will require. If completed, RTP-MIDI should allow a lot of options that do not require dedicated ports.

Thu, May 11, 2017, 14:51

Thanks, Chris. Would you be interested in 4-out 1-in, or 3-out 2-in MIDI? In terms of panel space, they're the same.

Tue, May 09, 2017, 15:48

Still looking for front panel makers with quantity discounts.

Thanks for the input, kirr. I had the impression that Front Panel Express prices did not allow volume discounts, so they're all technically "custom" panels. I probably have a lot to learn about sourcing panels for mass production.

Tue, Apr 25, 2017, 13:55

Thanks, sequencersampler.

My current thinking is to make it easy on the customer and provide an 8HP panel for 2 touches as the primary model. We assume that will be the most common desire, so it will come as a single module that's ready to go.

The main board supports up to 10 touches, which seems a reasonable limit for humans. How to deliver that is an unanswered question.

Like most modules, there will be separate circuit boards behind the front panel, but I wouldn't expect customers to deal with interfacing individual boards unless that's the only option. Since I doubt we can find bulk discounts on the panels anyway, customers who want more than 2 touches may get a custom front panel that combines everything. For those of you that want MIDI, those jacks could be to the left or right of the CV and main USB sections, but that could affect the length of the ribbon cables. No promises that every combination will be available, but that's my idea so far.

My primary reason for separating the CV board from the main board was to reduce the number of PCB layouts across the various permutations. It should be a bit less expensive to make these submodules all the same and avoid the high prices of low quantity orders.

I briefly researched putting a single touch (4 CV) on the main module, but that ended up being way too tight for one board, so the next logical option was dual-touch units (8 CV, as shown).

Doepfer makes a few expander modules that are only 2HP wide, but that's just too narrow for the octouch boards. If available separately, the octouch would be a 4HP module, but it might actually make more sense to do custom panels that combine the desired number of touches with optional MIDI.

I think that the challenge will be to figure out what the second most common combination of features might be. I think it will be more affordable to have just one or two standard models to make production go more smoothly, with the option of more expensive custom design for customers who need more than the basic model. I think that some cost analysis and a survey would help.

Sat, Apr 25, 2015, 23:32

Thanks, Chris. I see now. Maybe a rotary switch or a couple of toggles. A quick thought is that one toggle switch could select between canned zone maps versus custom, and a second toggle switch could select between an A versus B option of each. If there are more than two custom presents, maybe a button with LED indication of the present number.

I would like to ask folks: Do you need just a couple of presets? Four? More? I mentioned the classic 7-segment LED array, but that idea was not popular (seen as too retro). Another minimal option might be two to four LEDs that could indicate the preset number without going to a full display.

I'm floating wild ideas now while waiting for more input from users. I've started design of the CV board, so the main board won't be started for a bit. The main board is where preset selection and other UI would live.

Sun, Apr 16, 2017, 12:41

@timoka, thanks for the feedback.

I'm fairly certain that trigger functionality and timing could be handled in firmware, including inverted (negative polarity) for compatibility with some, e.g. DotCom, modules. I understand that duration is a consideration for getting a good sound from a low pass gate, so time would be a configuration setting.

Moog S-trigger cannot be supported without significant hardware changes, so an external converter would be needed for that.

Thu, Apr 13, 2017, 22:22

New update - OCTOUCH Soundplane CV expander board working!

I'm sure this is the piece that folks have been waiting to see. The pictured board supports a pair of Soundplane touches, with Gate/X/Y/Z outputs for each.
OCTOUCH
You'll see a couple of LED indicators above each group of four 1/8" CV outputs.

The top jack is intended as Gate, and is very flexible in terms of matching required voltages for various synthesizer brands - including the option for Velocity on Gate (a rare thing that I've actually heard of being used). The associated Gate LED is On or Off to indicate the status of the Gate signal. Currently, the Voltage threshold for that LED is set to 1.5 V since I believe that will work for all necessary settings. The actual CV output signal on the Gate Voltage jack can be as high as 10 V if your synth needs that much.

The next three jacks are for the X, Y, and Z dimensions of the associated Touch. These can be positive-only (probably appropriate for Z-pressure) or bipolar (for X-pitch and/or Y-timbre). The second LED is hard-wired to the Z dimension and lights up in proportion to the positive Voltage strength. The intention is to give feedback about the pressure.

The firmware will allow customization of Voltage ranges to suit various modules, but will have a decent default setting for folks that just want to play. The main board supports more than one of these CV expansion boards for folks who want more than two touches.

For simplicity, the LED functions are set in hardware because I wanted to avoid having complex control signals between the main CPU and the CV expansion just for LED indicators. In particular, I did not want to send high-frequency high-current PWM signals for LED dimming because these boards are all inside a modular synthesizer. I figure it's better to simplify the LED features and focus on good sound without buzzing interference. I also decided not to try to cram four LED indicators per touch, even though that might have been "cool." Although there's room for more LED indicators, I'm reluctant to add the additional circuitry in a product where we should be focused on sound sculpting.

If anyone has comments on these features, please share. It's not too late to change certain details or perhaps add features within reason. I think I've given a hint or two about my design philosophy.

p.s. the code name, octouch, combines the Greek prefix octo- with our favorite word, touch. the assembler mispelled this as Oc Touch, which had me wondering if I could think up another meaning for the letters, but I haven't come up with anything further.

Thu, Apr 13, 2017, 21:55

Hi Alex. Glad to see the interest.

Keep in mind that Kickstarter only helps round up the money, with a little social networking promotion in the process. Sadly, Kickstarter does nothing to help with the technical process of design-for-manufacturing. I follow a few Kickstarter projects where it's clear from the updates that they have no real product yet and are just starting on the manufacturing design. The whole design process tends to take the same amount of time, with or without Kickstarter. I think that Kickstarter is better for less expensive products that are more popular, and will therefore be manufactured in much higher quantities. More people pitch in small amounts and it eventually adds up.

Madrona Labs starts by solving the technical details and then rounds up the money afterwards. I personally think that's a better approach to designing around new ideas that aren't necessarily cheap. I'm sure that Randy can find a way to move forward if anything like funding gets in the way.

Sat, Apr 08, 2017, 23:02

Quick news update: MIDI expansion hardware validated... before moving on to the more complex output features.

Most modular users probably will not need MIDI out (or in), but it seems like a good plan to design the system to handle it as an option. At the very least, the polyphonic features of the Soundplane will be easier to support over MIDI. If MIDI controller messages eat up too much bandwidth, the multiple MIDI ports allow the touches to be sent over separate cables or divided by zones or other schemes that we come up with.

MIDIO

The displayed board has three MIDI outputs and two MIDI inputs. Another board design has four MIDI outputs and one MIDI input. Both boards offer the option to convert the last output to MIDI thru, for the rare users that might need it. The current designs pack five MIDI jacks into the standard Euro height, but if user input suggests that having four MIDI jacks spaced further apart is a better idea, then the boards could easily be altered before production. Four of these expansion boards together, connected to the main board, allow the full potential of eight MIDI outputs and eight MIDI inputs.

As mentioned in earlier installments, MIDI is included because it's easy to support and should be available as an option for those who need it. As part of the Hardware Validation phase, I wanted to briefly test the MIDI subsystem to make sure there are no hardware changes needed on the main board. A quick test has my 1986 vintage Akai VX90 happily producing sounds, controlled by MIDI from the prototype Soundplane host.

The next installment should be the CV Output expansion hardware, which will be part of the base system. I hope to have that update here soon.

Sat, Apr 08, 2017, 22:33

@morgang - I don't have Reaktor, but I assume that it would be easier to support the Soundplane via MIDI. In the MIDI world, each touch would be a separate MIDI Channel, and then Note On/Off, Pitch Bend, Aftertouch, and Continuous Controllers would allow the Soundplane to control a lot of parameters in Reaktor without as much effort on your part.

The issue with OSC is that there is no standard way to connect a controller with a sound-generating device. In the monome world, there are a set of 2D messages, but they do not support pressure or the other dimensions of the Soundplane. Randy's t3d protocol is not specific to the Soundplane, but I don't see Reaktor supporting this natively without some work.

Granted, MIDI doesn't fully support a non-keyboard controller like the Soundplane without requiring a few settings to be tweaked (primarily, making sure the Pitch Bend range is set high enough to allow a Soundplane touch to extend across most of the surface), but I've been able to get vintage synths to do everything I need (except bend beyond 2 octaves).

Mon, Mar 27, 2017, 23:39

More news on the Soundplane to CV module.

The second phase was hardware design and prototyping.

There are many embedded processors and I did not want to get too deeply into the hardware design process until after I was reasonably sure that the chosen one could handle the task. I recall some 8-bit MCU USB peripherals are limited to a maximum of 256 bytes for isochronous packets, while the Soundplane uses two endpoints of 388 bytes each. The proof of concept phase mentioned last week convinced me that the TM4C1294 can handle the full bandwidth, which makes sense given the 32-bit ARM architecture.

Cortex-A chips - the opposite end of the spectrum - are significantly more expensive, pull vastly more power from an already challenged modular power supply, and are really only necessary when you need serious graphics processing and full operating system support. You will not find a Cortex-A chip for as little as $7, so I am happy with the Cortex-M4F.

The next task after settling on a chip was to arrange all of the external connections to fit the specific GPIO ports. With 128 pins, 90 of which are GPIO, there are many interfacing options. Starting with a system design at a block diagram level, I grouped similar control signals together on the same port to simplify the firmware, and with so many GPIO options I was also able to move functions around the chip to locate them near subsystem groups on the PCB. Despite the 32-bit nature of ARM, the 15 ports are all 8 bits or less, which is a little different from, e.g., the XMOS chip architecture.

A side effect of designing the system first is that many of the expansion boards went through layout and prototyping before the main board. The advantage of handling them first was that they were very quick to design and I could work on the main board while waiting for the expansion boards to come back from fabrication and assembly. Future installments will discuss those.

I then completed the main board PCB design and reviewed it several times before beginning layout. You will see in the photo that it has the requisite Euro rack power connector. Peripherals include a rotary encoder, potentiometer, button, several LED indicators, and the obvious USB A Host port. Besides the many anticipated expansion connectors such as octal MIDI I/O, there are also a couple of quad synchronous serial port headers. Those SSI peripherals may never be used, but they would allow for serious high-speed data connections to other subsystems.

K0

Basic firmware is up and running on this main board and communicating with the Soundplane. A lot more work is needed on the firmware, however, to implement all of the subsystems and get them working together. Obviously, besides the foundational basics, the first test will be to track at least one touch and generate a set of Gate and X+Y+Z Control Voltages that bring Soundplane performance gestures to life on a modular.

There is no particular schedule for future installments of these reports, but I think there should be time for me to put out a few more in the coming weeks.

Fri, Mar 24, 2017, 17:13

The TT code has been open source all along for the purpose of maximizing compatibility with as many platforms as possible. Randy is currently working on optimizations for that code which should help, as you say.

The BBB/Bela Cortex-A9 seems to be geared towards a higher-level Linux system with higher latency, while offering easier application development due to the well-known platform. This Cortex-M4 platform will not be based on Linux, and so the latency should be as low as possible for hardware - unfortunately, low-level firmware is a bit more difficult to master although the performance makes it worth the effort.

Sun, Mar 19, 2017, 22:23

Hello all,

Yes, there is a bit of news... enough that I'll break it into two installments.

The first phase was research and proof of concept.

The Soundplane poses a bit of a challenge because it requires isochronous USB, and quite a bit more payload than some embedded processors can handle. The project got started with a Texas Instruments LaunchPad : the EK-TM4C1294XL. The chosen processor is an ARM Cortex M4, and it seems to have what is needed. There is floating point support and the ability to host the Soundplane.

You'll see in the photo that an adaptor was needed from the tiny USB connector on the LaunchPad to a USB A socket as needed by the Soundplane. A quick bit of development in Code Composer Studio resulted in firmware that can power up and communicate with the Soundplane, and it doesn't seem to be dropping any packets. In addition, crude touch detection seems to indicate that there are no lost packets, so full bandwidth is working.

You'll also see a tiny SMD capacitor soldered to the through-hole expansion pads. This was necessary to handle the current draw of the Soundplane at 230 mA, which is almost half the limit of USB.

Tiva

After the first phase, significant time was spent designing custom hardware for a modular environment with precision D/A for CV outputs.

Stay tuned for the second phase.

Sat, Mar 18, 2017, 20:57

Dangerous Prototypes is also a good site with lots of open-hardware and open-source projects. It's basically Hack-a-Day for electronics design.
http://dangerousprototypes.com/

Thu, Mar 09, 2017, 01:43

MIDI Channel Mode 4 (Omni Off, Mono) supported fully?

Does the Soundplane application support the full MIDI Channel Mode 4 specification?

Specifically, I'm asking about the parameter in the Channel Mode Message (#126) for Mono Mode On which takes the number of voices as the second byte (with 0 meaning "all" voices). This command would presumably be sent after the Channel Mode Message (#124) for Omni Off.

Thu, Mar 09, 2017, 02:09

I was away from this thread for a long time, but it is great to see the two of you helping each other out on these platforms. I will soon be working on a Cortex M4 implementation running a lot slower than 1 GHz, so I may need to focus on optimization. Thanks for sharing all of your notes as you worked!

Thu, Mar 09, 2017, 01:08

(moved to Hardware)

Tue, Mar 07, 2017, 22:23

@rastkopravi
MW is ModWheel? ... same as MIDI CC #1?

Wed, Mar 09, 2016, 21:22

@andrewbird

As for bypassing running a laptop, that's the point: Performance would certainly be stand-alone, i.e., without a laptop. Just the Soundplane and your synth of choice, with only the The Soundplane-to-CV in between. It would have on-board non-volatile memory for your custom settings, and that could be easily loaded from a USB Memory Stick. SDHC card support would require dedicated hardware, increasing the cost and panel real estate, so it's doubtful that particular format would be supported.

As for bypassing running a modular synth, I'm not exactly sure that I follow. I assume you mean that you'd like to use a standard Analog synth, even if you don't already have a modular. There should be no issue with that, technologically, although there does need to be some sort of case, even if it's a small modular rack or just a metal box. We'll keep the options open as much as possible, within reason.

Are there any settings that you might need to change on the fly during a performance? Anything that a few customizable presets wouldn't cover? Keep the ideas coming!

Wed, Mar 09, 2016, 18:49

Very interesting.

And, to state what's probably obvious to most people here, your 2-in 4-out low-latency system could be used to build a DIY 4x2 pressure sensitive surface. I'm sure the AM335x has sufficient power to calculate 2,000 multi-point FFT conversions per second.

Thu, Oct 08, 2015, 22:39

Yes, constant latency is more easily ignored than jitter.

I was concerned about FS because the Soundplane is FS. So, it seems like the MTT would be forced to add latency.

Wed, Sep 16, 2015, 18:01

Really cool project!

Sorry for the detailed questions, but do the USB Multi-Transaction Translator hubs add any latency when performing their feature? Seems like it would be unavoidable, although High Speed frame latency is only 1/8th Full Speed latency. Hopefully the total latency is only 1 ms + 0.125 ms = 1.125 ms.

Meanwhile, I assume that your STM32F7 Discovery Kit firmware must implement High Speed USB, otherwise the Multi-TT hub would not really provide any advantage when connected there.

Sat, Sep 12, 2015, 21:30

You may not actually need as high as 125 kHz sampling rate.

With only 16 carriers and a target 500 Hz update rate instead of 1 kHz, you could possibly sample as low as 31.25 kHz or 32 kHz. Then you'd only need 32 frequency bins from a 64-point FFT, and that might be easier to perform with limited DSP capabilities. Your bandwidth might be one quarter that of the 8x64 Soundplane, so perhaps you don't need the reduction we attained by converting to the frequency domain. Instead of the Soundplane's 768 kB/s USB bandwidth, you might be able to get by with 384 kB/s of time domain information. You can cut that down to 192 kB/s via FFT. Of course, this assumes 12-bit samples. The Soundplane uses ADC chips that operate at 1 MHz. If you use 24-bit audio ADC chips, you'll need 8 of them (or an 8-channel CODEC), but the 24-bit data will double your bandwidth needs unless you dither down the bit depth before sending over USB.

In any case, you'll still need isochronous USB packets, whether time domain or frequency domain, in order to guarantee that the USB Host will allocate enough bandwidth to guarantee delivery of the data stream without dropouts.

Sorry for all the numbers - I hope I didn't do any of the math incorrectly.

p.s. A CODEC may simplify things, since you could have sine wave outputs and ADC inputs on a single chip with a single sample rate. However, I don't really know of any 16-out, 8-in CODEC parts. Designing around a lower sample rate may offer more converter chip options for your project. You might get better results around 60 kHz than 30 kHz, though, with the understanding that this would double your bandwidth requirements.

Sounds like fun! Keep us posted.

Sat, Sep 12, 2015, 21:01

The paper never mentions whether the haptic vibrations reduce the sensitivity of the Soundplane by the nature of them being placed between the surface and the sensor. I'd be curious to know how much of the haptic vibration is picked up by the Soundplane's sensors, given that the haptic frequency is bandpass-filtered to 40 Hz - 400 Hz, and the Soundplane has the ability to read vibrations up to 500 Hz.

The closing remarks do admit that more research is needed, so I'd be curious to read a followup paper.

Sat, Sep 12, 2015, 19:58

Wow! I had not seen Juglans before.

The piece has such a wide palette of sounds as well as dynamic range. I watched the video before reading the followup comments, and I couldn't tell that you were selecting sounds. I can see how that might not be your preferred way to play. Let us know if you find a different solution - or if you have any more videos to share.

Fri, Aug 28, 2015, 18:00

Keep us posted, thetechnobear, and maybe even create a new thread (separate from HD MIDI) when your Axoloti supports 14-bit CC. If it works well, I hope the offical Soundplane client will support 14-bit CC out of the box.

Fri, Aug 28, 2015, 00:36

I've used the environment in Logic Studio Pro to both generate and respond to 14-bit CC as a test, but I've not actually checked whether any of my synths support it. Does Zebra?

Considering that this is one of those chicken-and-egg situations, maybe if you add support for 14-bit CC to Axoloti, more people would become aware of it and think about adding support elsewhere.

The Livid Instruments Ohm64 and family support 14-bit CC generation, but it's difficult to find a control surface that's accurate enough.

HD MIDI sounds like a bold departure, but I think we've yet to tap the limits of 1983 MIDI.

Fri, Aug 28, 2015, 00:29

@thetechnobear
Of the many things you have to tackle, you could get a start by looking for USB Host isochronous examples, such as would allow you to connect a USB Audio interface and stream audio. If you can get that going on your STM32F4, then you could probably easily host the Soundplane with a few modifications. Actually, the Soundplane requires much less complex support than an audio interface, although it's using about 3 times the bandwidth of 24-bit stereo audio. That's (a)
Of course, processing touches is the next step after that, and you have the client source as a guide for that (b).