DOC PREVIEW
MIT 6 111 - Implementing a Samplng Synthesizing Keyboard on an FPGA

This preview shows page 1-2-3-24-25-26-27-49-50-51 out of 51 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 51 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Implementing a Sampling Synthesizing Keyboard on anFPGADamon Vander Lind, 2007Mark Tobenkin, 2007November 4th, 2005AbstractWe have developed a sampling synthesizing piano keyboard, the Wumpus. This mechanism allowsusers to record, edit, and play back samplies at higher or lower replay rates based on which electricpiano key they hit. The attached MIDI keyboard allows users to play back samples at faster or slowerrates (and thus frequencies), and to apply echo. Up to 8 “notes”, or frequency shifted samples, may beplayed back simultaneously. Development was done in verilog, with a Xilinx Virtex II FPGA, set upon a prototyping board designed for MIT’s introductory digital design class.Figure 1: Diagram of Wumpus operation from the user perspective. A sample is recorded into memory,and then played back at different rates (and thus different frequencies) based on what key the user hits.Chords of up to 8 notes are possible.1 OverviewThe Wumpus, so named because of the preferred development test word, is a sampling synthesizingkeyboard. Users may record in a sample, edit it’s start, end, and hold positions, and play it back at fasteror slower rates with one of two modes. In loop playback mode, the sample continually loops from thestart position to the end position, allowing the user to adjust the above parameters. Alternately, the sample1may be played back according to the frequencies and timing encoded in a MIDI keyboard’s output, whichis mapped to different rates of sample playback according to the usual correlation for musical notes. Thus,one can record in “Wumpus”, and proceed to play simple piano pieces. Up to 8 notes can concurrentlybe playing, and notes pressed beyond this limit are ignored such that the system will not get backed up.When a note is held down, it cycles through a short (windowhold length long) window of the sample atwindow hold pos, util the key is let up. A subsampled waveform is displayed on a VGA screen, with barsto show start, end, and hold positions, such that the user may better see where they are adjusting theirvalues to. Inputs to the system are done primarily with greycode knobs for ease of use.Figure 2: Mockup of the final user interface.A user begins by pressing the enter button to capture their sample. This sample is painted on thescreen as they record it. The user can flip switch zero to listen to their sample play back in a loop. Usingthe top most rotary encoder, the user can move the starting point of the sample. The green bar moves toindicate where on the sample the starting point is, and paints the unused portions of the sample green.The user can adjust the end position of the sample as well. The fourth rotary encoder down adjusts thelarge red bar on the screen, painting the unused end portions of the sample red. These parameters canalso be adjusted in keyboard mode. When the loop switch is down, the user can play up to eight noteson the keyboard. Every full octave above Middle C the user presses will double again the speed of theplayback. Every full octave below Middle C the user presses will halve the speed of the playback. Eachnote in between will vary the speed logarithmically between the octaves. The blue and green squares inthe center of the waveform indicates the sustain point of the sample. When a key is pressed and helddown, the point in the waveform between the blue and green squares will be repeated until the key isreleased. The second rotary encoder will move the position of both of these points, and the third encoderwill change the distance between them. While playing in keyboard mode, the original sample initialy2plays back at Middle C. By using the 6th encoder, the user can adjust the Tune parameter, and move theoriginal sample to play back on any key on the keyboard.2 ModulesThe Wumpus consists of 5 top level modules: Control, Notes, Echo, Visualization, and Audio. We codedthe first four, while the last was kindly provided by the 6.111 staff.Figure 2 displays the topology of these modules. The design can be separated into two halves: thesound handling half, which includes notes and echo and the control half, which includes visualizer andcontrol. Damon implemented the sound handling half while Mark implemented the control half and bothworked on integration. The interface between the two consists of the echo controls, and of the parametersstored in a memory in notes, which control writes and sees return data from, to play and check allocationof notes respectively.We should define three words before delving into module descriptions, for the sake of clarity. Asample is the entirety of a recording into the Wumpus. A frame is a single value of the sample at a giventime, and a window is a small sequential subset of frames in the sample.2.1 NotesThe notes module takesin audio data from from ac97 data and outputs summed polyphonicand playback-rate-shifted audio data on data out.Internally, this module consists of four submodules which work to-gether to sequentially create and sum the desired frame for each individual note being output at a giventime. Although the mechanism used to do this has very low overhead per added note, we decided to limitthe number of notes to 8 to avoid degradation of the playback quality. The four submodules of the notesmodule are taylor, notemem, frameprep, and accumulator. The notemem module stores parameters (val-ues which are constant throughout the playback of a single note) and variables (values which can changeon any given frame) describing each note. The parametarized description of each of the 8 notes is fed inseries to frameprep, which provides taylor with the current, previous, and next sample in relation to thenote’s current playback location. taylor uses these to do a taylor expansion of the sample and providethe desired frame, and feeds new variable values to notemem (signalling notemem to move onto the nextnote). accumulator sums the serially created frames for each note, and outputs this value on dataout.This module is fairly simple in terms of the number of lines of code, but proved to be very hard to debugdue to the high level of interdependence between modules. All modules in notes signal off the previousmodule they depend on for input values. The way this is done, it creates a cycle which goes through allnotes in the mimimum number of clock cycles given the delay of each module in the cycle.This module construction differs significantly from the original plan, which involved ten


View Full Document

MIT 6 111 - Implementing a Samplng Synthesizing Keyboard on an FPGA

Documents in this Course
Verilog

Verilog

21 pages

Video

Video

28 pages

Bass Hero

Bass Hero

17 pages

Deep 3D

Deep 3D

12 pages

SERPENT

SERPENT

8 pages

Vertex

Vertex

92 pages

Vertex

Vertex

4 pages

Snapshot

Snapshot

15 pages

Memories

Memories

42 pages

Deep3D

Deep3D

60 pages

Design

Design

2 pages

Frogger

Frogger

11 pages

SkiFree

SkiFree

81 pages

Vertex

Vertex

10 pages

EXPRESS

EXPRESS

2 pages

Labyrinth

Labyrinth

81 pages

Load more
Download Implementing a Samplng Synthesizing Keyboard on an FPGA
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Implementing a Samplng Synthesizing Keyboard on an FPGA and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Implementing a Samplng Synthesizing Keyboard on an FPGA 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?