The Power of Tabs

by | Apr 12, 2018

Over the first two years of development, Music_SDP changed in a variety of ways. We added complexity and functionality and a host of design revisions, like the implementation of a new preset system and the recently re-built pedal board. But there’s one thing that hasn’t changed a bit since launch: the physical size of the modules on the pedal board.

The board on the left contains the Additive and Live Granulator modules from the 1.0.0 release of MSDP. The board on the right contains the A+2 and Live Granulator modules in MSDP 1.2.0

I was very intentional with the size standard for our modules. I personally explored a variety of shapes and dimensions in the initial prototype, and whittled them down to the single standard for the initial release. Our module size is designed to be small enough that a meaningful number of devices can fit onto a standard monitor, but large enough that the interfaces can be usable in performances. I knew that having a set size would impose restraints on our designs, but I also knew how important it would be to implement meaningful standards in order for our system to make sense to a variety of users.

Three sizes for the Additive synthesizer in an early prototype build of Music_SDP

At first this size didn’t seem like much of a restraint, and our initial modules were typically pretty simple. Modules executed a specific task and gave users a small set of powerful controls over the task. As our platform matured, however, our design paradigm began to evolve. While many of our tools still excel at achieving a very specific goal, we began to embrace the notion that modules could be feature-rich toolboxes, and could provide our creators with a wealth of options for how they were used. Many of our modern modules are packed to the brim with functionality and possibility. This growth in complexity created a new issue for us to deal with: the more functional the effect, the more the standard size of our modules became a roadblock.

The Add1t1v3 synthesizer, as it appears in the MSDP 1.2.0 release

The Additive Synthesizer, which I designed shortly after the February 2016 launch, is a great example of how challenging it can be to fit a lot of control into a small amount of space. This instrument includes a number of options, and provides a wealth of tools for designing a synthesized tone. Creators have up to three oscillators to utilize and combine, with access to a wide selection of waveforms. The synth also provides the ability to detune each oscillator by either cents or octaves. Users can even select a partial number for the pitch tuning, so they can re-create the overtone series. On top of this, an ADSR amplitude envelope allows the user to shape the volume of the sound over the duration of the note.

The Add1t1v3 synthesizer with the Arpeggiator secondary window opened next to it

Not only did I provide these basic sound design tools, but I also decided to add an arpeggiator into the synthesizer for more functionality. This feature was critically important; we hadn’t built the MIDI Arpeggiator module when the Additive synth was designed, and we still hadn’t figured out how to share MIDI data between instruments. When I thought about how to add the arpeggiator though, it wasn’t the functionality that gave me a headache; it was the user interface. As you can see from the image above, I was clearly out of space. I thought for a bit, tried a few things, and came up with a solution: create a secondary window for secondary features. In the Additive Synth, users can press the ‘View Arpeggiator’ button, and an additional window pops up that provides the arpeggiator controls.

This isn’t a great solution. MSDP can already get pretty window heavy when juggling multiple boards, and throwing more windows into the mix can make live performances harder to manage. At the time it got the job done, and we shipped the synthesizer so that creators could begin using it. Even though we have better solutions now, I’ve kept the secondary window setup here, since many creators will prefer to use the more functional MIDI Arpeggiator module instead. We do continue to use secondary windows in other parts of the program, but only when addressing certain issues, and they’re usually meant to be quickly closed.

At the beginning of 2017 I decided to revisit the additive synthesizer. I wanted to make the instrument easier to read, and I wanted to add even more tools into the design. Specifically, I wanted to add the ability to use additional oscillators to provide optional FM or AM synthesis. At first, I considered adding another secondary window. I sat on the thought for a while, but that didn’t seem like an option. One secondary window was already bugging me; two just felt totally unmanageable. Finally, the solution hit me when I was navigating through a totally separate part of the program: The System Board!

The System Board, in Full View mode with the Metronome tab displayed.

The System Board was overflowing with content, but it easily kept everything contained to one window, and it provided an obvious solution to my problem. In the System Board, each view is displayed in a unique tab. Need to see the performance interface? Just tab to the Performer View. Need to setup your MIDI Controller? Just tab over to the Control Designer. I’d built this interface myself, so I felt silly that I hadn’t thought about using tabs in modules before. But it made simple sense: just like we display certain project functions in different System Board tabs, I could display addition functions in modules by sorting them into similar tabs! By separating aspects of a module into unique tabs, not only could I add more functionality to modules, but I could clean up the visual design and give the interface more room to breathe! Suddenly buttons and dials could be bigger, and it was easier to fully display parameter names!

