rsdio's Recent Posts
The Aalto community has produced many patches, including a few commercial sets. But I can't find any patches for the Soundplane. Have folks in the Soundplane community been sharing their patches, but I just missed it?
Hi Tim, do you have experience writing drivers for Windows that can handle USB Isochronous data? All of the user-level code I know about (WinUSB) does not support isochronous endpoints. There may be a solution that is specific to Windows 8, but I'm hoping that Windows 7 and XP can be supported as well.
It's great to see this link between the Soundplane and EigenD! Thanks.
A scanned matrix without carriers would not sense pressure. You would only have binary on/off sensing like a standard computer typewriter keyboard. Capacitive sensors require an AC signal generated on one plate, with the amplitude on the other plate representing the distance. While it's possible to calculate distance in response to an impulse (the scanned method that you suggest), it's much more workable to generate steady carrier frequencies.
By the way, I believe that the latency is the same either way. Scanned binary keyboards have a latency of (sample rate) / (number of columns), but the Soundplane has a latency proportional to (sample rate) / (number of FFT bins). It's possible to use overlapping FFT to reduce the latency, while a matrix can scan binary switches at higher sample rates to reduce latency.
Jumping way back to the question about tuned onboard oscillators...
It's theoretically possible to do it this way, but the challenge becomes tuning that is both precise and won't drift over time with temperature, power supply, or other changes. For best results, you need each carrier to occupy a different bin in the FFT output. Unfortunately, if even one carrier oscillator drifts from its optimum frequency, it will be smeared in the FFT across multiple bins, giving false triggers for all the other carrier frequencies.
Your best best is to use sampled digital oscillators, locked to the same rate as the A/D for the sensors. In this way, you can be sure that each carrier occupies exactly one FFT bin without any smearing. There will be enough noise floor to keep you challenged without the extra hurdle of precise, steady tuning.
The Raspberry Pi might be able to handle the calculations if it had an extensive, high-speed conversion module added. The Soundplane manages 4 million D/A conversions per second for the 32 carrier frequencies, and 2 milion A/D conversions per second for the 16 sensor channels. The 32x16 converter channels are arranged as 64x8 on the physical surface.
As Randy said, the Pi could handle a smaller array, but you do need substantial area to create the capacitive plates, not just wires.
The dialectric rubber is not strictly necessary, but you absolutely need to have some mechanism for the capacitive plates to change distance from each other. That's how the pressure sensing works - by precisely measuring the change in distance between two (or more) capacitive plates.
Hi Scott, sorry I'm a few weeks behind on noticing your questions.
You are correct: The Soundplane sends data on Isochronous endpoints, one for each half of the touch surface, with a sequence number to allow pairing of matching packets. Note that the USB Specification forbids a Device from sending Isochronous data until after the Host has selected an Alternate Interface. So, your code will first have to navigate the Descriptors and send the appropriate commands to select Alternate Interface #1. Alternate Interface #0 has no endpoints, while #1 has two.
Upon successful selection of Alternate Interface #1, the Soundplane powers up its analog circuits and the "power" LED lights up. You'll know that your commands are working if you see the LED lit.
At this point, you'll have 12-bit data coming in as highly-packed transfers. The source code that you already have shows how to decode this data. It's fixed-point in the USB packets, so you won't need floating point unless that's how you want to process the touches. A good test is to display or otherwise visualize the 2D grid of pressures as if it were a video frame, but perhaps that's not easily done with your platform.
There are more details, but hopefully the source code is precise enough since it is what everyone is using.
Free free to ask more questions, and I'll try to follow this thread.
I think I heard Randy say in the video that you can load up to four samples, so I'm guessing you could have just two without one of them being noise.
Maybe I should put a call out:
If anyone has experience with libusb on Windows, or has worked on something like the alternative 'driver' for the SoftStep, or otherwise written software to directly communicate with custom USB protocols, then please contact me. I'd like to determine exactly what is needed on Windows and go from there.
Has anyone tried AU Lab? I seem to recall recording with it.
I think you'll find that as you learn any of the available tools for synthesis, you'll probably be able to apply the Soundplane to it as an expressive controller.
So far, I have connected the Soundplane to a 1978 Sequential Circuits Pro-One via the Encore Electronics Expressionist MIDI-to-CV converter. This setup was limited by the fact that the Pro-One has only two inputs for expression: pitch and filter. Thus, it was not possible to use pressure and y position at the same time.
The next round involved a 1984 Oberheim Matrix-12 via MIDI. The Soundplane used all available MIDI expression for this device, allowing pitch, channel aftertouch, and channel modulation. Up to 16 touches with 3 dimensions of control were possible with this combination. I was surprised to discover that the Matrix-12 does not implement polyphonic aftertouch, but this ended up not being a limiting factor because there was still a way to access all expressive dimensions.
There are endless other combinations of hardware or software that would work with the Soundplane. I don't think that I'm taking the easy way out by suggesting that there is no "best" or "maximum" combination. That said, you would do well to study any synthesis engine that you're considering to discover its limitations. As I learned in my own experiments, it's a matter of mapping from the available Soundplane OSC and MIDI messages to the available modulation options in the given synthesizer. The better you know your synth, the better your Soundplane performance can be.
Personally, I'd recommend against dropping a lot of cash on new instruments until you've learned your way around the Soundplane. I always tend towards the frugal side and assume that cash is finite. As Randy says, software instruments are probably your best starting point. As you work with your computer and learn more about programming new synth patches to take advantage of the Soundplane's expressive capabilities, you'll eventually be better prepared to make a purchasing decision for a perhaps more advanced synthesis engine. Maybe some day the KYMA will be what you choose, or perhaps something else will be more to your liking. You can certainly learn quite a bit with Aalto before you commit to anything else.
Finally, note that a typical eurorack will limit you to monophonic synthesis, although you'd surely have plenty of modulation inputs. I suppose if you configured a rack carefully, you could build a polyphonic setup that would work with the Soundplane, but this might be a rather challenging way to start. At the moment, a convenient collection of modules does not come to mind, but perhaps someone else here could suggest a useful setup. Again, the built-in polyphonic capability of Aalto makes it more suited for multi-touch pressure sensitive control. In the physical analog world, you'll probably need to use the multi-mono mode feature of MIDI for polyphony with 3-dimensional modulation capabilities (as I set up with the Matrix-12). I am not familiar with the MIDI-to-Eurorack options that would support multi-mono mode for polyphony, but I'm no eurorack expert.
- To further clarify, the entire length of the Soundplane in the x dimension is not limited to a single 12-bit range. Each of the 30 divisions has approximately 12 bits of resolution, and these numbers are combined to determine subdivision positioning. As Randy explained, it's not simple to determine an exact bit precision. However, I wanted to point out that it's a lot more precise than stretching one 12-bit number across the entire range. The same is true in the y dimension, although there are fewer than 30 divisions in that direction.
We could have implemented USB-MIDI for the Soundplane Model A, but that would have forced severe limitations. I am glad that there is MIDI support, but MIDI is certainly not enough on its own for a 3D controller.
If anyone knows of a Windows programmer who can handle Custom Class USB communications, I'd be willing to give them the information needed to get the Soundplane working there, at least at the raw data level.
By the way, SoftStep and Max/MSP have to communicate somehow over USB, so it's theoretically possible to tap directly into the USB link if you must avoid Max/MSP. It'd require documentation from Keith or hacking skills, for sure. You are correct to surmise that the Soundplane is similar, except that we do not require Max/MSP. I'm not quite sure what you mean by hoping that the parallels went deeper, but if you were hoping that the protocols were identical then there's no hope of that. The Soundplane protocol is highly packed to squeeze the most surface information into the smallest bandwidth possible. There's no hope that the SoftStep uses raw data anything like the Soundplane. Considering that OSC doesn't have a USB Class, and doesn't even have an official 3D protocol that works everywhere, it seems like we might be waiting a while for a standard protocol for 3D control surfaces.
As far as I know, the driver cannot be written in Java. Actually, on OSX, there is no driver needed, but the low latency asynchronous USB streaming code is incredibly touchy. I am not aware of a Java API that can handle low latency isochronous USB.
For Windows, it might be a driver, or maybe libusb would work?
@x2mirko and others, I thought I would update the news.
We showed the Soundplane Model A on June 2 linked to an Oberheim Matrix-12. The solution we used was to assign each finger to a different MIDI channel. That way, Note, Pitch Bend, Aftertouch, and Mod Wheel could be kept separate for each touch. In the Matrix-12, I programmed the patches to respond to pressure (volume), X (pitch bend), and Y (filter or other wave shaping). The Matrix-12 has twelve voices, so it could easily handle 10 touches, or even 12 with two people.
It was amazing to hear a vintage 1984 analog synthesizer respond to a controller that would not have been possible 18 years ago. Of course, MIDI is not appropriate for every setup - it really depends upon what you want to control. But, personally, I find that it's important to work on the MIDI features to maximize the possibilities.
Hopefully, now that the Soundplane Model A is shipping to the first customers, we'll get discussions of OSC and maybe direct control.
This forum is basically intended for Hardware that is made by Madrona Labs. There is another forum that is open to any topic. Folks are free to reply if they have information to offer, but I still think you might find more help with MASCHINE on the N-I forums rather than here.
Hi Chris. I suggest that you get a USB audio interface. Then plug your DIY surface into the audio inputs and outputs. You can use the headphones and microphone connections on your computer, but that limits you to 2x2. With a USB audio interface you can do 4x4 or 8x8. Maybe you can figure out a way to put everything in the same enclosure.
We did not "get" the USB set up for the shipping model. The USB features are part of the custom-designed main board, along with the DSP, analog signal conditioning, and other circuits. So, there isn't an off-the-shelf part that you can buy (to my knowledge) other than a generic USB audio interface.
Can you give more details of the playing technique used to make notes within a chord beat on the Continuum?
@x2mirko, sorry I did not reply sooner.
Aalto doesn't use MIDI, as Randy has explained, so there aren't any limitations with regard to accessing all of the parameters generated by the Soundplane.
For MIDI destinations (i.e. synths other than Aalto), there are as many as 512 14-bit controls per MIDI cable, and that's in addition to the 16 pitch bend messages. Any synth that does not support OSC should still have ample opportunity for fine, 14-bit control of a ridiculous number of parameters.
Since your message, we demonstrated the Soundplane Model A at the Pacific Northwest Synth Fest on October 29. The Soundplane client converted touch to CoreMIDI, a USB-MIDI interface converted to classic MIDI, an Encore Electronics "Expressionist" converted to CV, and then a Sequential Circuits Pro-One responded in all its analog glory to Soundplane control. Despite the long chain of conversions, the response was both instantaneous and accurate. I look forward to patching more complex analog modulars to the Soundplane, and at the very least the success here bodes well for control of MIDI soft synths as well as external hardware synths.
None of this is intended to imply that OSC will be neglected. It's the primary link between the Soundplane Model A and Aalto for Soundplane. I merely wanted to point out that the "old-school" standards are still alive and kicking!
In case anyone is interested, we managed to connect the Soundplane to the Pro-One using the Encore Electronics "Expressionist" MIDI-to-CV converter. It has 8 Gate and 8 CV outputs. Alas, the Pro-One only has 3 inputs, so we connected Gate, VCO and VCF. On the Soundplane, X controlled the filter frequency, Y controlled the pitch, and pressure just operated the Gate.
There's so much more that could be done with the Soundplane and a full modular. I had hoped somebody would wheel over their giant modular to connect 3, 4, or even 8 CV outputs to their rig, but nobody seemed bold enough to cross-connect. I guess there was enough complexity on each table at this event even without combining!
Kudos to Randy for the excellent pitch tracking via MIDI.
Without commenting on specific surface plans, I want to point out that the Soundplane has the unique ability to sense continuous touches across the surface - even when the surface is cut into a particular grid. So, you can slide around on one 'key' in the grid and still sense where your finger is on that key. You can also slide off the key past several others and still be controlling the original note seamlessly. In my testing, there seem to no limiting factors due to the particular shape of the grid.
I'm glad that Randy is touring this thing around, because the photos can lead your imagination to invent restrictions that are not there, and I must admit that I fell victim to the same tendency. It helps to touch it, see it in use, or pay close attention to the videos to get the full idea. Hopefully this will become easier over time.
dboy, are you asking about the Aalto synthesizer?
MIDI has the capability for 14-bit values on 32 controls across 16 channels. That is more than enough resolution to handle Soundplane expressive gestures, especially with USB-MIDI or other high-bandwidth variations on MIDI. The caveat is that not all software is easily configured for 14-bit MIDI. Logic has this ability, and other popular MIDI software does, too. But it may take a while to iron out the appropriate user settings for full resolution. I've worked extensively with 14-bit MIDI in Logic, but there are a few shortcomings, and I have not tried the Soundplane yet.
A classic MIDI interface would probably require intelligent "thinning" of the data due to the limited bandwidth, but in that case it would probably be the timing density of the control data that suffers, and not actually the resolution or depth of pressure.
Personally, I think that MIDI and OSC are equally valid for the high-level output of the Soundplane client software, but we'll have to see whether typical MIDI software can keep up. I can't wait to see what people can get working musically, especially when pairing the brand new Soundplane with older hardware technology.
Keep in mind that MIDI has 14-bit resolution, which is plenty. Most users will only need the high-level touch/expression messages, for which MIDI and OSC are equally appropriate, depending upon the destination. But some applications might actually make use of the full, low-level data stream, which is very likely more than even OSC can handle.
It's great to see such enthusiastic response, and I can't wait to hear what musicians and performers can achieve once they have a Soundplane Model A under their hands.
Was the one in the photo a rotary cut, or a quarter slicing?
A Random Slab?
You can certainly draw inspiration from the concept, but I doubt that you can achieve the same technical results. Randy's prototype works with capacitive sensors, but your FSR grid is made of Force-Sensing Resistors. At a higher level, you can probably get similar results, but the materials are already different. Some of the higher level code might be universally applicable, but the lower levels of the design will not translate directly.
I don't know the details, but I assume that "brand new patching interface" means that the code has been rewritten to be much faster. This doesn't necessarily mean that it looks any different. I guess we'll all see on Friday.
EDIT: Never mind. Now I see the pr0n posting, and it does look a little different.