Product C

Product C is a dynamic and versatile software solution, seamlessly integrating a custom sampler, step sequencer, and live looper within a unified interface. Developed using the Max/MSP/Jitter object-oriented programming environment, the software is meticulously crafted to deliver a flexible and user-friendly experience.

Video Demos and download links at the bottom of this page.


Design Problem

Traditional sequencers and samplers often involve cumbersome menu navigation, or rely on third-party software for sample loading. This creates a disjointed workflow split between preparation and creation phases.

How can I design a program to unite this fractured workflow into one process?


As part of my coursework at NYU Steinhardt I was tasked by an elective called “Programming in the Max for Live Environment” with creating a working prototype of my own design by the end of the course. My deadline would thus be 3 months from conceptualization.

Planning


Research

Tool Familiarization and Exploration

Lacking prior experience in the Max programming environment, I embarked on a journey to familiarize myself with the available tools. Thorough exploration of help and reference files gave me insight into how I might extrapolate various functions into multiple use-cases.

Market Comparison

I conducted a preliminary assessment of hardware and software offerings across different price ranges. The majority of these necessitated an interface for loading pre-recorded samples. A noteworthy observation was the limited number that provided native recording and processing capabilities.

Through interviews with peers and fellow musicians, I gained crucial perspective into desired features. Notably, the strong emphasis on effects in user feedback prompted dedicated development in that specific area.

Interviews

Key Findings

  • Core components would need to be based on flexible programming in order to maximize the scope of the project.

  • There is an open niche in the market for flexible and powerful creative tools at the cheap or free price point.

  • Modular design of the audio chain and effects units will allow for easier customization and expansion in order to satisfy a broad user base.


The Problem Visualized

Existing Workflow

If users have a built-in microphone, they must record to software like a DAW (Digital Audio Workstation) to record and chop samples. After, they usually load the files to a drive or proprietary program for the sampler. Recording requires external connections to return to the DAW or a mixer. Incorporating a looper or effects units necessitates extra hardware connections.

Proposed Workflow

Provide users with a unified program for recording, processing, and playing samples. Achieve seamless integration with effects units and looper channels, eliminating the need for menus or external connections.


Defining Scope

After early Max programming research, I discovered the versatility of certain objects would allow me to leverage assets into multiple functions. Coupled with the feedback I had received in the interviews, I narrowed the scope of the project to three main functions: the Sampler, the Looper, and a modular effects section.


A Multifaceted Solution

Taking stock of the project's scope, the versatile buffer object emerged as a cornerstone, seamlessly addressing three fundamental aspects of the program. This unifying force integrates recorded and designed sounds into the broader functionalities, ensuring a harmonious workflow. As the nexus for various elements within the software, the buffer plays a pivotal role in shaping the program's capabilities.

Recording

The buffer serves as a dynamic canvas for recording audio samples. It captures the essence of creativity, allowing users to seamlessly record their sonic ideas and integrate them directly into the program.

Playback

A robust playback mechanism is inherent in the buffer's capabilities, providing users a platform to effortlessly play back and audition their recorded samples. By incorporating a trigger mechanism synchronized with timing, the buffer can serve as the nucleus of a sequencer or a looper, depending on the implementation.

Sound Design

Beyond its recording and playback prowess, the buffer excels as a tool for sound design. Native arguments allow manipulations like pitch adjustments, time-stretching, and other creative techniques. It empowers users to sculpt and craft their audio, fostering a realm of sonic exploration that relies less heavily on effects processing.


Modular Design

In envisioning a modular design for the effects units, my objective was to ensure flexibility. The plan extended beyond individual effects; as the project evolved, I opted for a comprehensive modular approach. Creating self-contained units for the looper, effects, and sequencer channels allowed for seamless expansion or reduction based on user feedback or emerging preferences. Each unit is designed to be encapsulated, with two stereo inputs and two stereo outputs, enabling easy addition or removal of components anywhere in the audio chain. This modular structure also facilitates dynamic control over the order of effects units to provide a versatile framework for sound design experimentation.


User Interface

As I crafted the user interface, my goal was to make each tool easily accessible and intuitively presented. This involved three key considerations: controls and readouts, screen real-estate, and visually distinct sections.

Controls and Readouts

Every control in the program is designed for easy adjustment and readability. Controls without a dedicated GUI offer precise adjustments via a draggable number box, allowing fine-tuning and exact numerical input. Each control also includes a dial for broader adjustments, anticipating future expansions, potentially incorporating MIDI control for increased flexibility.

Screen Real-Estate

The decision to avoid menus prioritized a seamless creative flow by keeping all channel features visible and accessible. Due to time constraints and limited space, harmonic distortion was omitted in favor of integrating an ADSR envelope, strategically maximizing sound design capabilities in confined space and prioritizing a time investment for enhanced functionality.

Distinct Sections

Controls with a modular bpatcher-designed GUI stand out visually. Isolated controls like time and pitch are grouped for alignment and clarity, featuring pastel-like colors for a playful, cohesive feel in each strip of effects or control units.


Final Thoughts

Achievements: Throughout the project, I crafted a fully functional prototype with robust features for designing captivating sounds and innovative sequences. This program empowers me to create a complete song independently, minimizing dependencies on external software or hardware. Further, I honed my programming skills in the Max environment and gained valuable insights into iterative development, project planning, and strategic task prioritization.

Next Steps: The program's focus on interface usability prompts the integration of a hardware controller and MIDI controls in the next phase. Additionally, enhancing the modular effects for increased variety is always available, and exploring solutions to automate the display of elements could address screen size restrictions.


This video series is a comprehensive exploration of Product C where each segment dissects the distinct features of this project.

Sequencer

Sampler

Looper

Musical Demo

To provide a comprehensive experience of this project, I've made available executable files for your convenience. I understand the inherent security concerns associated with downloading executables, and I assure you that these files have been meticulously crafted and scanned for safety.

For those who prefer or have access to Cycling ‘74’s Max, you can also visit my GitHub repository to download the Max patches required to run the files. This option requires the Max software but offers a more customizable interaction with the project.

Your exploration and feedback are invaluable, and I'm committed to ensuring a secure and enriching experience.

Next
Next

Hardware Design