The A+2 synthesizer, with each of its three tabs displayed

The revision of the additive synthesizer felt bigger than just a visual overhaul, so I gave it a new name and called it the A+2. I used tabs to separate and clarify function, while making everything bigger and more enticing. The Waveforms tab only displays the options for the three oscillators, giving each oscillator its own row and further clarification of function. The Envelopes tab displays the same amplitude envelope as before, but the new space provided the opportunity to create a second envelope specifically for the new function: the LFOS. The final tab provides access to the two new LFOs, which allow the user to generate frequency modulation or amplitude modulation, which can be applied to any combination of the carrier oscillators.

The updates add a powerful new set of possibilities to the original additive core, and tabs allowed me to simultaneously make room for these new functions while providing additional clarity to the workflow. Once I saw how much tabs could improve a module, I got right to work adding them into other tools, and I began building new modules that could take advantage of the flexibility.

Several modules that utilize tabs. Top row, left to right: Stochastic Grains and Stochastic Files. Bottom row: Live Granulator and File Granulator

The four granular tools are a great example of how the idea of tabs have revolutionized module design for us. The Live Granulator and File Granulator existed before our tab design, but we had so many parameters that the number boxes and names had to be squished together. The Start / Stop button was tiny, and everything pushed up against everything else.

The File and Live Granulators in Music_SDP 1.2.0 (on top) and in 1.0.0 (bottom)

Before tabs, everything was squished together and difficult to read. The design may still feel tight on the current versions, but now we have larger UI elements, and the information is more easily visible. Check out the image above, where the original versions of the granulators on bottom can be compared to the recent version on top. Notice that the current modules have bigger elements that are easier to read, and none of the text has to be truncated. The font can even be a bit bigger, making both the parameter names and values more legible. The difference is night and day.

Michael Mann’s Chopper module, displaying both the Waveform tab and the Grid tab

Michael Mann, who has built several of the biggest and most impressive modules in display in MSDP, also uses tabs in his work, and he’s done some really innovative things with them. In Michael’s Drum Machine, Morphing Filter, and Chopper modules, tabs are used to separate modules into a setup stage and a performance stage. In the example above, we can see that the workflow in the Chopper module begins in the Waveform tab, where you can load an audio file and select a specific passage to dissect. Once that is setup, you can navigate to the Grid tab, where you can re-arrange the selection into chunks and remix it on-the-fly. The Waveform tab establishes the parameters, while the Grid tab allows you to play. The division of design helps you focus on the creative process, while removing the other parameter clutter.

Michael Mann’s Chaos Synth module, displaying the Stochastic tab, the Slider tab, and the Keyboard tab

What Michael did with the Chopper 2 and the Chaos Synth is even more exciting, and really innovates on how tabs add functionality to our toolbox. In both of these modules, each tab is a distinct mode of performance. The Chaos Synth is effectively three instruments running on the same core, and each tab provides a different option for how it works. There’s the Stochastic mode where pitches are chosen and performed at random from a set range, there’s the Slider mode where many pitches can be set to play at once as a sustained chord; and there’s the Keyboard mode where pitches are randomly (or formulaically) chosen from a user-selected set of pitches. Each mode generates a unique result and provides a totally different performative experience. The fact that all the modes run off of the same core means that switching between them is as easy as clicking your mouse on the desired tab! I love this concept, and I’ve implemented it myself to provide different methods of use for the DegraderDrive and the RM/AM module.

There’s plenty more I could discuss here, if I had an infinite amount of time. We could look at the use of sidebar tabs in the MIDI Arpeggiator, or the hybrid functionality of the Live Granulator, where the first two tabs are parameters and the keyboard tab entirely (and optionally) transforms the way you play with the sound. We could look at the dual nature of the Morphing Filter, or the way you can use the subtractive synth as a five step filter for any sound in your system with the filter tab. There’s so many unexpected and exciting ways to use tabs in MSDP, and it may be that the only way to learn about them all is to try them out for yourself!

My team and I have built Music_SDP to be a space that encourages experimentation and exploration. The tab paradigm works directly into this notion. Playing with tabs should feel like opening up new doors. Try them out to uncover the additional parameters, functions and modalities that we’ve embedded into the system. A new tab should represent new potential to explore, and a new method of unlocking the possibilities of your own creative mind.

-Hugh Lobel, and the Music_SDP team.

Donations help us pay for development work, bandwidth, web hosting, development tools, and audio hardware, and make a real impact in helping us realize this massive dream.

Pin It on Pinterest

Share This