<< Chapter < Page Chapter >> Page >

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.

[video] Coding tips and suggestions for ADSR.vi

Part 2: sound generator

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):

  • duration [s] - total duration of note
  • fs [Hz] - system-wide sampling frequency
  • fref [Hz] - reference frequency
  • note - note frequency as described by an integer value that denotes the number of semitone intervals from the reference frequency; note can be a negative, zero, or positive value
  • instrument - enumerated data type with values of your choice; your SoundGen.vi should have at least three different tone-type sounds and at least two different percussive sounds. Use a variety of envelope shapes.

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 offers coding tips and other suggestions to help you develop your subVI.

[video] Coding tips and suggestions for SoundGen.vi

Part 3: multi-voice composition

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.

    Hints:

  • You may wish to use a familiar melody (remember, you've got an equation that converts a note from the equal-tempered scale into frequency), or you may want to use a musical "experiment" based on an algorithm as the basis for your composition.
  • Operate multiple instances of SoundGen.vi in parallel (each with a different instrument setting) and add their outputs together.
  • Import multiple spreadsheets to define your note lists (use "File IO | Read Spreadsheet"). Spreadsheets are the easiest way to hand-edit the contents of arrays.
  • Remember to normalize your finished output before saving it to a .wav file. Use QuickScale ("Signal Processing | Signal Operation | Quick Scale") for this purpose.
  • View your finished composition as a waveform plot. Confirm that the envelope shapes make sense, that the waveform is symmetrical about the zero axis (it should not contain any constant offset), and that the waveform fits within the +/- 1 range.

Alternative part 3: multi-voice composition using midi file

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.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Musical signal processing with labview -- analog synthesis and modular synthesizers. OpenStax CNX. Nov 07, 2007 Download for free at http://cnx.org/content/col10480/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Musical signal processing with labview -- analog synthesis and modular synthesizers' conversation and receive update notifications?

Ask