73
13 - Manipulating and Editing MIDI Items
mouse editing activities on any part of the selection, such as copying or moving, adjusting velocity, stretching,
shrinking, etc. The table below gives some examples of how you can apply this to various MIDI editing tasks.
MIDI Editing with Multiple Items: Some Tips and Examples
These notes assume that you are by now familiar with the basic MIDI editor navigation and editing techniques
explained earlier in this chapter and, for example, shown in the exercise in section 12.24. Indeed, you are
advised not to experiment with editing multiple MIDI items until you are confident that you have mastered the
techniques for editing the contents of a single MIDI item.
Tip: Before attempting any of these editing tasks in the MIDI editor, check your channel filter settings to make
sure that the notes to be edited are actually visible!
If you want to do this …
… do this!
Change track/item name.
Double-click on name in track list and edit.
Copy/move a note (or note
selection) to another item
within MIDI editor.
Make sure source item(s) editable. Select note(s), press Ctrl C (copy) or
Ctrl X (cut). Make the destination item active. If required, position play
cursor. Press Ctrl V (paste).
Copy/move a note (or note
selection) to another item in
Arrange view.
Make source item(s) editable in MIDI Editor. Select note(s), press Ctrl C
(copy) or Ctrl X (cut). Select destination item in Arrange view, make it
active in MIDI Editor, position play cursor. Press Ctrl V (paste).
Mouse edit a selection of notes
in more than one MIDI item.
Make items editable. Select notes and use mouse (e.g. drag to move,
click drag from edge of any note to lengthen or shorten notes).
Delete selection of notes across
more than one item.
Make items editable. Select notes and press Delete key.
Mute/Unmute note selection
across more than one item.
Make items editable. Select notes and press Alt M, or use Mute events
command from Edit menu.
Change note properties for a
selection of notes
Make items editable. Select notes and press Ctrl F2. Make changes then
OK.
Quantize, Humanize, Transpose
across multiple items.
Make all required items editable. Make note selection and choose Edit
menu command, e.g. Quantize, Humanize, Transpose.
Adjust velocity of notes
selected in two or more items.
Display velocity lane and make items editable. Select required notes.
Click/drag mouse up/down from top edge to increase/decrease velocity.
Edit CC data across multiple
MIDI items.
Display CC lane and make items editable. Select required events and
perform edit as required with mouse or via Event Properties dialog.
Show/Hide all MIDI items on
tracks in Track List.
Click (for one track) or Shift click (for all tracks) on diamond symbol to
the left of any track name in Track List (toggle).
Show/Hide all tracks/MIDI
items in Track Folder.
Click on circle symbol to left of folder name in Track List (toggle).
13.29 MIDI Editor Mouse Modifiers
The Mouse Modifier dialog can be opened by the Options, MIDI editor mouse modifiers command. A dialog
box is opened where you can customize exactly how you would like the mouse to behave when you are working
in the MIDI editor.
There are several areas in which you can modify mouse behavior within the MIDI Editor. These include MIDI
note, MIDI note edge, MIDI CC lane, MIDI CC event, MIDI Source loop and marker, MIDI ruler,
MIDI marker/ region lanes, MIDI piano roll and MIDI editor. In many cases separate contexts are also
available for left click, left drag and double-click behavior. You can define how your mouse behaves when it is
being used in any of these contexts. For example, if you wanted to, you could ensure that, say. Shift Alt Left
click is used to toggle a note's mute status.
For much more about mouse modifiers, including MIDI Editor mouse modifiers, see Chapter 14.
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
251
63
Up and Running: A REAPER User Guide v 5.12
13.30 MIDI Editor Actions
REAPER’s Action list Editor lets you assign keyboard shortcuts to any command or action, or sequence of
actions, including many not shown on the MIDI Editor menus. Chapter 14 will show you how to do this,
including adding actions to the
MIDI Editor menus.
The Action list is displayed by
choosing Show actions list
from the Actions menu. One
of the first things to notice
about it is that it contains a
whole load of assignable
actions beyond those that are
shown on REAPER’s menus.
This means that you are able
to create your own keyboard
shortcuts for any of these
actions, and even for
sequences of actions.
Notice also (right) that when
using the MIDI Editor Action
List, you are able to assign MIDI commands and actions to keystrokes so that those keys will behave differently
in the MIDI Editor from the way they behave in the main REAPER environment. You can see that there’s quite a
few, and that some already have keys assigned to them. You can assign your own keys to other actions.
Let’s take a simple example. Being able to select notes quickly and easily is important when you are working
with the MIDI editor. If in the Action List filter box you type add note then only those actions which included
these characters will be displayed (see above). One of these is Add next note to selection. You can assign a
shortcut to this action – perhaps the letter N.
Example
1. With any MIDI item open in the MIDI Editor, choose the Actions, Show actions list command.
2. Click on the action Add next note to selection.
3. Click on the Add… button. This causes the Keyboard or MIDI Input window to be displayed.
4. Press the letter N. Click on OK. You can see that this keystroke has now been assigned to this action.
5. Close the Actions List.
6. Click on any note to select it. Now press N several times. Each time you do so, the selection will be
extended by one note. You could now move these notes together, or assign them to a different channel,
or delete them, or perform any other editing action.
You’ll see in Chapter 14 that the Actions List Editor lets you do much more than this. For example, you can:
Chain together any sequence of actions so that the sequence can be executed with a single keystroke.
Add actions and custom actions to your MIDI Editor toolbar and/or the MIDI editor Actions menu, and/or
any of REAPER's MIDI Editor menu commands (File, Edit, Navigate. Oprtions, etc.)
REAPER's MIDI Editor commands (such as Edit -> Delete events, Edit Insert note, Edit
→
→Quantize,
Navigate Select next note, Options Correct overlapping notes when editing, etc.) can all be found in
→
→
the Action list. In addition there are many hundreds of actions, some very precise, which are not shown
on the menus. The table that follows should help guide you thru many of these.
Category/Group
Examples of MIDI Editor assignable actions(not fully comprehensive)
Note/event selection
Select all notes with same note value, Select note nearest to edit cursor, Select all
muted notes.
Add next/previous note to selection, Add note nearest edit cursor to selection.
Select/unselect all CC events, Select/unselect all CC events in last clicked lane.
Select all notes in time selection, Select all notes starting in time selection, Select
all CC events in time selection (several variations).
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
252
64
13 - Manipulating and Editing MIDI Items
Category/Group
Examples of MIDI Editor assignable actions(not fully comprehensive)
Note inserting/ editing/
manipulating/ moving/
transposing
Color notes by velocity/channel/media item custom color/using colormap/by track
custom color.
Delete all notes/trailing notes less than [1/128 to 1/8] note in length.
Lengthen/shorten one grid unit/one pixel.
Make notes legato, preserving note start times/relative note spacing.
Move notes down/up one octave/semitone (transpose)
Move notes left/right one grid unit/one pixel.
Invert selected/all notes.
Invert chord voicings.
Reverse selected/all notes.
Edit note velocity +/- 01/10.
Set note length to grid size/double/half.
Trim left/right edge of notes to edit cursor.
Insert note [1/128 to 1] note length.
Set note ends to start of next note.
Set note position to edit cursor.
Split notes on grid.
Copy/cut/duplicate notes within time selection, Fit notes to time selection.
Paste events into active media item regardless of source media item
(allows items
to be copied from a selection of media items into a single media item.)
.
Loop/time selection
Loop point: set start/end point. Remove loop point. Double/halve loop length.
Set time selection to selected notes, Remove time selection, Remove time and
loop point selection.
Move cursor to start/end of loop/time selection.
Activate item/track
Activate next/next visible/previous/previous visible MIDI item. Activate next/next
visible/previous/previous visible MIDI track (if multiple items/tracks are open).
CC lane management
Next/previous CC lane. Set CC lane to xxx.
Channel display
Show only channel xx, Show only next/previous channel, Toggle channel xx, Color
notes/CC by channel.
Cursor movement
Cursor advance [1/128 to 1]. Cursor advance [1/32T to 1/4T].
Lyric events
Align lyric events with notes. Import lyrics for selected noted from file.
Insert/edit text/lyric event at first selected note.
Select next/previous lyric event. Shift lyric events backward/forward one note.
Grid actions
Set grid type (straight, dotted, triplet, swing). Adjust swing grid strength
(CC/mousewheel).
Mouse modifiers
Actions are available to set mouse modifier behavior within the MIDI Editor for
each of the categories CC event left drag, CC lane left drag, MIDI editor right
drag, note edge left drag, note left click, note left drag, piano roll left click, piano
roll left drag, ruler left click and ruler left drag. The list of actions is exhaustive.
13.31 In-Line MIDI Editing
To use the in-line editor on any MIDI item, first select the item then either use the default shortcut key E or
right click and from the menu choose Open items in Editor then Open items in In-line Editor. The in-line
editor will only be displayed if there is sufficient track height.
REAPER’s main MIDI Editor is recommended for serious and in-depth editing of your MIDI items. However,
many common tasks can be carried out using the in-line editor if you prefer. This allows you to edit the
MIDI item without leaving the main window.
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
253
53
Up and Running: A REAPER User Guide v 5.12
The in-line editor displays piano roll view only, and the contents of CC lanes will be determined by whichever
lanes were selected last time the item was opened in the MIDI Editor. If it has never been opened in the MIDI
Editor, the Velocity lane will be selected by default. You can adjust the boundary between the editing area and
the CC lane with the mouse to adjust its height, just as in the MIDI Editor.
Right-clicking over the editing area will display a menu that will show you which editing tasks can be carried out
with the in-line editor. These are listed in detail in Chapter 21, but in summary, the following types of commands
and actions are supported within the in-line MIDI editor:
Note editing mouse actions, including change length, change velocity, marquee, move, delete and insert.
Most commands on the MIDI Editor’s Edit and View menus, including quantize and humanize.
When working with the in-line editor, any keyboard shortcuts and custom actions that you have defined in the
main MIDI Editor will apply, along with any defaults. For example, PageUp and PageDown will zoom vertically
in and out within the in-line editor. You can run your MIDI Editor custom actions within the in-line editor. The in-
line editor also displays a small toolbar in its top right corner. From left to right, the function of these tools is:
The Move CC with events toggle tool: serves the same purpose as its equivalent tool
in the MIDI Editor window.
The Show/Hide tool (magnifying glass): toggles between the functions Show all note
rows, Hide unused note rows and Hide unused and unnamed note rows.
The Item Style tool: toggles between rectangle, triangle and diamond note display
style.
The Vertical Scroll/Zoom tool. Click and hold on this and drag vertically up or down
to scroll vertically up and down, left and right to zoom vertically in and out (see
example, right). You can double-click on this button to zoom to contents.
The X tool. This closes the in-line editor and restores normal display.
The MIDI Editor and In-line Editor are designed for editing your MIDI
events
. Remember also that many of the
item
editing tasks, functions and activities that you discovered in Chapter 7 can also be applied to MIDI
items
as
a whole. For example, in arrange view items can be dragged and dropped, split, copied, muted, grouped in
selection sets, locked and so on. Plug-ins can be added directly to an item's FX chain. Selecting a MIDI item in
Arrange view and pressing F2 will display its Item Properties window where you can shift pitch, change play
rate, loop enable/disable, and do much more.
13.32 Copying MIDI Items in Arrange View
When you make a copy of a MIDI item in arrange view, then depending on your preferences and on how you
make the copy one of two outcomes will occur:
The first of these is that the new item will be created as a new instance of the original item, and will use the
same source data as the original. In this case, any changes made to either item will be applied to the source
data, and therefore also to the other item. This might be what you want, for example, if you have a melody, a
bass line, or a drum pattern that you wish to repeat throughout a project. You’re still working on the line, and
you may need at some future time to make changes to these items, and you wish to do this in such a way that
when you make these changes to any one item they will automatically be applied to all of the others.
In the alternative scenario, the new MIDI item becomes a discrete item in its own right, so that you can
independently edit either item without affecting the other.
By default, when you copy and paste items using the menus or keyboard shortcuts (such as Ctrl Shift C and
Ctrl V), the former method (with common source data) is applied. The items are also added to the Project
Media Bay (see Chapter 12) where they are listed as MIDI pool items.
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
254
50
13 - Manipulating and Editing MIDI Items
To change this default behavior, disable the preference (under Options, Preferences, Media, MIDI) to Pool
MIDI source data when pasting or duplicating media items (see also Chapter 21). Items will then by
default be
copied as
discrete
items. Note
that a new
MIDI pool
item is never
created when
an existing
MIDI item is
split. Note
also that by
default MIDI
items added
to a project
from the
Project Media
Bay are not
pooled.
The default behavior when you copy an item by dragging with the mouse depends on your mouse modifier
settings for the context Media item drag. By default, the following apply when dragging MIDI items:
Drag and drop
Move item ignoring time selection
Ctrl with drag and drop
Copy item as discrete item
Shift Ctrl Alt with drag and drop
Copy item, pooling MIDI source data.
For a complete list of mouse modifiers, see the Editing Behavior, Mouse Modifiers page
of your Preferences. Select Media item left drag from the context list. You can
change any assignments if you wish. The method is explained in Chapter 14.
You can remove any individual MIDI item's pooled status and convert it into a discrete item. To do this, either
display the item's source properties window (Ctrl F2 or use the context menu) and click on Un-pool this
item, or click on the item's pooled status icon (see above).
13.33 Joining MIDI Items
There may be times when you wish to join a number of MIDI items together. This might, for example, be to
create a single loop enabled item, or simply so that you can edit them as one item, or perhaps to be able to
export the MIDI data as a single MIDI file. For example, you might have several MIDI items that you wish to
export together as a single file. The track shown below might be an example of this.
You can select all of the items (right-click and drag is often the easiest way to do this) and glue them together:
right-click anywhere on the selection and choose Glue items from the context menu.
You can then double-click on the glued item to open the MIDI Editor, from where you can export it as a single
MIDI file (File, Export to new MIDI file …).
13.34 MIDI Preferences Settings
To specify your MIDI preferences, choose the Options, Preferences command (Ctrl P) and then select the
Media, MIDI page. You'll find these shown in Chapter 21, but for now the following are worth noting.
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
255
53
Up and Running: A REAPER User Guide v 5.12
You can specify whether by default new MIDI items are created as REAPER media items (the default)
or .MID files.
You can specify how your edits to
imported .MID files are to be
interpreted – that is, whether to
apply your edits only to the item
in the REAPER project file or also to the original file on your disk.
You can set the default behavior for imported multichannel MIDI files – as multichannel on a single track,
as single-channel items on multiple tracks, or always prompt to ask.
13.35 MIDI Output Direct to an External Synth
The MIDI output of any track or selection of track can be sent directly to an external
hardware synthesizer instead of (or as well as) to the master. Right-click on the
track's ROUTE button, choose MIDI output from the menu, then the device name,
then the channels. Optionally, you may also disable output to the master send.
13.36 Exporting Project MIDI
From Arrange
view, the File,
Export Project
MIDI …
command can be
used to export
either an entire
MIDI project or
selected items or
tracks within that project to a single MIDI file.
An example of such a project file is shown here.
It includes six tracks with MIDI events ( a
different channel for each track), enclosed in a
folder whose FX chain includes a virtual
instrument. For the most part, the options
shown here require little explanation.
You can choose to export the Entire project
time or the current Time selection only.
You can include All media items within the
project, or Selected tracks only or Selected
items only. In the example shown, All MIDI
items has been chosen.
You can merge the various MIDI tracks to a
single MIDI track in the output file or export it
as a Multitrack MIDI file, with the integrity of
the different tracks maintained in the output file.
You also have options to Embed tempo map
and/or Write project markers as MIDI cues.
13.37 Feedback Routing with MIDI Tracks
We have already mentioned (Chapter 2) that REAPER's project settings allow you to use feedback routing. You
will need to enable this feature if you wish to route MIDI output from one track to another, then audio output
from the second track back to the first.
13.38 MIDI Routing, MIDI Buses and ReWire
REAPER's MIDI routing capabilities can be enhanced by the use of MIDI buses. By default, your MIDI tracks can
contain up to 16 MIDI buses, each comprising 16 MIDI channels. When sending MIDI data from one track to
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
256
55
13 - Manipulating and Editing MIDI Items
another, you are able to specify bus/channel combinations for both the source and destination tracks rather than
just a channel.
These options are available in the drop down lists in the MIDI send/receive windows (below right).
MIDI data sent from one track to another in
this way can be directly routed to any VST or
AU synth in that track's FX chain. To do this,
right-click over the plug-in's “2 Out” button and
choose the required MIDI Bus from the MIDI
Input menu (below right).
The same context menu can also be used to
assign MIDI Output to any bus, and/or to
assign the synth's audio output to any track channel or channels.
When a track has volume and pan MIDI controls, moving the
volume/pan fader within the routing window will generate CC7/CC10
events. When a send's MIDI routing button is enabled, these CC
events are sent to the destination track.
ReWire users may be interested to know that MIDI data routed in
this way can be also be mapped to ReWire, using any permutation
of buses/channels that you require. For more information about
using ReWire with REAPER, see Chapter 16.
13.39 ReaControlMIDI
The Cockos ReaControlMIDI plug-in can be used with
any MIDI track to set various MIDI parameters on that
track. It can be inserted from the track’s FX chain, or by
right-clicking over the track name or number and
choosing Show ReaControlMIDI for Selected
Tracks from the menu.
You can use several different instances of this plug-in
on the one track to send different MIDI messages to
different channels. This enables you, for example, to
send control messages to a synth or virtual instrument
placed after ReaControlMIDI in the FX chain.
Many DAWs have MIDI tracks with MIDI-specific
controls, like bank/program select, MIDI volume and
pan, etc. REAPER instead uses ReaControlMIDI, which
provides a MIDI track TCP for any track.
This gives you additional flexibility, because you can
insert multiple instances, or insert it at any point in an
FX chain, either for the track as a whole or for individual
items. Notable features of ReaControlMIDI include:
Load File: You can load a REAPER .reabank file or
Cakewalk .ins file of instrument definitions and then
select a preferred bank/program combination.
Control Change: Up to five CC items can be selected
from the drop down lists. Any and all of the items
available for CC lanes in the MIDI Editor are available.
ReaControlMIDI also gives you a vehicle for creating
MIDI CC track envelopes, by allowing automation of any
of the plug-in's enabled CC sliders. Automation will be
explained in Chapters 17 and 18.
You can also assign track controls to the TCP and/or
MCP to manage its various parameters. This is explained in Chapter 12.
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
257
67
Up and Running: A REAPER User Guide v 5.12
13.40 Some MIDI Plug-ins
REAPER includes a good
selection of plug-ins that can be
placed into the FX chain of any
of your MIDI tracks, or directly
into any MIDI item. Many of
these (the IX series) have been
written and developed by Philip
Consadine. Now is a good time
to take a look at them.
The basic steps involved in
inserting and using Track FX are
covered in the section Track FX
Basics. If you are unfamiliar
with these steps, you should
review that section before
proceeding.
If you display the Add FX window and type
midi
into the filter list box (as shown here), you will see a list of
those MIDI FX that are currently available. Below are listed some of the JS MIDI FX supplied with REAPER.
FX Name
Comments
MIDI_CCRider
A LFO Controlled CC generator.
MIDI_DuplicateFilter
Blocks duplicate notes.
MIDI_KeyMap
A MIDI key mapping utility.
MIDI_KeySnap
This is a good cheat for bad pianists.
MIDI_Router
Routes events from one channel to another.
MIDI_Tool and MIDI Tool II
These do interesting and fun things to MIDI note events.
midi_transpose
Transposes a note or a range of note.
MIDI_Variant
A pattern based, musically aware, randomification monster.
MIDI_Velocifier II
This is a pattern based velocity modifier.
midi_velocitycontrol
Used to vary and control velocity on a MIDI track.
MIDI_Wobulator
A LFO Controlled automatic pitch wobulator.
sequencer_megababy
An awesome pattern sequencer (see later in this chapter).
Synthesis/midi_drumseq
Use this drum sequencer with your favourite patch set.
These plug-ins can be made even more powerful by the use of automation envelopes, which can be applied to
any of their parameters. How to create, manage and apply automation envelopes will be covered in Chapter 17.
For more information about how to use these and other MIDI plug-ins, visit the Cockos web site, and in
particular http://www.cockos.com/wiki/index.php/Jesusonic_Effects_Documentation#MIDI
13.41 MIDI Controlled Pitch Shift with ReaVoice
The ReaVoice plug-in can be used in conjunction with a recorded vocal track to create pitch shift harmonies.
As with many other plug-ins, ReaVoice can be used in a number of ways. In this section we will take you thru
just one example. After completing this example you should be able to experiment with this plug-in’s capabilities
for yourself. The procedure for using ReaVoice is as follows:
Record the Vocal Track.
Insert a new track immediately below the Vocal Track.
Create a send from the Vocal Track to the new track. Initially at least, this should be Pre FX.
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
258
63
13 - Manipulating and Editing MIDI Items
Insert ReaVoice into the FX Window of the new track.
Arm this track for recording. Make your MIDI keyboard the Input Device and turn Input Monitoring on.
Mute all tracks except these two.
Play the song. As you do so, play the keyboard, experimenting until you find an appropriate range of
notes.
Work out what you want to
play, press W to return to the
beginning, then Ctrl R to
record. Stop recording when
finished.
If you do not have a MIDI
keyboard, you can either use
REAPER’s Virtual keyboard, or
you can enter the notes by
hand using the MIDI Editor.
If you wish, you can record
more than one take, selecting
Play All Takes for the MIDI
track items.
After finishing recording, you
can use the MIDI Editor to
polish your work.
Example
In this example, you’ll have some
fun and explore how ReaVoice works at the same time.
1. Open the file All Through The Night.rpp and save it as All Through The Night REAVOICE.rpp.
2. Mute all tracks except the Vox track.
3. Move the Vox track to the top, select it and press Ctrl T to insert a new track. Your Vox track is now track
1 and the new track is track 2.
4. Name the new track Vox MIDI.
5. Display the Routing window for the Vox MIDI track and add a new Pre FX Receive on Audio 1/2
from the Vox track.
6. Insert the ReaVoice plug-in into the FX Window for this track. For now make its settings as shown
above. Note in
particular the
number of voices
and the long sustain
setting.
7. In the Vox MIDI
track, insert an
empty MIDI item
from about the 13
second mark to
about the 50 second
mark. This should
coincide with the
first vocal passage
on the Vox track.
8. Double click on this
to open it in the MIDI Editor.
9. Create a pattern of notes similar to that shown above. You don’t need to follow this precise pattern, be
prepared to experiment.
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
259
47
Up and Running: A REAPER User Guide v 5.12
10. As you play the song, make sure that the two vocal tracks are
soloed. You can of course edit any individual note or notes, for
example, by moving them up or down, by lengthening them or
shortening them, or by changing their pitch. Here are some more
possibilities, just for fun and to give you some ideas.
11. Within the MIDI Editor window, press Ctrl A to select all events.
12. Press Ctrl F2 to display the Note Properties dialog box.
13. In the Note box, type +2 (as shown) then click on OK. This raises
the entire selection by two semitones.
14. Experiment with other settings as you wish. Save the file when
finished.
15. Now experiment with adjusting some of the ReaVoice settings.
13.42 JS: IX/MIDI_Router
This plug-in can be inserted from a
track's FX chain. It is used to redirect
MIDI data from one channel to
another.
You can choose whether to send
notes, non-notes, or both.
13.43 Working with Piano Roll Synced to Project Arrange View
Here is one example of how you
can work with the MIDI Editor
piano roll synced to the project.
This is what we have done:
1. Recorded a percussion
instrument as a wave file
and, using stretch markers,
dynamic splitting, or any
other technique, edited this
item so that the notes are
exactly as we want them.
2. Created a new empty MIDI
item and opened it in the
MIDI editor.
3. Used the MIDI editor
command View, Piano roll
timebase, Project sync.
4. Right-clicked on title bar and
chosen Dock Window.
5. Clicked on the ! in lower left
corner of docker and deselected (i.e. unticked) the option Attach docker to main window.
6. Clicked on the ! in lower left corner of docker and chosen Set opacity, 75%.
We can now move the MIDI editor window and place it over the previously recorded track: this helps us visually
in using the MIDI editor to add the notes for our next percussion instrument.
For a spiral-bound hard copy of this User Guide for about $30 go to LULU.com
260
Documents you may be interested
Documents you may be interested