Summary: In this project you will design sounds in LabVIEW. You will create two subVIs: one to implement an ADSR-style envelope generator and the other to create a multi-voice sound source. You will then create a top-level application VI to render a simple musical composition as an audio file.
![]() |
This module refers to LabVIEW, a software development environment that features a graphical programming language. Please see the LabVIEW QuickStart Guide module for tutorials and documentation that will help you: |
| • Apply LabVIEW to Audio Signal Processing | |
| • Get started with LabVIEW | |
| • Obtain a fully-functional evaluation edition of LabVIEW |
This project will give you the opportunity to begin designing sounds in LabVIEW. You will create two subVIs: one to implement an ADSR-style envelope generator and the other to create a multi-voice sound source. You will then create a top-level application VI to render a simple musical composition as an audio file.
If you have not done so already, please study the prerequisite module Analog Synthesis Modules. If you are relatively new to LabVIEW, consider taking the course LabVIEW Techniques for Audio Signal Processing, which provides the foundation you need to complete this mini-project activity, including working with arrays, creating subVIs, playing an array to the soundcard, and saving an array as a .wav sound file.
Create the subVI ADSR.vi to generate the ADSR-style envelope specified in Figure 1; recall that ADSR stands for "Attack Decay Sustain Release."
![]() |
The envelope shape is defined over a normalized time interval of 0 to 1; the envelope stretches or compresses to match the actual duration requested. The three time intervals are likewise expressed in normalized units, so an attack duration (tA) of 0.2 indicates that the attack time is 20% of the entire envelope duration. The envelope values range from 0 dB (full sound intensity) to -40 dB (close to silence). Once you have defined the envelope shape in terms of straight-line segments, you can create the envelope amplitude waveform by undoing the decibels operation; recall that an amplitude "A" expressed in dB is 20 log10(A).
The subVI requires the following controls as input parameters (units specified in brackets):
The subVI requires the single indicator (output) envelope, an array with values in the range 0 to 1.
Show that your ADSR VI functions properly by plotting the envelope for at least two distinct cases. Plot both the dB form of the envelope as well as its non-dB form.
The following screencast video provides coding tips and other suggestions to help you develop your subVI.
Make a subVI called SoundGen.vi that combines a signal source with the ADSR envelope generator. Use a case structure with an enumerated data type control that allows you to choose one of several different "voices" or "instruments." The case structure then defines the ADSR input parameters to choose the type of signal source (or noise source for a percussive instrument).
The subVI requires the following controls as input parameters (units specified in brackets):
If the discussion in Item 4 for the note control seems mysterious, review the module [INSERT NAME AND MODULE LINK] to learn how to calculate the frequency of a semitone interval using equal temperament.
Show that your sound generator VI functions properly by developing a top-level VI that plays a chromatic scale. Vary the duration of the notes. Plot the waveform to ensure that the envelope shape makes sense. Save your generated sound to a .wav file to be included with your deliverables.
The screencast video of Figure 3 offers coding tips and other suggestions to help you develop your subVI.
Compose a simple piece of music using analog synthesis techniques of your choice. Better compositions will include variety, e.g., different envelope parameters at different times, multiple channels (chords), stereo, percussive sounds, and so on. Write a paragraph or two that describes your compositional technique. Better compositions are click-free, i.e., joining the notes together does not produce any pops or clicks.
The overall objectives of this alternative Part 3 are the same as described above, but the technical approach is different.
Go to MIDI JamSession to learn all about a LabVIEW application VI of the same name that reads a standard MIDI file (.mid format) and renders it to an audio file (.wav format) using "instrument" subVIs of your own design. You have already done all of the work necessary to create your own instruments, and it is a simple matter to place them inside a standard subVI wrapper (or "Virtual Musical Instrument," VMI) that MIDI JamSession can use.
"Developed by Rose Hulman Prof Ed Doering, this collection is a multimedia educational resource for students and faculty that augments traditional DSP courses and courses that cover music […]"