From ae6efdc4a0dd1825a30a1b95b70d6a5f799713a9 Mon Sep 17 00:00:00 2001 From: Nick Sellen Date: Wed, 30 Jan 2013 00:26:36 +0000 Subject: [PATCH] initial commit --- .gitignore | 1 + README.md | 91 + _config.yml | 1 + _manual/01_welcome-to-ardour.html | 15 + .../01_welcome-to-ardour/01_about-ardour.html | 18 + ...snt-this-a-really-complicated-program.html | 11 + .../02_why-write-a-daw-for-linux.html | 36 + .../03_why-is-it-called-ardour.html | 13 + .../04_why-write-another-daw.html | 13 + .../02_about-ardour-documentation.html | 26 + .../03_additional-resources.html | 14 + _manual/02_introducing-ardour.html | 14 + .../01_creating-music-with-ardour.html | 36 + ...anding-basic-concepts-and-terminology.html | 47 + _manual/03_setting-up-your-system.html | 18 + ...ght-computer-system-for-digital-audio.html | 39 + .../02_the-mouse.html | 18 + .../03_using-external-midi-devices.html | 9 + .../04_connecting-audio-and-midi-devices.html | 9 + .../05_midi-on-os-x.html | 10 + .../06_midi-on-linux.html | 33 + _manual/04_ardours-interface.html | 21 + .../01_starting-ardour.html | 22 + ...starting-ardour-from-the-command-line.html | 25 + .../02_basic-gui-operations.html | 20 + .../01_interface-elements.html | 15 + .../02_key-bindings.html | 10 + .../03_selection-techniques.html | 17 + .../02_basic-gui-operations/04_tooltips.html | 10 + .../05_undoredo-for-editing-.html | 12 + .../06_using-the-mouse.html | 46 + .../07_cut-and-paste-operations.html | 16 + .../08_deleting-objects.html | 16 + .../03_introducing-the-editor-window.html | 13 + .../01_editor-lists.html | 16 + .../01_ranges--marks-list.html | 10 + .../01_editor-lists/02_region-list.html | 23 + .../01_editor-lists/03_snapshot-list.html | 11 + .../04_track--bus-group-list.html | 40 + .../05_tracks--busses-list.html | 28 + .../02_the-editing-toolbar.html | 47 + .../03_the-transport-bar.html | 9 + .../04_introducing-the-mixer-window.html | 9 + .../05_using-ardour-clock-displays.html | 94 + _manual/05_controlling-playback.html | 18 + .../01_looping-the-transport.html | 12 + .../02_positioning-the-playhead.html | 18 + .../03_using-key-bindings.html | 26 + .../04_using-the-nudge-controls.html | 11 + .../05_using-the-transport-bar.html | 9 + _manual/06_working-with-markers.html | 28 + .../01_creating-location-markers.html | 12 + .../02_creating-range-markers.html | 11 + ...tting-to-know-the-locationsmarks-list.html | 11 + .../04_moving-markers.html | 14 + .../05_the-loop-range.html | 12 + .../06_the-marker-context-menu.html | 32 + .../07_the-punch-range.html | 12 + _manual/07_working-with-sessions.html | 19 + .../01_backup-and-sharing-of-sessions.html | 14 + .../02_interchange-with-other-daws.html | 38 + .../01_copying-the-interchange-folder.html | 10 + .../02_stem-exports.html | 10 + .../03_using-aatranslator.html | 13 + .../03_renaming-a-session.html | 12 + .../04_session-templates.html | 24 + .../05_snapshots.html | 19 + .../06_the-new-session-dialog.html | 20 + .../01_audio-setup.html | 29 + .../01_using-more-than-one-audio-device.html | 32 + .../07_whats-in-a-session.html | 34 + .../08_where-are-sessions-stored.html | 12 + _manual/08_working-with-regions.html | 33 + .../01_region-naming.html | 29 + .../02_region-selection-equivalence.html | 20 + .../03_the-region-context-menu.html | 166 + _manual/09_working-with-playlists.html | 13 + .../01_playlist-operations.html | 36 + .../02_understanding-playlists.html | 16 + _manual/10_working-with-tracks.html | 21 + .../01_track-types.html | 41 + .../02_adding-tracks.html | 34 + .../03_selecting-tracks.html | 10 + .../01_region-and-track-selection.html | 11 + .../04_controlling-track-appearance.html | 40 + .../01_layering-display.html | 17 + .../02_track-coloring.html | 17 + .../03_track-height.html | 15 + .../05_controlling-track-ordering.html | 38 + ...track-ordering-and-remote-control-ids.html | 21 + .../06_bus-controls.html | 22 + .../07_audio-track-controls.html | 12 + .../08_midi-track-controls.html | 13 + .../09_the-track-context-menu.html | 65 + .../10_track-and-bus-groups.html | 68 + _manual/11_working-with-plugins.html | 37 + .../01_managing-plugin-presets.html | 21 + .../02_the-plugin-manager.html | 8 + .../03_the-processor-box.html | 28 + .../04_windows-vst-support.html | 21 + ...king-with-ardour-built-plugin-editors.html | 14 + _manual/12_adding-pre-existing-material.html | 25 + .../01_importing-versus-embedding.html | 20 + ...earching-and-importing-from-freesound.html | 15 + .../03_searching-for-files-using-tags.html | 13 + .../01_how-to-add-tags-to-a-file.html | 20 + .../02_searching-with-tags.html | 19 + .../04_supported-file-formats.html | 12 + .../05_the-import-dialog.html | 14 + _manual/13_recording.html | 13 + _manual/13_recording/01_monitoring.html | 37 + .../02_track-recording-modes.html | 24 + _manual/14_signal-routing.html | 32 + _manual/14_signal-routing/01_aux-sends.html | 40 + .../02_comparing-aux-sends-and-subgroups.html | 16 + .../14_signal-routing/03_external-sends.html | 31 + _manual/14_signal-routing/04_inserts.html | 8 + _manual/14_signal-routing/05_returns.html | 8 + _manual/14_signal-routing/06_subgrouping.html | 24 + .../14_signal-routing/07_the-patchbay.html | 51 + .../08_the-role-of-jack.html | 8 + _manual/15_editing-and-arranging.html | 22 + .../01_the-edit-point.html | 31 + .../02_selecting-regions.html | 35 + .../03_what-regions-are-affected.html | 28 + .../04_snapping-to-the-grid.html | 51 + .../05_common-region-editing-operations.html | 45 + .../06_changing-region-lengths.html | 46 + .../01_pushpull-trimming.html | 17 + .../07_copying-regions.html | 14 + .../08_moving-regions.html | 23 + .../01_moving-regions-with-the-mouse.html | 15 + .../02_aligning-spotting-regions.html | 24 + .../09_separation.html | 12 + .../09_separation/01_separate-range.html | 10 + .../09_separation/02_separate-under.html | 14 + ..._stripping-siience-from-audio-regions.html | 12 + .../11_editing-midi.html | 49 + ...fundamental-concepts-for-midi-editing.html | 22 + .../02_creating-midi-tracks.html | 11 + .../03_creating-midi-regions.html | 12 + .../11_editing-midi/04_adding-new-notes.html | 34 + .../05_changing-note-properties.html | 31 + .../06_handling-overlapping-notes.html | 28 + .../07_note-cut-copy-and-paste-.html | 10 + .../11_editing-midi/08_note-selection.html | 23 + .../11_editing-midi/09_quantizing-midi.html | 24 + .../11_editing-midi/10_step-entry.html | 53 + .../11_using-patch-changes.html | 21 + _manual/16_automation.html | 12 + _manual/17_mixing.html | 13 + _manual/17_mixing/01_muting-and-soloing.html | 45 + _manual/17_mixing/02_panning-control.html | 9 + _manual/18_exporting.html | 10 + _manual/19_synchronization.html | 11 + _manual/20_default-keyboard-bindings.html | 14 + .../01_mnemonic-bindings-for-linux.html | 308 + .../02_mnemonic-bindings-for-os-x.html | 308 + ...21_preferences-and-session-properties.html | 20 + .../01_preferences-dialog.html | 10 + .../02_seession-properties-dialog.html | 10 + _manual/22_using-control-surfaces.html | 13 + .../01_controlling-ardour-with-osc.html | 895 +++ ...es-using-mackielogic-control-protocol.html | 40 + ...r-devices-in-mackielogic-control-mode.html | 9 + .../02_mackie-control-setup-on-linux.html | 12 + .../03_ssl-nucleus.html | 8 + .../03_midi-binding-maps.html | 244 + _plugins/manual.rb | 239 + drupal-export.html | 3813 +++++++++++ export.rb | 229 + source/_layouts/bootstrap.html | 84 + source/_layouts/default.html | 5 + .../html/diagrams/ardour-monitoring.png | Bin 0 -> 7650 bytes .../manual/html/diagrams/editor-summary.png | Bin 0 -> 80980 bytes .../html/diagrams/external-monitoring.png | Bin 0 -> 7474 bytes .../manual/html/diagrams/jack-monitoring.png | Bin 0 -> 8741 bytes .../manual/html/diagrams/mixer-summary.png | Bin 0 -> 43212 bytes .../ardour/manual/html/diagrams/solo-mute.png | Bin 0 -> 20813 bytes .../diagrams/typical-midi-track-controls.png | Bin 0 -> 22961 bytes .../html/screenshots/add-track-or-bus.png | Bin 0 -> 24581 bytes .../html/screenshots/connection-manager.png | Bin 0 -> 31674 bytes .../html/screenshots/route-group-dialogue.png | Bin 0 -> 15633 bytes .../html/screenshots/track-in-group.png | Bin 0 -> 6722 bytes .../typical-audio-track-controls.png | Bin 0 -> 6143 bytes .../html/screenshots/typical-bus-controls.png | Bin 0 -> 5089 bytes .../css/bootstrap-responsive.css | 1092 +++ .../css/bootstrap-responsive.min.css | 9 + source/bootstrap-2.2.2/css/bootstrap.css | 6039 +++++++++++++++++ source/bootstrap-2.2.2/css/bootstrap.min.css | 9 + .../img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../img/glyphicons-halflings.png | Bin 0 -> 12799 bytes source/bootstrap-2.2.2/js/bootstrap.js | 2159 ++++++ source/bootstrap-2.2.2/js/bootstrap.min.js | 6 + source/css/app.css | 316 + source/files/a3/a3_after_push_trim.png | Bin 0 -> 4804 bytes source/files/a3/a3_after_separate_under.png | Bin 0 -> 3300 bytes source/files/a3/a3_after_trim.png | Bin 0 -> 6892 bytes source/files/a3/a3_ardour_preferences.png | Bin 0 -> 76725 bytes source/files/a3/a3_before_separate_under.png | Bin 0 -> 3438 bytes source/files/a3/a3_before_trim.png | Bin 0 -> 4051 bytes source/files/a3/a3_layers_menu.png | Bin 0 -> 32820 bytes source/files/a3/a3_layers_stacked.png | Bin 0 -> 37354 bytes source/files/a3/a3_nonlayered_example.png | Bin 0 -> 35277 bytes source/files/a3/a3_nonlayered_mode_menu.png | Bin 0 -> 66576 bytes source/files/a3/a3_overlaps_layered.png | Bin 0 -> 48134 bytes source/files/a3/a3_quantize.png | Bin 0 -> 22730 bytes source/files/a3/a3_session_properties.png | Bin 0 -> 30178 bytes source/files/a3/a3_step_entry.png | Bin 0 -> 33197 bytes source/files/a3/a3_strip_silence.png | Bin 0 -> 37063 bytes source/files/a3_mnemonic_cheatsheet.pdf | 0 source/files/ardour-2.8.3-bindings-osx-a4.pdf | Bin 0 -> 33418 bytes source/files/ardour-2.8.3-bindings-x.pdf | Bin 0 -> 33670 bytes source/files/bigclock-recording.png | Bin 0 -> 284164 bytes source/files/bigclock.png | Bin 0 -> 282499 bytes source/files/clockedit.png | Bin 0 -> 2379 bytes source/files/manual/a3/images/aux_routing.png | Bin 0 -> 29280 bytes .../manual/a3/images/new_main_clocks.png | Bin 0 -> 4260 bytes .../manual/a3/images/subgroup_routes.png | Bin 0 -> 25420 bytes .../reference/images/209-ARDOUR_1_2_1.png | Bin 0 -> 103517 bytes .../reference/images/216-ARDOUR_1_2_1.png | Bin 0 -> 7562 bytes .../reference/images/225-ARDOUR_1_2_1.png | Bin 0 -> 6081 bytes .../reference/images/226-ARDOUR_1_2_1.png | Bin 0 -> 5871 bytes .../reference/images/228-ARDOUR_1_2_1.png | Bin 0 -> 18862 bytes source/files/selectionpunchclocks.png | Bin 0 -> 4856 bytes source/images/No%20problem.gif | Bin 0 -> 384569 bytes source/images/logo.png | Bin 0 -> 15510 bytes source/index.html | 6 + tmp/node-to-path/5848 | 0 tmp/node-to-path/5851 | 1 + tmp/node-to-path/5852 | 1 + tmp/node-to-path/5853 | 1 + tmp/node-to-path/5854 | 1 + tmp/node-to-path/5855 | 1 + tmp/node-to-path/5856 | 1 + tmp/node-to-path/5857 | 1 + tmp/node-to-path/5858 | 1 + tmp/node-to-path/5859 | 1 + tmp/node-to-path/5860 | 1 + tmp/node-to-path/5861 | 1 + tmp/node-to-path/5862 | 1 + tmp/node-to-path/5864 | 1 + tmp/node-to-path/5865 | 1 + tmp/node-to-path/5866 | 1 + tmp/node-to-path/5867 | 1 + tmp/node-to-path/5868 | 1 + tmp/node-to-path/5869 | 1 + tmp/node-to-path/5870 | 1 + tmp/node-to-path/5871 | 1 + tmp/node-to-path/5872 | 1 + tmp/node-to-path/5873 | 1 + tmp/node-to-path/5874 | 1 + tmp/node-to-path/5875 | 1 + tmp/node-to-path/5876 | 1 + tmp/node-to-path/5877 | 1 + tmp/node-to-path/5878 | 1 + tmp/node-to-path/5879 | 1 + tmp/node-to-path/5880 | 1 + tmp/node-to-path/5881 | 1 + tmp/node-to-path/5882 | 1 + tmp/node-to-path/5883 | 1 + tmp/node-to-path/5884 | 1 + tmp/node-to-path/5885 | 1 + tmp/node-to-path/5886 | 1 + tmp/node-to-path/5887 | 1 + tmp/node-to-path/5888 | 1 + tmp/node-to-path/5889 | 1 + tmp/node-to-path/5890 | 1 + tmp/node-to-path/5891 | 1 + tmp/node-to-path/5892 | 1 + tmp/node-to-path/5893 | 1 + tmp/node-to-path/5894 | 1 + tmp/node-to-path/5895 | 1 + tmp/node-to-path/5896 | 1 + tmp/node-to-path/5897 | 1 + tmp/node-to-path/5898 | 1 + tmp/node-to-path/5899 | 1 + tmp/node-to-path/5900 | 1 + tmp/node-to-path/5901 | 1 + tmp/node-to-path/5902 | 1 + tmp/node-to-path/5903 | 1 + tmp/node-to-path/5904 | 1 + tmp/node-to-path/5905 | 1 + tmp/node-to-path/5906 | 1 + tmp/node-to-path/5907 | 1 + tmp/node-to-path/5908 | 1 + tmp/node-to-path/5910 | 1 + tmp/node-to-path/5911 | 1 + tmp/node-to-path/5912 | 1 + tmp/node-to-path/5913 | 1 + tmp/node-to-path/5914 | 1 + tmp/node-to-path/5915 | 1 + tmp/node-to-path/5916 | 1 + tmp/node-to-path/5917 | 1 + tmp/node-to-path/5918 | 1 + tmp/node-to-path/5919 | 1 + tmp/node-to-path/5920 | 1 + tmp/node-to-path/5921 | 1 + tmp/node-to-path/5922 | 1 + tmp/node-to-path/5923 | 1 + tmp/node-to-path/5926 | 1 + tmp/node-to-path/5927 | 1 + tmp/node-to-path/5928 | 1 + tmp/node-to-path/5929 | 1 + tmp/node-to-path/5930 | 1 + tmp/node-to-path/5931 | 1 + tmp/node-to-path/5932 | 1 + tmp/node-to-path/5933 | 1 + tmp/node-to-path/5934 | 1 + tmp/node-to-path/5935 | 1 + tmp/node-to-path/5936 | 1 + tmp/node-to-path/5937 | 1 + tmp/node-to-path/5938 | 1 + tmp/node-to-path/5939 | 1 + tmp/node-to-path/5940 | 1 + tmp/node-to-path/5941 | 1 + tmp/node-to-path/5942 | 1 + tmp/node-to-path/5943 | 1 + tmp/node-to-path/5944 | 1 + tmp/node-to-path/5945 | 1 + tmp/node-to-path/5946 | 1 + tmp/node-to-path/5947 | 1 + tmp/node-to-path/5948 | 1 + tmp/node-to-path/5949 | 1 + tmp/node-to-path/5951 | 1 + tmp/node-to-path/5952 | 1 + tmp/node-to-path/5953 | 1 + tmp/node-to-path/5954 | 1 + tmp/node-to-path/5955 | 1 + tmp/node-to-path/5956 | 1 + tmp/node-to-path/5957 | 1 + tmp/node-to-path/5958 | 1 + tmp/node-to-path/5959 | 1 + tmp/node-to-path/5960 | 1 + tmp/node-to-path/5961 | 1 + tmp/node-to-path/5965 | 1 + tmp/node-to-path/5966 | 1 + tmp/node-to-path/5967 | 1 + tmp/node-to-path/5969 | 1 + tmp/node-to-path/5970 | 1 + tmp/node-to-path/5971 | 1 + tmp/node-to-path/5972 | 1 + tmp/node-to-path/5973 | 1 + tmp/node-to-path/5974 | 1 + tmp/node-to-path/5975 | 1 + tmp/node-to-path/5976 | 1 + tmp/node-to-path/5977 | 1 + tmp/node-to-path/5978 | 1 + tmp/node-to-path/5979 | 1 + tmp/node-to-path/5984 | 1 + tmp/node-to-path/5985 | 1 + tmp/node-to-path/5986 | 1 + tmp/node-to-path/5987 | 1 + tmp/node-to-path/5988 | 1 + tmp/node-to-path/5989 | 1 + tmp/node-to-path/6006 | 1 + tmp/node-to-path/6007 | 1 + tmp/node-to-path/6008 | 1 + tmp/node-to-path/6009 | 1 + tmp/node-to-path/6010 | 1 + tmp/node-to-path/6011 | 1 + tmp/node-to-path/6012 | 1 + tmp/node-to-path/6013 | 1 + tmp/node-to-path/6014 | 1 + tmp/node-to-path/6015 | 1 + tmp/node-to-path/6016 | 1 + tmp/node-to-path/6017 | 1 + tmp/node-to-path/6038 | 1 + tmp/node-to-path/6040 | 1 + tmp/node-to-path/6041 | 1 + tmp/node-to-path/6044 | 1 + tmp/node-to-path/6045 | 1 + tmp/node-to-path/6046 | 1 + tmp/node-to-path/6047 | 1 + tmp/node-to-path/6049 | 1 + tmp/node-to-path/6050 | 1 + tmp/node-to-path/6051 | 1 + tmp/node-to-path/6052 | 1 + tmp/node-to-path/6053 | 1 + tmp/node-to-path/6054 | 1 + tmp/node-to-path/6055 | 1 + tmp/node-to-path/6056 | 1 + tmp/node-to-path/6057 | 1 + tmp/node-to-path/6058 | 1 + tmp/node-to-path/6067 | 1 + tmp/node-to-path/6068 | 1 + tmp/node-to-path/6069 | 1 + tmp/node-to-path/6070 | 1 + tmp/node-to-path/6071 | 1 + tmp/node-to-path/6072 | 1 + tmp/node-to-path/6073 | 1 + tmp/node-to-path/6074 | 1 + tmp/node-to-path/6075 | 1 + tmp/node-to-path/6076 | 1 + tmp/slug-to-node/adding_tracks | 1 + tmp/slug-to-node/audio_track_controls | 1 + tmp/slug-to-node/bus_controls | 1 + tmp/slug-to-node/clocks | 1 + tmp/slug-to-node/cmdline | 1 + tmp/slug-to-node/comparing_subgroup_and_auxes | 1 + tmp/slug-to-node/default_bindings | 1 + tmp/slug-to-node/edit_point | 1 + tmp/slug-to-node/editor_lists | 1 + tmp/slug-to-node/export | 1 + tmp/slug-to-node/grid | 1 + tmp/slug-to-node/linux_midi | 1 + tmp/slug-to-node/locations_list | 1 + tmp/slug-to-node/loop_range | 1 + tmp/slug-to-node/mcp_linux | 1 + tmp/slug-to-node/midi_add_notes | 1 + tmp/slug-to-node/midi_step_entry | 1 + tmp/slug-to-node/multiple_audio_devices | 1 + tmp/slug-to-node/patchbay | 1 + tmp/slug-to-node/processor_box | 1 + tmp/slug-to-node/push_pull_trim | 1 + tmp/slug-to-node/region_track_selection | 1 + tmp/slug-to-node/selection_equivalence | 1 + tmp/slug-to-node/sessions | 1 + tmp/slug-to-node/signal_routing | 1 + tmp/slug-to-node/subgrouping | 1 + tmp/slug-to-node/system_design | 1 + tmp/slug-to-node/the_mouse | 1 + tmp/slug-to-node/track_bus_groups | 1 + tmp/slug-to-node/track_context_menu | 1 + tmp/slug-to-node/trimming | 1 + tmp/slug-to-node/what_regions_affected | 1 + tmp/slug-to-node/windows_vst | 1 + tmp/slug-to-node/working_with_playlists | 1 + tmp/slug-to-node/working_with_plugins | 1 + tmp/slug-to-node/working_with_regions | 1 + tmp/slug-to-node/working_with_tracks | 1 + upload.sh | 12 + 432 files changed, 19759 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 _config.yml create mode 100644 _manual/01_welcome-to-ardour.html create mode 100644 _manual/01_welcome-to-ardour/01_about-ardour.html create mode 100644 _manual/01_welcome-to-ardour/01_about-ardour/01_isnt-this-a-really-complicated-program.html create mode 100644 _manual/01_welcome-to-ardour/01_about-ardour/02_why-write-a-daw-for-linux.html create mode 100644 _manual/01_welcome-to-ardour/01_about-ardour/03_why-is-it-called-ardour.html create mode 100644 _manual/01_welcome-to-ardour/01_about-ardour/04_why-write-another-daw.html create mode 100644 _manual/01_welcome-to-ardour/02_about-ardour-documentation.html create mode 100644 _manual/01_welcome-to-ardour/03_additional-resources.html create mode 100644 _manual/02_introducing-ardour.html create mode 100644 _manual/02_introducing-ardour/01_creating-music-with-ardour.html create mode 100644 _manual/02_introducing-ardour/02_understanding-basic-concepts-and-terminology.html create mode 100644 _manual/03_setting-up-your-system.html create mode 100644 _manual/03_setting-up-your-system/01_the-right-computer-system-for-digital-audio.html create mode 100644 _manual/03_setting-up-your-system/02_the-mouse.html create mode 100644 _manual/03_setting-up-your-system/03_using-external-midi-devices.html create mode 100644 _manual/03_setting-up-your-system/04_connecting-audio-and-midi-devices.html create mode 100644 _manual/03_setting-up-your-system/05_midi-on-os-x.html create mode 100644 _manual/03_setting-up-your-system/06_midi-on-linux.html create mode 100644 _manual/04_ardours-interface.html create mode 100644 _manual/04_ardours-interface/01_starting-ardour.html create mode 100644 _manual/04_ardours-interface/01_starting-ardour/01_starting-ardour-from-the-command-line.html create mode 100644 _manual/04_ardours-interface/02_basic-gui-operations.html create mode 100644 _manual/04_ardours-interface/02_basic-gui-operations/01_interface-elements.html create mode 100644 _manual/04_ardours-interface/02_basic-gui-operations/02_key-bindings.html create mode 100644 _manual/04_ardours-interface/02_basic-gui-operations/03_selection-techniques.html create mode 100644 _manual/04_ardours-interface/02_basic-gui-operations/04_tooltips.html create mode 100644 _manual/04_ardours-interface/02_basic-gui-operations/05_undoredo-for-editing-.html create mode 100644 _manual/04_ardours-interface/02_basic-gui-operations/06_using-the-mouse.html create mode 100644 _manual/04_ardours-interface/02_basic-gui-operations/07_cut-and-paste-operations.html create mode 100644 _manual/04_ardours-interface/02_basic-gui-operations/08_deleting-objects.html create mode 100644 _manual/04_ardours-interface/03_introducing-the-editor-window.html create mode 100644 _manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists.html create mode 100644 _manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/01_ranges--marks-list.html create mode 100644 _manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/02_region-list.html create mode 100644 _manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/03_snapshot-list.html create mode 100644 _manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/04_track--bus-group-list.html create mode 100644 _manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/05_tracks--busses-list.html create mode 100644 _manual/04_ardours-interface/03_introducing-the-editor-window/02_the-editing-toolbar.html create mode 100644 _manual/04_ardours-interface/03_introducing-the-editor-window/03_the-transport-bar.html create mode 100644 _manual/04_ardours-interface/04_introducing-the-mixer-window.html create mode 100644 _manual/04_ardours-interface/05_using-ardour-clock-displays.html create mode 100644 _manual/05_controlling-playback.html create mode 100644 _manual/05_controlling-playback/01_looping-the-transport.html create mode 100644 _manual/05_controlling-playback/02_positioning-the-playhead.html create mode 100644 _manual/05_controlling-playback/03_using-key-bindings.html create mode 100644 _manual/05_controlling-playback/04_using-the-nudge-controls.html create mode 100644 _manual/05_controlling-playback/05_using-the-transport-bar.html create mode 100644 _manual/06_working-with-markers.html create mode 100644 _manual/06_working-with-markers/01_creating-location-markers.html create mode 100644 _manual/06_working-with-markers/02_creating-range-markers.html create mode 100644 _manual/06_working-with-markers/03_getting-to-know-the-locationsmarks-list.html create mode 100644 _manual/06_working-with-markers/04_moving-markers.html create mode 100644 _manual/06_working-with-markers/05_the-loop-range.html create mode 100644 _manual/06_working-with-markers/06_the-marker-context-menu.html create mode 100644 _manual/06_working-with-markers/07_the-punch-range.html create mode 100644 _manual/07_working-with-sessions.html create mode 100644 _manual/07_working-with-sessions/01_backup-and-sharing-of-sessions.html create mode 100644 _manual/07_working-with-sessions/02_interchange-with-other-daws.html create mode 100644 _manual/07_working-with-sessions/02_interchange-with-other-daws/01_copying-the-interchange-folder.html create mode 100644 _manual/07_working-with-sessions/02_interchange-with-other-daws/02_stem-exports.html create mode 100644 _manual/07_working-with-sessions/02_interchange-with-other-daws/03_using-aatranslator.html create mode 100644 _manual/07_working-with-sessions/03_renaming-a-session.html create mode 100644 _manual/07_working-with-sessions/04_session-templates.html create mode 100644 _manual/07_working-with-sessions/05_snapshots.html create mode 100644 _manual/07_working-with-sessions/06_the-new-session-dialog.html create mode 100644 _manual/07_working-with-sessions/06_the-new-session-dialog/01_audio-setup.html create mode 100644 _manual/07_working-with-sessions/06_the-new-session-dialog/01_audio-setup/01_using-more-than-one-audio-device.html create mode 100644 _manual/07_working-with-sessions/07_whats-in-a-session.html create mode 100644 _manual/07_working-with-sessions/08_where-are-sessions-stored.html create mode 100644 _manual/08_working-with-regions.html create mode 100644 _manual/08_working-with-regions/01_region-naming.html create mode 100644 _manual/08_working-with-regions/02_region-selection-equivalence.html create mode 100644 _manual/08_working-with-regions/03_the-region-context-menu.html create mode 100644 _manual/09_working-with-playlists.html create mode 100644 _manual/09_working-with-playlists/01_playlist-operations.html create mode 100644 _manual/09_working-with-playlists/02_understanding-playlists.html create mode 100644 _manual/10_working-with-tracks.html create mode 100644 _manual/10_working-with-tracks/01_track-types.html create mode 100644 _manual/10_working-with-tracks/02_adding-tracks.html create mode 100644 _manual/10_working-with-tracks/03_selecting-tracks.html create mode 100644 _manual/10_working-with-tracks/03_selecting-tracks/01_region-and-track-selection.html create mode 100644 _manual/10_working-with-tracks/04_controlling-track-appearance.html create mode 100644 _manual/10_working-with-tracks/04_controlling-track-appearance/01_layering-display.html create mode 100644 _manual/10_working-with-tracks/04_controlling-track-appearance/02_track-coloring.html create mode 100644 _manual/10_working-with-tracks/04_controlling-track-appearance/03_track-height.html create mode 100644 _manual/10_working-with-tracks/05_controlling-track-ordering.html create mode 100644 _manual/10_working-with-tracks/05_controlling-track-ordering/01_track-ordering-and-remote-control-ids.html create mode 100644 _manual/10_working-with-tracks/06_bus-controls.html create mode 100644 _manual/10_working-with-tracks/07_audio-track-controls.html create mode 100644 _manual/10_working-with-tracks/08_midi-track-controls.html create mode 100644 _manual/10_working-with-tracks/09_the-track-context-menu.html create mode 100644 _manual/10_working-with-tracks/10_track-and-bus-groups.html create mode 100644 _manual/11_working-with-plugins.html create mode 100644 _manual/11_working-with-plugins/01_managing-plugin-presets.html create mode 100644 _manual/11_working-with-plugins/02_the-plugin-manager.html create mode 100644 _manual/11_working-with-plugins/03_the-processor-box.html create mode 100644 _manual/11_working-with-plugins/04_windows-vst-support.html create mode 100644 _manual/11_working-with-plugins/05_working-with-ardour-built-plugin-editors.html create mode 100644 _manual/12_adding-pre-existing-material.html create mode 100644 _manual/12_adding-pre-existing-material/01_importing-versus-embedding.html create mode 100644 _manual/12_adding-pre-existing-material/02_searching-and-importing-from-freesound.html create mode 100644 _manual/12_adding-pre-existing-material/03_searching-for-files-using-tags.html create mode 100644 _manual/12_adding-pre-existing-material/03_searching-for-files-using-tags/01_how-to-add-tags-to-a-file.html create mode 100644 _manual/12_adding-pre-existing-material/03_searching-for-files-using-tags/02_searching-with-tags.html create mode 100644 _manual/12_adding-pre-existing-material/04_supported-file-formats.html create mode 100644 _manual/12_adding-pre-existing-material/05_the-import-dialog.html create mode 100644 _manual/13_recording.html create mode 100644 _manual/13_recording/01_monitoring.html create mode 100644 _manual/13_recording/02_track-recording-modes.html create mode 100644 _manual/14_signal-routing.html create mode 100644 _manual/14_signal-routing/01_aux-sends.html create mode 100644 _manual/14_signal-routing/02_comparing-aux-sends-and-subgroups.html create mode 100644 _manual/14_signal-routing/03_external-sends.html create mode 100644 _manual/14_signal-routing/04_inserts.html create mode 100644 _manual/14_signal-routing/05_returns.html create mode 100644 _manual/14_signal-routing/06_subgrouping.html create mode 100644 _manual/14_signal-routing/07_the-patchbay.html create mode 100644 _manual/14_signal-routing/08_the-role-of-jack.html create mode 100644 _manual/15_editing-and-arranging.html create mode 100644 _manual/15_editing-and-arranging/01_the-edit-point.html create mode 100644 _manual/15_editing-and-arranging/02_selecting-regions.html create mode 100644 _manual/15_editing-and-arranging/03_what-regions-are-affected.html create mode 100644 _manual/15_editing-and-arranging/04_snapping-to-the-grid.html create mode 100644 _manual/15_editing-and-arranging/05_common-region-editing-operations.html create mode 100644 _manual/15_editing-and-arranging/06_changing-region-lengths.html create mode 100644 _manual/15_editing-and-arranging/06_changing-region-lengths/01_pushpull-trimming.html create mode 100644 _manual/15_editing-and-arranging/07_copying-regions.html create mode 100644 _manual/15_editing-and-arranging/08_moving-regions.html create mode 100644 _manual/15_editing-and-arranging/08_moving-regions/01_moving-regions-with-the-mouse.html create mode 100644 _manual/15_editing-and-arranging/08_moving-regions/02_aligning-spotting-regions.html create mode 100644 _manual/15_editing-and-arranging/09_separation.html create mode 100644 _manual/15_editing-and-arranging/09_separation/01_separate-range.html create mode 100644 _manual/15_editing-and-arranging/09_separation/02_separate-under.html create mode 100644 _manual/15_editing-and-arranging/10_stripping-siience-from-audio-regions.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/01_fundamental-concepts-for-midi-editing.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/02_creating-midi-tracks.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/03_creating-midi-regions.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/04_adding-new-notes.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/05_changing-note-properties.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/06_handling-overlapping-notes.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/07_note-cut-copy-and-paste-.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/08_note-selection.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/09_quantizing-midi.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/10_step-entry.html create mode 100644 _manual/15_editing-and-arranging/11_editing-midi/11_using-patch-changes.html create mode 100644 _manual/16_automation.html create mode 100644 _manual/17_mixing.html create mode 100644 _manual/17_mixing/01_muting-and-soloing.html create mode 100644 _manual/17_mixing/02_panning-control.html create mode 100644 _manual/18_exporting.html create mode 100644 _manual/19_synchronization.html create mode 100644 _manual/20_default-keyboard-bindings.html create mode 100644 _manual/20_default-keyboard-bindings/01_mnemonic-bindings-for-linux.html create mode 100644 _manual/20_default-keyboard-bindings/02_mnemonic-bindings-for-os-x.html create mode 100644 _manual/21_preferences-and-session-properties.html create mode 100644 _manual/21_preferences-and-session-properties/01_preferences-dialog.html create mode 100644 _manual/21_preferences-and-session-properties/02_seession-properties-dialog.html create mode 100644 _manual/22_using-control-surfaces.html create mode 100644 _manual/22_using-control-surfaces/01_controlling-ardour-with-osc.html create mode 100644 _manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol.html create mode 100644 _manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/01_behringer-devices-in-mackielogic-control-mode.html create mode 100644 _manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/02_mackie-control-setup-on-linux.html create mode 100644 _manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/03_ssl-nucleus.html create mode 100644 _manual/22_using-control-surfaces/03_midi-binding-maps.html create mode 100644 _plugins/manual.rb create mode 100644 drupal-export.html create mode 100644 export.rb create mode 100644 source/_layouts/bootstrap.html create mode 100644 source/_layouts/default.html create mode 100644 source/ardour/manual/html/diagrams/ardour-monitoring.png create mode 100644 source/ardour/manual/html/diagrams/editor-summary.png create mode 100644 source/ardour/manual/html/diagrams/external-monitoring.png create mode 100644 source/ardour/manual/html/diagrams/jack-monitoring.png create mode 100644 source/ardour/manual/html/diagrams/mixer-summary.png create mode 100644 source/ardour/manual/html/diagrams/solo-mute.png create mode 100644 source/ardour/manual/html/diagrams/typical-midi-track-controls.png create mode 100644 source/ardour/manual/html/screenshots/add-track-or-bus.png create mode 100644 source/ardour/manual/html/screenshots/connection-manager.png create mode 100644 source/ardour/manual/html/screenshots/route-group-dialogue.png create mode 100644 source/ardour/manual/html/screenshots/track-in-group.png create mode 100644 source/ardour/manual/html/screenshots/typical-audio-track-controls.png create mode 100644 source/ardour/manual/html/screenshots/typical-bus-controls.png create mode 100644 source/bootstrap-2.2.2/css/bootstrap-responsive.css create mode 100644 source/bootstrap-2.2.2/css/bootstrap-responsive.min.css create mode 100644 source/bootstrap-2.2.2/css/bootstrap.css create mode 100644 source/bootstrap-2.2.2/css/bootstrap.min.css create mode 100644 source/bootstrap-2.2.2/img/glyphicons-halflings-white.png create mode 100644 source/bootstrap-2.2.2/img/glyphicons-halflings.png create mode 100644 source/bootstrap-2.2.2/js/bootstrap.js create mode 100644 source/bootstrap-2.2.2/js/bootstrap.min.js create mode 100644 source/css/app.css create mode 100644 source/files/a3/a3_after_push_trim.png create mode 100644 source/files/a3/a3_after_separate_under.png create mode 100644 source/files/a3/a3_after_trim.png create mode 100644 source/files/a3/a3_ardour_preferences.png create mode 100644 source/files/a3/a3_before_separate_under.png create mode 100644 source/files/a3/a3_before_trim.png create mode 100644 source/files/a3/a3_layers_menu.png create mode 100644 source/files/a3/a3_layers_stacked.png create mode 100644 source/files/a3/a3_nonlayered_example.png create mode 100644 source/files/a3/a3_nonlayered_mode_menu.png create mode 100644 source/files/a3/a3_overlaps_layered.png create mode 100644 source/files/a3/a3_quantize.png create mode 100644 source/files/a3/a3_session_properties.png create mode 100644 source/files/a3/a3_step_entry.png create mode 100644 source/files/a3/a3_strip_silence.png create mode 100644 source/files/a3_mnemonic_cheatsheet.pdf create mode 100644 source/files/ardour-2.8.3-bindings-osx-a4.pdf create mode 100644 source/files/ardour-2.8.3-bindings-x.pdf create mode 100644 source/files/bigclock-recording.png create mode 100644 source/files/bigclock.png create mode 100644 source/files/clockedit.png create mode 100644 source/files/manual/a3/images/aux_routing.png create mode 100644 source/files/manual/a3/images/new_main_clocks.png create mode 100644 source/files/manual/a3/images/subgroup_routes.png create mode 100644 source/files/reference/images/209-ARDOUR_1_2_1.png create mode 100644 source/files/reference/images/216-ARDOUR_1_2_1.png create mode 100644 source/files/reference/images/225-ARDOUR_1_2_1.png create mode 100644 source/files/reference/images/226-ARDOUR_1_2_1.png create mode 100644 source/files/reference/images/228-ARDOUR_1_2_1.png create mode 100644 source/files/selectionpunchclocks.png create mode 100644 source/images/No%20problem.gif create mode 100644 source/images/logo.png create mode 100644 source/index.html create mode 100644 tmp/node-to-path/5848 create mode 100644 tmp/node-to-path/5851 create mode 100644 tmp/node-to-path/5852 create mode 100644 tmp/node-to-path/5853 create mode 100644 tmp/node-to-path/5854 create mode 100644 tmp/node-to-path/5855 create mode 100644 tmp/node-to-path/5856 create mode 100644 tmp/node-to-path/5857 create mode 100644 tmp/node-to-path/5858 create mode 100644 tmp/node-to-path/5859 create mode 100644 tmp/node-to-path/5860 create mode 100644 tmp/node-to-path/5861 create mode 100644 tmp/node-to-path/5862 create mode 100644 tmp/node-to-path/5864 create mode 100644 tmp/node-to-path/5865 create mode 100644 tmp/node-to-path/5866 create mode 100644 tmp/node-to-path/5867 create mode 100644 tmp/node-to-path/5868 create mode 100644 tmp/node-to-path/5869 create mode 100644 tmp/node-to-path/5870 create mode 100644 tmp/node-to-path/5871 create mode 100644 tmp/node-to-path/5872 create mode 100644 tmp/node-to-path/5873 create mode 100644 tmp/node-to-path/5874 create mode 100644 tmp/node-to-path/5875 create mode 100644 tmp/node-to-path/5876 create mode 100644 tmp/node-to-path/5877 create mode 100644 tmp/node-to-path/5878 create mode 100644 tmp/node-to-path/5879 create mode 100644 tmp/node-to-path/5880 create mode 100644 tmp/node-to-path/5881 create mode 100644 tmp/node-to-path/5882 create mode 100644 tmp/node-to-path/5883 create mode 100644 tmp/node-to-path/5884 create mode 100644 tmp/node-to-path/5885 create mode 100644 tmp/node-to-path/5886 create mode 100644 tmp/node-to-path/5887 create mode 100644 tmp/node-to-path/5888 create mode 100644 tmp/node-to-path/5889 create mode 100644 tmp/node-to-path/5890 create mode 100644 tmp/node-to-path/5891 create mode 100644 tmp/node-to-path/5892 create mode 100644 tmp/node-to-path/5893 create mode 100644 tmp/node-to-path/5894 create mode 100644 tmp/node-to-path/5895 create mode 100644 tmp/node-to-path/5896 create mode 100644 tmp/node-to-path/5897 create mode 100644 tmp/node-to-path/5898 create mode 100644 tmp/node-to-path/5899 create mode 100644 tmp/node-to-path/5900 create mode 100644 tmp/node-to-path/5901 create mode 100644 tmp/node-to-path/5902 create mode 100644 tmp/node-to-path/5903 create mode 100644 tmp/node-to-path/5904 create mode 100644 tmp/node-to-path/5905 create mode 100644 tmp/node-to-path/5906 create mode 100644 tmp/node-to-path/5907 create mode 100644 tmp/node-to-path/5908 create mode 100644 tmp/node-to-path/5910 create mode 100644 tmp/node-to-path/5911 create mode 100644 tmp/node-to-path/5912 create mode 100644 tmp/node-to-path/5913 create mode 100644 tmp/node-to-path/5914 create mode 100644 tmp/node-to-path/5915 create mode 100644 tmp/node-to-path/5916 create mode 100644 tmp/node-to-path/5917 create mode 100644 tmp/node-to-path/5918 create mode 100644 tmp/node-to-path/5919 create mode 100644 tmp/node-to-path/5920 create mode 100644 tmp/node-to-path/5921 create mode 100644 tmp/node-to-path/5922 create mode 100644 tmp/node-to-path/5923 create mode 100644 tmp/node-to-path/5926 create mode 100644 tmp/node-to-path/5927 create mode 100644 tmp/node-to-path/5928 create mode 100644 tmp/node-to-path/5929 create mode 100644 tmp/node-to-path/5930 create mode 100644 tmp/node-to-path/5931 create mode 100644 tmp/node-to-path/5932 create mode 100644 tmp/node-to-path/5933 create mode 100644 tmp/node-to-path/5934 create mode 100644 tmp/node-to-path/5935 create mode 100644 tmp/node-to-path/5936 create mode 100644 tmp/node-to-path/5937 create mode 100644 tmp/node-to-path/5938 create mode 100644 tmp/node-to-path/5939 create mode 100644 tmp/node-to-path/5940 create mode 100644 tmp/node-to-path/5941 create mode 100644 tmp/node-to-path/5942 create mode 100644 tmp/node-to-path/5943 create mode 100644 tmp/node-to-path/5944 create mode 100644 tmp/node-to-path/5945 create mode 100644 tmp/node-to-path/5946 create mode 100644 tmp/node-to-path/5947 create mode 100644 tmp/node-to-path/5948 create mode 100644 tmp/node-to-path/5949 create mode 100644 tmp/node-to-path/5951 create mode 100644 tmp/node-to-path/5952 create mode 100644 tmp/node-to-path/5953 create mode 100644 tmp/node-to-path/5954 create mode 100644 tmp/node-to-path/5955 create mode 100644 tmp/node-to-path/5956 create mode 100644 tmp/node-to-path/5957 create mode 100644 tmp/node-to-path/5958 create mode 100644 tmp/node-to-path/5959 create mode 100644 tmp/node-to-path/5960 create mode 100644 tmp/node-to-path/5961 create mode 100644 tmp/node-to-path/5965 create mode 100644 tmp/node-to-path/5966 create mode 100644 tmp/node-to-path/5967 create mode 100644 tmp/node-to-path/5969 create mode 100644 tmp/node-to-path/5970 create mode 100644 tmp/node-to-path/5971 create mode 100644 tmp/node-to-path/5972 create mode 100644 tmp/node-to-path/5973 create mode 100644 tmp/node-to-path/5974 create mode 100644 tmp/node-to-path/5975 create mode 100644 tmp/node-to-path/5976 create mode 100644 tmp/node-to-path/5977 create mode 100644 tmp/node-to-path/5978 create mode 100644 tmp/node-to-path/5979 create mode 100644 tmp/node-to-path/5984 create mode 100644 tmp/node-to-path/5985 create mode 100644 tmp/node-to-path/5986 create mode 100644 tmp/node-to-path/5987 create mode 100644 tmp/node-to-path/5988 create mode 100644 tmp/node-to-path/5989 create mode 100644 tmp/node-to-path/6006 create mode 100644 tmp/node-to-path/6007 create mode 100644 tmp/node-to-path/6008 create mode 100644 tmp/node-to-path/6009 create mode 100644 tmp/node-to-path/6010 create mode 100644 tmp/node-to-path/6011 create mode 100644 tmp/node-to-path/6012 create mode 100644 tmp/node-to-path/6013 create mode 100644 tmp/node-to-path/6014 create mode 100644 tmp/node-to-path/6015 create mode 100644 tmp/node-to-path/6016 create mode 100644 tmp/node-to-path/6017 create mode 100644 tmp/node-to-path/6038 create mode 100644 tmp/node-to-path/6040 create mode 100644 tmp/node-to-path/6041 create mode 100644 tmp/node-to-path/6044 create mode 100644 tmp/node-to-path/6045 create mode 100644 tmp/node-to-path/6046 create mode 100644 tmp/node-to-path/6047 create mode 100644 tmp/node-to-path/6049 create mode 100644 tmp/node-to-path/6050 create mode 100644 tmp/node-to-path/6051 create mode 100644 tmp/node-to-path/6052 create mode 100644 tmp/node-to-path/6053 create mode 100644 tmp/node-to-path/6054 create mode 100644 tmp/node-to-path/6055 create mode 100644 tmp/node-to-path/6056 create mode 100644 tmp/node-to-path/6057 create mode 100644 tmp/node-to-path/6058 create mode 100644 tmp/node-to-path/6067 create mode 100644 tmp/node-to-path/6068 create mode 100644 tmp/node-to-path/6069 create mode 100644 tmp/node-to-path/6070 create mode 100644 tmp/node-to-path/6071 create mode 100644 tmp/node-to-path/6072 create mode 100644 tmp/node-to-path/6073 create mode 100644 tmp/node-to-path/6074 create mode 100644 tmp/node-to-path/6075 create mode 100644 tmp/node-to-path/6076 create mode 100644 tmp/slug-to-node/adding_tracks create mode 100644 tmp/slug-to-node/audio_track_controls create mode 100644 tmp/slug-to-node/bus_controls create mode 100644 tmp/slug-to-node/clocks create mode 100644 tmp/slug-to-node/cmdline create mode 100644 tmp/slug-to-node/comparing_subgroup_and_auxes create mode 100644 tmp/slug-to-node/default_bindings create mode 100644 tmp/slug-to-node/edit_point create mode 100644 tmp/slug-to-node/editor_lists create mode 100644 tmp/slug-to-node/export create mode 100644 tmp/slug-to-node/grid create mode 100644 tmp/slug-to-node/linux_midi create mode 100644 tmp/slug-to-node/locations_list create mode 100644 tmp/slug-to-node/loop_range create mode 100644 tmp/slug-to-node/mcp_linux create mode 100644 tmp/slug-to-node/midi_add_notes create mode 100644 tmp/slug-to-node/midi_step_entry create mode 100644 tmp/slug-to-node/multiple_audio_devices create mode 100644 tmp/slug-to-node/patchbay create mode 100644 tmp/slug-to-node/processor_box create mode 100644 tmp/slug-to-node/push_pull_trim create mode 100644 tmp/slug-to-node/region_track_selection create mode 100644 tmp/slug-to-node/selection_equivalence create mode 100644 tmp/slug-to-node/sessions create mode 100644 tmp/slug-to-node/signal_routing create mode 100644 tmp/slug-to-node/subgrouping create mode 100644 tmp/slug-to-node/system_design create mode 100644 tmp/slug-to-node/the_mouse create mode 100644 tmp/slug-to-node/track_bus_groups create mode 100644 tmp/slug-to-node/track_context_menu create mode 100644 tmp/slug-to-node/trimming create mode 100644 tmp/slug-to-node/what_regions_affected create mode 100644 tmp/slug-to-node/windows_vst create mode 100644 tmp/slug-to-node/working_with_playlists create mode 100644 tmp/slug-to-node/working_with_plugins create mode 100644 tmp/slug-to-node/working_with_regions create mode 100644 tmp/slug-to-node/working_with_tracks create mode 100755 upload.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca35be0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +_site diff --git a/README.md b/README.md new file mode 100644 index 0000000..013724e --- /dev/null +++ b/README.md @@ -0,0 +1,91 @@ + +The Ardour Manual +=================== + +This is the project that generates the static ardour manual website available at http://manual.ardour.org. + +The site is built using ruby (I use 1.9.3) and [Jekyll]](https://github.com/mojombo/jekyll) (a ruby gem). You should be able to just install ruby and then `gem install jekyll`. There are no other dependencies. + +To generate the site and run it up locally you can do something like: + + git clone + cd ardour-manual + ruby export.rb + jekyll --server + +To upload it (assuming your ssh key has been put on the server) you run: + + ./upload.sh + + +Strucuture of the content +---------------------- + +There are 2 different types of content: +- special manual content +- normal content + +Special manual content +---------------------- + +This is content that ends up as part of the tree on the left. + +The _raw_ content is in `_manual` directory and has a naming convention as follows: + + # content for a page at http://manual.ardour.org// + + _. + ^ ^ ^ + | | | + | | extension is removed later + | | + | ends up as part of URL + | + only used for ordering + + + # a folder for subcontent is like this + + _/ + + # more things can then go in here for http://manual.ardour.org/// + + _/_.html + +So, for example: + + this file appears at + ------------ ------------ + + 01_main.html /main/ + + 01_main/01_subpage.html /main/subpage/ + + +Normal content +---------------------- + +This is anything else, css files, images, fixed pages, layouts. This content lives in the `source` directory. + + +Content processing +---------------------- + +Three types of content can have special processing done. + +- `.html` files +- `.md` files +- `.textile` files + +All special files should also have a special header at the top too: + + --- + layout: default + title: Some Very Wordy and Expressive Title + menu_title: Some Title + --- + +

My Actual Content

+ + + \ No newline at end of file diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..0ffca95 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +source: source diff --git a/_manual/01_welcome-to-ardour.html b/_manual/01_welcome-to-ardour.html new file mode 100644 index 0000000..58a7b73 --- /dev/null +++ b/_manual/01_welcome-to-ardour.html @@ -0,0 +1,15 @@ +--- +layout: default +title: Welcome to Ardour +--- + + + + +

Ardour is a professional tool for working with audio and MIDI.

+

This section covers:

+ + + + +{% children %} diff --git a/_manual/01_welcome-to-ardour/01_about-ardour.html b/_manual/01_welcome-to-ardour/01_about-ardour.html new file mode 100644 index 0000000..9b9391f --- /dev/null +++ b/_manual/01_welcome-to-ardour/01_about-ardour.html @@ -0,0 +1,18 @@ +--- +layout: default +title: About Ardour +--- + + + + +

Ardour allows you to record and edit both audio and MIDI data, add many different kinds of effects and mix.

+

Things you might use Ardour for include:

+
    +
  • Digitally record acoustic/electric instruments or vocals
  • +
+ + + + +{% children %} diff --git a/_manual/01_welcome-to-ardour/01_about-ardour/01_isnt-this-a-really-complicated-program.html b/_manual/01_welcome-to-ardour/01_about-ardour/01_isnt-this-a-really-complicated-program.html new file mode 100644 index 0000000..7b27122 --- /dev/null +++ b/_manual/01_welcome-to-ardour/01_about-ardour/01_isnt-this-a-really-complicated-program.html @@ -0,0 +1,11 @@ +--- +layout: default +title: Isn't This A Really Complicated Program? +--- + + + + +

There is no point in pretending that Ardour is a simple, easy to use program. The development group has worked hard to try to make simple things reasonably easy, common tasks quick, and hard and/or uncommon things possible. There is no doubt that we have more to do in this area, as well as polishing the user interface to improve its intuitiveness and work flow characteristics. At the same time, multi-track, multi-channel, non-linear, non-destructive audio editing is a far from simple process. Doing it right requires not only a good ear, but a solid appreciation for basic audio concepts and a robust mental model/metaphor of what you are doing. Ardour is not a simple "audio recorder" - you can certainly use it to record stereo (or even mono) material in a single track, but the program has been designed around much richer capabilities than this.

+

Some people complain that Ardour is not "intuitive" to use - its lead developer has some thoughts on that.

+ diff --git a/_manual/01_welcome-to-ardour/01_about-ardour/02_why-write-a-daw-for-linux.html b/_manual/01_welcome-to-ardour/01_about-ardour/02_why-write-a-daw-for-linux.html new file mode 100644 index 0000000..6494f73 --- /dev/null +++ b/_manual/01_welcome-to-ardour/01_about-ardour/02_why-write-a-daw-for-linux.html @@ -0,0 +1,36 @@ +--- +layout: default +title: Why Write a DAW for Linux? +--- + + + + +

It is fairly understandable that existing proprietary DAWs do not run on Linux, given the rather small (but growing) share of the desktop market that Linux has. However, when surveying the landscape of "popular operating systems", we find:

+
    +
  • older versions of Windows: plagued by abysmal stability and appalling security +
  • +
  • newer versions of Windows seem stable but still suffer from security problems +
  • +
  • OS X: an amazing piece of engineering that is excellent for audio work but only runs on proprietary hardware and still lacks the flexibility and adaptability of Linux. +
  • +
+

Security matters today, and will matter more in the future as more and more live or semi-live network based collaborations take place.

+

Let's contrast this with Linux, an operating system which:

+
    +
  • can stay up for months (or even years) without issues +
  • +
  • is endlessly configurable down to the tiniest detail +
  • +
  • is not owned by any single corporate entity, ensuring its life and direction are not intertwined with that of a company (for a contrary example, consider BeOS) +
  • +
  • is fast and efficient +
  • +
  • runs on almost any computing platform ever created, including old "slow" systems and new "tiny" systems (e.g. Raspberry Pi) +
  • +
  • is one of the most secure operating systems "out of the box" +
  • +
+

More than anything, however, Ardour's primary author uses Linux and wanted a DAW that ran there.

+

Having written a DAW for Linux, it turned out to be relatively easy to port Ardour to OS X, mostly because of the excellent work done by the JACK OS X group that ported JACK to OS X. Although OS X has a number of disadvantages compared to Linux, its ease of use and its presence in many studios already makes it a worthwhile platform.

+ diff --git a/_manual/01_welcome-to-ardour/01_about-ardour/03_why-is-it-called-ardour.html b/_manual/01_welcome-to-ardour/01_about-ardour/03_why-is-it-called-ardour.html new file mode 100644 index 0000000..1126b6a --- /dev/null +++ b/_manual/01_welcome-to-ardour/01_about-ardour/03_why-is-it-called-ardour.html @@ -0,0 +1,13 @@ +--- +layout: default +title: Why is it called Ardour? +--- + + + + +

The name "Ardour" came from considerations of how to pronounce the acronym HDR(Hard Disk Recorder). The most obvious attempt sounds like a vowelless "harder" and it then was then a short step to an unrelated by slightly homophonic word:

+

ardour “ n 1: a feeling of strong eagerness (usually in favor of a person or cause); "they were imbued with a revolutionary ardor"; "he felt a kind of religious zeal" [syn: ardor, elan, zeal] 2: intense feeling of love [syn: ardor] 3: feelings of great warmth and intensity; "he spoke with great ardor" [syn: ardor, fervor, fervour, fervency, fire, fervidness] ”

+

Given the work required to develop Ardour, and the personality of its primary author, the name seemed appropriate even without the vague relationship to HDR.

+

Years later, another interpretation of "Ardour" appeared, this time based on listening to non-native English speakers attempt to pronounce the word. Rather than "Ardour", it became "Our DAW", which seemed poetically fitting for a Digital Audio Workstation whose source code and design belongs to a group of collaborators.

+ diff --git a/_manual/01_welcome-to-ardour/01_about-ardour/04_why-write-another-daw.html b/_manual/01_welcome-to-ardour/01_about-ardour/04_why-write-another-daw.html new file mode 100644 index 0000000..9a59be1 --- /dev/null +++ b/_manual/01_welcome-to-ardour/01_about-ardour/04_why-write-another-daw.html @@ -0,0 +1,13 @@ +--- +layout: default +title: Why write another DAW? +--- + + + + +

There are already a number of excellent digital audio workstations. To mention just a few: ProTools, Nuendo, Samplitude, Digital Performer, Logic, Cubase (SX), Sonar, along with several less well known systems such as SADIE, SAWStudio and others. Each of these programs has its strengths and weaknesses, although over the last few years most of them have converged on a very similar set of core features. However, each of them suffers from two problems when seen from the perspective of Ardour's development group:

+
    +
  • they do not run natively on Linux
  • +
  • they are not available in source code form, making modifications, improvements, bugfixes by technically inclined users or their friends or consultants impossible.
  • +
diff --git a/_manual/01_welcome-to-ardour/02_about-ardour-documentation.html b/_manual/01_welcome-to-ardour/02_about-ardour-documentation.html new file mode 100644 index 0000000..233e508 --- /dev/null +++ b/_manual/01_welcome-to-ardour/02_about-ardour-documentation.html @@ -0,0 +1,26 @@ +--- +layout: default +title: About Ardour documentation +--- + + + + +

Conventions Used In This Manual

+

This section covers some of the typographical and language conventions used in this manual.

+

Keyboards and Modifiers

+

Keyboard bindings are shown like this: s or x. Ctrl-x means "press the Ctrl, keep it pressed and then also press the x key. You may also see key combinations such as Ctrl-Shift-e, which mean that you should press the Ctrl key, then while keeping it pressed also press the Shift key and then while keeping them both pressed, finally press the e key.

+

Note that different platforms have different conventions for which modifier key (Control or Command) to use as the primary or most common modifier. When viewing this manual from a machine identifying itself as running OS X, will see Cmd- where appropriate. On other machines you will see Ctrl-

+

Menu Items

+

Menu items are indicated like this: Top > Next > Deeper Each >-separated item indicates an item on a nested (sub) menu.

+

Preference/Dialog Options

+

Choices in various dialogs, notably the Preferences and Properties dialog, are indicated like this: Edit > Preferences > Audio > Some Option Each successive >-separated item indicates either a (sub) menu or tabbed dialog navigation. The final item is the one to choose/select/deselect, etc.

+

Notes

+

Important notes about things that might not otherwise be obvious are shown in this format

+

"Context-click"

+

Many times the term context-click is used to indicate that you should (typically) right-click on a particular element of the graphical user interface. Although right-click is the common, default way to do this, there are other ways to accomplish the same thing - this term refers to any of them, and the result is always that a menu specific to the item you clicked on will be displayed.

+

Mouse Buttons

+

We refer to mouse buttons as Left, Middle and Right. Ardour can use additional buttons, but they have no default behaviour in the program.

+

"The Pointer"

+

When the manual refers to the "pointer", it means the on-screen representation of the mouse position or the location of a touch action if you are using a touch interface.

+ diff --git a/_manual/01_welcome-to-ardour/03_additional-resources.html b/_manual/01_welcome-to-ardour/03_additional-resources.html new file mode 100644 index 0000000..434a107 --- /dev/null +++ b/_manual/01_welcome-to-ardour/03_additional-resources.html @@ -0,0 +1,14 @@ +--- +layout: default +title: Additional Resources +--- + + + + +

In addition to this documentation, you may to check a variety of other resources.

+

Release Notes

+

The Ardour Forums

+

Information about Ardour Support

+

The Ardour Users Mailing List

+ diff --git a/_manual/02_introducing-ardour.html b/_manual/02_introducing-ardour.html new file mode 100644 index 0000000..36a1ef6 --- /dev/null +++ b/_manual/02_introducing-ardour.html @@ -0,0 +1,14 @@ +--- +layout: default +title: Introducing Ardour +--- + + + + +

This chapter gives you a conceptual overview of Ardour and provides an example of a common workflow when creating music with the program.

+

This chapter covers:

+ + + +{% children %} diff --git a/_manual/02_introducing-ardour/01_creating-music-with-ardour.html b/_manual/02_introducing-ardour/01_creating-music-with-ardour.html new file mode 100644 index 0000000..7430921 --- /dev/null +++ b/_manual/02_introducing-ardour/01_creating-music-with-ardour.html @@ -0,0 +1,36 @@ +--- +layout: default +title: Creating Music with Ardour +--- + + + + +

Ardour can be used in many different ways, from extremely simple to extremely complex. Many projects will be handled using the following kind of workflow.

+

Stage 1: Creating Your Project

+

The first step is to create a new session, or open an existing one. A session consists of a folder containing a session file that defines all the information about the session. All media files used by the session can be stored within the session folder.

+

More details on sessions can be found in Working With Sessions.

+

Stage 2: Creating and Importing Audio and MIDI data

+

Once you have a session, you will want to add some audio and/or MIDI material to it, which can be done in one of 3 ways:

+
    +
  • Record incoming audio or MIDI data, either via audio or MIDI hardware connected to your computer, or from other applications. +
  • +
  • Create new MIDI data using the mouse and/or various dialogs +
  • +
  • Import existing media files into the session +
  • +
+

MIDI recordings consist of "performance data" ("play note X at time T") rather than actual sound. As a result, they are more flexible than actual audio, since the precise sound that they will generate when played depends on where you send the MIDI to. Two different synthesizers may produce very different sound in response to the same incoming MIDI data.

+

Audio recordings can be made from external instruments with electrical outputs (keyboards, guitars etc.) or via microphones for acoustic instruments.

+

Ardour uses the JACK Audio Connection Kit for all audio and MIDI I/O, which means that recording audio/MIDI from other applications is fundamentally identical to recording audio/MIDI from your audio/MIDI hardware.

+

Stage 3: Editing and Arranging

+

Once you have some material within the session, you can start to arrange it in time. This is done in one of the two main windows of Ardour, the Editor window.

+

Your audio/MIDI data appears in chunks called "regions", which are arranged into horizontal lanes called "tracks". Tracks are stacked vertically in the Editor window. You can copy, shorten, move, and delete regions without changing the actual data stored in the session at all - Ardour is a non-destructive editor. (Almost) nothing that you do while editing will ever modify the files stored on disk (except the session file itself).

+

You can also carry out many transformations to the contents of regions, again without altering anything on disk. You can alter/move/delete MIDI notes, and remove silence from audio regions, for example.

+

Stage 4: Mixing and Adding Effects

+

Once you have the arrangement of your session mostly complete, you will typically move on to the mixing phase. Mixing is a broad term to cover the way the audio signals that your session generates during playback and processed and added together into a final result that you actually hear. It can involve altering the relative levels of various parts of the session, adding effects that improve or transform certain elements, and others that bring the sound of the whole session to a new level.

+

Ardour will allow you to automate changes to any mixing parameters (such as volume, panning, and effects controls) - it will record the changes you make over time, using a mouse or keyboard or some external control device, and can play back those changes later. This is very useful because often the changes you need, even for just one track, will vary in one part of a session compared to another - rather than a single new setting for the volume, you will often need increases followed by decreases (for example, to track the changing volume of a singer). Using automation can make all of this relatively simple.

+

Stage 5: Export

+

Once you are really satisfied with the arrangement and mix of your session, you will typically want to produce a single audio file that contains a ready-to-listen to version of the work. Ardour will allow you to export audio files in a variety of formats (simultaneously in some cases). This exported file would typically be used in creating a CD, or be the basis for digital distribution of the work.

+

OI course sometimes you will want to do export material that isn't finished yet, for example to give a copy to someone else to try to mix on their own system. Ardour will allow you to export as much of a session as you want, at any time, in any supported format.

+ diff --git a/_manual/02_introducing-ardour/02_understanding-basic-concepts-and-terminology.html b/_manual/02_introducing-ardour/02_understanding-basic-concepts-and-terminology.html new file mode 100644 index 0000000..f9e0258 --- /dev/null +++ b/_manual/02_introducing-ardour/02_understanding-basic-concepts-and-terminology.html @@ -0,0 +1,47 @@ +--- +layout: default +title: Understanding Basic Concepts and Terminology +--- + + + + +

This section will help you get acquainted with the basic terminology and concepts associated with Ardour. More detailed information on each aspect of the program is provided in later chapters.

+

Sessions

+

An Ardour session is a container for an entire project. A session may contain an arbitrary number of tracks and busses consisting of audio and MIDI data, along with information on processing those tracks, a mix of levels, and everything else related to the project. A session might typically contain a song, or perhaps an entire album or a complete live recording.

+

Ardour sessions are held in directories; these directories contain one or more session files, some or all of the audio and MIDI data and a number of other state files that Ardour requires. The session file describes the structure of the session, and holds automation data and other details.

+

Ardour's session file is kept in XML format, which is advantageous as it is somewhat human-readable, and human-editable in a crisis. Sound files are stored in one of a number of optional formats, and MIDI files as SMF (standard MIDI format).

+

It is also possible for Ardour sessions to reference sound and MIDI files outside the session directory.

+

Ardour has a single current session at all times; if Ardour is started without specifying one, it will offer to load or create one.

+

More details can be bound at Working With Sessions.

+

Tracks

+

A track is a concept common to most DAWs, and used also in Ardour. Tracks can record audio or MIDI data to disk, and then replay it with processing. They also allow the audio or MIDI data to be edited in a variety of different ways.

+

In a typical pop production, one might use a track each for the kick drum, another for the snare, more perhaps for the drum overheads and others for bass, guitars and vocals.

+

Ardour can record to any number of tracks at one time, and then play those tracks back. On playback, a track's recordings may be processed by any number of plugins, panned, and its level altered to achieve a suitable mix.

+

A track's type is really only related to the type of data that it stores on disk. It is possible, for example, to have a MIDI track with a synthesizer plugin which converts MIDI to audio. Even though the track remains ‘MIDI’, in the sense that its on-disk recordings are MIDI, its output may be audio-only.

+

More details can be bound at Working With Tracks.

+

Regions

+

A track may contain many segments of audio or MIDI. Ardour contains these segments in things called regions, which are self-contained snippets of audio or MIDI data. Any recording pass, for example, generates a region on each track that is enabled for recording. Regions can be subjected to many editing operations; they may be moved around, split, trimmed, copied, and so on.

+

More details can be bound at Working With Regions.

+

Playlists

+

The details of what exactly each track should play back is described by a playlist. A playlist is simply a list of regions; each track always has an active playlist, and can have other playlists which can be switched in and out as required.

+

More details can be bound at Working With Playlists.

+

Busses

+

Busses are another common concept in both DAWs and hardware mixers. They are similar in many ways to tracks; they process audio or MIDI, and can run processing plugins. The only difference is that their input is obtained from other tracks or busses, rather than from disk.

+

One might typically use a buss to collect together the outputs of related tracks. Consider, for example, a 3-track recording of a drum-kit; given kick, snare and overhead tracks, it may be helpful to connect the output of each to a bus called ‘drums’, so that the drum-kit's level can be set as a unit, and processing (such as equalisation or compression) can be applied to the mix of all tracks.

+

Plugins

+

Ardour allows you to process audio and MIDI using any number of plugins. These are external pieces of code, commonly seen as VST plugins on Windows or AU plugins on Mac OS X. Generally speaking, a plugin is written using one (and maybe more) standards. Ardour's plugin support is for the following standards:

+
+
LADSPA
+
the first major plugin standard for Linux. Many LADSPA plugins are availble, mostly free and open-source.
+
LV2
+
the successor to LADSPA. Lots of plugins have been ‘ported’ from LADSPA to LV2, and also many new plugins written.
+
VST
+
Ardour supports VST plugins that have been compiled for Linux.
+
AudioUnit (AU)
+
Mac OS X versions of Ardour support AudioUnit (AU) plugins.
+
+

Ardour has some support for running Windows VST plugins on Linux, but this is rather complicated, extremely difficult for the Ardour developers to debug, and generally unreliable. If it is at all possible, you are strongly advised to use native LADSPA, LV2 or Linux VST plugins on Linux, or AU on Mac OS X.

+

More details can be bound at Working With Plugins.

+
+
diff --git a/_manual/03_setting-up-your-system.html b/_manual/03_setting-up-your-system.html new file mode 100644 index 0000000..531f534 --- /dev/null +++ b/_manual/03_setting-up-your-system.html @@ -0,0 +1,18 @@ +--- +layout: default +title: Setting Up Your System +--- + + + + +

Using a general purpose computer for recording digital audio is not always trivial. This chapter will guide you through the basic steps and help you with some of the most common pitfalls.

+

This chapter covers the following:

+ + + + + + + +{% children %} diff --git a/_manual/03_setting-up-your-system/01_the-right-computer-system-for-digital-audio.html b/_manual/03_setting-up-your-system/01_the-right-computer-system-for-digital-audio.html new file mode 100644 index 0000000..85db871 --- /dev/null +++ b/_manual/03_setting-up-your-system/01_the-right-computer-system-for-digital-audio.html @@ -0,0 +1,39 @@ +--- +layout: default +title: The Right Computer System for Digital Audio +--- + + + + +

It would be nice to think that you could just go and buy any computer, install a bit of software on it and start using it to record and create music. This idea isn't wrong, but there some important details that it misses.

+

Any computer that you can buy today (somewhere around the end of 2012) is capable of recording and processing a lot of audio data. It will come with a builtin audio interface that can accept inputs from microphones or electrical instruments. It will have a disk with a huge amount of space for storing audio files.

+

When you are recording, editing and mixing music, you generally want to work with very little delay between the time that a sound is generated and when you can hear it. When the audio signal flows through a computer, that means that the computer has to be able to receive the signal, process it and send it back out again as fast as possible. And that is where it becomes very important what computer system you have, because it is absolutely not the case that any computer can do this job well.

+

Routing audio through a computer will always cause some delay, but if it is small, you will generally never notice it. There are also ways to work in which the delay does not matter at all (for example, not sending the output from the computer to speakers).

+

The delay or "latency" that you want for working with digital audio is more typically in the 1-5msec range. For comparison, if you are sitting 1m (3ft) from your speakers, the time the sound takes to reach your ears is about 3msec. Any modern computer can limit the delay to 100msec. Most can keep it under 50msec. Many will be able to get down to 10msec without too much effort. If you try to reduce the delay on a computer that cannot meet your goal, you will get clicks and glitches in the audio, which is clearly extremely undesirable.

+

Many, many things can affect the lowest latency that a computer can support.

+

Hardware-related Considerations

+
+
Video interface +
+
Poorly engineered video interfaces (and/or their device drivers) can "steal" computer resources for a long time, preventing the audio interface from keeping up with the flow of data
+
Wireless interface +
+
Poorly engineered wireless networking interfaces (and/or their device drivers) can also block the audio interface from keeping up with the flow of data
+
USB ports +
+
If you are using an audio interface connected via USB, and sometimes even if you are not, the precise configuration of your system's USB ports can make a big difference. There are many cases where plugging the interface into one port will work, but using different USB port results in much worse performance. This has been seen even on Apple systems.
+
CPU speed control +
+
Handling audio with low latency requires that your processor keeps running at its best performance (speed) at all times. Many portable systems try to regulate processor speed in order to save power - for low latency audio, you want this totally disabled, either in the BIOS or at the OS level
+
Excessive Interrupt Sharing
+
If your audio interface is forced by your computer to share an "interrupt line" (basically a way to tell the CPU that something needs its attention) with too many, or the wrong, other devices, this can also prevent the audio interface from keeping up with the flow of data. In laptops it is generally impossible to do anything about this. In many desktop systems, it is possible at the BIOS level to reassign interrupts to workaround the problem.
+
System Management Interrupts (SMIs) +
+
SMIs are interrupts sent by the motherboard to tell the computer about the state of various hardware. They cannot be (safely) disabled, but they can also take a (relatively) long time to process. It is better to have a motherboard which never sends SMIs at all - this is also a requirement for realtime stock trading systems, which have similar issues with latency.
+
Excessive (bass) vibration +
+
This doesn't affect the flow of data to/from the audio interface, but it can cause the flow of data to/from your disk storage to become much slower. If you are going to use a computer in an environment with live sound, make sure to place it so that the disk is not subject to noticeable bass vibration. What actually happens is that the vibrations cause the mechanism inside the disk to detect read errors, and this forces a retry of the reading from the disk itself. Retrying over and over massively reduces the rate at which data can be read from the disk. Avoid this.
+
+

 

+ diff --git a/_manual/03_setting-up-your-system/02_the-mouse.html b/_manual/03_setting-up-your-system/02_the-mouse.html new file mode 100644 index 0000000..de80fc5 --- /dev/null +++ b/_manual/03_setting-up-your-system/02_the-mouse.html @@ -0,0 +1,18 @@ +--- +layout: default +title: The Mouse +--- + + + + +

Ardour is designed to work best with a 3 button mouse equipped with a scroll wheel.

+

It can be used with a 2 button mouse or touchpad, but at least 2 key operations will not (easily) be available to you:

+
    +
  • time-constrained region copying +
  • +
  • MIDI bindings created by "learning" them from incoming MIDI +
  • +
+

You are strongly encouraged to invest in a 3 button mouse. You will find that a good quality mouse (especially one with a weighted, latchable scroll wheel) will make your use of Ardour vastly more efficient. They are cheap, and time is not.

+ diff --git a/_manual/03_setting-up-your-system/03_using-external-midi-devices.html b/_manual/03_setting-up-your-system/03_using-external-midi-devices.html new file mode 100644 index 0000000..c40ff1e --- /dev/null +++ b/_manual/03_setting-up-your-system/03_using-external-midi-devices.html @@ -0,0 +1,9 @@ +--- +layout: default +title: Using External MIDI Devices +--- + + + + + diff --git a/_manual/03_setting-up-your-system/04_connecting-audio-and-midi-devices.html b/_manual/03_setting-up-your-system/04_connecting-audio-and-midi-devices.html new file mode 100644 index 0000000..c9c7ce9 --- /dev/null +++ b/_manual/03_setting-up-your-system/04_connecting-audio-and-midi-devices.html @@ -0,0 +1,9 @@ +--- +layout: default +title: Connecting Audio and MIDI Devices +--- + + + + + diff --git a/_manual/03_setting-up-your-system/05_midi-on-os-x.html b/_manual/03_setting-up-your-system/05_midi-on-os-x.html new file mode 100644 index 0000000..f6eaf65 --- /dev/null +++ b/_manual/03_setting-up-your-system/05_midi-on-os-x.html @@ -0,0 +1,10 @@ +--- +layout: default +title: MIDI on OS X +--- + + + +

CoreMIDI is a part of any OS X system and provides the device drivers and libraries needed by MIDI applications.

+

You will need to ensure that you are running a version of JACK for OS X that has a working CoreMIDI - JACK MIDI bridge. This first appeared in version 0.89 of JackOS X.

+ diff --git a/_manual/03_setting-up-your-system/06_midi-on-linux.html b/_manual/03_setting-up-your-system/06_midi-on-linux.html new file mode 100644 index 0000000..099e564 --- /dev/null +++ b/_manual/03_setting-up-your-system/06_midi-on-linux.html @@ -0,0 +1,33 @@ +--- +layout: default +title: MIDI on Linux +--- + + + +

Ensure that a2jmidid is running

+

a2jmidid is an application that "bridges" between the system MIDI ports and JACK.

+

First you should be sure that there is no ALSA sequencer support enabled in jack. To do that open qjackctl's Setup window.

+

In the Settings tab set the MIDI Driver drop down to the none option.

+

Then go to the Misc tab and uncheck the Enable ALSA Sequencer support option.

+

Now it's time to restart your jack server before going on.

+

Checking for a2jmidid availability

+

First thing is checking if a2jmidid is already installed in your system. To do it first start your jack server and then call

+
a2jmidid -e
+

from the command. If a2jmidid is there go on with Checking surface control MIDI ports. Otherwise install the newest a2jmidid available and try again.

+

Checking surface control MIDI ports

+

After starting a2jmidid your control surface MIDI ports should appear in qjackctl's Connections window on the MIDI tab under a2j. If it does go on to the next step: Automatically calling a2jmidid when starting jack. If it doesn't you have to troubleshoot why it didn't. (How to troubleshoot a2jmidid?)

+

Automatically calling a2jmidid when starting jack

+

It's troublesome to have to manually start a2jmidid by hand each time you start jack. Here is one way to do it automatically. This step isn't mandatory, it's just a convenience. If you are not interested you can go on to the next step Enabling Ardour's mackie control ports in qjackctl.

+

Create a script that calls jack if you aren't using one yet. In it change the line that calls jack to have an ampersand at it's end like that:

+
+/usr/bin/qjackctl &
+
+

In this case I call qjackctl that starts jack so I include the ampersand in qjackctl's call. If you call jack directly, put the ampersand at the end of it's call line.

+

Now include the following lines after the line that calls jack:

+
+/usr/bin/sleep 5
+/bin/bash -c "/usr/bin/a2jmidid -e" &
+
+

All you have to do now is use your new script to call jack.

+ diff --git a/_manual/04_ardours-interface.html b/_manual/04_ardours-interface.html new file mode 100644 index 0000000..31539cb --- /dev/null +++ b/_manual/04_ardours-interface.html @@ -0,0 +1,21 @@ +--- +layout: default +title: Ardour's Interface +--- + + + + +

In Ardour, you work in two main windows: the Editor window and the Mixer window.

+

ardour's editor window

+

The Editor window includes the editor track "canvas" where you can arrange audio and MIDI data along a timeline. This is the window you will be in while editing and arranging a project. The window has a general "horizontal" sense to it: the timeline flows from left to right, the playhead showing the current position in the session moves from left to right - the window really represents "time" in a fairly literal way.

+

ardour's mixer window

+

The Mixer window on the other hand represents signal flow and is the window you will probably be using most when mixing a session. It includes elements called "channel strips" for each track and bus in your session. It has a general "vertical" sense to it: signals flow from the top of each channel strip through the processing elements in the strip to reach the output listed at the bottom.

+

It is possible to show a single channel strip in the editor window, and some people find this enough to work on mixing without actually opening the mixer window. Most of the time though, you will want both of these windows at various stages of a session's lifetime - sometimes you'll be focused on editing, sometimes on mixing and possibly some of the time on both.

+ + + + + + +{% children %} diff --git a/_manual/04_ardours-interface/01_starting-ardour.html b/_manual/04_ardours-interface/01_starting-ardour.html new file mode 100644 index 0000000..a13f10b --- /dev/null +++ b/_manual/04_ardours-interface/01_starting-ardour.html @@ -0,0 +1,22 @@ +--- +layout: default +title: Starting Ardour +--- + + + + +

There are several ways of starting Ardour, which may vary depending on which platform you are using it on.

+
    +
  • double-click the Ardour icon in your platfom's file manager (e.g. Nautilus on Linux, Finder on OS X)
  • +
  • double click on an Ardour session file in your platform's file manager
  • +
  • on Linux, you can also start Ardour on the command line +
  • +
+

When Ardour is run for the very first time, a special dialog is displayed that will ask you several questions about your setup. You will not be asked these questions again, but you can always modify your choices via the Preferences dialog.

+

In general, it is sensible to start JACK before you run Ardour. This is not necessary, but will provide you with more control and options over JACK's operation.

+

If you open Ardour without specifying an existing session it will display the "New Session" dialog. If JACK is not already running, there will be an extra "Audio Engine" tab in that dialog to configure JACK, which Ardour will start automatically.

+

If you did specify an existing session but JACK is not already running, the "New Session" dialog will contain just the Audio Engine tab.

+ + +{% children %} diff --git a/_manual/04_ardours-interface/01_starting-ardour/01_starting-ardour-from-the-command-line.html b/_manual/04_ardours-interface/01_starting-ardour/01_starting-ardour-from-the-command-line.html new file mode 100644 index 0000000..8f1f914 --- /dev/null +++ b/_manual/04_ardours-interface/01_starting-ardour/01_starting-ardour-from-the-command-line.html @@ -0,0 +1,25 @@ +--- +layout: default +title: Starting Ardour From the Command Line +--- + + + +

Starting Ardour on the command line (Linux)

+

Like (almost) any other program on Linux, Ardour can be started on the command line.

+
    +
  • type the following command in a terminal window
    ardour3
    +
  • +
  • to start Ardour with an existing session, type the following command in a terminal window
    ardour3 /path/to/session
    +

    replacing /path/to/session with the actual path to your session. You can specify either the session folder or any session file inside the folder (including snapshots).

    +
  • +
  • to start Ardour with a new, named session, type the following command in a terminal window
    ardour3 -N /path/to/new/session
    +

    replacing /path/to/new/session with the name of the folder where you want the session stored. +

    +
  • +
+

Other Command Line Options

+
+
+
+
diff --git a/_manual/04_ardours-interface/02_basic-gui-operations.html b/_manual/04_ardours-interface/02_basic-gui-operations.html new file mode 100644 index 0000000..69538bc --- /dev/null +++ b/_manual/04_ardours-interface/02_basic-gui-operations.html @@ -0,0 +1,20 @@ +--- +layout: default +title: Basic GUI Operations +--- + + + + +

Ardour has a number of different techniques to offer when you interact with it. This chapter provides information on basic techniques for entering text, making selections, and using shortcuts.

+

This chapter covers the following:

+ + + + + + + + + +{% children %} diff --git a/_manual/04_ardours-interface/02_basic-gui-operations/01_interface-elements.html b/_manual/04_ardours-interface/02_basic-gui-operations/01_interface-elements.html new file mode 100644 index 0000000..caa5a3a --- /dev/null +++ b/_manual/04_ardours-interface/02_basic-gui-operations/01_interface-elements.html @@ -0,0 +1,15 @@ +--- +layout: default +title: Interface Elements +--- + + + + +

Checkboxes

+

Buttons

+

Pull Down Menus

+

Pop Up Menus

+

Context Menus

+

Browsers

+ diff --git a/_manual/04_ardours-interface/02_basic-gui-operations/02_key-bindings.html b/_manual/04_ardours-interface/02_basic-gui-operations/02_key-bindings.html new file mode 100644 index 0000000..45b5cad --- /dev/null +++ b/_manual/04_ardours-interface/02_basic-gui-operations/02_key-bindings.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Key Bindings +--- + + + + +

Almost every available function in Ardour can be executed via a key binding (or OSC command). There are many more functions available than there are keys on even the largest current computer keyboards, so only a subset of them are bound to keys by default.

+ diff --git a/_manual/04_ardours-interface/02_basic-gui-operations/03_selection-techniques.html b/_manual/04_ardours-interface/02_basic-gui-operations/03_selection-techniques.html new file mode 100644 index 0000000..53904b0 --- /dev/null +++ b/_manual/04_ardours-interface/02_basic-gui-operations/03_selection-techniques.html @@ -0,0 +1,17 @@ +--- +layout: default +title: Selection Techniques +--- + + + +

Ardour follows the conventions used by most other computer software (including other DAWs) for selecting objects in the GUI.

+

Selecting individual objects

+

Clicking on object (sometimes in a particular part of its on-screen representation) will select the object, and deselect other similar objects.

+

Selecting multiple (similar) objects

+

click on an object toggles it selected status, so using click on a series of objects will select (or deselect) each one of them. You can construct completely arbitrary selections with this technique.

+

Selecting a range of objects

+

In cases where the idea of "select all objects between this one and that one" makes sense, you can click one object and then Shitft click another to select both of them as well as all object in between them.

+

Range Selection

+

These basic principles apply to Range Selection - click-drag to select a range, drag to create multiple ranges and shift-click to extend a range to cover a wider area.

+ diff --git a/_manual/04_ardours-interface/02_basic-gui-operations/04_tooltips.html b/_manual/04_ardours-interface/02_basic-gui-operations/04_tooltips.html new file mode 100644 index 0000000..7d52b15 --- /dev/null +++ b/_manual/04_ardours-interface/02_basic-gui-operations/04_tooltips.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Tooltips +--- + + + +

By default, Ardour will often show helpful information about the purpose and use of most GUI control (buttons etc.) if you position the pointer over the GUI control and leave it there momentarily. These can be a good way to discover the purpose of many aspects of the GUI.

+

This can be distracting for experienced users, who may opt to disable it via Edit > Preferences > GUI > Show tooltip if mouse hovers over a control.

+ diff --git a/_manual/04_ardours-interface/02_basic-gui-operations/05_undoredo-for-editing-.html b/_manual/04_ardours-interface/02_basic-gui-operations/05_undoredo-for-editing-.html new file mode 100644 index 0000000..75a142a --- /dev/null +++ b/_manual/04_ardours-interface/02_basic-gui-operations/05_undoredo-for-editing-.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Undo/Redo for Editing +--- + + + +

Undo/Redo for Editing

+

It is very common to make changes while editing that you did not intend to, or that you later decide were the wrong choice. All changes to the arrangement of session components (regions, control points) along the timeline can be undone (and then redone). The default keybinding for undo is Ctrl/Cmd-z and for redo is Ctrl/Cmd-r (these match the conventions of most other applications that provide undo/redo.

+

Changes are also saved to the session history file, so that undo/redo is possible even if you close the session and reopen it (even if you quit Ardour in between).

+

The maximum number of changes that can be undone can be altered in the Editing tab of the Preferences dialog. The maximum number of changes stored in the history file is a separate parameter, and can also be set in the same place.

+ diff --git a/_manual/04_ardours-interface/02_basic-gui-operations/06_using-the-mouse.html b/_manual/04_ardours-interface/02_basic-gui-operations/06_using-the-mouse.html new file mode 100644 index 0000000..4deec01 --- /dev/null +++ b/_manual/04_ardours-interface/02_basic-gui-operations/06_using-the-mouse.html @@ -0,0 +1,46 @@ +--- +layout: default +title: Using the Mouse +--- + + + +

Clicking

+

Throughout this manual, the term "click" refers to the act of pressing and releasing the leftmost mouse button (technically the button that is identified as button number 1 - your operating system may allow this be reassigned). This action is used to select objects, activate buttons, turn on/off choices, popup menus and so forth.

+

On touch surfaces, it also corresponds to a regular, single-finger tap on the GUI.

+

Right Clicking

+

Throughout this manual, the term "right-click" refers to the act of pressing and releasing the rightmost mouse button (technically the button that is identified as button number 3 - your operating system may allow this be reassigned). This action is used to pop up "context menus" (hence the term "context click", which you will also see). It is also used by default in combination with the shift key for deleting objects within the editor window.

+

Double Clicking

+

A "double click" refers to two rapid press/release actions on the leftmost mouse button. The time interval between the two press/release actions that determines whether this is seen as two clicks or one double click is controlled by your system preferences, not by Ardour.

+

Drags

+

Throughut this manual, the term "drag" primarily refers to the act of pressing the leftmost mouse button, then moving the mouse with the button held down, and then releasing the button. On touch surfaces, this term also corresponds to a normal single finger touch-motion-release action.

+

Ardour also uses the middle mouse button for certain kinds of drags, which will be referred to as "middle-drag" - these are identical to a normal drag except that they involve using the middle button rather than the left button.

+

Modifiers

+

There are many actions in Ardour that can be carried out using a mouse button in combination with a "modifier key". When the manual refers to Ctrl-click, it means that you should first press the Control key, then carry out a normal click while the Control key is held down, and then finally release the Control key. Available modifiers depend on the platform you are using Ardour on:

+

Linux Modifiers

+
    +
  • Control (Ctrl) +
  • +
  • Shift
  • +
  • Alt
  • +
  • Mod2
  • +
  • Mod3
  • +
  • Mod4
  • +
  • Mod5
  • +
+

Mod2 typically correspond to the NumLock key on many systems. On most Linux systems, there are no keys that will function as modifiers Mod3, Mod4 or Mod5 by default, but they can be setup using xmodmap(1). This can be rather useful.

+

OS X Modifiers

+
    +
  • Command (Cmd) +
  • +
  • Control (Ctrl) +
  • +
  • Option (Alt) +
  • +
  • Shift +
  • +
+

Mouse Wheel/Scroll

+

Ardour can make good use of a scroll wheel on your mouse, which can be utilized for a variety of purposes. Scroll wheels can generate both vertical scroll events (ScrollUp and ScrollDown) and/or horizontal events (ScrollLeft and ScrollRight). When appropriate, Ardour will differentiate between these two different scroll axes. Otherwise it will interpret ScrollDown and ScrollLeft as equivalent and similarly interpret ScrollUp and ScrollRight as equivalent.

+

Typically, scrolling is used to adjust continuous controls (e.g. faders/knobs), or to scroll vertically or horizontally.

+ diff --git a/_manual/04_ardours-interface/02_basic-gui-operations/07_cut-and-paste-operations.html b/_manual/04_ardours-interface/02_basic-gui-operations/07_cut-and-paste-operations.html new file mode 100644 index 0000000..5c2d55a --- /dev/null +++ b/_manual/04_ardours-interface/02_basic-gui-operations/07_cut-and-paste-operations.html @@ -0,0 +1,16 @@ +--- +layout: default +title: Cut and Paste Operations +--- + + + + +

The clipboard is a holder for various kinds of objects (regions, control events, plugins) that is used during cut-n-paste operations.

+

Cut

+

A cut operation removes selected objects and places them in the clipboard. The existing contents of the clipboard are overwriten. The default key binding is x.

+

Copy

+

A copy of the selected objects are placed in clipboard. There is no effect on the selected objects. The existing contents of the clipboard are overwritten. The default key binding is c.

+

Paste

+

The current contents of the clipboard are inserted into the session, using the current edit point as the reference point. The contents of the clipboard remain unchanged. The default key binding is v.

+ diff --git a/_manual/04_ardours-interface/02_basic-gui-operations/08_deleting-objects.html b/_manual/04_ardours-interface/02_basic-gui-operations/08_deleting-objects.html new file mode 100644 index 0000000..e639687 --- /dev/null +++ b/_manual/04_ardours-interface/02_basic-gui-operations/08_deleting-objects.html @@ -0,0 +1,16 @@ +--- +layout: default +title: Deleting Objects +--- + + + +

Within the Editor window (and to some extent within the Mixer window too), there are several techniques for deleting objects (regions, control points, and more).

+

Using the mouse and keyboard

+

Select the object(s) and then press the Delete key. This does not put the deleted object(s) into the cut buffer, so they cannot be pasted elsewhere.

+

Using normal cut and paste

+

Select the object(s) and then press x. This puts the deleted object(s) into the cut buffer so that they can be pasted elsewhere.

+

Using just the mouse

+

By default, Shift-right-click will delete the clicked-upon object. Like the Delete key, this does not put the deleted object(s) into the cut buffer, so they cannot be pasted elsewhere.

+

The modifier and mouse button used for this can be controlled via Edit > Preferences > User Interaction > Delete using .... Any modifier and mouse button combination can be used.

+ diff --git a/_manual/04_ardours-interface/03_introducing-the-editor-window.html b/_manual/04_ardours-interface/03_introducing-the-editor-window.html new file mode 100644 index 0000000..abbc662 --- /dev/null +++ b/_manual/04_ardours-interface/03_introducing-the-editor-window.html @@ -0,0 +1,13 @@ +--- +layout: default +title: Introducing the Editor Window +--- + + + + + + + + +{% children %} diff --git a/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists.html b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists.html new file mode 100644 index 0000000..9f3e299 --- /dev/null +++ b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists.html @@ -0,0 +1,16 @@ +--- +layout: default +title: Editor Lists +--- + + + + +

At the right of the editor is an optional area which provides one of a range of useful lists of parts of your session. It is not shown by default when you first start using Ardour. The list can be hidden or shown using the Show Editor List option from the View menu. The very right-hand side of the list gives a selection of tabs which are used to choose the list to view. The left-hand border of the list can be dragged to vary the width of the list.

+ + + + + + +{% children %} diff --git a/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/01_ranges--marks-list.html b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/01_ranges--marks-list.html new file mode 100644 index 0000000..aa9f66a --- /dev/null +++ b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/01_ranges--marks-list.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Ranges & Marks List +--- + + + + +

See this section for information on this list/section of the Editor Lists.

+ diff --git a/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/02_region-list.html b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/02_region-list.html new file mode 100644 index 0000000..59b9cd0 --- /dev/null +++ b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/02_region-list.html @@ -0,0 +1,23 @@ +--- +layout: default +title: Region List +--- + + + + +

The region list shows all the regions in the session. The left-hand column gives the region name, and there are a range of times given for information. At the right of the list are four columns of flags that can be altered:

+

The region list shows all the regions in the session. The left-hand column gives the region name, and there are a range of times given for information. At the right of the list are four columns of flags that can be altered:

+
+
L
+
whether the region position is locked, so that it cannot be moved.
+
G
+
whether the region's position is ‘glued’ to bars and beats. If so, the region will stay at the same position in bars and beats even if the tempo and/or time signature change.
+
M
+
whether the region is muted, so that it will not be heard.
+
O
+
whether the region is opaque; opaque regions ‘block’ regions below them from being heard, whereas ‘transparent’ regions have their contents mixed with whatever is underneath.
+
+

Hovering the mouse pointer over a column heading shows a tool-tip which can be handy to remember what the columns are for.

+

A handy feature of the region list is that its regions can be dragged and dropped into a suitable track in the session.

+ diff --git a/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/03_snapshot-list.html b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/03_snapshot-list.html new file mode 100644 index 0000000..84f7b59 --- /dev/null +++ b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/03_snapshot-list.html @@ -0,0 +1,11 @@ +--- +layout: default +title: Snapshot List +--- + + + + +

This list gives the snapshots that exist of this session. Clicking on a snapshot name will load that snapshot.

+

See Working with Sessions for more information on snapshots.

+ diff --git a/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/04_track--bus-group-list.html b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/04_track--bus-group-list.html new file mode 100644 index 0000000..f5cb6b5 --- /dev/null +++ b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/04_track--bus-group-list.html @@ -0,0 +1,40 @@ +--- +layout: default +title: Track & Bus Group List +--- + + + + +

This shows the track/bus groups that exist in the session. These groups allow related tracks to share various properties (such as mute or record enable state). For full details, see the section called “Track and bus groups”.

+

The columns in this list are as follows:

+
+
Col
+
the colour that the group uses for its tab in the editor.
+
Name
+
the group name.
+
V
+
whether the tracks and busses in the group are visible.
+
On
+
whether the group is enabled.
+
G
+
ticked if the constituents of the group are sharing gain settings.
+
Rel
+
ticked if shared gains are relative.
+
M
+
ticked if the constituents share mute status.
+
S
+
ticked if the constituents share solo status.
+
Rec
+
ticked if the constituents share record-enable status.
+
Mon
+
whether the constituents share monitor settings.
+
Sel
+
whether the constituents are selected together.
+
E
+
whether edits to the constituents are performed to all others.
+
A
+
whether the constituents share active status.
+
+

 

+ diff --git a/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/05_tracks--busses-list.html b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/05_tracks--busses-list.html new file mode 100644 index 0000000..ddd761d --- /dev/null +++ b/_manual/04_ardours-interface/03_introducing-the-editor-window/01_editor-lists/05_tracks--busses-list.html @@ -0,0 +1,28 @@ +--- +layout: default +title: Tracks & Busses List +--- + + + +

This lists the tracks and busses that are present in the session. The list order reflects the order in the editor, and you can drag-and-drop track or bus names in the editor list to re-order them in the editor. The columns in the list can all be clicked to alter the track/bus state, and they represent the following:

+
+
V
+
whether the track or bus is visible; they can be hidden, in which case they will still play, but just not be visible in the editor; this can be useful for keeping the display uncluttered.
+
A
+
whether the track or bus is active; unactive tracks will not play, and will not consume any CPU.
+
I
+
for MIDI tracks, whether the MIDI input is enabled; this dictates whether MIDI data from the track's inputs ports will be passed through the track.
+
R
+
whether the track is record-enabled.
+
M
+
whether the track is muted.
+
S
+
track solo state.
+
SI
+
track solo-isolated state.
+
SS
+
solo safe state.
+
+

As with the region list, hovering the mouse pointer over a column heading shows a tool-tip which can be handy to remember what the columns are for.

+ diff --git a/_manual/04_ardours-interface/03_introducing-the-editor-window/02_the-editing-toolbar.html b/_manual/04_ardours-interface/03_introducing-the-editor-window/02_the-editing-toolbar.html new file mode 100644 index 0000000..78a599e --- /dev/null +++ b/_manual/04_ardours-interface/03_introducing-the-editor-window/02_the-editing-toolbar.html @@ -0,0 +1,47 @@ +--- +layout: default +title: The Editing Toolbar +--- + + + + +

Mouse Modes

+
+
Object Tool
+
Used for selecting, moving, deleting and copying objects. See below for a full description.
+
Range Mode
+
When in range mode, the mouse pointer appears as a vertical line whenever it is over the track canvas or the rulers. The mouse will now be able to select a point or range of time. Time ranges can be selected over one or several tracks, depending ond the selection of your tracks. +

If none of your track is selected, the Range Tool will operate on all the session track visualized in the Editor.

+

If you want to operate just some track, select the track you want to edit with the Range Tool.

+
+
Zoom Tool
+
When in zoom mode, the mouse pointer appears as a magnifying glass whenever it is over the track canvas or the rulers. This mode is used to zoom the display to any range that is determined by clicking and dragging the Button1 to specify the range. You can also utilize a single click with Button1 to zoom in by one level focused on the mouse cursor, likewise a single click on Button3 will zoom out by one level focused on the mouse.
+
Region Gain Tool
+
When in gain edit mode, the mouse pointer will change to cross-hairs. You can then click within a region to change the gain automation for that region. This automation is separate from fader automation for individual tracks, but works in conjunction with the track's fader. This automation will remain locked to the region's time, so if the region is moved, the region gain automation is moved along with it.
+
TimeFX Tool
+
When in timefx mode, the mouse pointer appears as a distinctive 'expanding' illustration whenever it is over the track canvas or the rulers. This mode is used to resize regions using a timestretch algorithm. It is utilized by clicking on an edge of a region of audio and dragging it one way or the other to either stretch or shrink the region.
+
Audition Tool
+
Clicking a region using the "audition" tool will audition the region. +

You can also "scrub" with this tool by clicking and dragging in the direction you wish to listen. The amount you drag in one direction or the other will determine the playback speed.

+
+
Draw Tool
+
+
Internal/Region Edit Mode
+
+
+

Object Tool

+

When in object mode, the mouse pointer appears as a hand whenever it is over the track canvas or the rulers. The mouse can now be used to select and perform operations on objects such as regions, markers etc. This is the most commonly utilized mode in Ardour, as it allows you to select and move regions, as well as modify automation points on the automation tracks.

+
+
Selecting Regions
+
+
Resizing Regions
+
+
Moving Regions
+
+
Editing Fade In and Fade Out
+
+
+

Smart Mode

+

The "Smart Mode" button to the left of the mouse mode buttons modifies "Object Tool" mode. When enabled, the mouse behaves as if it is in "Range Tool" mode in the upper half of a region, and in "Object Tool" mode in the lower half.

+ diff --git a/_manual/04_ardours-interface/03_introducing-the-editor-window/03_the-transport-bar.html b/_manual/04_ardours-interface/03_introducing-the-editor-window/03_the-transport-bar.html new file mode 100644 index 0000000..06e791a --- /dev/null +++ b/_manual/04_ardours-interface/03_introducing-the-editor-window/03_the-transport-bar.html @@ -0,0 +1,9 @@ +--- +layout: default +title: The Transport Bar +--- + + + + + diff --git a/_manual/04_ardours-interface/04_introducing-the-mixer-window.html b/_manual/04_ardours-interface/04_introducing-the-mixer-window.html new file mode 100644 index 0000000..fecfae5 --- /dev/null +++ b/_manual/04_ardours-interface/04_introducing-the-mixer-window.html @@ -0,0 +1,9 @@ +--- +layout: default +title: Introducing the Mixer Window +--- + + + + + diff --git a/_manual/04_ardours-interface/05_using-ardour-clock-displays.html b/_manual/04_ardours-interface/05_using-ardour-clock-displays.html new file mode 100644 index 0000000..3f9c22b --- /dev/null +++ b/_manual/04_ardours-interface/05_using-ardour-clock-displays.html @@ -0,0 +1,94 @@ +--- +layout: default +title: Using Ardour Clock Displays +--- + + + + +

+Clocks in Ardour are the basic way of displaying time values precisely. In many cases, they are also one way to edit (change) time values, and in a few cases, the only way. All clocks share the same basic appearance and functionality, which is described below, but a few clocks serve particularly important roles.

+

Transport Clocks

+

+In the transport bar of the editor window there are two (or, if you are on a very small screen, just one) clocks that display both the current position of the playhead, and additional information related to transport control and the timeline. These are called the "transport clocks"; the leftmost one is the primary transport clock and the rightmost one is the secondary transport clock. They look like this: +

+

+an image of the transport clocks in ardour 3

+

+Editing the time in the transport clocks will reposition the playhead in the same way that various other editing operations will. +

+

The Big Clock

+

+Under the Windows item in the main menu you will find the "Big Clock" window, which also shows the playhead position in a big, fully resizable window. The big clock is very useful when you need to work away from the screen but still want to see the playhead position clearly (such as when working with a remote control device across, or in another, room). The big clock will also change its visual appearance to indicate when active recording is taking place. Below on the left is a screenshot showing a fairly large big clock window filling a good part of the display, and on the right, the same clock during active recording. +

+

+an image of the big clock filling a screen an image of the big clock while recording +

+

The Special Role of the Secondary Transport Clock

+

+There are a number occasions when Ardour needs to display time values to the user but there is no obvious way to specify what units to use. The most obvious is in the big cursor that appears when dragging regions. For this and other similar cases, Ardour will display time using the same units as the secondary clock. +

+

Why are there two transport clocks

+

+Having two transport clocks lets you see the playhead position in two different time units without having to change any settings. For example, you can see the playhead position in both timecode units and BBT time.

+

Selection and Punch Clocks

+

+The transport bar also contains a set of 5 clocks that show the current selection range and punch ranges. Clicking on the punch range clocks will locate to either the beginning or end of the punch range. Similarly, clicking on the range clocks will locate to either the beginning or end of the current selection. In this screen shot there is no current selection range, so the selection clocks show an "off" state. +

+

+an image of the the selection and punch clocks in ardour 3

+

+

Clock Modes

+

Every clock in Ardour has four different modes it can be set to, each of which displays time using different units. You can change the clock mode by right-clicking on the clock and selecting the desired mode from the menu. Some clocks are entirely independent of any other clock's mode; others are linked so that changing one changes all clocks in that group. The different modes are:

+
+
Timecode
+
Time is shown as Hours:Minutes:Seconds:Frames, measured from the timecode zero point on the timeline (which may or may not correspond to the session start and/or absolute zero on the timeline). The frames per second (FPS) value is dictated by either the session FPS setting, or, if slaved to an external timecode master, the master. In the transport clocks, the FPS value is shown below the time display, along with an indication of the current timecode source (INT means that Ardour is its own timecode source)
+
BBT
+
Time is shown as Bars:Beats:Ticks, indicating musical time measured from the start of the session. The transport clocks show the current tempo (as bpm) and meter below the time display
+
Minutes:Seconds
+
Time is shown as Hours:Minutes:Seconds.Milliseconds, measured from the absolute start of the timeline (ignoring the session start and any timecode offsets).
+
Samples
+
Time is shown as a sample count from the absolute start of the timeline (ignoring the session start and any timecode offsets). The number of samples per second is given by the current sample rate, and in the transport clocks, this rate is shown below the time display along with any pullup/pulldown adjustment.
+
+

Special Modes for the Transport Clocks

+

+In addition to the time-unit modes mentioned above, each of the two transport clocks (if you work on a small screen, you may only have one) can be independently set to display "Delta to Edit Point" in whatever time units its current mode indicates. This setting means that the clock shows the distance between the playhead and the current edit point, and it may show a positive or negative value depending on the relationship between these two points. The clocks will use a different color when in this mode to avoid confusion about the displayed value. +

+

+To switch either (or both!) of the transport clocks into this mode, use Edit->Preferences->Transport and select or de-select the relevant check-button. +

+

+Note that when set into this "Delta to Edit Point" mode, the transport clocks cannot be edited. +

+

Changing clock values with the keyboard

+

+New values for the clock can be typed from the keyboard after clicking on the relevant clock. Clicking on the clock will show a thin vertical cursor bar just to the right of the next character to be overwritten. Enter time in the same order as the current clock mode - if the clock is in Timecode mode, you need to enter hours, minutes, seconds, frames. So, to change to a time of 12:15:20:15 you would type 1 2 1 5 2 0 1 5. Each number you type will appear in a different color, from right to left, overwriting the existing value. Mid-edit, after typing 3 2 2 2 the clock might look like this:

+

+an image of a clock being edited in ardour 3

+

+To finish the edit, press the enter/return or tab key. To exit an edit without changing the clock press the escape key. If you mis-type an entry so that the new value would be illegal (for example, resulting in more than 30 frames when Timecode is set to 30 frames per second), the clock will reset at the end of the edit, and move the cursor back to the start so that you may begin again. +

+

+To end an edit without changing the clock press the escape key. +

+

Avoiding the mouse entirely

+

+There is a shortcut available for those who wish to be able to edit the transport clocks entirely without the mouse. It can be found in the keybinding editor under "Transport" called "Focus On Clock". If bound to a key (the divide key on a keypad is the default at time of writing), then pressing that key is equivalent to clicking on the primary (left) transport clock, and editing can begin immediately. +

+

Entering Partial Times

+

+One detail of the editing design that is not immediately obvious is that it is possible to enter part of a full time value. Suppose that the clock is in BBT mode, and displaying 024|03|0029 and you want to alter the value to be the first beat of the bar. Click on the clock and type 0 1 0 0 0 0. Similarly, if it is in Minutes:Seconds mode, and displaying 02:03:04.456 and you want to get to exactly 2 hours, click on the clock and type 0 0 0 0 0 0 0 to reset the minutes, seconds and milliseconds fields. +

+

Entering Delta Times

+

+You can also type values into the clock that are intended as a relative change, rather than a new absolute value. Simply end the edit by pressing the + or - keys (the ones on any keypad will also work). Using the plus key will add the entered value to the current value of the clock; using minus will subtract it. For example, if the clock is in Samples mode and displays 2917839, you move it back 2000 samples by typing 2 0 0 0 and then the - key rather than enter/return/tab.

+

Changing clock values with the mouse

+

Using a scroll wheel

+

+Position the mouse pointer over the clock, and move the scroll wheel. Moving the scroll wheel away from you will increase the value shown on the clock, moving it towards you will decrease the value shown on the clock. The step size is determined by which field of the clock you position the mouse over. If the clock is in Timecode mode and the mouse pointer is over the Seconds field, the clock value will increase or decrease by one second at a time. If you move the mouse point to the Hours field, the value will increase or decrease by one hour at a time. It works similarly in all other clock modes. +

+

Dragging the mouse

+

+Position the mouse pointer over the clock, press the left mouse button and drag. Dragging upwards will increase the value shown on the clock, dragging downwards will decrease the value shown on the clock. The step size is determined by which field of the clock you position the mouse over. If the clock is in Timecode mode and you begin dragging with the mouse pointer over the Seconds field, the clock value will increase or decrease by one second at a time. If you begin dragging with the mouse over the Hours field, the value will increase or decrease by one hour at a time. It works similarly in all other clock modes. +

+ diff --git a/_manual/05_controlling-playback.html b/_manual/05_controlling-playback.html new file mode 100644 index 0000000..64a32a5 --- /dev/null +++ b/_manual/05_controlling-playback.html @@ -0,0 +1,18 @@ +--- +layout: default +title: Controlling Playback +--- + + + + +

Ardour offers many ways to control playback of your session, including the transport bar, key bindings and remote controls. You can also use markers to define locations or ranges within the session and rapidly move around between them.

+

Note that if you synchronize Ardour with other devices then some or all of these control methods may not be available - depending on the synchronization protocol, Ardour may respond only to commands sent from the other device(s).

+

This chapter covers the following:

+ + + + + + +{% children %} diff --git a/_manual/05_controlling-playback/01_looping-the-transport.html b/_manual/05_controlling-playback/01_looping-the-transport.html new file mode 100644 index 0000000..c073ae2 --- /dev/null +++ b/_manual/05_controlling-playback/01_looping-the-transport.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Looping the Transport +--- + + + + +

When the loop transport button is pressed, the playhead will jump the start of the loop range, and continue to the end of the loop range before returning to the start and repeating.

+

While looping, a light green area is displayed over the tracks to show the loop range.

+

Please see this section for more information on defining and altering the loop range.

+ diff --git a/_manual/05_controlling-playback/02_positioning-the-playhead.html b/_manual/05_controlling-playback/02_positioning-the-playhead.html new file mode 100644 index 0000000..a5b9a0a --- /dev/null +++ b/_manual/05_controlling-playback/02_positioning-the-playhead.html @@ -0,0 +1,18 @@ +--- +layout: default +title: Positioning the Playhead +--- + + + +

The playhead is a vertical line with two arrows at each end that indicates the current position of playback.

+

Positioning the Playhead at the current pointer position

+

The command Editor/set-playhead (default binding: p) will set the playhead at the position of the pointer, if it is within the editor track area.

+

Positioning the Playhead on the timeline

+

An unmodified click anywhere on the timeline (rulers) will move the playhead to that position.

+

Positioning the Playhead with the transport clocks

+

Click on either the primary or secondary transport clock and edit the value to move the playhead to a specific position.

+

Positioning the Playhead at a marker

+

Context-click on the marker and select either Locate to here or Play from here.

+

Alternatively, position the pointer within the marker and press p to set the playhead at the marker.

+ diff --git a/_manual/05_controlling-playback/03_using-key-bindings.html b/_manual/05_controlling-playback/03_using-key-bindings.html new file mode 100644 index 0000000..1c9935f --- /dev/null +++ b/_manual/05_controlling-playback/03_using-key-bindings.html @@ -0,0 +1,26 @@ +--- +layout: default +title: Using Key Bindings +--- + + + +

Ardour has many available commands for playback control that can be bound to keys. Many of them have default bindings, some do not, so the list below shows both the default bindings and command names.

+
+
Space
+
switch between playback and stop.
+
Home
+
Move playhead to session start marker
+
End
+
Move playhead to session end marker
+
+ +
Right Arrow
+
+
Left Arrow
+
+
0
+
Move playhead to start of the timeline
+
+

Commands without default bindings include:

+ diff --git a/_manual/05_controlling-playback/04_using-the-nudge-controls.html b/_manual/05_controlling-playback/04_using-the-nudge-controls.html new file mode 100644 index 0000000..64b6898 --- /dev/null +++ b/_manual/05_controlling-playback/04_using-the-nudge-controls.html @@ -0,0 +1,11 @@ +--- +layout: default +title: Using the Nudge Controls +--- + + + + +

If there are no selected objects, the nudge controls can be used to move the playhead by a fixed amount backward or forward. The left and right buttons move either backward or forward in time, and the small clock to the left of these buttons sets the amount of time to nudge by. As with all other clocks, you can right-click on the clock to choose the time representation you want to use.

+

Note that this is a secondary purpose of the nudge controls - it is usually used to move selected objects by specific distances, rather than the playhead.

+ diff --git a/_manual/05_controlling-playback/05_using-the-transport-bar.html b/_manual/05_controlling-playback/05_using-the-transport-bar.html new file mode 100644 index 0000000..32ccec2 --- /dev/null +++ b/_manual/05_controlling-playback/05_using-the-transport-bar.html @@ -0,0 +1,9 @@ +--- +layout: default +title: Using the Transport Bar +--- + + + + + diff --git a/_manual/06_working-with-markers.html b/_manual/06_working-with-markers.html new file mode 100644 index 0000000..c6e51b5 --- /dev/null +++ b/_manual/06_working-with-markers.html @@ -0,0 +1,28 @@ +--- +layout: default +title: Working With Markers +--- + + + + +

It is very useful to be able to tag different locations in a session for use when editing and mixing. Ardour supports both locations, which define specific single positions in time and ranges which define a start and end position in time.

+

There are also 3 special kinds of markers:

+
+
CD markers
+
locations that are restricted to legal CD track boundaries, and be used to add track marks/info to compact disc (CD) images.
+
Loop range
+
a range used to define transport loop start and end points.
+
Punch range
+
a range used to define start and/or end points for punch recording
+
+

This chapter covers the following:

+ + + + + + + + +{% children %} diff --git a/_manual/06_working-with-markers/01_creating-location-markers.html b/_manual/06_working-with-markers/01_creating-location-markers.html new file mode 100644 index 0000000..bf3795a --- /dev/null +++ b/_manual/06_working-with-markers/01_creating-location-markers.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Creating Location Markers +--- + + + + +

You can create a location marker at any position in a session.

+

Create a location marker at the current position of the playhead

+

Create a location marker in a specific position on the timeline

+ diff --git a/_manual/06_working-with-markers/02_creating-range-markers.html b/_manual/06_working-with-markers/02_creating-range-markers.html new file mode 100644 index 0000000..ce797c5 --- /dev/null +++ b/_manual/06_working-with-markers/02_creating-range-markers.html @@ -0,0 +1,11 @@ +--- +layout: default +title: Creating Range Markers +--- + + + + +

Creating a Range on the timeline

+

Creating a Range in the Locations+Marks List

+ diff --git a/_manual/06_working-with-markers/03_getting-to-know-the-locationsmarks-list.html b/_manual/06_working-with-markers/03_getting-to-know-the-locationsmarks-list.html new file mode 100644 index 0000000..8c85272 --- /dev/null +++ b/_manual/06_working-with-markers/03_getting-to-know-the-locationsmarks-list.html @@ -0,0 +1,11 @@ +--- +layout: default +title: Getting To Know the Locations+Marks List +--- + + + + +

The Locations+Marks List is visible on a tab in the Editor Lists area. It can be used as a single point of control for all range and location markers (including the punch and loop ranges), or as a supplement to other methods of working with them.

+

First, there is the current loop and punch range; there are three clocks, being the start of the range, the end of the range and the length of the range. The start and end points have a ‘Use PH’ button beside them, which you can click to set the corresponding position using the current position of the playhead. Following this is a list of the session's markers, and finally there is a list of the range markers. At the bottom of the list are buttons to add new markers or ranges. The - button beside each marker and range allows that particular mark to be removed.

+ diff --git a/_manual/06_working-with-markers/04_moving-markers.html b/_manual/06_working-with-markers/04_moving-markers.html new file mode 100644 index 0000000..9dfbd10 --- /dev/null +++ b/_manual/06_working-with-markers/04_moving-markers.html @@ -0,0 +1,14 @@ +--- +layout: default +title: Moving Markers +--- + + + +

To move a single marker

+

Click and drag it to a new location on the timeline.

+

To move multiple markers

+

Ctrl-click each marker you want to move, then drag one of the selected markers to a new location. All other selected markers will move with it, though bounded by the zero point on the timeline.

+

To move both ends of a range at once

+

drag one of the range markers (the start or end) and the other will in sync with it.

+ diff --git a/_manual/06_working-with-markers/05_the-loop-range.html b/_manual/06_working-with-markers/05_the-loop-range.html new file mode 100644 index 0000000..a7e3925 --- /dev/null +++ b/_manual/06_working-with-markers/05_the-loop-range.html @@ -0,0 +1,12 @@ +--- +layout: default +title: The Loop Range +--- + + + + +

The loop range is a special range that defines the start and end points when loop-mode is enabled in the transport bar.

+

Defining the loop range on the timeline

+

Defining the loop range in the Locations+Marks list

+ diff --git a/_manual/06_working-with-markers/06_the-marker-context-menu.html b/_manual/06_working-with-markers/06_the-marker-context-menu.html new file mode 100644 index 0000000..e4b7f34 --- /dev/null +++ b/_manual/06_working-with-markers/06_the-marker-context-menu.html @@ -0,0 +1,32 @@ +--- +layout: default +title: The Marker Context Menu +--- + + + + +

Several operations on markers are available by right-clicking them to open the marker context menu. From this menu, you can:

+
+
Locate to Here
+
move the playhead to this marker's position.
+
Play from Here
+
start playback from this marker's position.
+
Move Mark to Playhead
+
move this marker to the current playhead position. +
+
Create Range to Next Marker
+
create a range marker between this location and the next one along on the timeline.
+
Hide
+
hide this marker from the view. It can be re-shown from the Locations window
+
Rename
+
change the name of the marker.
+
Lock
+
if this is ticked, it will be impossible to drag the marker's position; useful if you want to prevent accidental movements.
+
Glue to Bars and Beats
+
if this is ticked, the marker will maintain its position in bars and beats even if there are changes in tempo and meter
+
Remove
+
removes the marker.
+
+

There are also a few options on the Active Mark submenu of the Transport menu. These options apply to the currently selected location marker, and move it to a nearby region boundary, region sync point, or to the playhead or mouse.

+ diff --git a/_manual/06_working-with-markers/07_the-punch-range.html b/_manual/06_working-with-markers/07_the-punch-range.html new file mode 100644 index 0000000..43073fd --- /dev/null +++ b/_manual/06_working-with-markers/07_the-punch-range.html @@ -0,0 +1,12 @@ +--- +layout: default +title: The Punch Range +--- + + + + +

The punch range is a special range used to define where recording will start and/or stop during a punch.

+

Defining the punch range on the timeline

+

Defining the punch range in the Locations+Marks list

+ diff --git a/_manual/07_working-with-sessions.html b/_manual/07_working-with-sessions.html new file mode 100644 index 0000000..df1718f --- /dev/null +++ b/_manual/07_working-with-sessions.html @@ -0,0 +1,19 @@ +--- +layout: default +title: Working With Sessions +--- + + + + +

This chapter covers the following:

+ + + + + + + + + +{% children %} diff --git a/_manual/07_working-with-sessions/01_backup-and-sharing-of-sessions.html b/_manual/07_working-with-sessions/01_backup-and-sharing-of-sessions.html new file mode 100644 index 0000000..fba216f --- /dev/null +++ b/_manual/07_working-with-sessions/01_backup-and-sharing-of-sessions.html @@ -0,0 +1,14 @@ +--- +layout: default +title: Backup and Sharing of Sessions +--- + + + + +

An Ardour session is stored in a single folder on your computer's filesystem. This makes backup very easy - any tool capable of backing up a folder (i.e. all of them) can be used to backup a session. You pick the location of a session when it is created - by default it will be in your default session location, which can be altered via Edit > Preferences > Misc > Session Management.

+

+There is complication: a session may reference embedded media that are stored outside of the session folder. At this time (December 2012), there is no particularly good solution for this. Backing up a session with embedded files will not create a copy of the session containing those files. +

+

The single folder approach also makes sharing a project easy. Simply copy the session folder (onto a storage device, or across a network) and another Ardour user (on any platform) will be able to use it. The limitation regarding embedded files applies to session sharing as well.

+ diff --git a/_manual/07_working-with-sessions/02_interchange-with-other-daws.html b/_manual/07_working-with-sessions/02_interchange-with-other-daws.html new file mode 100644 index 0000000..a4d0c85 --- /dev/null +++ b/_manual/07_working-with-sessions/02_interchange-with-other-daws.html @@ -0,0 +1,38 @@ +--- +layout: default +title: Interchange with other DAWs +--- + + + + +

It has never been particularly easy to move sessions/projects created on one DAW to another. There are two "standards" that exist that have reasonably widespread support:

+
    +
  • OMF (Open Media Framwwork), also known as OMFI. Developed and controlled by Avid, never standardized
  • +
  • AAF (Advanced Authoring Format). Developed by a consortium of media-related corporations.
  • +
+

but in practice both of these "standards" have such complex and/or incomplete specifications that different DAWs support them partially, differently or not at all.

+

Moving an Ardour session to another DAW

+

To move an Ardour session to another DAW, you have 3 basic choices:

+
    +
  • Stem exports +
  • +
  • Copy the interchange folder +
  • +
  • Use AATranslator +
  • +
+

Moving another DAW session to Ardour

+

To move a session from another DAW to Ardour, you have 2 basic choices:

+
    +
  • Stem exports +
  • +
  • Use AATranslator +
  • +
+

More details on these options are available:

+ + + + +{% children %} diff --git a/_manual/07_working-with-sessions/02_interchange-with-other-daws/01_copying-the-interchange-folder.html b/_manual/07_working-with-sessions/02_interchange-with-other-daws/01_copying-the-interchange-folder.html new file mode 100644 index 0000000..0e7e9ae --- /dev/null +++ b/_manual/07_working-with-sessions/02_interchange-with-other-daws/01_copying-the-interchange-folder.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Copying The Interchange Folder +--- + + + + +

All media in a session folder is stored in a sub-folder called "interchange". Below that is another folder with the name of the session. You can copy either of these to another location and use the files within them with any other application, importing them all into a project/session. You will lose all information about regions, tracks, and timeline positioning, but all the data that Ardour was working with will be present in the other DAW. Nothing below the "interchange" folder is specific to Ardour - any DAW or other audio/MIDI application should be able to handle the files without any issues.

+ diff --git a/_manual/07_working-with-sessions/02_interchange-with-other-daws/02_stem-exports.html b/_manual/07_working-with-sessions/02_interchange-with-other-daws/02_stem-exports.html new file mode 100644 index 0000000..db75690 --- /dev/null +++ b/_manual/07_working-with-sessions/02_interchange-with-other-daws/02_stem-exports.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Stem Exports +--- + + + + +

Stem exports are covered fully in the Export chapter. A stem export creates 1 file per track, starting at the beginning of the session. You can then import each track into another DAW and begin working on it. You lose all data except the actual audio/MIDI (no plugins, no automation). This is one of the most common methods of interchange because it works between all DAWs.

+ diff --git a/_manual/07_working-with-sessions/02_interchange-with-other-daws/03_using-aatranslator.html b/_manual/07_working-with-sessions/02_interchange-with-other-daws/03_using-aatranslator.html new file mode 100644 index 0000000..cb60aae --- /dev/null +++ b/_manual/07_working-with-sessions/02_interchange-with-other-daws/03_using-aatranslator.html @@ -0,0 +1,13 @@ +--- +layout: default +title: Using AATranslator +--- + + + + +

AATranslator is a Windows application that can convert sessions/projects from many diffferent DAWs into other formats. At the present time (December 2012), it can read and write Ardour 2.X sessions, and can read Ardour 3 sessions.

+

The program runs very well on Linux using Wine (a Windows environment for Linux). There are equivalent solutions for running Windows applications on OS X, but we have no experience with them at this time. Ardour users have reported great results using AATranslator on Ardour 2.X sessions.

+

The AATranslator website has full details on which formats/DAWs it supports, but they include ProTools, Live, Reaper, OMF, AAF and many more.

+

+ diff --git a/_manual/07_working-with-sessions/03_renaming-a-session.html b/_manual/07_working-with-sessions/03_renaming-a-session.html new file mode 100644 index 0000000..2919023 --- /dev/null +++ b/_manual/07_working-with-sessions/03_renaming-a-session.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Renaming a Session +--- + + + + +

Use Session > Rename to give your session a new name. A dialog will appear to ask you for the new name.

+

This operation does not make a new session folder - the existing session folder and relevant contents are renamed. If your session was not saved before a rename operation, it will be saved automatically and then renaming will continue.

+

Ardour has no "Save As" operation that actually makes a new copy of the session folder and its contents.

+ diff --git a/_manual/07_working-with-sessions/04_session-templates.html b/_manual/07_working-with-sessions/04_session-templates.html new file mode 100644 index 0000000..e9582d4 --- /dev/null +++ b/_manual/07_working-with-sessions/04_session-templates.html @@ -0,0 +1,24 @@ +--- +layout: default +title: Session Templates +--- + + + + +

Session templates are a way to store the setup of a session for future (re)use. They do not store any data but do store (for example):

+
    +
  • The number of tracks and busses, along with their names +
  • +
  • The plugins present on each track or bus (if any) +
  • +
  • All I/O connections +
  • +
+

Creating a Session Template

+

Choose Session > Save Template. A dialog will appear to ask you for the name of the new template.

+

Using a Session Template

+

In the New Session dialog, choose the desired template from the combo selector.

+

Note that you can also use an existing session as a template, without saving it as one. This is available as an option in the New Session dialog. Doing this will not alter the existing session at all, but will use its track, bus and plugin configuration just like a template.

+

See also Track & Bus templates for information on templates for individual tracks or busses.

+ diff --git a/_manual/07_working-with-sessions/05_snapshots.html b/_manual/07_working-with-sessions/05_snapshots.html new file mode 100644 index 0000000..efbc3fd --- /dev/null +++ b/_manual/07_working-with-sessions/05_snapshots.html @@ -0,0 +1,19 @@ +--- +layout: default +title: Snapshots +--- + + + + +

Sometimes you will want to save the current state of a session for possible use in the future. For example, you may be about to change the entire arrangement of a piece, or drastically alter the signal processing, and want a reference to come back to should that not work out.

+

This is easily accomplished using Session > Snapshot. A small dialog will appear allowing you to enter a name for the snapshot. The default name is based on the current date and time.

+

Creating a snapshot does not modify your session, nor does it save your session. Instead, it saves an "alternate" version of the session, within the session folder. The snapshot shares all data present in the session. You can create any number of snapshots.

+

After creating a snapshot, you can continue working on the session and save it normally using Session > Save and any existing snapshots will remain unchanged.

+

Switching to a Snapshot

+

If you are already working on a session and want to to switch to an existing snapshot, navigate the Snapshots tab of the Editor Lists. Find the name of the snapshot in the list and click it. Ardour will switch to the snapshot. If the session has not been saved, you will asked what you want to do.

+

Starting Ardour With A Snapshot

+

Since a snapshot is just another session file stored within the session folder, you can specify that "version" when loading an existing session. The browser in the "Open Session" dialog will show an expander arrow for sessions that have more than 1 session file (i.e. snapshots) present - click on it to see the list, and then click on the name of the snapshot you want to load.

+

Saving And Switching to a Snapshot

+

Sometimes you want to create a snapshot and then have all future edits and modifications saved to that snapshot rather than the main session. This is easily done using Session > Save As. This does not create a new session folder, but saves your session as a new snapshot and then switches the "current snapshot" to the newly created one. All subsequent saves of the session will be stored in this new snapshot, and existing snapshots (and the main session) will be left unaffected.

+ diff --git a/_manual/07_working-with-sessions/06_the-new-session-dialog.html b/_manual/07_working-with-sessions/06_the-new-session-dialog.html new file mode 100644 index 0000000..23c4d07 --- /dev/null +++ b/_manual/07_working-with-sessions/06_the-new-session-dialog.html @@ -0,0 +1,20 @@ +--- +layout: default +title: The New Session Dialog +--- + + + + +

New Session Tab

+

In this tab you can type in the name of a session to create in the Name: field. You can also select a folder for this session to be created in, and if desired a template to create the new session as a copy of.

+

Under the Advanced Options, you can select specific behaviors that occur by default. This includes settings whether you wish to create a Master Bus, or a Control Bus, and how many channels you wish either to have.

+

You can also select whether you want Ardour to automatically connect all inputs to the physical ports of your hardware. If you select this Ardour will do so sequentially, to give an example, the first input of a track or bus will be connected to the first input of your hardware. The second input of a track or bus will be automatically connected to the second input of your hardware, and so on. When Ardour reaches the limits of your hardware, it will circle around and begin connecting with the first physical input of your hardware again. You can limit the number of channels on your physical hardware Ardour uses if you desire, and if that is the case, Ardour will only connect that many physical inputs to your tracks. Useful if you only want to connect the first input to do some voice over recording for instance.

+

Just like you can tell Ardour not to automatically connect track inputs, you can also modify how it automatically connects the outputs of the track or bus. By default Ardour will connect all tracks and busses to the Master Bus if there is one. However you can also tell it to automatically connect each output to the physical outputs of your interface or sound card, and like inputs can also limit the amount of physical outputs used, so for instance if you only have stereo monitors attached to the first two outputs of your sound card, you would not want Ardour to automatically connect to the next 6 that may be there with nothing attached to them.

+

Open Session Tab

+

The Open Session Tab will allow you to open an already existing session. You can also open any snapshot of a particular session by clicking on the arrow next to the session name to display all snapshots, and then selecting a snapshot. If a session is not displayed by default in the dialog you can click on the button next to "Browse" in order to bring up a file selection dialog to navigate your hard drive to find the file.

+

Audio Setup Tab

+

More details on this dialog/tab can be found below. Note that this tab is not visible if JACK is already running when the New Session dialog is displayed.

+ + +{% children %} diff --git a/_manual/07_working-with-sessions/06_the-new-session-dialog/01_audio-setup.html b/_manual/07_working-with-sessions/06_the-new-session-dialog/01_audio-setup.html new file mode 100644 index 0000000..5a7d5eb --- /dev/null +++ b/_manual/07_working-with-sessions/06_the-new-session-dialog/01_audio-setup.html @@ -0,0 +1,29 @@ +--- +layout: default +title: Audio Setup +--- + + + + +

This is a tabbed-dialog within the New Session dialog that will appear only if JACK is not already running as you start Ardour. It provides a simple interface to configure JACK, which will then be started by Ardour. For more control and options regarding JACK, it is recommended that you start JACK before using Ardour, via a JACK control application such as qjackctl (sometimes called "Jack Control"), JackPilot, etc.

+

Device Tab

+

On this tab you can tell Ardour about the device it should use. The driver setting will tell it what driver to attempt to access.

+
+
Driver
+
On Mac OS X this will typically be CoreAudio. On Linux usually this will be either FFADO or ALSA, depending on whether or not you are utilizing a firewire device. Advanced users on all platforms may also use NetJack which provides network audio I/O
+
Interface
+
The selector should show all availiable interfaces that driver provides that are duplex capable for Ardour to use. Important if you are using an Intel Mac running OS X and the builtin audio interface, you must first merge its separate input and output devices into a single "aggregate device" before Ardour will be able to use it.
+
+
Sample Rate
+
The selector will allow you to select from any sample rate supported by the device selected above it.
+
Buffer Size
+
You can adjust the size of the buffer used by your audio interface to allow for either lower latency, or lower CPU usage and higher latency.
+
+

Options Tab

+

This tab has a few options that should be rarely used by most users. The Realtime Option allows Jack to run with Realtime privileges, which allows for smoother audio. The Verbose Output checkbox is primarily used for troubleshooting, it will cause Jack to use verbose messaging and output it to the console. The client timeout will help prevent clients from disconnecting from Jack if they don't respond to Jack fast enough. The number of ports changes the total number of ports that Jack will provide to all clients. And the server dropdown will allow you to change the path to the Jack executable to match where it is installed on your system.

+

Advanced Tab

+

The Advanced tab will allow you to set some advanced settings that are rarely needed. By default the input and output channels will automatically try to give you the amount of inputs and outputs as requested by the software, however some software doesn't always request as many as you need, this can provide more to software that can handle it.

+ + +{% children %} diff --git a/_manual/07_working-with-sessions/06_the-new-session-dialog/01_audio-setup/01_using-more-than-one-audio-device.html b/_manual/07_working-with-sessions/06_the-new-session-dialog/01_audio-setup/01_using-more-than-one-audio-device.html new file mode 100644 index 0000000..a474592 --- /dev/null +++ b/_manual/07_working-with-sessions/06_the-new-session-dialog/01_audio-setup/01_using-more-than-one-audio-device.html @@ -0,0 +1,32 @@ +--- +layout: default +title: Using More Than One Audio Device +--- + + + + +

Ardour will only use a single interface. If you want to use more than one interface you will need to lock them all to a sample clock, and then set up the device outside of Ardour.

+
+

+Ardour is fundamentally designed to be a component in a pro-audio/music creation environment and standard operating practice for such setups involves using only a single digital sample "clock" (something counting off the time between audio samples). This means that trying to use multiple independent soundcards is problematic, because each soundcard has its own sample clock, running independently from the others. Over time, these different clocks drift out of sync with each other, and cause glitches in the audio. You can't stop this drift, although in some cases the effects may be insignificant enough that some people might not care about them.

+

Thus in an ideal world you should not use multiple independent soundcards but instead use a single device with a single clock and all the inputs, outputs and other features that you need.

+

Of course, a lot of people don't live in an ideal world, and believe that software should make up for this. +

+
+

OS X

+

The precise instructions for creating an "aggregate device" on OS X have varied from one released to another.

+
+
OS X 10.5
+
Please read http://support.apple.com/kb/HT1215 +
+
OS X 10.6 or later
+
+ +
Please read http://support.apple.com/kb/HT3956 +
+
+

Aggregate devices also provide a method to use multiple soundcards as a single device. For example, you can "aggregate" 2 different 8-channel devices so that you can record 16 channels into Mixbus.

+

Linux

+

Please see the instructions at http://jackaudio.org/faq

+ diff --git a/_manual/07_working-with-sessions/07_whats-in-a-session.html b/_manual/07_working-with-sessions/07_whats-in-a-session.html new file mode 100644 index 0000000..7ab45b8 --- /dev/null +++ b/_manual/07_working-with-sessions/07_whats-in-a-session.html @@ -0,0 +1,34 @@ +--- +layout: default +title: What's In A Session? +--- + + + + +

The Session is the fundamental document type that is created and modified by the Ardour workstation. A "Session" is a folder on your computer filesystem that contains all the items that pertain to a particular project or "recording/editing/mixing session".

+

The Session folder includes these files and folders:

+
    +
  • The main session snapshot (session_name.ardour) +
  • +
  • Any additional snapshots (filenames ending in ardour) +
  • +
  • the auto-backup snapshot (session_name.ardour.bak) +
  • +
  • the undo history for the session (session_name.history) +
  • +
  • the instant file (instant.xml) which records the last-used zoom scale and other metadata +
  • +
  • a folder called "interchange" which holds your raw audio and MIDI files (whether imported or recorded) +
  • +
  • a folder called "export" which contains any files created by the "Export" function +
  • +
  • a folder called "peaks" which contains a waveform rendering of each raw audio file in the session +
  • +
  • a folder called "analysis" which contains transient and pitch information of each raw audio file +
  • +
  • a folder called "dead sounds" which contains sounds which Ardour has detected are no longer used in the session +
  • +
+

A session combines some setup information (such as audio and MIDI routing, musical tempo & meter, timecode synchronization, etc.) with one or more Tracks and Buses, and all the Regions and Plug-Ins they contain.

+ diff --git a/_manual/07_working-with-sessions/08_where-are-sessions-stored.html b/_manual/07_working-with-sessions/08_where-are-sessions-stored.html new file mode 100644 index 0000000..2d6e768 --- /dev/null +++ b/_manual/07_working-with-sessions/08_where-are-sessions-stored.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Where are Sessions Stored? +--- + + + + +

Sessions are stored in a single folder on your computer's filesystem.

+

The first time you run Ardour, you will be asked where you would like the default location for sessions to be, with the initial choice being your home folder.

+

You can change it in that startup dialog, or later via Edit > Preferences > Misc > Session Management. You can also specify a particular (different) location for a session when creating it, in the New Session dialog.

+ diff --git a/_manual/08_working-with-regions.html b/_manual/08_working-with-regions.html new file mode 100644 index 0000000..38e21fc --- /dev/null +++ b/_manual/08_working-with-regions.html @@ -0,0 +1,33 @@ +--- +layout: default +title: Working WIth Regions +--- + + + +

Working Witth Regions

+

Regions are the basic elements of editing and composing in Ardour. In most cases, a region represents a single contiguous section of one or more media files. Regions are defined by a fixed set of attributes:

+
    +
  • the source audio/MIDI file(s) they represent +
  • +
  • a starting point in the audio/MIDI file(s) +
  • +
  • a length +
  • +
+

When placed into a playlist, they gain additional attributes:

+
    +
  • a position along the timeline
  • +
  • a layer
  • +
+

There are other attributes as well, but they do not define the region. Things you should know about regions:

+

Regions are Cheap

+

By themselves, regions consume very little of your computer's resources. Each region requires a small amount of memory, and represents a rather small amount of CPU work if placed into an active track. So, don't worry about creating regions whenever you need to.

+

Regions are not files

+

Although a region can represent an entire audio file, they are never equivalent to an audio file. Most regions represent just parts of an audio file(s) on disk, and removing a region from a track has nothing to do with removing the audio file(s) from the disk (the Destroy operation, one of Ardour's few destructive operations, can affect this). Changing the length of a region has no effect on the audio file(s) on disk. Splitting and copying regions does not alter the audio file in anyway, nor does it create new audio files (only recording, and the Export , Bounce and Reverse operations create new audio files).

+

This chapter covers the following:

+ + + + +{% children %} diff --git a/_manual/08_working-with-regions/01_region-naming.html b/_manual/08_working-with-regions/01_region-naming.html new file mode 100644 index 0000000..df299d9 --- /dev/null +++ b/_manual/08_working-with-regions/01_region-naming.html @@ -0,0 +1,29 @@ +--- +layout: default +title: Region Naming +--- + + + + +

Regions are initially named using either:

+
    +
  • the name of the playlist for which they were recorded +
  • +
  • the name of the track for wich they were recorded +
  • +
  • the name of the embedded/imported file they represent +
  • +
+

Whole File Region Names

+

These are not audio files, but regions that represent the full extent of an audio file. Every time a new recording is done, or a new file is embedded/imported, a new region is created that represents the entire audio file(s) This region will have the name of the track/playlist/original file, followed by a "-" and then a number plus a dot and then a number.

+

For recorded regions, the number will increase each time a new recording is made. So, for example, if there is a playlist called "Didgeridoo", the first recorded whole file region for that playlist will be called "Digderidoo-1". The next one will be "Digeridoo-2" and so on.

+

For imported/embedded files, the region name will be based on the file name, but with any final suffix (e.g. ".wav" or ".aiff") removed.

+

Normally, whole file regions are not inserted into tracks/playlists, but regions derived from them are. The whole-file versions live in the editor region list where they act as an organizing mechanism for regions that are derived from them.

+

Normal Region Names

+

When a region is inserted into a track/playlist, its initial name will end in a version number, such as ".1" or ".103". For a recorded region, if the whole file region was "Hang drum-1", then the region in the track will appear with the name "Hang drum-1.1". For an imported/embedded region, if the whole file region was "Bach:Invention3", then the region in the track will appear with the name "Bach:Invention3.1".

+

Copied Region Names

+

If the region is a copy of another region, it will begin life with the same name as the original. When an operation is carried out that modifies one of the copies, that particular copy will be renamed by incrementing the version number.

+

Renaming Regions

+

You can rename a region at any time. Use the region context menu to popup the rename dialog. The new name does not need to have a version number in it (in fact, it probably should not). The region will retain its name until it is modified after being copied.

+ diff --git a/_manual/08_working-with-regions/02_region-selection-equivalence.html b/_manual/08_working-with-regions/02_region-selection-equivalence.html new file mode 100644 index 0000000..d1da7e4 --- /dev/null +++ b/_manual/08_working-with-regions/02_region-selection-equivalence.html @@ -0,0 +1,20 @@ +--- +layout: default +title: Region Selection Equivalence +--- + + + +

Track Groups have a property titled "Select" which, if enabled, will cause Ardour to try to propagate a region selection in one of a group's member tracks to the other members of the group..

+

For example, let's assume you have used multiple microphones to record a drum kit to multiple tracks. You have created a track group, added all the drum tracks, enabled the group and enabled the "Select" property for the group. When you select a region in one of the drum tracks, Ardour will select the corresponding track in every other drum track, which in turn means that a subsequent edit operation will affect all the selected regions (and thus all the drum tracks) together.

+

How Ardour decides which regions are "equivalent"

+

Regions in different tracks are considered to be equivalent for the purposes of sharing "selection" if they satisfy all the following criteria:

+
    +
  1. Each region starts at the same offset within its source file
  2. +
  3. Each region is located at the same position on the timeline
  4. +
  5. Each region has the same length
  6. +
+

Overlap Equivalence

+

Sometimes, the rules outlined above are too strict to get Ardour to do what you want. Regions may be slightly different lengths, or positioned slightly differently, and this will cause Ardour to not select regions in other grouped tracks that you would like it to.

+

In this case, enable Edit > Preferences > Editor > Use overlap equivalency for regions. With this option enabled, regions in different tracks will be considered equivalent for the purposes of selection if they overlap. This is much more flexible and will cover almost all of the cases that the fixed rules above might make cumbersome.

+ diff --git a/_manual/08_working-with-regions/03_the-region-context-menu.html b/_manual/08_working-with-regions/03_the-region-context-menu.html new file mode 100644 index 0000000..a86fc67 --- /dev/null +++ b/_manual/08_working-with-regions/03_the-region-context-menu.html @@ -0,0 +1,166 @@ +--- +layout: default +title: The Region Context Menu +--- + + + +

In the editor window, context clicking on a region brings up a menu to provide access to many region operations. The menu begins with the name of the region, or "Selected Regions" if multiple regions are selected.

+

If there is more than 1 region layered at the point where you clicked, the menu will also contain an item "Choose Top" that if selected will show a dialog that allows you to adjust the layering of regions there. See Adjusting Region Layering for more details.

+

Below these items is the rest of the Track Context Menu, which provides access to track-level operations. To see the region context menu's contents, select the region name or "Selected Regions", and a submenu will appear with the following structure/contents:

+
+
Play
+
+
Loop
+
+
Properties
+
+
Rename
+
+
Edit
+
+
+
Combine
+
+
Uncombine
+
+
Split
+
+
Make Mono Regions
+
+
Opaque
+
+
Mute
+
+
Pitch Shift
+
+
Reverse
+
+
Close Gaps
+
+
Place Transients
+
+
Rhythm Ferret
+
+
Strip Silence
+
+
+
+
Position
+
+
+
Move To Original Position
+
+
Lock
+
+
Glue to Bars and Beats
+
+
Snap Position to Grid
+
+
Set Sync Position
+
+
Remove Sync
+
+
Nudge Later
+
+
Nudge Earlier
+
+
Nudge Later by capture offset
+
+
Nudge Earlier by capture offset
+
+
+
+
Trim
+
+
+
Trim Start at Edit Point
+
+
Trim End at Edit Point
+
+
Trim to Loop
+
+
Trim to Punch
+
+
Trim to Previous
+
+
Trim to Next
+
+
+
+
Layering
+
+
+
Raise to Top
+
+
Raise
+
+
Lower
+
+
Lower to Bottom
+
+
+
+
Ranges
+
+
+
Set Loop Range
+
+
Set Punch Range
+
+
Add Single Range Marker
+
+
Add Range Marker per Region
+
+
Set Range Selection
+
+
+
+
Gain
+
+
+
Normalize
+
+
Boost
+
+
Cut
+
+
Reset Envelope
+
+
Envelope Active
+
+
+
+
Fades
+
+
+
Fade In
+
+
Fade Out
+
+
Fades
+
+
+
+
Duplicate
+
+
+
Duplicate
+
+
Multi-Duplicate
+
+
Fill Track
+
+
+
+
Export
+
+
Bounce (without processing)
+
+
Bounce (with processing)
+
+
Spectral Analysis
+
+
Remove
+
+
diff --git a/_manual/09_working-with-playlists.html b/_manual/09_working-with-playlists.html new file mode 100644 index 0000000..2d4fc73 --- /dev/null +++ b/_manual/09_working-with-playlists.html @@ -0,0 +1,13 @@ +--- +layout: default +title: Working With Playlists +--- + + + + +

Playlists are a fundamental concept in Ardour that you may or may not end up using, depending on your workflow.

+ + + +{% children %} diff --git a/_manual/09_working-with-playlists/01_playlist-operations.html b/_manual/09_working-with-playlists/01_playlist-operations.html new file mode 100644 index 0000000..75297e4 --- /dev/null +++ b/_manual/09_working-with-playlists/01_playlist-operations.html @@ -0,0 +1,36 @@ +--- +layout: default +title: Playlist Operations +--- + + + + +

All operations on playlists start by clicking on the playlist button (labelled p) in a track header in the editor window. Clicking the button will popup a menu with the following choices:

+
+
(Local Playlists)
+
Shows all of the playlists associated with this track, and indicates the currently selected playlist
+
Rename
+
Pops up a dialog that allows the current playlist to be renamed
+
New
+
Creates a new empty playlist, and switches this track to use it
+
New Copy
+
Creates a new playlist that is a copy of the current playlist, and switches this track to use it
+
Clear Current
+
Removes all regions from the current playlist
+
Select from All
+
pops up a playlist browser to manually choose which playlist this track should use ( you can even select playlists from other tracks here)
+
+

Renaming Playlists

+

Playlists are created with the name of the track of which they are associated, plus a version number. So, the first playlist for a track called "Cowbell" will be called "Cowbell.1". This name will be used to define the names of any regions added to the playlist by recording. You can change the name at any time, to anything you want. Ardour does not require that your playlist names are all unique, but it will make your life easier if they are. Suggested examples of user-assigned names for a playlist might include "Lead Guitar, 2nd take", "vocals (quiet)", and "downbeat cuica". Notice how these might be different from the associated track names, which for these examples might be "Lead Guitar", "Vocals" and "Cuica". The playlist name provides more information because it is about a specific version of the material that may (or may not) end up in the final version of the track.

+

If you are going to rename your playlists, do so before recording new material to them.

+

Sharing Playlists

+

It is entirely possible to share playlists between tracks. The only slightly unusual thing you may notice when sharing is that edits to the playlist made in one track will magically appear in the other. If you think about this for a moment, its an obvious consequence of sharing. One application of this attribute is parrallel processing, described below.

+

You might not want this kind of behaviour, even though you still want two tracks to use the same (or substantially the same) playlist. To accomplish this, select the chosen playlist in the second track, and then use New Copy to generate an independent copy of it for that track. You can then edit this playlist without affecting the original.

+

Using Playlists for "Parallel Processing"

+

One of the uses of Playlists is to apply multiple effects to the same audio stream. For example, let's say you have a track and you'd like to apply a second set of effects, at the same time to the original track. In this case you could make a new track, select the original track's Playlist, and then apply different effects to the second track than the first (including panning, inserts, and bussing changes). Now, if you edit either of the track's playlists, the changes will appear in both tracks.

+

Using Playlists for "Takes"

+

Using Playlists for takes is a good solution if you are going to need the ability to edit individual takes, and select between them, but you won't be "compositing" multiple takes together. This might be the case if you were recording multiple languages of a given track, and you want to use the same "track" for each language so that they get the same processing. Then you select each language before exporting the mix for each separate language.

+

You use the Clear Current operation each time you want to start a new take. This is a non-destructive operation that removes all existing regions from the current playlist. Although you won't lose any information doing this, its probably not appropriate unless the last take was so awful that you want to discard it (although without the finality of Remove Last Capture ). Finally, and probably most useful, you can use the New operation in the playlist button menu to create a new empty playlist, ready for the next take. Later, you can Select your way back to previous or later takes as desired, either in this or some other track.

+

If you want to record multiple takes and then "comp" between them, it is probably better to simply record each successive take on top of the others in "layers" and then edit them using the layer tools, explained later.

+ diff --git a/_manual/09_working-with-playlists/02_understanding-playlists.html b/_manual/09_working-with-playlists/02_understanding-playlists.html new file mode 100644 index 0000000..b8e5ed9 --- /dev/null +++ b/_manual/09_working-with-playlists/02_understanding-playlists.html @@ -0,0 +1,16 @@ +--- +layout: default +title: Understanding Playlists +--- + + + + +

A playlist is a list of regions ordered in time. It defines which parts of which source files should be played and when. Playlists are a fairly advanced topic, and can be safely ignored for many types of audio production, however the use of playlists allows the audio engineer more flexibility for tasks like multiple takes of a single instrument, alternate edits of a given recording, parallel effects such as reverb or compression, and other tasks.

+

Each audio track in Ardour is really just a mechanism for taking a playlist and generating the audio stream that it represents. As a result, editing a track really means modifying its playlist in some way. Since a playlist is a list of regions, most of the modifications involve manipulating regions: their position, length and so forth. This is covered in the chapter about regions. Here, we cover some of the things you can do with playlists as objects in their own right.

+

Tracks are not Playlists

+

It is important to understand that a track is not a playlist. A track has a playlist. A track is a mechanism for generating the audio stream represented by the playlist and passing it through a signal processing pathway. At any point in time, a track has a single playlist associated with it. When the track is used to record, that playlist will have one or more new regions added to it. When the track is used for playback, the contents of the playlist will be heard. You can change the playlist associated with a track at (almost) any time, and even share playlists between tracks.

+

If you have some experience of other DAWs, then you might have come across the term "virtual track", normally defined as a track that isn't actually playing or doing anything, but can be mapped/assigned to a "real track". This concept is functionally identical to Ardour's playlists. We just like to be little more clear about what is actually happening rather than mixing old and new terminology ("virtual" and "track") into confusing terminology.

+

Playlists are Cheap

+

One thing you should be clear about is that playlists are cheap. They don't cost anything in terms of CPU consumption, and they have very minimal efforts on memory use. Don't be afraid of generating new playlists whenever you want to. They are not equivalent to tracks, which require extra CPU time and significant memory space, or audio files, which use disk space, or to plugins that require extra CPU time. If a playlist is not in use, it occupies a small amount of memory, and nothing more.

+ diff --git a/_manual/10_working-with-tracks.html b/_manual/10_working-with-tracks.html new file mode 100644 index 0000000..3a2f0ef --- /dev/null +++ b/_manual/10_working-with-tracks.html @@ -0,0 +1,21 @@ +--- +layout: default +title: Working with Tracks +--- + + + + +

This chapter covers the following:

+ + + + + + + + + + + +{% children %} diff --git a/_manual/10_working-with-tracks/01_track-types.html b/_manual/10_working-with-tracks/01_track-types.html new file mode 100644 index 0000000..0fd7285 --- /dev/null +++ b/_manual/10_working-with-tracks/01_track-types.html @@ -0,0 +1,41 @@ +--- +layout: default +title: Track Types +--- + + + +

Data Type

+

An Ardour track can be either ‘audio’ or ‘MIDI’. The only real difference between the two is the type of data that the track will record and play back. Either type of track can pass either type of data. Hence, for example, one might have a MIDI track that contains an instrument plugin; such a track would record and playback MIDI data from disk but would produce audio, since the instrument would turn the one into the other.

+

Nevertheless, when adding tracks to a session, you typically have an idea of what you need to use the new tracks for, and Ardour offers you three choices:

+
+
Audio Tracks
+
an Audio Track is created with a user-specified number of inputs. The number of outputs is defined by the master bus channel count (see "Channel Configuration" below for more on this), This is the type of bus to use when planning to work with existing or newly recorded audio.
+
MIDI Tracks
+
A MIDI track is created with a single MIDI input, and a single MIDI output. This is the type of track to use when planning to record and playback MIDI, whether or not the MIDI will be processed by instrument plugins or sent to other applications or external MIDI hardware. If/when you add an instrument plugin, the output configuration of a MIDI track will be changed to have audio outputs to deliver the signal from the instrument to other parts of Ardour.
+
Audio/MIDI Tracks
+
There are a few notable plugins that can usefully accept both audio and MIDI data (Reaktor is one, and various "auto-tune" like plugins are another example. It can be tricky to configure this type of track manually, so Ardour allows you to select this track type specifically for use when working with such plugins. It is not generally the right choice when working normal MIDI tracks, and a dialog will warn you of this.
+
+

Track Modes

+

Audio tracks in Ardour can have a "mode" which affects how they behave when recording.

+
+
Normal
+
Tracks using this mode will record non-destructively - new data is written to new files, and when overdubbing, new regions will be layered on top of existing ones (with or without crossfades. This is the recommended mode for most workflows. +
+
Non-Layered
+
Tracks using this mode will record non-destructively - new data is written to new files, but when overdubbing if new regions overlap existing regions, the existing regions are trimmed so that there are no overlaps. This can be a very useful way of working with spoken word material, especially in combination with push/pull trimming. +
+
Tape
+
Tracks using this mode do destructive recording: all data is recorded to a single file and if you overdub a section of existing data, the existing data is destroyed (irrevocably - there is no undo). Fixed crossfades are added at every punch in and out point. This mode can be useful for certain kinds of dubbing workflows, but it not suggested for normal use.
+
+

Below is a screenshot that shows the subtly different results of an overdub in normal and non-layered mode. Both tracks were created using identical audio data. The upper track is in normal mode, and the overdub (the middle shorter region) has created a new region which if you look carefully has been layered on top of the the existing (longer) region. The lower track is in non-layered mode, and rather than overlay the overdub region, it split the existing region and inserted the new one in between.

+

normal and non-layered overdubbing comparision

+


Channel Configuration

+

+

Ardour tracks can have any number of inputs and any number of outputs, and the number of either can be changed at any time (subject to restrictions caused by any plugins in a track). However it is useful to not have to configure this sort of thing for the most common cases, and so the Add Tracks dialog allows you to select "Mono", "Stereo" and few other typical configurations.

+

What does Mono or Stereo actually mean?

+

Given that tracks have a certain number of inputs and a certain number of outputs and that these numbers may not necessarily be the same, it is not immediately clear what terms like "Mono" or "Stereo" mean. Most people will know that they refer to "1 channel" and "2 channels" in some way, but this leaves room for interpretation. 1 input channel? 2 output channels?

+

If you are using Ardour's default mode of automatically connecting track (and bus) inputs and outputs, then the designation "Mono" or "Stereo" refers to the input of the track. A Mono track will have a single input and a Stereo track will have two inputs.

+

The number of outputs for each will be determined by the number of inputs of the master bus, to which the track outputs will be connected. So in the most common case, using a 2 channel master bus, a Mono track has 1 input and 2 outputs that are connected to the master; a Stereo track has 2 inputs and 2 outputs that are connected to the master.

+

However, if you choose not to have Ardour make connections automatically, then tracks will be left disconnected by default. In this scenario, a Mono track has 1 input and 1 output, and a stereo track has 2 inputs and 2 outputs. It is up to you to connect them as you wish. This is not a particularly useful way to work unless you are doing something fairly unusual with signal routing and processing. It is almost always preferable to leave Ardour to make connections automatically, even if you later change them manually.

+ diff --git a/_manual/10_working-with-tracks/02_adding-tracks.html b/_manual/10_working-with-tracks/02_adding-tracks.html new file mode 100644 index 0000000..1f7749a --- /dev/null +++ b/_manual/10_working-with-tracks/02_adding-tracks.html @@ -0,0 +1,34 @@ +--- +layout: default +title: Adding Tracks +--- + + + +

Adding and removing tracks

+

A track or bus can be added to a session in various ways:

+
    +
  • Choose Add Track or Bus… from the Track menu. +
  • +
  • Right-click in an empty part of the track controls area. +
  • +
  • Click the + button underneath the list of tracks in the mixer. +
  • +
+

Any of these actions will open the Add Track or Bus dialogue,

+

the add-track dialog

+

From here, you can select firstly the number of tracks or busses to add, and the type; audio track, MIDI track or bus. There are also some options, which vary depending on the type of thing you are creating.

+

These options are:

+
+
Configuration (for audio tracks and busses)
+
this is the number of input and outputs the track is set up with. You can always change these counts later.
+
Track mode (for audio tracks)
+
this can be ‘normal’, ‘non-layered’ or ‘tape’.
+
Group
+
tracks and busses can be put into groups so that a selected range of operations are applied to all members of a group at the same time (selecting record enable, or editing, for example). This option allows you to specify an existing group to add the new track(s) or bus(ses) to, or to create a new group to put the new things in.
+
Instrument (for MIDI tracks)
+
this is a short-cut to allow you to create a MIDI track with an instrument plugin already added to it. You can achieve the same effect by creating a MIDI track with no plugins and adding it yourself; this option just makes things slightly quicker.
+
+

Adding tracks will add them to both the editor and mixer windows; the editor window shows the timeline, with any recorded data, and the mixer shows just the processing elements of the track (its plugins, fader and so on).

+

Tracks and busses can be removed by selecting them, right-clicking and choosing ‘Remove’ from the menu. A warning dialogue will pop up, as track removal cannot be undone; use this option with care!

+ diff --git a/_manual/10_working-with-tracks/03_selecting-tracks.html b/_manual/10_working-with-tracks/03_selecting-tracks.html new file mode 100644 index 0000000..e671b3c --- /dev/null +++ b/_manual/10_working-with-tracks/03_selecting-tracks.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Selecting Tracks +--- + + + + + +{% children %} diff --git a/_manual/10_working-with-tracks/03_selecting-tracks/01_region-and-track-selection.html b/_manual/10_working-with-tracks/03_selecting-tracks/01_region-and-track-selection.html new file mode 100644 index 0000000..e91707b --- /dev/null +++ b/_manual/10_working-with-tracks/03_selecting-tracks/01_region-and-track-selection.html @@ -0,0 +1,11 @@ +--- +layout: default +title: Region and Track Selection +--- + + + +

By default, selecting regions has no impact on track selection. You can select a track, then select a region in another track (or vice versa) and both selections will co-exist happily. Operations that are applied to tracks will use the track selection, and those that apply to regions will use the region selection. Similarly,. deselecting a region will not deselect the track it is in (if that track was selected).

+

In some workflows, and particularly if you have experience of some other DAWs, this is not the most comfortable way to work. You may prefer to work in a style where selecting a region will also select the track that the region is in. Similarly, when the last selected region in a track is deselected, the track will also become unselected.

+

To control this behaviour, set Edit > Preferences > Editor > Link selection of regions and tracks.

+ diff --git a/_manual/10_working-with-tracks/04_controlling-track-appearance.html b/_manual/10_working-with-tracks/04_controlling-track-appearance.html new file mode 100644 index 0000000..b5a17a2 --- /dev/null +++ b/_manual/10_working-with-tracks/04_controlling-track-appearance.html @@ -0,0 +1,40 @@ +--- +layout: default +title: Controlling Track Appearance +--- + + + +

Ardour offers many options for controlling the specific appearance of tracks, including color, height, waveform style and more.

+

Global Options

+

These can all be found via Edit > Preferences > Editor

+
+
Show meters on tracks in the editor
+
By default, ardour will put meters in the track header in the editor window. Disable this option to avoid this.
+
Show waveforms in regons
+
By default, ardour will draw waveforms within audio regions. Disable this option to avoid this.
+
Waveform scale
+
+
+
Linear
+
+
Logarithmic
+
+
+
+
Waveform shape
+
+
+
Traditional
+
Waveforms are drawn as positive and negative heights above and below a "zero" line
+
Rectified
+
Waveforms are show as absolute heights above a "zero" line
+
+
+
+

Per-Track or per-group options are covered below:

+ + + + +{% children %} diff --git a/_manual/10_working-with-tracks/04_controlling-track-appearance/01_layering-display.html b/_manual/10_working-with-tracks/04_controlling-track-appearance/01_layering-display.html new file mode 100644 index 0000000..37b1ee2 --- /dev/null +++ b/_manual/10_working-with-tracks/04_controlling-track-appearance/01_layering-display.html @@ -0,0 +1,17 @@ +--- +layout: default +title: Layering Display +--- + + + +

Ardour allows arbitrary layering of regions - you can stack as you wish in a given position. By default, the editor windows draws them overlapping, which has the big benefit that is very economical in terms of using vertical space.

+

In this drawing mode however, working with a track that has many overdubs can sometimes be a little confusing because its not always entirely clear how the overdubs are all layered with respect to each other. Although there are other methods of moving particular regions to the top of an overlapping set, and although Ardour also has playlists to let you manage takes a bit more efficiently than just continually overdubbing, there are times when being able to clearly see all regions in a track without any overlaps is reassuring and potentially useful.

+

Here is an image of a track with a rather drastic overdub/overlap situation, viewed in normal "overlaid" mode:

+

overlapping regions in overlaid mode

+

To change this display, right click on the track header, and you'll see this menu:

+

layer display menu

+

You will see that there are two choices for "Layers": overlaid (currently selected) and stacked. Click on stacked and the track display changes to this:

+

overlapping regions in stacked mode

+

You can still move regions around as usual, and in fact you can even drag them so that they overlay each again, but when you release the mouse button, things will flip back to them being all stacked cleaning. This display mode works best when you use sensible track heights. The number of "lanes" for the track is determined by the maximum number of regions existing in any one spot throughout the track, so if you have really stacked up 10 overdubs in one spot, you'll end up with 10 lanes. Obviously, using a large track height works much better for this than a small one.

+ diff --git a/_manual/10_working-with-tracks/04_controlling-track-appearance/02_track-coloring.html b/_manual/10_working-with-tracks/04_controlling-track-appearance/02_track-coloring.html new file mode 100644 index 0000000..4385b31 --- /dev/null +++ b/_manual/10_working-with-tracks/04_controlling-track-appearance/02_track-coloring.html @@ -0,0 +1,17 @@ +--- +layout: default +title: Track Coloring +--- + + + +

Track Color

+

New tracks in Ardour are assigned a random color from a somewhat pastel-like color spectrum, so they should never end up being particularly bright or particularly dark.

+

Changing the color of specific tracks

+

Select the tracks whose color you wish to change. Context-click on the track header of one of them. From the context menu, select "Color". A color dialog will appear. Choose the new color for the track, and click "OK" in the dialog. Every selected track will be recolored, both in the editor and mixer window.

+

Note that if you are only changing one track, context-clicking on that track's header will be enough to select it, saving the extra mouse click.

+

Changing the color of all tracks in a group

+

Tracks that belong to a track/bus group can share the color of the group by enabling the Color option for the group.

+

When this is enabled, you can change the color of the entire group by following the process described above for specific tracks - the new color will be used by all tracks in the group.

+

You can also explicitly change the group color by context-clicking on the group tab, selecting Edit Group... and then clicking on the Color selector in the dialog that is displayed. After you click "OK" in the color dialog that is provided for picking the color, all tracks in the group will be recolored to match the group color.

+ diff --git a/_manual/10_working-with-tracks/04_controlling-track-appearance/03_track-height.html b/_manual/10_working-with-tracks/04_controlling-track-appearance/03_track-height.html new file mode 100644 index 0000000..76817a1 --- /dev/null +++ b/_manual/10_working-with-tracks/04_controlling-track-appearance/03_track-height.html @@ -0,0 +1,15 @@ +--- +layout: default +title: Track Height +--- + + + +

Changing Track Height from the Header Context menu

+

Context clicking on the track header will select a track and display a conttext menu that includes the Height choice. Choose this, and a submenu will appear containg a number of preset heights. Choose one of them, and all selected tracks will be redrawn using that height.

+

Changing Track Height by dragging the track header

+

Select the tracks you wish to resize. Move the pointer to the bottom edge of the track header. The cursor will change to a 2-way vertical arrow shape. Left-click-drag to dynamically resize all selected tracks.

+

Making Track Heights fit the Editor Window

+

Select the tracks you wish to display in the Editor window. Choose Track > Height > Fit Selected Tracks (or use its shortcut, default is f). The tracks are resized and the editor track view is scrolled so that the selected tracks completely fill the vertical space available.

+

You can use Visual Undo (default bindng: Shift-z to undo this operation.

+ diff --git a/_manual/10_working-with-tracks/05_controlling-track-ordering.html b/_manual/10_working-with-tracks/05_controlling-track-ordering.html new file mode 100644 index 0000000..0e5d428 --- /dev/null +++ b/_manual/10_working-with-tracks/05_controlling-track-ordering.html @@ -0,0 +1,38 @@ +--- +layout: default +title: Controlling Track Ordering +--- + + + +

Ardour does not impose any particular ordering of tracks and busses in either the editor or mixer windows. The default arrangement is as follows:

+

Editor default arrangement

+
    +
  • Master bus on top
  • +
  • Tracks in the order they are added below, including busses
  • +
  • Even if you use a Monitor section, it is never visible in the editor window. +
  • +
+

Mixer default arrangement

+
    +
  • Tracks in the order they are added, from left to right +
  • +
  • Master bus on the right, in its own pane so that it is always visible no matter how other mixer strips are scrolled. +
  • +
  • If a Monitor section is used, that is at the right edge of the mixer window (it can be torn off, too) +
  • +
+

Synchronizing Editor and Mixer Window Ordering

+

By default the ordering within the editor and mixer windows is synchronized: if you reorder in one window, the ordering in the other window will change. You can disable this via Edit > Preferences > Editor > Synchronize Editor and Mixer Track Order. When disabled, the ordering both both windows is totally indepedent of the other.

+

Reordering Specific Tracks...

+

... in the Editor Window, via the Keyboard

+

Select the tracks you want to move. Then use Track > Move Selected Tracks Up (↑) or Track > Move Selected Tracks Down (↓) to move the selected track(s) up or down in the editor window.

+

... in the Editor Window, via Drag-n-Drop

+

Make the Editor Lists visible. Select the Tracks & Busses tab. In the browser there, you can freely drag-and-drop tracks and busses into any order you prefer.

+

... in the Editor Window, via Drag-n-Drop

+

Within the "Strips" browser in the upper left area of the Mixer window, you can freely drag-and-drop tracks and busses into any order you prefer.

+

"Collecting" Group Members together

+

Tracks and Busses that are members of a group can be reordered so that they display contiguously within the Editor and Mixer windows. Context-click on the group tab and choose "Collect".

+ + +{% children %} diff --git a/_manual/10_working-with-tracks/05_controlling-track-ordering/01_track-ordering-and-remote-control-ids.html b/_manual/10_working-with-tracks/05_controlling-track-ordering/01_track-ordering-and-remote-control-ids.html new file mode 100644 index 0000000..50a7746 --- /dev/null +++ b/_manual/10_working-with-tracks/05_controlling-track-ordering/01_track-ordering-and-remote-control-ids.html @@ -0,0 +1,21 @@ +--- +layout: default +title: Track Ordering and Remote Control IDs +--- + + + +

Every track and bus in Ardour is assigned a remote control ID. When various protocols such as Mackie Control or OSC are used to control Ardour, these remote control IDs are used to identify which track(s) or buss(es) are the intended target of the commands.

+

By default, remote ID's will be assigned to tracks and busses in the order that they are created, starting from 1. The master bus and monitor section have their own unique IDs (318 and 319).

+

Ardour provides 3 methods to control remote control IDs, which can be chosen via Edit > Preferences > User Interaction:

+
+
Follow order of editor
+
When enabled, remote control IDs will be reset to match the editor window order, so that the leftmost track/bus has RID 1. Manual assignment of RIDs is not possible.
+
Follow order of mixer
+
When enabled, remote control IDs will be reset to match the mixer window order, so that the leftmost track/bus has RID 1. Manual assignment of RIDs is not possible.
+
Assigned by user
+
When enabled, the remote control ID is completely independent of the ordering in either window, and RID's may be changed manually by the user.
+
+
+

 

+ diff --git a/_manual/10_working-with-tracks/06_bus-controls.html b/_manual/10_working-with-tracks/06_bus-controls.html new file mode 100644 index 0000000..62d2157 --- /dev/null +++ b/_manual/10_working-with-tracks/06_bus-controls.html @@ -0,0 +1,22 @@ +--- +layout: default +title: Bus Controls +--- + + + +

A typical control area for a bus is shown below:

+

bus controls

+

At the top-left of the controls is the name of the bus. This can be edited directly to whatever is suitable, although the name must be unique within the session. Underneath the name is a copy of the bus' main level fader. The control buttons to the right-hand side are:

+
+
m
+
mute. left-click to mute the bus. Right-click to display a menu which dictates what particular parts of the bus should be muted.
+
s
+
solo — solo the bus. The behaviour of the solo system is described in detail in the section called “Mute and solo”.
+
a
+
automation — click to open a menu related to automation for the bus. Automation is covered in Chapter 9, Automation.
+
g
+
group — click to open a menu related to the bus group, as discussed in the section called “Track and bus groups” above.
+
+

 

+ diff --git a/_manual/10_working-with-tracks/07_audio-track-controls.html b/_manual/10_working-with-tracks/07_audio-track-controls.html new file mode 100644 index 0000000..0381189 --- /dev/null +++ b/_manual/10_working-with-tracks/07_audio-track-controls.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Audio Track Controls +--- + + + +

A typical control area for an audio track is shown below:

+

audio track controls

+

An audio track has the same controls as a bus, with the addition of two extras. The red button with the pink circle is the track's record enable. When this is clicked it will gain a bright red outline, and the track will then be recorded onto when the main session record enable is turned on with the transport rolling.

+

The ‘p’ button below the record enable will open a playlist menu when clicked. The menu offers various operations related to the track's playlist. This, as you will recall, is simply a list of the regions that the track should play. Playlists may be swapped on a given track, and may be used by more than one track at the same time. They are often useful to keep different takes, for example, or to allow one set of regions to be played off two tracks with different processing.

+ diff --git a/_manual/10_working-with-tracks/08_midi-track-controls.html b/_manual/10_working-with-tracks/08_midi-track-controls.html new file mode 100644 index 0000000..b0b45d0 --- /dev/null +++ b/_manual/10_working-with-tracks/08_midi-track-controls.html @@ -0,0 +1,13 @@ +--- +layout: default +title: MIDI Track Controls +--- + + + +

A typical control area for a MIDI track is shown below:

+

midi track controls

+

The MIDI track example is shown at a greater height than the other examples, as with MIDI tracks there are some control elements which only appear when there is sufficient vertical space to fit them in.

+

A MIDI track has the same basic controls as an audio track, with the addition of two extra elements. The set of buttons below the main track controls controls the MIDI channels that should be visible in the editor. A MIDI track's data may span any number of the 16 available MIDI channels, and sometimes it is useful to view only a subset of those channels; different instruments may, for example, be put on different MIDI channels. Clicking on a channel number toggles its visibility.

+

To the right of the MIDI track controls is a representation of a piano keyboard called the ‘scroomer’. This performs a couple of functions. Firstly, the scroll-bar controls the range of pitches that are visible on the track. Dragging the scroll-bar body up and down scrolls up and down through the visible pitches, and dragging the scroll-bar ‘handles’ zooms in and out, so that more or fewer pitches are visible. The piano keyboard gives a reference for the pitches that the track is displaying. In addition, clicking on the notes will generate the corresponding MIDI note in the track.

+ diff --git a/_manual/10_working-with-tracks/09_the-track-context-menu.html b/_manual/10_working-with-tracks/09_the-track-context-menu.html new file mode 100644 index 0000000..64bb9ab --- /dev/null +++ b/_manual/10_working-with-tracks/09_the-track-context-menu.html @@ -0,0 +1,65 @@ +--- +layout: default +title: The Track Context Menu +--- + + + +

Within the editor window, context-clicking on either a region or empty space within a track will popup the track context menu, which provides easy access to many track-level operations.

+

If you click on a region, the first item in the menu will the name of the region. If there are more than one regions stacked where you clicked, this will be followed by an item called Choose Top. If selected, you will see a dialog that allows you to reorder the stacking of layers at that point. See Adjusting Region Layering for more details.

+

The rest of the track context menu is structured as follows:

+
+
Play
+
+
+
Play from Edit Point
+
Play from the location of the current edit point.
+
Play from Start
+
Play from the start of the session
+
Play Region(s)
+
Plays the duration of the session from the start of the earliest selected region to the end of the latest selected region
+
+
+
Select
+
+
+
Select All in Track
+
Select All
+
Invert Selection in Track
+
Invert Selection
+
Set Range to Loop Range
+
Set Range to Punch Range
+
Select All After Edit Point
+
Select All Before Edit Point
+
Select All After Playhead
+
Select All Before Playhead
+
Select All Between Playhead and Edit Point
+
Select All Within Playhead and Edit Point
+
Select Range Between Playhead and Edit Point
+
+
+
Edit
+
+
+
Cut
+
Copy
+
Paste
+
Align
+
Align Relative
+
+
+
Insert Selected Region
+
Insert Existing Media
+
Nudge
+
+
+
Nudge Entire Track Later
+
Nudge Track After Edit Point Later
+
Nudge Entire Track Earlier
+
Nudge Track After Edit Point Earlier
+
+
+
Freeze
+
+

 

+ diff --git a/_manual/10_working-with-tracks/10_track-and-bus-groups.html b/_manual/10_working-with-tracks/10_track-and-bus-groups.html new file mode 100644 index 0000000..e13e2cf --- /dev/null +++ b/_manual/10_working-with-tracks/10_track-and-bus-groups.html @@ -0,0 +1,68 @@ +--- +layout: default +title: Track and Bus Groups +--- + + + +

Tracks and busses can be put into groups. The members of a group can be set to share various settings, which can be useful for managing tracks which are closely related to each other. Examples might include tracks that contain multiple-microphone recordings of a single source (an acoustic guitar, perhaps, or a drum-kit).

+

You can put tracks and busses into groups in various ways. In the editor window, a track's controls might look like these:

+

track headers for a group

+

The green tab to the left of the track header indicates that this track is in a group called ‘Fred’. These tabs can be dragged in the editor window to add to or remove tracks from groups.

+

Creating New Groups

+

There are several ways to create track/bus groups:

+

Context-click on the group tab and use one of the "Create..." options there. You can create a group with no members, or one that starts with the currently selected tracks, or record-enabled tracks, or soloed tracks as it members.

+

Alternatively, clicking the ‘g’ button on a track header opens a menu which gives a list of the available groups; selecting one of these groups will add the track or bus to that group. This menu also allows a new group to be created.

+

Finally, the Groups tab of the Editor Lists or the Mixer Window has a "+" button at the bottom of the list that can be clicked upon to create a new group.

+

Removing Groups

+

Context-click on a group tab and select Remove Group from the menu. Removing a group does not remove the members of a group.

+

You can also remove groups by selecting them in the Groups tab of the Editor Lists or Mixer Window and then pressing the "-" button at the bottom of the list.

+

Adding/Removing Tracks and Busses to a Group

+

Clicking the ‘g’ button opens a menu which gives a list of the available groups; selecting one of these groups will add the track or bus to that group. Selecting "No Group" will remove it.

+

You can also drag a group tab to add or remove tracks from the group.

+

Activating/Deactivating Groups via the group tab

+

Clicking on a group tab will toggle the group between being active and inactive. An inactive group will have no effect when editing its members. An active group will share 1 or more properties across its members. Tabs for disabled groups are coloured grey.

+

Modifying Group Properties

+

The properties of a group can be edited by right-clicking on its tab and choosing Edit Group…. This will open the track/bus group dialogue, which is also used when creating new groups:

+

the track/bus group dialog

+

Group Color

+

Clicking on the color selector button allows the group's colour can be changed. This affects the colour of the group's tab in the editor and mixer windows. The color does not affect the color of the group members unless you also enable the shared Color property.

+

Following these options are a list of the things that the members of the group can share.

+

Shared Properties

+

Gain means that the track faders will be synced to always have the same value; ‘Relative’ means that the gain changes are applied relative to each member's current value. If, for example, there are two tracks in a group with relative gain sharing, and their faders are set to -3dB and -1dB, a change of the first track to a gain of -6dB will result in the second track having a gain of -4dB (so that the difference in gains is the same).

+

Muting, soloing, record enable, route active state, colour and monitoring are all straightforward; they simply mean that all member tracks or busses will share the same settings in these respects. See Working With Tracks for more on these properties.

+

Selection means that if a region is selected or deselected on one constituent track, corresponding regions on other member tracks will be similarly selected. Corresponding regions are those that are at the same position and have the same length. Since region editing operations are applied to all currently selected regions, this is the way to make edits apply across all tracks in the group.

+

Group Tab Context Menu

+

Context-clicking on the group tab offers a further menu of group-related actions.

+
+
Create a New Group
+
create a new group
+
Create New Group from...
+
create a new group and automatically add ... +
+
Selected
+
all currently selected tracks and busses
+
Rec-enabled
+
all currently record-enabled tracks
+
Soloed
+
all currently soloed tracks and busses
+
+
+
Collect Group
+
moves all the member tracks so that they are together in the editor window
+
Remove Group
+
removes the group (and only the group, not its members).
+
Add New Subgroup Bus
+
creates a bus (giving it the name of the group) and connects the output of each member to the new bus. +
+
Add New Aux Bus
+
adds a bus and gives each member a send to that bus. There are two options for this, specifying whether the sends should be placed pre- or post-fader.
+
Fit to Window
+
will zoom the member tracks so that they fill the editor window.
+
Enable All Groups
+
makes all group active, including any hidden groups.
+
Disable All Groups
+
makes all groups inactive, including any hidden groups.
+
+

 

+ diff --git a/_manual/11_working-with-plugins.html b/_manual/11_working-with-plugins.html new file mode 100644 index 0000000..e56adf5 --- /dev/null +++ b/_manual/11_working-with-plugins.html @@ -0,0 +1,37 @@ +--- +layout: default +title: Working with Plugins +--- + + + +

Plugins are bits of software that get loaded by Ardour in order to:

+
    +
  • Create various audio or MIDI effects +
  • +
  • Generate audio by functioning as "software instruments" +
  • +
+

Plugins are written by 3rd parties, and Ardour supports a variety of different plugin standards:

+
+
LADSPA
+
An early, simple, lightweight plugin API, audio effects only, plugins have no editors/GUI of their own
+
LV2
+
An extensible, full-featured plugin API, audio and MIDI, plugins can provide their own editors/GUIs
+
AudioUnit
+
OS X only, full featured, audio and MIDI, plugins can provide their own GUI
+
Linux VST
+
Plugins using Steinberg's VST plugin standard but compiled specifically for Linux
+
Windows VST
+
Plugins using Steinberg's VST plugin standard but compiled for Windows. Support for this plugin format is not available in regular builds of Ardour. Read more... +
+
+

Adding/Removing/Copying Plugins

+

Within Ardour, plugins are just another type of Processor and so the techniques for adding/removing/copying/moving processors apply to plugins as well. These techniques are covered on the Processor Box page.

+ + + + + + +{% children %} diff --git a/_manual/11_working-with-plugins/01_managing-plugin-presets.html b/_manual/11_working-with-plugins/01_managing-plugin-presets.html new file mode 100644 index 0000000..d744fbd --- /dev/null +++ b/_manual/11_working-with-plugins/01_managing-plugin-presets.html @@ -0,0 +1,21 @@ +--- +layout: default +title: Managing Plugin Presets +--- + + + +

All plugin editors, whether they are created by Ardour or by the plugin, have a common set of controls at the top of their window. These include 4 controls for managing plugin presets.

+

What is a Plugin preset?

+

A preset for a plugin is simply a saved set of values for all of a plugin's parameters. If you load a preset, you are restoring all the parameters within that plugin to the values stored in the preset. This is an easy, fast way to manage your preferred settings for particular plugins.

+

The Preset Selector

+

The preset selector is a regular selector that can be clicked to display a list of all known presets for this plugin. This will include presets that you have created yourself, and for some plugin formats, presets that come with the plugin itself.

+

To load a new preset

+

Click on the preset selector to popup a menu showing the names of all available presets. Click on the name of the preset you wish to load. The preset will be loaded - you may see various controls in the plugin editor change to reflect the new value of some or all parameters.

+

Creating Presets

+

To save the current plugin settings as a new preset, click on the "Add" button at the top of the window. A dialog will appear to ask for the name of the preset. Enter the desired name, and then click the "OK" button in the dialog. The preset selector will now show the name you have just entered.

+

Saving a Preset

+

If you wish to modify the settings in an existing preset, use the preset selector to load the preset. Then adjust the settings as you wish. When done, click the "Save" button and the new values will be stored, overwriting the previous version of this preset.

+

To delete a preset

+

To delete an existing preset, use the preset selector to load the preset. Click the "Delete" button, and the preset will be removed. The preset selector will be blank, showing that no preset is currently loaded (although the settings will stay as they were).

+ diff --git a/_manual/11_working-with-plugins/02_the-plugin-manager.html b/_manual/11_working-with-plugins/02_the-plugin-manager.html new file mode 100644 index 0000000..891a805 --- /dev/null +++ b/_manual/11_working-with-plugins/02_the-plugin-manager.html @@ -0,0 +1,8 @@ +--- +layout: default +title: The Plugin Manager +--- + + + + diff --git a/_manual/11_working-with-plugins/03_the-processor-box.html b/_manual/11_working-with-plugins/03_the-processor-box.html new file mode 100644 index 0000000..577aa32 --- /dev/null +++ b/_manual/11_working-with-plugins/03_the-processor-box.html @@ -0,0 +1,28 @@ +--- +layout: default +title: The Processor Box +--- + + + +

A ‘processor’ is a thing which treats the signal in some way. Ardour provides several builtin processors, such as the "fader" processor which controls the gain (volume) of a track or bus. Processors can also be plugins used for effects or as instruments, as well as sends/inserts which are used to change signal routing. The arrangement of processors is arbitrary, and there is no limit to how many there can be.

+

The main box in the top half of a mixer strip shows the processor list. Processors are shown as coloured rectangles, with a small ‘LED’ beside them; this indicates whether or not the plugin is enabled, and can be clicked to enable or disable a processor. The colour of the processor depends on its location in the sequence; processors that occur before the fader are coloured in red, and those after are coloured green (in the default theme).

+

The processor box will always contain a blue processor called ‘Fader’. This indicates where in the processor chain the main volume fader is located — this is the fader shown in the lower half of the strip.

+

To Reorder (Move) Processors

+

Processors can be re-ordered using drag-and-drop. Dragging a processor allows it to be moved around within the chain, or copied to another processor list on another track or bus.

+

To Enable/Disable a Processor

+

To the left of the name of each processor is a small LED symbol; if this is lit-up, the processor is active. Clicking on it will deactivate the processor. It will still pass audio or MIDI signals, but they will not be affected.

+

Adding Processors

+

Finally, processors can be added to or removed from the chain. Right-clicking the processor list does three things:

+
    +
  • A gap is opened up to indicate the location of the click. The gap shows where any new processors will be inserted. +
  • +
  • The processor under the click is selected. +
  • +
  • A menu is presented giving options of what to do. +
  • +
+

From the menu, some new processors can be inserted.

+

Removing Processors

+

Context-click on the processor you want to remove.

+ diff --git a/_manual/11_working-with-plugins/04_windows-vst-support.html b/_manual/11_working-with-plugins/04_windows-vst-support.html new file mode 100644 index 0000000..d81a785 --- /dev/null +++ b/_manual/11_working-with-plugins/04_windows-vst-support.html @@ -0,0 +1,21 @@ +--- +layout: default +title: Windows VST Support +--- + + + +

Thanks to the combined work of Torben Hohn, Kjetil Mattheusen, Paul Davis and a few other developers, it is possible to use Windows VST plugins (that is, plugins in VST format built and distributed for the Windows platforms) on Ardour running on Linux. (Note: there is no VST support of any kind on OS X).

+

However, doing so has three substantial downsides:

+
    +
  • It requires a special build of Ardour that is fundamentally very different from normal builds. +
  • +
  • Support is reliant on Wine, a Windows "emulator". +
  • +
  • As usual with plugins, crashes in the plugin will crash Ardour. And crashes in Windows VST plugins are more likely when used in this way. +
  • +
+

The dependence on Wine makes it almost impossible for the Ardour project to support this feature. Wine's functionality generally improves over time, but any given release of Wine may behave worse with some or all Windows VST plugins. It may even just crash Ardour completely.

+

Step back and think about what "using Windows VSTs" really means: taking bits of software written with only one idea in mind - running on the Windows platform - and then trying to use them on an entirely different platform. It is a bit of a miracle (largely thanks to the incredible work done by the Wine project) that it works at all. But is this the basis of a stable, reliable DAW for a non-Windows platform? Getting Ardour on Linux to pretend that its really a Windows application running on Windows?

+

We understand that there are many outstanding plugins available as Windows VSTs and that in many cases, no equivalent is available for Ardour's Linux-based users. If your workflow is so dependent on those plugins, then remain on Windows (or potentially consider using an actual Windows VST host running inside of Wine). If you can make the effort, you will get a better environment by using a normal build of Ardour and exploring the world of plugins built to run on Linux natively. This covers LADSPA, LV2 and Linux VST formats, and even some outstanding proprietary plugins such as those from LinuxDSP and Loomer.

+ diff --git a/_manual/11_working-with-plugins/05_working-with-ardour-built-plugin-editors.html b/_manual/11_working-with-plugins/05_working-with-ardour-built-plugin-editors.html new file mode 100644 index 0000000..030dea6 --- /dev/null +++ b/_manual/11_working-with-plugins/05_working-with-ardour-built-plugin-editors.html @@ -0,0 +1,14 @@ +--- +layout: default +title: Working with Ardour-built Plugin Editors +--- + + + +

If a plugins does not have its own editor/GUI, Ardour will construct one from a small set of common control elements. Ardour will do this even for plugins that have their own, if you disable Edit > Preferences > GUI > Use Plugins' own interface instead of Ardour's

+

To view a plugin editor, double-click on the plugin within the processor box. A new window will appear showing the editor/GUI for the plugin.

+

Adjusting parameter sliders

+

Resetting a value to its default

+

Shift-click on the controller.

+

Automation Controls

+ diff --git a/_manual/12_adding-pre-existing-material.html b/_manual/12_adding-pre-existing-material.html new file mode 100644 index 0000000..5693833 --- /dev/null +++ b/_manual/12_adding-pre-existing-material.html @@ -0,0 +1,25 @@ +--- +layout: default +title: Adding Pre-existing Material +--- + + + + +

Many sessions will involve the use of pre-existing material, whether it consists of audio and/or MIDI data. Using existing samples, loops and riffs from files stored on your system can be the basis for a new session, or a way to deepen and improve one that is already underway.

+

There are four pathways for importing/embedding an audio or MIDI file into a session.

+
    +
  • Session > Import
  • +
  • Region List context menu > Import To Region List
  • +
  • Track context menu > Import Existing Media
  • +
+

These methods are all equivalent: they open the "Add Existing Media" import dialog. Once the dialog is open, you can choose to add new audio as new tracks, as regions in the region list, or as audio in the selected track. You can change this behavior once the dialog is opened.

+

Finally, you can also easily import files into your project by dragging and dropping the file from some other application (e.g. your platform's file manager such as Nautilus or Finder). You can drag onto the Region List or into the desired track or into empty space in the editor track display. The file will be imported (copied) into your session, and positioned at the mouse pointer position when the drag ended.

+

This chapter covers the following:

+ + + + + + +{% children %} diff --git a/_manual/12_adding-pre-existing-material/01_importing-versus-embedding.html b/_manual/12_adding-pre-existing-material/01_importing-versus-embedding.html new file mode 100644 index 0000000..3e36bc3 --- /dev/null +++ b/_manual/12_adding-pre-existing-material/01_importing-versus-embedding.html @@ -0,0 +1,20 @@ +--- +layout: default +title: Importing versus Embedding +--- + + + + +

Importing and embedding are two different methods of using existing audio files on your computer (or network file system) within a session. They differ in one key aspect:

+

Importing

+

An existing media file is copied to the session's audio folder, and if necessary is converted into the session's native format.

+

For audio files, you can control the choice of this format (eg. WAVE or Broadcast WAVE). Audio files will also be converted to the session sample rate if necessary, which can take several minutes for larger files.

+

MIDI files will already be in SMF format, and are simply copied into the session's MIDI folder.

+

Embedding

+

An existing media file is used as a the source for a region, but is not copied or modified in any way.

+

You can choose to import or embed the files in your session selecting or de-selecting the "Copy file to session" option in the Import dialog window.

+

the file will be imported in the audio/MIDI folder of your session

+

the file won't be copied.

+

If it doesn't work you can uncheck Preferences > Misc > Session Management > Always copy imported files.

+ diff --git a/_manual/12_adding-pre-existing-material/02_searching-and-importing-from-freesound.html b/_manual/12_adding-pre-existing-material/02_searching-and-importing-from-freesound.html new file mode 100644 index 0000000..ab23b1d --- /dev/null +++ b/_manual/12_adding-pre-existing-material/02_searching-and-importing-from-freesound.html @@ -0,0 +1,15 @@ +--- +layout: default +title: Searching and Importing From Freesound +--- + + + + +

http://www.freesound.org is an online repository of searchable sound files. The “Search Freesound” of the Import dialog tab allows you to search the Freesound database, download & audition files from within the Import dialog.

+

Tags: enter the “tags” that you would like to search. You may enter multiple search terms separated by spaces. For example “drums 120bpm” will search for files that are tagged “drums” OR “120bpm”.

+

Sort: Choosing one of the sort options will cause Freesound to order the files before returning the list of available files. This can save time if you know (for example) the sound you need is very short.

+

Search: Click this button to initiate the search. Freesound will begin returning pages of information, with 20 items per page. You may click “Stop” to stop downloading.

+

The file list: Click on a file to download it from Freesound. Double-click the file to auto-play it in the auditioner.

+

Files imported with Freesound will automatically include any Tags that are associated with the file, and these tages will be included in a search when you use the “Search Tags” tab.

+ diff --git a/_manual/12_adding-pre-existing-material/03_searching-for-files-using-tags.html b/_manual/12_adding-pre-existing-material/03_searching-for-files-using-tags.html new file mode 100644 index 0000000..2728a82 --- /dev/null +++ b/_manual/12_adding-pre-existing-material/03_searching-for-files-using-tags.html @@ -0,0 +1,13 @@ +--- +layout: default +title: Searching for Files Using Tags +--- + + + + +

A "tag" is bit of information, or metadata, that is associated with a data file. Specifically, tags are keywords or terms that you feel have some relevance to a particular soundfile. Ardour can store these tags in a searchable database so that you can quickly search for sounds based on the tags that you have assigned to them. For example you can assign the term "120bpm" to a sound, and then when you search for this tag, the file will appear in the search list. Tags are independent of the filename or anything else about the file. Tags, and the file paths that they are associated with, are stored in a file called "sfdb" in your Ardour user folder.

+ + + +{% children %} diff --git a/_manual/12_adding-pre-existing-material/03_searching-for-files-using-tags/01_how-to-add-tags-to-a-file.html b/_manual/12_adding-pre-existing-material/03_searching-for-files-using-tags/01_how-to-add-tags-to-a-file.html new file mode 100644 index 0000000..f4b1404 --- /dev/null +++ b/_manual/12_adding-pre-existing-material/03_searching-for-files-using-tags/01_how-to-add-tags-to-a-file.html @@ -0,0 +1,20 @@ +--- +layout: default +title: How To Add Tags To a File +--- + + + + +

The process is quite easy:

+
    +
  1. Show the Import dialog +
  2. +
  3. Select the file in the Import dialog's file browser +
  4. +
  5. Type in new/extra tags in the Tags section of the Soundfile Information box +
  6. +
+

+

Tags are stored when the input box loses focus, there is no reason to explicitly "save" them.

+ diff --git a/_manual/12_adding-pre-existing-material/03_searching-for-files-using-tags/02_searching-with-tags.html b/_manual/12_adding-pre-existing-material/03_searching-for-files-using-tags/02_searching-with-tags.html new file mode 100644 index 0000000..911567c --- /dev/null +++ b/_manual/12_adding-pre-existing-material/03_searching-for-files-using-tags/02_searching-with-tags.html @@ -0,0 +1,19 @@ +--- +layout: default +title: Searching With Tags +--- + + + + +
    +
  1. Show the Import dialog +
  2. +
  3. Select the "Search Tags" tab of the Import dialog +
  4. +
  5. Enter the tag(s) you want to search for and press "Search" +
  6. +
+

+

Files which have been "tagged" with the input terms will appear in the results window. You can audition these files and apply tags to them from this window.

+ diff --git a/_manual/12_adding-pre-existing-material/04_supported-file-formats.html b/_manual/12_adding-pre-existing-material/04_supported-file-formats.html new file mode 100644 index 0000000..7270818 --- /dev/null +++ b/_manual/12_adding-pre-existing-material/04_supported-file-formats.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Supported File Formats +--- + + + + +

The list of audio file formats that Ardour can import/embed is quite long. It is based on the functionality offered by libsndfile, an excellent and widely used software library by Australian programmer Erik de Castro Lopo. As libsndfile's capabilities expand, so will Ardour's abilities to import (and export) new formats. Ardour supports all common audio file formats, including WAV, AIFF, AIFC, CAF, W64 and BWF. with all typical sample formats (8,16,24,32 bit integer, floating point, and more).

+

You can find a full list of libsndfile's supported formats here.

+

For MIDI import, Ardour will read any Standard MIDI Format (SMF) file.

+ diff --git a/_manual/12_adding-pre-existing-material/05_the-import-dialog.html b/_manual/12_adding-pre-existing-material/05_the-import-dialog.html new file mode 100644 index 0000000..41155be --- /dev/null +++ b/_manual/12_adding-pre-existing-material/05_the-import-dialog.html @@ -0,0 +1,14 @@ +--- +layout: default +title: The Import Dialog +--- + + + + +

+

The Soundfile Information Box

+

Previewing Files Before Import

+

Importing Files as Tracks or Regions

+

Importing versus Embedding

+ diff --git a/_manual/13_recording.html b/_manual/13_recording.html new file mode 100644 index 0000000..9f41e97 --- /dev/null +++ b/_manual/13_recording.html @@ -0,0 +1,13 @@ +--- +layout: default +title: Recording +--- + + + + +

This chapter covers the following:

+ + + +{% children %} diff --git a/_manual/13_recording/01_monitoring.html b/_manual/13_recording/01_monitoring.html new file mode 100644 index 0000000..b66544d --- /dev/null +++ b/_manual/13_recording/01_monitoring.html @@ -0,0 +1,37 @@ +--- +layout: default +title: Monitoring +--- + + + +

An Introduction to Monitoring

+

When recording, it is important to hear yourself, and to hear any pre-recorded tracks that you are performing with.

+

Audio recorders typically have the ability to "monitor" (i.e. listen to) the tracks that are armed for recording, while playing back the tracks that aren't. In the days of analog tape recording, this was performed with relays and other analog audio switching devices. Digital recorders have the same feature, but may impart some "latency" (delay) between the time you make a noise and the time that you hear it come back from the recorder.

+

The latency of any conversion from analog to digital and back to analog is about 1.5-2 milliseconds. Despite common listening conditions creating 3 millisecond delays, some musicians claim that even the basic A/D/A conversion time is objectionable. However it is commonly believed that a latency below 5 milliseconds is suitable for a professional recording setup. Because 2 milliseconds have already been used in the A/D/A process, you must use extremely low "buffer sizes" in your workstation I/O setup to keep the overall latency below 5ms. Not all computer audio systems are able to work reliably at such low buffer sizes.

+

For this reason it is sometimes best to use an external device to monitor yourself while recording to digital medium. Many professional studios use a mixing console for this feature. Many computer I/O devices have an "monitoring" function built-in (although this is typically only for 1 or 2 channels). In either case, the monitoring hardware may be digital or analog. And in the digital case you will still have the A-D-A conversion latency of 1-2ms.

+

Different ways of monitoring

+

There are three basic ways in which monitoring may be approached:

+

External Monitoring

+

With this approach, Ardour plays no role in monitoring at all. Perhaps the recording set-up has an external mixer which can be used to set up monitor mixes, or perhaps the sound-card being used has some ‘listen to the input’-style feature. This approach often has the advantage of zero or near-zero latency. On the other hand it requires external hardware, and the monitoring settings are not saved with the session.

+

+

JACK-based hardware Monitoring

+

Some sound cards have the ability to mix signals from their inputs to their outputs with zero- or low-latency. Furthermore, on some cards these features can be controlled by JACK. This is a nice arrangement, if the sound card supports it, as it combines the convenience of having the monitoring controlled by Ardour with the low latency operation of doing it externally.

+

+

Software Monitoring

+

With this approach all monitoring is performed by Ardour; it makes track inputs available at track outputs, under the influence of various controls. This approach will almost always have more routing flexibility than JACK-based monitoring. The disadvantage is that there will be a latency between the input and the output which will depend mainly on the JACK buffer size that is being used.

+

+

Setting up Monitoring

+

There are three main settings which affect how monitoring is performed. The first is Edit > Preferences > Audio > Record monitoring handled by. There are two or three options here, depending on the capabilities of your hardware:

+

The other two settings are more complex; one is ‘Tape machine mode’, in the same dialogue, and the other is ‘Monitoring automatically follows transport state (‘auto-input’)’ setting in Session Properties.

+

Monitoring is also somewhat dependent on the state of the track's record-enable button, the session record enable button, and whether or not the transport is rolling.

+

Monitoring in software or hardware monitoring modes

+

If Ardour is set to ‘external monitoring’, the explanation of Ardour's monitoring behaviour is simple: it does not do any. In the other two modes, things are more complex.

+

Monitoring in non-tape-machine mode

+

This section describes what happens when Ardour is not set to tape-machine mode.

+

Consider first the case when a track is record-enabled. In this situation, it will always monitor the live input unless the session is not record-enabled, auto-input is enabled, and the transport is rolling.

+

When a track is not record-enabled, the track will play back its contents from disc unless the transport is stopped and auto-input is enabled. In this case, the track monitors its live input.

+

Monitoring in tape-machine mode

+

In tape-machine mode, things are slightly simpler; when a track is record-enabled, its behaviour is the same as in non-tape-machine mode: it will always monitor the live input unless the session is not record-enabled, auto-input is enabled, and the transport is rolling.

+

When a track is not record-enabled, however, the track will always just play back its contents from disk; the live input will never be monitored.

+ diff --git a/_manual/13_recording/02_track-recording-modes.html b/_manual/13_recording/02_track-recording-modes.html new file mode 100644 index 0000000..be62dc4 --- /dev/null +++ b/_manual/13_recording/02_track-recording-modes.html @@ -0,0 +1,24 @@ +--- +layout: default +title: Track Recording Modes +--- + + + +

"Recording mode" is a per-track property (audio tracks only) that affects the way that recording new material on top of existing material ("overdubbing") operates in that track. Ardour offers 3 different recording modes:

+
+
Normal
+
overdubs write to new files, new regions are layered on top of existing regions (with or without crossfades)
+
Tape mode
+
overdubs destructively write to an existing file, single region per track (fixed crossfades at every punch)
+
Non-Layered mode
+
overdubs write to new audio files, new regions are created but if they overlap with existing regions, the existing regions are trimmed so that there no overlaps
+
+

To change the recording mode of a track, right click on its track header to get the context menu:

+

track header context menu

+

Below is a screenshot that shows the subtly different results of an overdub in normal and non-layered mode. Both tracks were created using identical audio data.

+

The upper track is in normal mode, and the overdub (the middle shorter region, selected) has created a new region which if you look carefully has been layered on top of the the existing (longer) region.

+

The lower track is in non-layered mode, and rather than overlay the overdub region, it split the existing region and inserted the new one in between.

+

different results from normal and non-layered recording

+

Non-layered mode is extremely useful when combined with push/pull trimming.

+ diff --git a/_manual/14_signal-routing.html b/_manual/14_signal-routing.html new file mode 100644 index 0000000..81b2ca8 --- /dev/null +++ b/_manual/14_signal-routing.html @@ -0,0 +1,32 @@ +--- +layout: default +title: Signal Routing +--- + + + +

The default connections created by Ardour are as follows:

+
    +
  • Track inputs are connected to hardware inputs, in round robin order (explained here in more detail). +
  • +
  • Bus inputs are left disconnected +
  • +
  • Track and bus outputs are configured based on the channel count of the master bus +
  • +
  • Track and bus outputs are connected to the master bus inputs +
  • +
  • Master bus outputs are connected to hardware outputs +
  • +
+

this configuration is sufficient to do basic tracking and playback of many sessions without any adjustment by the user. If you are using Ardour and start to change these connections, be certain that you have a good reason to do so - it is generally not necessary and often leads to problems.

+

However, for many workflows during mixing, more complicated signal routing is required. Ardour offers many possibilties for connecting things in the way you may need or want them.

+ + + + + + + + + +{% children %} diff --git a/_manual/14_signal-routing/01_aux-sends.html b/_manual/14_signal-routing/01_aux-sends.html new file mode 100644 index 0000000..748564b --- /dev/null +++ b/_manual/14_signal-routing/01_aux-sends.html @@ -0,0 +1,40 @@ +--- +layout: default +title: Aux Sends +--- + + + +

What is an Aux

+

Using auxes involves two distinct components of Ardour's mixer. One is an aux bus, which is just a normal Ardour bus that has no inputs arriving from the outside world. The other is an aux send, which is a secondary signal routing out of a track (or bus) that delivers the signal it receives to a separate aux bus. The output of the aux bus may be delivered to entirely separate hardware outputs (e.g. for headphone or monitor wedge mixes), or returned to the main mix after some common FX are applied to the signal on the bus.

+

Common uses for aux sends include:

+
    +
  • Applying real time FX (either with plugins or external FX) to a submix +
  • +
  • Creating headphone or monitor wedge mixes for performers to listen to +
  • +
  • Consolidating volume control of a submix under a single fader (though there are other ways to do this) +
  • +
+

It may be useful to compare and contrast the use of aux sends with subgrouping.

+

Adding a new aux bus

+

Choose Session > Add New Track or Bus. In the New Track & Bus dialog, select "Busses" in the Track/Bus selector at the upper right.

+

Adding a send to an aux bus

+

Context-click on the processor box for the track you want to send to the bus, and choose New Aux Send. From the submenu, choose the bus you want to send to. A send will be added (and will be visible in the processor box). Note that the submenu may be empty if there are no aux busses.

+

Pre-fader and Post-fader Aux Sends

+

Depending on whether you context-click above or below the fader in the processor box, the new aux send can be placed before or after the fader in the channel strip. Post-fader aux sends are typically used when using an aux for shared signal processing (FX), so that the adjusting the main fader on a channel alters how much signal goes to the FX bus. Aux sends are placed pre-fader so that the level sent to the bus is controlled only by the send, not the main fader - this is typical when constructing headphone/monitor wedge mixes.

+

Adding a new aux bus and sending a Track Group to it

+

You can add aux sends to all members of a group and connect them to a new aux bus with a single click. After creating the track group (and adding tracks to it), context-click on the group tab and choose either Add New Aux Bus (pre-fader) or Add New Aux Bus (post-fader). A new aux bus will be created, and a new aux send added to every member of the track group that connects to the new aux bus.

+

Altering Send Levels

+

You can alter the amount of the signal received by a send that it delivers to the bus it connects to. There are two approaches to this:

+

Use the Send Fader

+

Every send has a small horizontal fader that can be adjusted in the usual way. It is not very big and so this can be a little unsatisfactory if you want very fine control over the send level.

+

Mapping the Main Fader

+

Double-clicking on the send in the processor box will allow you to use the "big" fader of the mixer strip to control the send. The visual appearance of the mixer strip will change to reflect this. Double-click the send again to revert back to normal function for the strip.

+

Map Aux Sends To Main Faders

+

Pressing the button marked "Aux Sends" on a aux bus will alter the channel strip for every track/bus that feeds the aux bus. Many aspects of the strip will become insensitive and/or change their visual appearance. More importantly, the main fader of the affected channel strips will now control the send level and not the track gain. This gives a larger, more configurable control to alter the level. Click the "Aux Sends" button of the aux bus again to revert the channel strips to their normal use.

+

Bypassing Sends

+

Clicking on the small "led" in the send display in the processor box of the channel strip will enable/disable the send. When disabled, only silence will be delivered by this track to the aux bus. When enabled, the signal arriving at the send will be delivered to the aux bus.

+

Send Panning

+

In the current version of Ardour, sends share the same panning as the main outs of a track. This is scheduled to change in the future.

+ diff --git a/_manual/14_signal-routing/02_comparing-aux-sends-and-subgroups.html b/_manual/14_signal-routing/02_comparing-aux-sends-and-subgroups.html new file mode 100644 index 0000000..f300a61 --- /dev/null +++ b/_manual/14_signal-routing/02_comparing-aux-sends-and-subgroups.html @@ -0,0 +1,16 @@ +--- +layout: default +title: Comparing Aux Sends and Subgroups +--- + + + +

Auxes and Subgroups do share a common concept - they both provide a way for 1 or more tracks (or busses) to send their signal to a single bus so that common signal processing can be applied to the mix of their signals.

+

An aux send leaves the existing signal routing to the main mix inplace, and is typically used to create a separate mix to send to (for example) monitors or headphones (for performer monitor mixes).

+

Subgroups remove the original signal routing to the main mix, but create a new one that delivers the output of the subgroup bus to the main mix instead.

+

The following two diagrams compares the signal flow when using subgroups and when using aux sends:

+

Subgroup signal routing

+

+

Aux send signal routing

+

+ diff --git a/_manual/14_signal-routing/03_external-sends.html b/_manual/14_signal-routing/03_external-sends.html new file mode 100644 index 0000000..f7bfeb6 --- /dev/null +++ b/_manual/14_signal-routing/03_external-sends.html @@ -0,0 +1,31 @@ +--- +layout: default +title: External Sends +--- + + + +

An external send is a way to send the signal from within a channel strip to an external application or piece of hardware. By itself, an external send has no effect whatsoever on the audio signals within Ardour - it is a one-way signal routing that leaves all existing signal processing just as it was.

+

Most people will not have much use for this, but it can be useful if you want to experiment with external applications or hardware signal processing applications.

+

Adding an External Send

+

Context-click on the processor box in a channel strip and choose Add new External Send. A dialog will appear containing the standard Ardour patchbay to allow you to connect the send to the desired destination. After you are done (or immediately, if you don't know where you want to send to at this point), close the window.

+

The send will appear in the processor box. Depending on whether you context-clicked above or below the fader, it will either before or after the fader.

+

Removing an External Send

+

You can remove an external send in several ways:

+
    +
  • Shift-right-click the send in the processor box +
  • +
  • Position the pointer over the send and press the Delete key +
  • +
  • Position the pointer over the send and press x +
  • +
  • Context-click the send and choose either Cut or Delete +
  • +
+

Altering Send Levels

+

Just below the send in the processor box is a small fader that can be used like all other faders in Ardour to control the gain applied to the signal delivered by the send. Drag it to alter the level, Shift-click to restore to unity (0dB) gain.

+

Bypassing Sends

+

Click the small "led" in the send display within the processor box to turn it on and off. When turned off, silence will be delivered to the send. When turned on, the signal within the channel strip will be delivered.

+

Editing Send Routing

+

Double-clicking or Edit-clicking on the send in the processor box will redisplay the patchbay dialog that allows you full control over the routing of the send.

+ diff --git a/_manual/14_signal-routing/04_inserts.html b/_manual/14_signal-routing/04_inserts.html new file mode 100644 index 0000000..e80eb24 --- /dev/null +++ b/_manual/14_signal-routing/04_inserts.html @@ -0,0 +1,8 @@ +--- +layout: default +title: Inserts +--- + + + + diff --git a/_manual/14_signal-routing/05_returns.html b/_manual/14_signal-routing/05_returns.html new file mode 100644 index 0000000..12a56d1 --- /dev/null +++ b/_manual/14_signal-routing/05_returns.html @@ -0,0 +1,8 @@ +--- +layout: default +title: Returns +--- + + + + diff --git a/_manual/14_signal-routing/06_subgrouping.html b/_manual/14_signal-routing/06_subgrouping.html new file mode 100644 index 0000000..bac2866 --- /dev/null +++ b/_manual/14_signal-routing/06_subgrouping.html @@ -0,0 +1,24 @@ +--- +layout: default +title: Subgrouping +--- + + + +

Subgrouping (sometimes known as "Grouping" or "Audio Grouping") is a way to collect related signals together, before they progress to the main mix.

+

When to use subgrouping

+

blah blah blah

+

To create a subgroup from an existing Track/Bus group

+

Context-click on the relevant group tab, and choose Add new subgroup bus. A new bus will be created and every member of the track group will have its outputs disconnected from other destinations and then connected to the new bus inputs. The bus outputs will feed the master bus unless you have selected manual connections for the session. Ths bus will be named based on the track group name,

+

To create a subgroup from a set of Tracks and Busses

+

Put them in a Track Group first, then follow the steps above.

+

Arbitrary (manual) subgrouping

+

The steps taken by the options above can all be done by hand if your needs are too specialized:

+
    +
  1. Add a new bus, which we will call the "subgroup bus"
  2. +
  3. For each track you want to feed the subgroup bus, connect its outputs to the inputs of the subgroup bus and disconnect them from the any other destinations. You can do this in the global audio patchbay or a track by track basis via the output button of each track's channel strip. +
  4. +
+

To remove a subgroup (bus)

+

Context click on the track group tab, and select Remove subgroup bus. You can also simply delete the bus itself. Note that this operation will not restore signal routing to the way it was before the addition of the subgroup bus - tracks that had been subgrouped will be left with their main outputs disconncted; you will need to manually connect them again in order to be able to hear the signal from their main outputs.

+ diff --git a/_manual/14_signal-routing/07_the-patchbay.html b/_manual/14_signal-routing/07_the-patchbay.html new file mode 100644 index 0000000..d7b25c7 --- /dev/null +++ b/_manual/14_signal-routing/07_the-patchbay.html @@ -0,0 +1,51 @@ +--- +layout: default +title: The Patchbay +--- + + + +

The patchbay is the main way to make connections to, from and within Ardour's mixer.

+

+Notable exceptions are aux sends and connections to the monitor bus (if you are using one): these cannot be controlled from a patchbay, and are basically not under manual control at all. +

+

an example patchbay

+

The patchbay presents two groups of ports; one set of sources (which produce data), and one of destinations (which consume data). Depending on the relative number of each, the sources will be placed on the left or the top of the dialogue, and the destinations on the right or the bottom. Thus, in general, signal flow is from top or left to right or bottom.

+

Both sources and destinations are divided up into groups, with each group being given a tab. Click on the appropriate tab to show the ports in each group (‘Ardour Busses’, ‘Ardour Tracks’ and so on).

+

The groups that are used are as follows:

+
+
Hardware
+
ports which are connected to a physical piece of hardware (a sound card or MIDI interface).
+
Ardour Busses
+
ports belonging to busses.
+
Ardour Tracks
+
ports belonging to tracks.
+
Ardour Misc
+
other ports that do not fit into the previous two categories; for example, the ports on which the metronome click is output, and MIDI ports for things like control surfaces and timecode.
+
Other
+
If you have other JACK clients running, their ports will be found here. If there are no such ports, the tab will not exist (on one or both axes of the grid).
+
+

The main body of the patchbay is a grid. Within this grid, green dots represent connections, and you can click in any of the squares to make or break connections. You can also click and drag to draw a line of connections, which is sometimes useful for making many connections at once.

+

In the example patchbay shown above we can note various things. We are using the ‘Ardour Tracks’ sources tab, so we see the output ports of the three tracks in our session: Fred, Jim and Foo. Our destinations are from the ‘Ardour Busses’ tab, so we have the inputs of a session bus, Sheila, and the inputs of the master bus. Fred and Jim have stereo outputs, so have L and R connections. Foo is a MIDI track, so it only has one connection, and its squares in the grid are coloured light grey to indicate that no connection can be made between Foo (a MIDI output) and our busses (which are all audio-input).

+

The green dots in the example show that both Foo and Bar are connected to the master bus, left to left and right to right.

+

Variants on the Patchbay

+

Slightly different versions of the patchbay are available from different places in Ardour. For a global view of all JACK audio connections, use the Audio Patchbay which can be opened from the Window menu, or by using Alt+P. A corresponding MIDI Connection Manager can be opened using Shift+Alt+P.

+

There is also a patchbay available when connecting individual tracks; clicking on the input or output buttons of a mixer strip will open a connection manager which has the corresponding track input or output as the only destination or source, with all other ports available for connection to it.

+

Other patchbay features

+

Context-clicking on a port name in the connection manager opens a menu which provides a few handy options:

+
+
Add audio port and Add MIDI port
+
these options add audio or MIDI ports to the thing that you opened the menu over, if this is possible. In this way, for example, tracks and busses can be extended to have more inputs or outputs.
+
Remove
+
removes the given port, if possible.
+
Disconnect all from…
+
disconnects everything from the given port.
+
Rescan
+
Ardour will try to keep abreast of any changes to the JACK ports on your system, and reflect them in any connection managers which are open. If for some reason this fails, choosing Rescan will re-scan the list of ports and update the manager.
+
Show individual ports
+
if you have a session which has lots of multi-channel tracks or busses, it may be an unnecessary detail that you have to connect left to left and right to right every time you make a connection. This obviously gets worse with higher channel counts (such as for 5.1 or ambisonics). To make life easier with such sessions, you can untick Show individual ports. After that, the channels of tracks and busses will be hidden, and any green dots you add in the connection manager will automatically connect each channel of the source to the corresponding channel of the destination (left to left, right to right and so on). In this mode, a half-circle in the connection grid indicates that some (but not all) of the source's ports are connected to the destination.
+
Flip
+
this will flip the visible ports on the vertical axis with those on the horizontal. If, for example, the top of the connection manager is showing ‘Ardour Busses’ and the right is showing ‘Hardware’, flip will swap the view to the opposite so that the top of the manager displays ‘Hardware’ and the right ‘Ardour Busses’. You can also flip by pressing f. Note that if there are no matching tabs on both axes, flipping will be impossible.
+
+

 

+ diff --git a/_manual/14_signal-routing/08_the-role-of-jack.html b/_manual/14_signal-routing/08_the-role-of-jack.html new file mode 100644 index 0000000..7355bb2 --- /dev/null +++ b/_manual/14_signal-routing/08_the-role-of-jack.html @@ -0,0 +1,8 @@ +--- +layout: default +title: The Role of JACK +--- + + + + diff --git a/_manual/15_editing-and-arranging.html b/_manual/15_editing-and-arranging.html new file mode 100644 index 0000000..26db4d0 --- /dev/null +++ b/_manual/15_editing-and-arranging.html @@ -0,0 +1,22 @@ +--- +layout: default +title: Editing and Arranging +--- + + + + +

This chapter covers the following:

+ + + + + + + + + + + + +{% children %} diff --git a/_manual/15_editing-and-arranging/01_the-edit-point.html b/_manual/15_editing-and-arranging/01_the-edit-point.html new file mode 100644 index 0000000..437b869 --- /dev/null +++ b/_manual/15_editing-and-arranging/01_the-edit-point.html @@ -0,0 +1,31 @@ +--- +layout: default +title: The Edit Point +--- + + + +

Editing operations in a DAW like Ardour can be broken down according to how many points on the timeline are required to carry the operation out. Splitting a region for example, requires just one position on the timeline (the one where the split will happen). Cutting out a time range requires two positions, one for the start of the cut and one for the end.

+

In Ardour the edit point is the location where most single-point editing operations take place. It can be defined as one of the 3 possibilities:

+
    +
  • the playhead +
  • +
  • the position of the pointer (mouse or touch) +
  • +
  • the selected marker +
  • +
+

The default edit point is the location of the pointer.

+

There are 2 keybindings available to cycle through the edit point options; the most common workflow tends to involve just switching back and forth between edit point = playhead and edit point = mouse (default `). Another binding ^ will cycle through all three choices (including the selected marker). You can also switch the edit point using a combo-selector just right of the snap/grid unit selector.

+

The Implict Range

+

In addition to explicit range selections made with the Range tool, Ardour also provides an implicit edit range. This edit range can be very useful if you want to edit by ear, rather than by mouse. If there is no regions selected, and no explicit range selection, then any editing operations that require a range (such as separate) will use the implicit edit range.

+

The implicit range is the area between the current edit point and some other position. In most cases it is either:

+
    +
  • The area between the mouse and the playhead OR +
  • +
  • The area between a selected marker and the mouse or playhead +
  • +
+

Which of these is true depends on which edit point setting you are using (Mouse, Playhead or Marker) and whether
+there is a selected marker at that time.

+ diff --git a/_manual/15_editing-and-arranging/02_selecting-regions.html b/_manual/15_editing-and-arranging/02_selecting-regions.html new file mode 100644 index 0000000..dda2ce7 --- /dev/null +++ b/_manual/15_editing-and-arranging/02_selecting-regions.html @@ -0,0 +1,35 @@ +--- +layout: default +title: Selecting Regions +--- + + + +

Many editing operations in Ardour require you to first select one or more regions that you want to change in some way. You can select a single region, or multiple regions, including regions in different tracks. When you select a region, it will appear in a darker color than unselected regions.

+

Note that if a track is a member of a group that is active and has the "Select" property enabled, then Ardour will attempt to match whatever selections you make in one track across every other track of the group. See Selection Equivalence for more information on precisely how selections will be propagated to other tracks.

+

Region Selection and Track Selection

+

Please read Region & Track Selection for more information on how selecting regions and selecting tracks interact.

+

To select a region

+

Click on the region. If smart editing is enabled, click in the lower half of the region.

+

To deselect a region

+

click the region. If smart editing is enabled, click in the lower half of the region.

+

Note that click simply toggles the selected status of an object, so it can be used to select unselected regions too

+

To select multiple regions in the same track

+

Do one of the following:

+
    +
  • +click each region +
  • +
  • drag from a point in "empty space" in track before the first region you wish to select to a point within or after the last region you wish to select. You can use drag to do this multiple times +
  • +
  • if the regions are all adjacent to one another, click the first region you wish to select, then Shift-click the last region you wish to select +
  • +
+

To select multiple regions in different tracks

+

click or Shift-click the regions you wish to select.

+

To select a region from the region list

+

Click the name of the region in the region list. Note that this will do nothing for whole-file regions, since they do not exist anywhere in a playlist or track.

+

To select all regions in a track

+

Context-click the track, and in the context menu, navigate to Select > Select All In Track

+

See the Track Context Menu for more information on other per-track selection operations that are available.

+ diff --git a/_manual/15_editing-and-arranging/03_what-regions-are-affected.html b/_manual/15_editing-and-arranging/03_what-regions-are-affected.html new file mode 100644 index 0000000..007ab2b --- /dev/null +++ b/_manual/15_editing-and-arranging/03_what-regions-are-affected.html @@ -0,0 +1,28 @@ +--- +layout: default +title: What Regions Are Affected? +--- + + + + +

This section explains the rules used to decide what regions are affected by editing operations. You don't really have to understand them - hopefully things will Just Work - but it may be useful to understand the rules some of the time.

+

Ardour divides operations up into those that operate on a single point in time (Split being the obvious example) and those that operate on two points (which can also be considered to be a range of sorts), Separate is a good example of this.

+

Most operations will operate on the currently selected region(s), but if no regions are selected, the region that the mouse is in will be used instead. Single-point operations will generally pick a set of regions to use based on the following rules:

+
    +
  1. If the edit point is `mouse': +
      +
    • if the mouse is over a selected region, or no region, use all selected regions. +
    • +
    • if the mouse is over an unselected region, use just that region. +
    • +
    +
  2. +
  3. For all other edit points +
    • use the selected regions and those that are both under the edit position
      and on a selected track, or on a track which is in the same active edit-enabled route group
      + as a selected region. +
    +
  4. +
+

The rationale here for the two different rules is that the mouse edit point is special in that its position indicates both a time and a track; the other edit points (Playhead,Marker) indicates only a time.

+ diff --git a/_manual/15_editing-and-arranging/04_snapping-to-the-grid.html b/_manual/15_editing-and-arranging/04_snapping-to-the-grid.html new file mode 100644 index 0000000..4f346c3 --- /dev/null +++ b/_manual/15_editing-and-arranging/04_snapping-to-the-grid.html @@ -0,0 +1,51 @@ +--- +layout: default +title: Snapping To The Grid +--- + + + + +

Ardour's editor utilizes a grid to assist in the placement of regions on the timeline, or with editing functions that need to happen on a specific time. With these buttons you can choose if you want the cursor and various objects to snap to this grid, and how you want the snapping to act. You can also modify what units the grid measures as well to fit your needs.

+

With grid mode set to "No Grid", all kind of objects can be moved freely along the timeline. "Grid" will restrict the positions to certain grid units (i.e. beats), "Magnetic" will snap to grid units, but it is still possible to move objects to other places.

+

Syncing Regions to the Grid

+

By default a region's beginning will snap to points along the timeline, but you can change this behaviour by setting a sync point in the region. Select the region(s) and press v . This will set the sync point to your edit point.

+

Grid Units

+

The selector next to the grid mode selector defines the size of the grid elements. The most useful settings are "Bars" and "Beats", but you can set your grid to several different units:

+
+
CD Frames
+
a CD Frame is 1/75th of a second. Snapping to CD Frames can be used to avoid issues with CD track lengths
+
Timecode Frames/Seconds/Minutes
+
These duration depend on the timecode settings for the session
+
Seconds/Minutes
+
These are absolute time units, unaffected by sample rate or timecode settings
+
Beats/N
+
Sets the grid to units of 1/N beats, where N can be 128, 64, 32, 16, 8, 7, 6, 5, 4, 3, 2. The duration of a grid unit will depend on the tempo and meter in effect at that point in the timeline.
+
Beats
+
Sets the grid to whole beats. The duration of a grid unit will depend on the tempo and meter in effect at that point in the timeline.
+
Bars
+
Sets the grid to whole bars. The duration of a grid unit will depend on the tempo and meter in effect at that point in the timeline.
+
Markers
+
Snaps positions to the nearest marker
+
Region Starts
+
Snaps positions to the nearest region start (see below)
+
Region Ends
+
Snaps positions to the nearest region end
+
Region Syncs
+
Snaps positions to the nearest region sync point
+
Region Bounds
+
Snaps positions to the nearest region start or end
+
+

To use Region starts/ends/syncs/bounds as snap choices, you must have either (a) NO tracks selected, which means that Ardour will snap to regions on any track, or (b) several tracks selected, and Ardour will only snap to regions on those selected tracks. If you are moving items on a track, and only the current track is selected, then you will only be able to snap to other regions on the same track. This means that enabling Edit > Preferences > Editor > Link Selections of Regions and Tracks will make the "Region" grid units unusable. Avoid the use of this option if you are going to use any of the Region grid units.

+

Snap Modes

+

Ardour supports three different types of snapping to the grid:

+
+
No Grid
+
disables the grid. All objects can be moved freely in this mode.
+
Grid
+
activates normal snapping, all positions of objects are restricted to points of the grid. (See Grid Units on how to change these points) If you try to move an object in "Grid"-mode, it will not change its position until you move the mouse far enough for the object to reach the next grid point. New objects will always be created at grid points, too.
+
Magnetic
+
is a less strict type of snapping. Objects can still be moved to any position, but positions close to grid points will snap to the grid point. In order to move an object very close to a grid point, it may be necessary to zoom in to prevent snapping to that point.
+
+

 

+ diff --git a/_manual/15_editing-and-arranging/05_common-region-editing-operations.html b/_manual/15_editing-and-arranging/05_common-region-editing-operations.html new file mode 100644 index 0000000..662366c --- /dev/null +++ b/_manual/15_editing-and-arranging/05_common-region-editing-operations.html @@ -0,0 +1,45 @@ +--- +layout: default +title: Common Region Editing Operations +--- + + + + +

This section covers a set of region editing operations that you will likely use again and again while working on a session. Depending on your working habits (and experience of other DAWs) some of them will be critical while others may be more rarely used.

+

All of these operations can be carried out from the keyboard. Default keybindings can be found in the list. Equivalent operations can be done with mouse in most cases.

+

You may want to review your understanding of the edit point/range and which regions will be affected by region operations.

+
+
Spot (Align)
+
move selected regions to the edit point
+
Split
+
split selected regions at the edit point
+
Trim Start
+
Adjust the start of selected regions to the edit point (or as close as possible)
+
Trim End
+
Adjust the end of selected regions to the edit point (or as close as possible)
+
Duplicate
+
Make a copy of each selected region and position it immediately after the original
+
Crop
+
Truncate selected regions to the edit range
+
Separate
+
Split selected regions at both ends of the edit range
+
Set Fade In
+
Adjust selected audio regions' fade in to end at the edit point
+
Set Fade Out
+
Adjust selected audio regions' fade out to end at the edit point
+
Toggle Fade In
+
Turn selected audio regions' fade in on or off
+
Toggle Fade Out
+
Turn selected audio regions' fade out on or off
+
Play Region
+
Play session from the start of the earliest selected region
+
Zoom To Region
+
Zoom horizontally so that the selected regions span the editor track view
+
Set Sync Point
+
Set the sync point of all selected regions to the edit point
+
Insert
+
Inserts the currently selected regions in the Region List at the edit point
+
+

 

+ diff --git a/_manual/15_editing-and-arranging/06_changing-region-lengths.html b/_manual/15_editing-and-arranging/06_changing-region-lengths.html new file mode 100644 index 0000000..0e9f8f4 --- /dev/null +++ b/_manual/15_editing-and-arranging/06_changing-region-lengths.html @@ -0,0 +1,46 @@ +--- +layout: default +title: Changing Region Lengths +--- + + + + +

Changing the length of a region is a very common editing operation, often known as "trimming". There are several ways to accomplish this with Ardour, and some very useful specialized trimming operations.

+

Drag-Trimming with the mouse

+

In object mode, move the pointer near the beginning or end of the region. The cursor will change to indicate that trimming is possible, and you then Left-click-and-drag the edge of the region.

+

Trimming will obey Snap settings.

+

Click Trimming with the mouse

+

Left-click in the colored bar at the bottom of a region. If you are nearer to the start of a region, this will trim the start time to the position of the pointer. If you are nearer to the end of a region, it will trim the end time.

+

Keyboard bindings for Trimming

+

There are several commands for region trimming. Some use the edit point to determine where to trim to. Some are not bound to any keys by default (but could be via the Keybindings Editor).

+
+
Region/trim-front j +
+
trim selected region(s) start to edit point
+
Region/trim-end k +
+
trim selected region(s) end to edit point
+
+

Trim to Next/Previous Region

+

Sometimes you just want to extend the start or end of region so that it reaches the end or start of an adjacent region. There is now an operation accessible from the region context menu, under Edit >Trim > Trim to Next or Edit > Trim > Trim to Previous. This will extend the selected regions so they directly adjoin their neighbours, unless their source files are not long enough, in which case they will be extended to the maximum possible. Trim to Next will extend the end of the selected regions to the start of the next region; Trim to Previous will extend the start of the selected regions to the end of the previous region.

+
+
Region/trim-to-previous-region j +
+
trim the start of selected region(s) to the end of the previous region
+
Region/trim-to-next-region k +
+
trim the end of selected region(s) to the start of the following region
+
+

Other Possible Commands for Trimming

+

These are not bound to any keys by default, but could be via the Keybindings Editor. They can also be sent via OSC or other control protocols.

+
+
Region/trim-region-to-loop
+
Trim region to match the current loop range
+
Region/trim-region-to-punch
+
Trim region to match the current punch range
+
+

 

+ + +{% children %} diff --git a/_manual/15_editing-and-arranging/06_changing-region-lengths/01_pushpull-trimming.html b/_manual/15_editing-and-arranging/06_changing-region-lengths/01_pushpull-trimming.html new file mode 100644 index 0000000..654e58b --- /dev/null +++ b/_manual/15_editing-and-arranging/06_changing-region-lengths/01_pushpull-trimming.html @@ -0,0 +1,17 @@ +--- +layout: default +title: Push/Pull Trimming +--- + + + + +

Normally when you trim regions by dragging with the mouse, it affects only the selected regions. Their lengths are directly affected by the trim operation, but nothing else is. Sometimes though, you'd like to trim a region that directly adjoins another, and keep this relationship the same - you're not trying to make one of the regions extend over the other - you'd like the junction to move in one direction or the other as part of the trim. This requires trimming both regions on either side of the junction, in opposite directions. Push/Pull trim, activated by pressing shift key before starting the drag, will do just that. Here's a few pictures to show the difference in the results of a normal trim and push/pull trim. First, the initial situation:

+

region arrangement before trim

+

Now lets look at what happens after we trim the right hand (selected) region by dragging its starting position earlier:

+

region arrangement after a trim

+

You can see that it now overlaps the earlier region and a cross fade has been created between them.

+

Lets look now at what happens if we do the same trim, but using shift-drag to turn it into a push-pull trim instead:

+

region arrangement after a push trim

+

There is no overlap, and the end of the earlier region has been moved along with the start of the later region, so that they still directly adjoin each other.

+ diff --git a/_manual/15_editing-and-arranging/07_copying-regions.html b/_manual/15_editing-and-arranging/07_copying-regions.html new file mode 100644 index 0000000..c5a4d73 --- /dev/null +++ b/_manual/15_editing-and-arranging/07_copying-regions.html @@ -0,0 +1,14 @@ +--- +layout: default +title: Copying Regions +--- + + + +

To Copy A Region

+

To copy a region, make sure you are in object mouse mode. Move the mouse pointer into the region Left-click and drag. A new region is created and will follow the mouse pointer as it moves. See "moving Regions" for more details on moving the copied region around.

+

Copying more than one region

+

To copy multiple regions, select them before copying. Then click+drag on one of the selected regions. All the regions will be copied and as they move, the will keep their positions relative to each other.

+

Fixed-time copying

+

If you want to copy region(s) to other track(s) but keep the copies at the exact position on the timeline as the originals, simply use Middle-click-drag instead.

+ diff --git a/_manual/15_editing-and-arranging/08_moving-regions.html b/_manual/15_editing-and-arranging/08_moving-regions.html new file mode 100644 index 0000000..a7e60ce --- /dev/null +++ b/_manual/15_editing-and-arranging/08_moving-regions.html @@ -0,0 +1,23 @@ +--- +layout: default +title: Moving Regions +--- + + + +

Moving and Copying Regions

+

Moving and copying regions may be affected by the current edit mode. Ardour has the following edit modes:

+
+
Slide
+
Regions can be freely moved, and overlaps will be created when necessary
+
Lock
+
No region motion is possible at all
+
Splice
+
Regions can be moved freely, but Ardour will close all gaps between regions after any movement has occured
+
+

The edit mode is set via a combo selector at the left of the editing toolbar.

+

If "Snap To Grid" is enabled, then regions can only moved so that they align with locations determined by the current snap settings (beats, or seconds, or other region boundaries, etc). See Snapping To The Grid.

+ + + +{% children %} diff --git a/_manual/15_editing-and-arranging/08_moving-regions/01_moving-regions-with-the-mouse.html b/_manual/15_editing-and-arranging/08_moving-regions/01_moving-regions-with-the-mouse.html new file mode 100644 index 0000000..8601b09 --- /dev/null +++ b/_manual/15_editing-and-arranging/08_moving-regions/01_moving-regions-with-the-mouse.html @@ -0,0 +1,15 @@ +--- +layout: default +title: Moving Regions With the Mouse +--- + + + +

To move or copy a region, make sure you are in object mode. If you are using "smart mode", the pointer must be in the lower half of the region to begin a move or copy operation.

+

Move the pointer into the region, use Left-click-drag. The region will follow the pointer as you move it around. By default, the region can move freely along the timeline.

+

To move a region from one track to another, simply start a move as described above, but move the pointer into the desired track. The region will follow the pointer. Note that if you have other kinds of "tracks" visible, the region will remain where it is as the pointer moves across them, and will then jump to the new track. This serves as a visual reminder that you cannot drag an audio region into an automation track or a bus, for example.

+

Moving more than one region

+

To move multiple regions, select them before moving. Then click+drag on one of the selected regions. All the regions will move, keeping their positions relative to each other.

+

Fixed-time motion

+

Sometimes, you want to move a region to another track, but keeping its position along the timeline exactly the same. To do this, use Middle-click-drag instead.

+ diff --git a/_manual/15_editing-and-arranging/08_moving-regions/02_aligning-spotting-regions.html b/_manual/15_editing-and-arranging/08_moving-regions/02_aligning-spotting-regions.html new file mode 100644 index 0000000..556a92a --- /dev/null +++ b/_manual/15_editing-and-arranging/08_moving-regions/02_aligning-spotting-regions.html @@ -0,0 +1,24 @@ +--- +layout: default +title: Aligning (Spotting) Regions +--- + + + +

Aligning regions (sometimes called "spotting") means moving one or more regions based on a defined location, which in Ardour is always the edit point. An alignment operation moves the region(s) so that some part of the region is positioned at the edit point. Available alignment commands include:

+
+
Align Region starts a +
+
Selected region(s) are moved so that their start is located at the current edit point
+
Align Region ends a +
+
Selected region(s) are moved so that the end is located at the current edit point
+
Align Region sync points Shift-a +
+
Selected region(s) are moved so that their sync point is located at the current edit point
+
Align Region starts relative a +
+
Selected region(s) are moved so that the start of the earliest region is located at the current edit point, and all others maintain their relative position relative to that region
+
+

 

+ diff --git a/_manual/15_editing-and-arranging/09_separation.html b/_manual/15_editing-and-arranging/09_separation.html new file mode 100644 index 0000000..9218308 --- /dev/null +++ b/_manual/15_editing-and-arranging/09_separation.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Separation +--- + + + + + + + +{% children %} diff --git a/_manual/15_editing-and-arranging/09_separation/01_separate-range.html b/_manual/15_editing-and-arranging/09_separation/01_separate-range.html new file mode 100644 index 0000000..ca4c9e2 --- /dev/null +++ b/_manual/15_editing-and-arranging/09_separation/01_separate-range.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Separate Range +--- + + + + +

A final new editing feature is an operation in the context menu of a range labelled "Separate Regions Under Range". This will split any selected regions that are covered by the range at both ends of the range (or just one, if the range only covers part of the region). This makes it easy to generate regions that correspond precisely to a range.

+ diff --git a/_manual/15_editing-and-arranging/09_separation/02_separate-under.html b/_manual/15_editing-and-arranging/09_separation/02_separate-under.html new file mode 100644 index 0000000..4212082 --- /dev/null +++ b/_manual/15_editing-and-arranging/09_separation/02_separate-under.html @@ -0,0 +1,14 @@ +--- +layout: default +title: Separate Under +--- + + + + +

You may have a situation where you've positioned one region over another, and you just want to cut the lower region so that it directly adjoins both ends of the overlapping one, with no overlaps. To do this, select the upper region, then choose Edit > Separate > Separate Under. This will split the lower region so that it no longer overlaps the upper region at all. Here is an example where we start with a short region placed so that it overlaps a longer region:

+

region arrangement before separate under

+

Now we perform the separate under edit, and the lower region has been split in two, with boundaries exactly positioned at the edges of the upper region:

+

region arrangement after separate under

+

If the lower region is only covered at one end by the upper region, then this operation is equivalent to Trim to Next or Trim to Previous, depending on which end is covered.

+ diff --git a/_manual/15_editing-and-arranging/10_stripping-siience-from-audio-regions.html b/_manual/15_editing-and-arranging/10_stripping-siience-from-audio-regions.html new file mode 100644 index 0000000..1571771 --- /dev/null +++ b/_manual/15_editing-and-arranging/10_stripping-siience-from-audio-regions.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Stripping SiIence from Audio Regions +--- + + + + +

Selecting Edit > Strip Silence from the region context menu will detect silence (based on a user-chosen threshold in dBFS), split a region based on the boundaries of the silent segments, and remove the silence. You can also specify a minimum length for silence, which can useful when editing very percussive material and just needing to automatically trim the ends of a region. The dialog looks like this:

+

strip silence dialog

+

The edit will be carried out on all selected regions, allowing batch processing. You can also see in the screenshot how the main editor window is used to show silent segments and report the number and durations of the shortest segments.

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi.html b/_manual/15_editing-and-arranging/11_editing-midi.html new file mode 100644 index 0000000..4234297 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi.html @@ -0,0 +1,49 @@ +--- +layout: default +title: Editing MIDI +--- + + + + +

Ardour's handling of MIDI editing is a bit different from most other DAWs and MIDI sequencers.

+

Key features of Ardour MIDI handling

+
    +
  • All editing is done in-place, in-window. There is no separate piano roll window or pane. Edit notes right where you see them. +
  • +
  • All MIDI I/O is done via JACK for sample accurate timing and maximal efficiency when communicating with external software synthesizers +
  • +
  • Every MIDI track has its own JACK MIDI port for input; it may have an arbitrary combination of audio and MIDI outputs, depending on the signal processing in the track; the full flexibility of JACK connectivity is present for MIDI just as it is for audio. +
  • +
  • Full automation for MIDI tracks, integrated with the handling of all MIDI CC data for each track +
  • +
  • Controllers (CC data) can be set to discrete or continuous modes (the latter will interpolate between control points and send additional data) +
  • +
  • Normal or Percussive mode for note data editing +
  • +
  • The "scroomer" (a combination scroll/zoom tool) for altering the zoom level and range of visible MIDI data +
  • +
+

Notable Differences

+
    +
  • As mentioned above, all editing is done in-place +
  • +
  • Fader (volume) control currently operates on transmitted MIDI data, not by sending CC #7 +
  • +
  • All note/data editing is per-region. There are no cross-region operations at this time +
  • +
  • By default, copying a MIDI region creates a "deep link" or "cloned copy" - both regions share the same data source, and edits to the contents of one will affect the other. To break this link, select MIDI > Unlink from other copies from the region context menu, after which the selected region(s) will have their own copies of only the data that they visually display on screen. You will not be able to trim the region back its "original" length after an Unlink operation, and the operation cannot be undone. +
  • +
+ + + + + + + + + + + +{% children %} diff --git a/_manual/15_editing-and-arranging/11_editing-midi/01_fundamental-concepts-for-midi-editing.html b/_manual/15_editing-and-arranging/11_editing-midi/01_fundamental-concepts-for-midi-editing.html new file mode 100644 index 0000000..e1bd1c4 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/01_fundamental-concepts-for-midi-editing.html @@ -0,0 +1,22 @@ +--- +layout: default +title: Fundamental Concepts for MIDI Editing +--- + + + + +

Ardour's MIDI editing is based on a few basic principles:

+
    +
  1. Editing should be done without having to enter a new window +
  2. +
  3. Editing should be able to carried out completely with the keyboard, or completely with the mouse, or with any combination of the two. +
  4. +
+

Currently MIDI editing is primarily restricted to note data. Other kinds of data (controller events, sysex data) are present and can be added and deleted, but not actually edited.

+

Fundamentals of MIDI Editing in Ardour 3

+

MIDI, just like audio, exists in "regions". MIDI regions behave like audio regions: they can be moved, trimmed, copied, (cloned) or deleted. Ardour allows either editing MIDI (or audio) regions, or MIDI region content (the notes), but never both at the same time. The "e" key (by default) toggles between "region level" and "note level" editing, as will double-clicking on a MIDI region.

+

+One very important thing to note: editing note information in Ardour 3.0 occurs in only a single region. There is no way currently to edit in note data for multiple regions at the same time, so for example you cannot select notes in several regions and then delete them all, nor can you copy-n-paste notes from one region to another. You can, of course, copy and paste the region(s), just as with audio. +

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi/02_creating-midi-tracks.html b/_manual/15_editing-and-arranging/11_editing-midi/02_creating-midi-tracks.html new file mode 100644 index 0000000..61fadd1 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/02_creating-midi-tracks.html @@ -0,0 +1,11 @@ +--- +layout: default +title: Creating MIDI Tracks +--- + + + + +

To create a new MIDI track, choose Session > Add Track/Bus. In the Add Track/Bus dialog, pick "MIDI Track" from the combo selector at the upper right.

+

You may decide to use a track template if you have one. You may also know the instrument (a plugin that will generate audio in response to receiving MIDI) that you want to use in the track. The Instrument selector will show you a list of all plugins that you have which accept MIDI input and generate audio output.

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi/03_creating-midi-regions.html b/_manual/15_editing-and-arranging/11_editing-midi/03_creating-midi-regions.html new file mode 100644 index 0000000..0ce18ce --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/03_creating-midi-regions.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Creating MIDI Regions +--- + + + + +

Although recording MIDI is a common way to create new MIDI regions, it is often desirable to do so as part of editing/arranging.

+

To create a new MIDI region, simply Left-click in a MIDI track. A region will be created that is one bar long. You can trim it to any length you want.

+

Once you have created a region, you will probably want to Add some notes to it.

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi/04_adding-new-notes.html b/_manual/15_editing-and-arranging/11_editing-midi/04_adding-new-notes.html new file mode 100644 index 0000000..7d54d40 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/04_adding-new-notes.html @@ -0,0 +1,34 @@ +--- +layout: default +title: Adding New Notes +--- + + + +

Adding new notes

+

In general, you will probably do most MIDI editing with the mouse in object mode. This allows you to select notes, copy, move or delete them and alter their properties (see below). But at some point, you're going to want to add notes to a MIDI region using the mouse, and if they are to be anything other than a fixed length, this means dragging with the mouse. Since this would normally be a selection operation if the mouse is in object mode, there needs to be some way for you to tell Ardour that you are trying to "draw" new notes within a MIDI region. Ardour provides two ways do this. One is to leave the mouse in object mode and press the control key while dragging (on OS X, use the Command key). The other, useful if you plan to enter a lot of notes for a while, is to switch the mouse into "Draw Notes" mode, which will now interpret any drags and clicks as requests to add a new note. For obvious reasons, you cannot use "Draw Notes" mode while using region-level editing.

+

So, to summarize:

+
+
+Selecting, moving, copying, trimming, deleting regions
+
+ +
leave "Note Level Editing" disabled, use object, range or other mouse modes
+
+Selecting, moving, copying trimming, deleting notes +
+
enable "Note Level Editing" and use mouse object mode.
+
+Adding new notes +
+
enable "Note Level Editing" and then either +
    +
  • use mouse object mode and Ctrl-drag (Cmd-drag on OS X) +
  • +
  • use mouse draw mode +
  • +
+
+
+

Note that is also a a step entry editor allowing you to enter notes from a virtual keyboard and lots more besides.

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi/05_changing-note-properties.html b/_manual/15_editing-and-arranging/11_editing-midi/05_changing-note-properties.html new file mode 100644 index 0000000..e258314 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/05_changing-note-properties.html @@ -0,0 +1,31 @@ +--- +layout: default +title: Changing Note Properties +--- + + + + +

You can view all the details about a selected note by context-clicking on it. The dialog that pops up will also allow you to modify all the properties of the selected note(s). You can modify individual properties more efficiently using the techniques described below.

+

Moving notes

+

Right arrow and Left arrow move the selected note(s) early and later in time.

+

Changing pitch values

+

The up arrow key increases the pitch of the selected notes. The down arrow key reduces the pitch of the selected notes. If any of the selected notes are already at the maximum or minimum value, no changes will be made to any of the notes, to preserve relative pitches. You can override this with the Alt/Option key. The default shift distance is one semitone. Use the Shift modifier to alter this to one octave.

+

Changing velocity values

+

Up arrow increases the velocity of the selected notes. The Down arrowreduces the velocity of the selected notes. If any of the selected notes are already at the maximum or minumum value, no changes will be made to any of the notes, to preserve relative velocities. You can override this with the Alt/Option key.

+

You can also press v to popup a dialog that will allow you to set the absolute velocity value of each selected note.

+

Finally, the scroll wheel will also adjust notes in the same way as the arrow keys (note that like the arrow keys it only affects selected notes, not the note the pointer is over).

+

Changing channel

+

+Press the "c" key to bring up a dialog that allow you to see and alter the MIDI channel of the selected notes. If the selected notes use different channels, they will all be forced to the newly selected channel. +

+

Changing start/end/duration

+

+Comma (',') will alter the start time of the note. Period ('.') will alter the end time of the note. Both keys will by default make the note longer (either by moving the start earlier or the end later). For the opposite effect, use Ctrl-comma/Ctrl-period (or Cmd-command/Cmd-period on OS X). The note will be altered by the current grid setting. To change the start/end positions by 1/128th of a beat, use the Alt/Option key along with either Comma, Ctrl-Comma, etc. +

+

Quantization

+

+The q key will quantize the selected notes using the current quantize settings. If the quantize settings have not been set for this session yet, the quantize dialog will appear. Alt/Option-q will display the quantize dialog to allow you to reset the quantize settings and then quantizes the selected notes. The default quantize settings are: quantize note starts to the current grid setting, no swing, no threshold, full strength.

+

+

Step Entry, Quantize etc.

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi/06_handling-overlapping-notes.html b/_manual/15_editing-and-arranging/11_editing-midi/06_handling-overlapping-notes.html new file mode 100644 index 0000000..8d64f15 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/06_handling-overlapping-notes.html @@ -0,0 +1,28 @@ +--- +layout: default +title: Handling Overlapping Notes +--- + + + + +

Every MIDI note consists of two messages, a NoteOn and a NoteOff message. Each one has a note number and a channel (also a velocity, but that isn't relevant here). The MIDI standard stresses that it is invalid to send a second NoteOn for the same note number on the same channel before a NoteOff for the first NoteOn. It is more or less impossible to do this with a physical MIDI controller such as a keyboard, but remarkably easy to trigger when editing in a DAW - simply overlapping two instances of the same note will do it.

+

Ardour offers many options for how to deal with instances where you overlap two instances of the same note. Which one to use is a per-session property and can be modified from Session > Properties > Misc > MIDI Options

+
+
never allow them
+
Edits that would create note overlaps are not allowed
+
don't do anything in particular
+
Ardour leaves overlapping notes alone - the behaviour of a MIDI receiver (plugin or hardware) is undefined
+
replace any overlapped existing note
+
When one note is moved to overlap another, remove the one that wasn't being moved
+
shorten the overlapped existing note
+
When one note is moved to overlap another, shorten the one that wasn't moved so that there is no overlap
+
shorten the overlapping new note
+
When one note is moved to overlap another, shorten the one that was moved so that there is no overlap
+
replace both overlapping notes with a single note
+
When one note is moved to overlap another, merge them both to form one (longer) note
+
+

Changing the option in use will not retroactively make changes - it will only affect new note overlaps created while the option remains chosen.

+

Ardour does not check for note overlaps across tracks or even across regions. If you create these, it is your responsibility to deal with the consequences. +

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi/07_note-cut-copy-and-paste-.html b/_manual/15_editing-and-arranging/11_editing-midi/07_note-cut-copy-and-paste-.html new file mode 100644 index 0000000..85501be --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/07_note-cut-copy-and-paste-.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Note Cut, Copy and Paste +--- + + + +

Note Cut, Copy and Paste

+

While in note edit mode, selected notes can be cut using x, copied with c and deleted with Delete, just as regions can. Once cut or copied, they can be pasted at the edit point using v.

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi/08_note-selection.html b/_manual/15_editing-and-arranging/11_editing-midi/08_note-selection.html new file mode 100644 index 0000000..c51b603 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/08_note-selection.html @@ -0,0 +1,23 @@ +--- +layout: default +title: Note Selection +--- + + + +

Selecting/Navigating note-by-note

+

Tab selects the next note. Tab selects the previous note. Shift-Tab or Tab adds the next/previous note to the selection.

+

Selecting notes with the mouse

+

While in mouse object mode, you can click on a note to select it. Once you've selected one note, shift-click on another to select all notes between them. To add or remove a note to/fromt the selection, use click. You can also click and drag outside of a note to "rubberband select" a series of notes.

+

Three different selection operations are possible if you switch to mouse range mode:

+
    +
  • Vertical drags within the MIDI region will select all notes within the spanned note range +
  • +
  • Clicks on the piano header of the track (if visible - the track must be tall enough to display it) will select all occurences of that note +
  • +
  • Drags on the piano header of the track will select all notes within the spanned note range +
  • +
+

Listening to Selected Notes

+

if Edit > Preferences > MIDI > Sound MIDI notes as they are selected is enabled, Ardour will send a pair of NoteOn/NoteOff messages through the track, which will typically allow you to hear each note as it is selected.

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi/09_quantizing-midi.html b/_manual/15_editing-and-arranging/11_editing-midi/09_quantizing-midi.html new file mode 100644 index 0000000..c3c1256 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/09_quantizing-midi.html @@ -0,0 +1,24 @@ +--- +layout: default +title: Quantizing MIDI +--- + + + + +

quantize dialog

+

Accessed via the "q" key, the dialog includes:

+
    +
  • Options for grid, legato amd groove quantize +
  • +
  • Snap note start, or end +
  • +
  • Snap to current grid, or many beat subdivisions +
  • +
  • Quantize threshold (how far away from a chosen position a note must be in order to be quantized) +
  • +
  • Strength (how close to move a note to its new position, as a percentage of the nominal distance) +
  • +
  • Swing +
  • +
diff --git a/_manual/15_editing-and-arranging/11_editing-midi/10_step-entry.html b/_manual/15_editing-and-arranging/11_editing-midi/10_step-entry.html new file mode 100644 index 0000000..1525415 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/10_step-entry.html @@ -0,0 +1,53 @@ +--- +layout: default +title: Step Entry +--- + + + + +

Sometimes you'll want to edit MIDI data directly from a connected MIDI device like a music keyboard or pad controller. Sometimes you'll want to use the mouse. Sometimes you'll want the fine-grain control, precision and speed of entry that comes from using a custom note entry dialog.

+

The step entry dialog is accessed via a right click context menu on the rec-enable button (its there because step entry is related to recording MIDI data. You cannot simultaneously step edit and record MIDI via the track's MIDI port.

+

+

The dialog (quite closely modelled on Logic's) contains:

+
    +
  • Chord entry switch (successive notes are stacked in a chord until it is released +
  • +
  • Note length selectors +
  • +
  • Triplet toggle +
  • +
  • Normal, single, double and triple dotted note selectors +
  • +
  • Sustain button +
  • +
  • Buttons to: +
      +
    • Insert a rest of the current selected note duration +
    • +
    • Insert a rest of the current grid step size +
    • +
    • Move back to the last inserted note +
    • +
    • Move forward to the next beat, or bar +
    • +
    • Move forward to the edit point +
    • +
    +
  • +
  • Dynamics controls from pianississimo to fortississimo +
  • +
  • Channel selector +
  • +
  • Explicit numerical velocity selector, for more precise control than the dynamics selectors +
  • +
  • Octave selector +
  • +
  • Buttons to add bank or program change events +
  • +
  • a full 10 octave virtual keyboard +
  • +
+

More or less all actions in the step entry dialog can be driven directly from the keyboard, so you do not need to keep moving back and forth from keyboard to mouse to do complex data insertion.

+

The step entry dialog is accessed via a right click context menu on the rec-enable button (its there because step entry is related to recording MIDI data. You cannot simultaneously step edit and record MIDI via the track's MIDI port.

+ diff --git a/_manual/15_editing-and-arranging/11_editing-midi/11_using-patch-changes.html b/_manual/15_editing-and-arranging/11_editing-midi/11_using-patch-changes.html new file mode 100644 index 0000000..a98a6e7 --- /dev/null +++ b/_manual/15_editing-and-arranging/11_editing-midi/11_using-patch-changes.html @@ -0,0 +1,21 @@ +--- +layout: default +title: Using Patch Changes +--- + + + + +

A ‘patch change’ is Ardour's description for a combination of MIDI program change and bank select messages, that (typically) instruct a synthesizer or sampler to select a different sound to use on a particular channel.

+

Patch changes are shown within MIDI regions as small rectangles or "flags", as shown below:

+

Inserting Patch Changes

+

Ensure that the edit point is located where you want the patch change to be (within an existing MIDI region). Context click, and from the MIDI region's context menu, select MIDI > Insert Patch Change. A dialog will appear allowing you to set the bank and program values.

+

Modifying Patch Changes

+

Context-clicking on a patch change will bring up the same dialog that was used to create it, allowing you to modify the program and/or bank numbers.

+

You can also use the mousewheel: regular scroll on the patch change will alter the program number, scroll will modify the bank number.

+

Moving Patch Changes

+

Just Left-click-and-drag on the patch change to move it around.

+

Removing Patch Changes

+

Put the mouse pointer into the rectangular area, and press Delete or use the delete mouse button operation. This will remove the patch change (the operation can be undone).

+

Names for Patch Numbers: MIDNAM files

+ diff --git a/_manual/16_automation.html b/_manual/16_automation.html new file mode 100644 index 0000000..dac0670 --- /dev/null +++ b/_manual/16_automation.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Automation +--- + + + +

Automation

+

+ +

This chapter covers the following:

+ diff --git a/_manual/17_mixing.html b/_manual/17_mixing.html new file mode 100644 index 0000000..038bd2b --- /dev/null +++ b/_manual/17_mixing.html @@ -0,0 +1,13 @@ +--- +layout: default +title: Mixing +--- + + + + +

This chapter covers the following:

+ + + +{% children %} diff --git a/_manual/17_mixing/01_muting-and-soloing.html b/_manual/17_mixing/01_muting-and-soloing.html new file mode 100644 index 0000000..d67dbe7 --- /dev/null +++ b/_manual/17_mixing/01_muting-and-soloing.html @@ -0,0 +1,45 @@ +--- +layout: default +title: Muting and Soloing +--- + + + +

Each track and bus has two buttons which have important implications for signal flow: mute and solo. The behaviour of these buttons is configurable in Ardour, so that they can behave in one of a few different ways to suit different studio set-ups.

+

Without a monitor bus

+

If you are using Ardour without a monitor bus, there is only one way in which mute and solo will work. Without a monitor bus:

+
    +
  • Mute on a track or bus will mute that track on the master bus, so that it will not be heard. +
  • +
  • Solo on a track or bus will solo that track or bus and mute all others except that soloing a bus will also solo any tracks or busses that feed that bus. +
  • +
+

With a monitor bus

+

For setups with a monitor bus, you have more options, mostly governed by the setting of the ‘Solo controls are Listen controls’ option in the Solo / mute tab of ‘Ardour Preferences’.

+

With ‘Solo controls are Listen controls’ unticked, behaviour is almost exactly the same as the situation without a monitor bus. Mute and solo behave the same, and the monitor bus is fed from the master bus, so it sees the same thing.

+

With ‘Solo controls are Listen controls’ ticked, things change; the master and monitor busses behave differently. In this mode, solo controls are more properly called ‘listen’ controls, and Ardour's solo buttons will change their legend from ‘S’ to either ‘A’ or ‘P’ (we'll come to that shortly) to reflect this.

+

Now, without any mute or listen, the monitor bus remains fed by the master bus. Also:

+
    +
  • Mute will mute the track or bus, so that it will not be heard anywhere (neither on the master nor monitor busses), much as before. +
  • +
  • Listen will disconnect the monitor bus from the master bus, so that the monitor bus now only receives things that are ‘listened’. Listen will not perform any muting, and hence the master bus will not be affected by a listened track or bus. +
  • +
+

There are further options with when solo controls are listen controls: the part of the track or bus from which the listen signal is obtained can be configured. Underneath the ‘Solo controls are Listen controls’ option in ‘Ardour Preferences’ is an option for ‘listen position’, which can be either After-Fade Listen (AFL) or Pre-Fade Listen (PFL). AFL, as its name suggests, obtains its signal from some point after the track or bus’ fader, and PFL from before it. The precise point to get the signal from can further be configured using the ‘PFL signals come from’ and ‘AFL signals come from’ options.

+

The solo-mute arrangement with a monitor bus is shown below:

+

mute/solo signal flow

+

Here we have a number of tracks or busses (in orange). Each one has an output which feeds the master bus. In addition, each has PFL and AFL outputs; we have a choice of which to use. PFL/AFL from each track or bus are mixed. Then, whenever anything is set to AFL/PFL, the monitor out becomes just those AFL/PFL feeds; the rest of the time, the monitor out is fed from the master bus.

+

In this scheme Solo has no effect other than to mute other non-soloed tracks; with solo (rather then listen), the monitor out is fed from the master bus.

+

Other solo options

+

There are a few other configuration options related to the behaviour of solo. They can be found in the Solo / Mute tab of Ardour Preferences dialogue.

+

Solo-in-place mute cut

+

When using ‘solo-in-place’ (SiP), in other words when soloed tracks are being listened to on the master bus, this fader specifies the gain that will be applied to other tracks in order to mute them. Setting this level to -∞dB will mean that other tracks will not be heard at all; setting to some higher value less than 0dB means that other non-soloed tracks will be heard, just reduced in volume compared to the soloed tracks. Using a value larger than -∞dB is sometimes called "Solo-In-Front" by other DAWs, because the listener has the sense that soloed material is "in front" of other material. In Ardour, this is not a distinct mode, but instead the mute cut control offers any level of "in-front-ness" that you might want to use.

+

Exclusive solo

+

If this is enabled, only one track or bus will ever be soloed at once; soloing track B while track A is currently soloed will un-solo track A before soloing track B.

+

Show solo muting

+

If this is enabled, the mute button of tracks and busses will be drawn outlined to indicate that the track or bus is muted because something else is soloed. This is enabled by default, and we recommend that you leave it that way unless you are extremely comfortable with Ardour's mute/solo behaviour

+

Soloing overrides muting

+

If this is enabled, a track or bus that is both soloed and muted will behave as if it is soloed.

+

Mute affects…

+

These options dictate whether muting the track will affect various routes out of the track; through the sends, through the control outputs (to the monitor bus) and to the main outputs.

+ diff --git a/_manual/17_mixing/02_panning-control.html b/_manual/17_mixing/02_panning-control.html new file mode 100644 index 0000000..5ef3a65 --- /dev/null +++ b/_manual/17_mixing/02_panning-control.html @@ -0,0 +1,9 @@ +--- +layout: default +title: Panning Control +--- + + + + + diff --git a/_manual/18_exporting.html b/_manual/18_exporting.html new file mode 100644 index 0000000..bf3bfa2 --- /dev/null +++ b/_manual/18_exporting.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Exporting +--- + + + + +

This chapter covers the following:

+ diff --git a/_manual/19_synchronization.html b/_manual/19_synchronization.html new file mode 100644 index 0000000..5a15247 --- /dev/null +++ b/_manual/19_synchronization.html @@ -0,0 +1,11 @@ +--- +layout: default +title: Synchronization +--- + + + + +

Ardour can be synchronized with a variety of external devices and other software.

+

This chapter covers the following:

+ diff --git a/_manual/20_default-keyboard-bindings.html b/_manual/20_default-keyboard-bindings.html new file mode 100644 index 0000000..2db3717 --- /dev/null +++ b/_manual/20_default-keyboard-bindings.html @@ -0,0 +1,14 @@ +--- +layout: default +title: Default Keyboard Bindings +--- + + + + +

Although (almost) every key binding ("shortcut") in Ardour can be redefined, the program comes with a rich set of default bindings. The default bindings are "mnemonic" in that they focus on trying use to the letter that starts the name of an operation as the binding for that operation. This is not always possible, but it acts as a general rule. This does not necessarily lead to the best ergonomics for rapid editing - there are alternative binding sets for that - but it does make it simpler for newcomers to remember some of the most common bindings (e.g. "s" for "Split", "p" for "position playhead").

+

The conventions for using modifier keys (Control, Alt, Command etc.) differ from platform to platform, so we provide different bindings for each platform.

+ + + +{% children %} diff --git a/_manual/20_default-keyboard-bindings/01_mnemonic-bindings-for-linux.html b/_manual/20_default-keyboard-bindings/01_mnemonic-bindings-for-linux.html new file mode 100644 index 0000000..8672e0a --- /dev/null +++ b/_manual/20_default-keyboard-bindings/01_mnemonic-bindings-for-linux.html @@ -0,0 +1,308 @@ +--- +layout: default +title: Mnemonic Bindings for Linux +--- + + + + +

A printable cheat-sheet with these bindings is available for downloading.

+

Transport & Recording Control

+
+
destroy last recording
+
Control+Delete
+
engage record
+
Shift+r
+
fast forward
+
Shift+→
+
loop play (the loop range)
+
l
+
rewind
+
Shift+←
+
set playhead position
+
p
+
start recording
+
Shift+space
+
stop (keep loop/range play)
+
Control+Alt+space
+
stop and destroy
+
Control+space
+
toggle auto play
+
5
+
toggle auto return
+
6
+
toggle click (metronome)
+
7
+
toggle playhead follows edits
+
Shift+f
+
toggle playhead tracking
+
Control+f
+
toggle roll
+
space
+
toggle track rec-enable
+
Shift+b
+
toggle track solo status
+
Alt+s
+
transition to reverse
+
Shift+↓
+
transition to roll
+
Shift+↑
+
+

Session & File Handling

+
+
add track(s) or bus(ses)
+
Control+Shift+n
+
export session
+
Win+e
+
import audio files
+
Control+i
+
open a new session
+
Control+n
+
open a recent session
+
Control+Shift+o
+
open an existing session
+
Control+o
+
quit
+
Control+q
+
save session
+
Control+s
+
snapshot session
+
Control+Shift+s
+
toggle sel. track MIDI input
+
Alt+i
+
+

Changing What's Visible

+
+
fit tracks vertically
+
f
+
move selected tracks down
+
Control+↓
+
move selected tracks up
+
Control+↑
+
scroll down (page)
+
PageDown
+
scroll down (step)
+
↓
+
scroll up (page)
+
PageUp
+
scroll up (step)
+
↑
+
toggle editor window mixer
+
Shift+e
+
toggle last 2 zoom states
+
Shift+z
+
zoom (x) to selected region(s)
+
Control+Alt+z
+
zoom (x+y) to selected region
+
Alt+z
+
zoom in
+
=
+
zoom out
+
-
+
+

Window Visibility

+
+
toggle locations dialog
+
Alt+l
+
focus on main clock
+
KP_Divide
+
maximise editor space
+
Control+Alt+f
+
rotate editor & mixer window
+
Alt+m
+
show rhythm ferret window
+
Alt+f
+
toggle big clock
+
Alt+b
+
toggle color manager
+
Alt+c
+
toggle editor window
+
Alt+e
+
toggle global audio patchbay
+
Alt+p
+
toggle global midi patchbay
+
Alt+Shift+p
+
toggle key bindings editor
+
Alt+k
+
toggle preferences dialog
+
Alt+o
+
toggle preferences dialog
+
Control+Shift+p
+
+

Editing with Edit Point

+

Most edit functions operate on a single "Edit Point". The edit point can be any of: playhead (default), the mouse or an active marker. The choice of Edit Point (by default) also sets the Zoom Focus.

+
+
EP to next region sync
+
;
+
EP to prev region sync
+
'
+
cycle to next grid snap mode
+
2
+
cycle to next zoom focus
+
1
+
insert from region list
+
i
+
insert time
+
Control+t
+
move EP to playhead
+
Alt+Return
+
next EP w/marker
+
Control+^
+
next EP w/o marker
+
`
+
trim back
+
k
+
trim front
+
j
+
trim region end to edit point
+
Shift+}
+
trim region start to edit point
+
Shift+{
+
trim region to end of prev region
+
Control+j
+
trim region to start of next region
+
Control+k
+
use next grid unit
+
3
+
use next grid unit
+
4
+
use next musical grid unit
+
Control+4
+
use previous grid unit
+
Control+3
+
+

Aligning with the Edit Point

+

Align operations move regions so that their start/end/sync point is at the edit point. "Relative" operations
+just align the first region and moves other selected regions to maintain relative positioning.

+
+
align end(s)
+
Alt+a
+
align start(s)
+
Control+Win+a
+
align start(s) relative
+
Win+a
+
align sync points
+
Shift+a
+
align sync points (relative)
+
a
+
range end to next prev edge
+
Control+>
+
range end to next region edge
+
>
+
range start to next region edge
+
Control+<
+
range start to prev region edge
+
<
+
+

Edit Point Playback

+
+
play edit range
+
Alt+space
+
play from EP & return
+
Win+space
+
play selected region(s)
+
h
+
+

Region Operations

+
+
duplicate region (multi)
+
Shift+d
+
duplicate region (once)
+
Alt+d
+
export selected region(s)
+
Control+Win+e
+
increase region gain
+
^
+
move to original position
+
Alt+o
+
mute/unmute
+
Control+m
+
normalize
+
n
+
nudge backward
+
KP_Subtract
+
nudge forward
+
KP_Add
+
quantize MIDI notes
+
q
+
reduce region gain
+
&
+
reverse
+
Alt+r
+
set fade in length
+
/
+
set fade out length
+
\
+
set region sync point
+
v
+
split
+
s
+
toggle fade in active
+
Control+/
+
toggle fade out active
+
Control+\
+
transpose
+
Alt+t
+
+

Edit Range

+

There are only a few functions that refer to an "Edit Range". The current edit range is defined using combinations of the possible edit points: Playhead, Marker or Mouse.

+
+
copy
+
Control+c
+
cut
+
Control+x
+
delete
+
Delete
+
paste
+
Control+v
+
redo
+
Control+r
+
undo
+
Control+z
+
+

Selecting

+
+
all after playhead
+
Shift+Control+p
+
all before playhead
+
Control+p
+
all enclosed by edit range
+
Control+u
+
all present in edit range
+
u
+
convert edit range to range
+
F6
+
invert selection
+
Shift+i
+
select all after EP
+
Control+Shift+e
+
select all before EP
+
Control+e
+
select all in loop range
+
Control+l
+
select all in punch range
+
Control+d
+
select everything
+
Control+a
+
select next track/bus
+
Alt+↓
+
select previous track/bus
+
Alt+↑
+
+

Defining Loop, Punch Range and Tempo Changes

+
+
set loop range from edit range
+
]
+
set loop range from region(s)
+
Alt+]
+
set punch range from edit range
+
[
+
set punch range from region(s)
+
Alt+[
+
set tempo (1 bar) from edit range
+
0
+
set tempo (1 bar) from region(s)
+
9
+
+

 

+ diff --git a/_manual/20_default-keyboard-bindings/02_mnemonic-bindings-for-os-x.html b/_manual/20_default-keyboard-bindings/02_mnemonic-bindings-for-os-x.html new file mode 100644 index 0000000..ab4ba4b --- /dev/null +++ b/_manual/20_default-keyboard-bindings/02_mnemonic-bindings-for-os-x.html @@ -0,0 +1,308 @@ +--- +layout: default +title: Mnemonic Bindings for OS X +--- + + + + +

A printable cheat sheet for these bindings is available for download.

+

Transport & Recording Control

+
+
destroy last recording
+
Cmd+Delete
+
engage record
+
Shift+r
+
fast forward
+
Shift+→
+
loop play (the loop range)
+
l
+
rewind
+
Shift+←
+
set playhead position
+
p
+
start recording
+
Shift+space
+
stop (keep loop/range play)
+
Cmd+Control+space
+
stop and destroy
+
Cmd+space
+
toggle auto play
+
5
+
toggle auto return
+
6
+
toggle click (metronome)
+
7
+
toggle playhead follows edits
+
Shift+f
+
toggle playhead tracking
+
Cmd+f
+
toggle roll
+
space
+
toggle track rec-enable
+
Shift+b
+
toggle track solo status
+
Control+s
+
transition to reverse
+
Shift+↓
+
transition to roll
+
Shift+↑
+
+

Session & File Handling

+
+
add track(s) or bus(ses)
+
Cmd+Shift+n
+
export session
+
Mod1+e
+
import audio files
+
Cmd+i
+
open a new session
+
Cmd+n
+
open a recent session
+
Cmd+Shift+o
+
open an existing session
+
Cmd+o
+
quit
+
Cmd+q
+
save session
+
Cmd+s
+
snapshot session
+
Cmd+Shift+s
+
toggle sel. track MIDI input
+
Control+i
+
+

Changing What's Visible

+
+
fit tracks vertically
+
f
+
move selected tracks down
+
Cmd+↓
+
move selected tracks up
+
Cmd+↑
+
scroll down (page)
+
PageDown
+
scroll down (step)
+
↓
+
scroll up (page)
+
PageUp
+
scroll up (step)
+
↑
+
toggle editor window mixer
+
Shift+e
+
toggle last 2 zoom states
+
Shift+z
+
zoom (x) to selected region(s)
+
Cmd+Control+z
+
zoom (x+y) to selected region
+
Control+z
+
zoom in
+
=
+
zoom out
+
-
+
+

Window Visibility

+
+
toggle locations dialog
+
Control+l
+
focus on main clock
+
KP_Divide
+
maximise editor space
+
Cmd+Control+f
+
rotate editor & mixer window
+
Control+m
+
show rhythm ferret window
+
Control+f
+
toggle big clock
+
Control+b
+
toggle color manager
+
Control+c
+
toggle editor window
+
Control+e
+
toggle global audio patchbay
+
Control+p
+
toggle global midi patchbay
+
Control+Shift+p
+
toggle key bindings editor
+
Control+k
+
toggle preferences dialog
+
Control+o
+
toggle preferences dialog
+
Cmd+Shift+p
+
+

Editing with Edit Point

+

Most edit functions operate on a single "Edit Point". The edit point can be any of: playhead (default), the mouse or an active marker. The choice of Edit Point (by default) also sets the Zoom Focus.

+
+
EP to next region sync
+
;
+
EP to prev region sync
+
'
+
cycle to next grid snap mode
+
2
+
cycle to next zoom focus
+
1
+
insert from region list
+
i
+
insert time
+
Cmd+t
+
move EP to playhead
+
Control+Return
+
next EP w/marker
+
Cmd+^
+
next EP w/o marker
+
`
+
trim back
+
k
+
trim front
+
j
+
trim region end to edit point
+
Shift+}
+
trim region start to edit point
+
Shift+{
+
trim region to end of prev region
+
Cmd+j
+
trim region to start of next region
+
Cmd+k
+
use next grid unit
+
3
+
use next grid unit
+
4
+
use next musical grid unit
+
Cmd+4
+
use previous grid unit
+
Cmd+3
+
+

Aligning with the Edit Point

+

Align operations move regions so that their start/end/sync point is at the edit point. "Relative" operations
+just align the first region and moves other selected regions to maintain relative positioning.

+
+
align end(s)
+
Control+a
+
align start(s)
+
Cmd+Mod1+a
+
align start(s) relative
+
Mod1+a
+
align sync points
+
Shift+a
+
align sync points (relative)
+
a
+
range end to next prev edge
+
Cmd+>
+
range end to next region edge
+
>
+
range start to next region edge
+
Cmd+<
+
range start to prev region edge
+
<
+
+

Edit Point Playback

+
+
play edit range
+
Control+space
+
play from EP & return
+
Mod1+space
+
play selected region(s)
+
h
+
+

Region Operations

+
+
duplicate region (multi)
+
Shift+d
+
duplicate region (once)
+
Control+d
+
export selected region(s)
+
Cmd+Mod1+e
+
increase region gain
+
^
+
move to original position
+
Control+o
+
mute/unmute
+
Cmd+m
+
normalize
+
n
+
nudge backward
+
KP_Subtract
+
nudge forward
+
KP_Add
+
quantize MIDI notes
+
q
+
reduce region gain
+
&
+
reverse
+
Control+r
+
set fade in length
+
/
+
set fade out length
+
\
+
set region sync point
+
v
+
split
+
s
+
toggle fade in active
+
Cmd+/
+
toggle fade out active
+
Cmd+\
+
transpose
+
Control+t
+
+

Edit Range

+

There are only a few functions that refer to an "Edit Range". The current edit range is defined using combinations of the possible edit points: Playhead, Marker or Mouse.

+
+
copy
+
Cmd+c
+
cut
+
Cmd+x
+
delete
+
Delete
+
paste
+
Cmd+v
+
redo
+
Cmd+r
+
undo
+
Cmd+z
+
+

Selecting

+
+
all after playhead
+
Shift+Cmd+p
+
all before playhead
+
Cmd+p
+
all enclosed by edit range
+
Cmd+u
+
all present in edit range
+
u
+
convert edit range to range
+
F6
+
invert selection
+
Shift+i
+
select all after EP
+
Cmd+Shift+e
+
select all before EP
+
Cmd+e
+
select all in loop range
+
Cmd+l
+
select all in punch range
+
Cmd+d
+
select everything
+
Cmd+a
+
select next track/bus
+
Control+↓
+
select previous track/bus
+
Control+↑
+
+

Defining Loop, Punch Range and Tempo Changes

+
+
set loop range from edit range
+
]
+
set loop range from region(s)
+
Control+]
+
set punch range from edit range
+
[
+
set punch range from region(s)
+
Control+[
+
set tempo (1 bar) from edit range
+
0
+
set tempo (1 bar) from region(s)
+
9
+
+

 

+ diff --git a/_manual/21_preferences-and-session-properties.html b/_manual/21_preferences-and-session-properties.html new file mode 100644 index 0000000..7b97d60 --- /dev/null +++ b/_manual/21_preferences-and-session-properties.html @@ -0,0 +1,20 @@ +--- +layout: default +title: Preferences and Session Properties +--- + + + +

Ardour splits preferences into two categories:

+
    +
  • Settings that should logically apply to all sessions, because they are based on user workflow or system configuration +
  • +
  • Settings that are per session, because they depend or reflect session content or design +
  • +
+

There are two separate (but similarly designed) dialogs, one under Edit > Preferences for the first category of preferences and Session > Properties for the second. Each window uses tabs to group a set of preferences

+

This chapter covers the following:

+ + + +{% children %} diff --git a/_manual/21_preferences-and-session-properties/01_preferences-dialog.html b/_manual/21_preferences-and-session-properties/01_preferences-dialog.html new file mode 100644 index 0000000..6499bb7 --- /dev/null +++ b/_manual/21_preferences-and-session-properties/01_preferences-dialog.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Preferences Dialog +--- + + + + +

ardour preferences dialog

+ diff --git a/_manual/21_preferences-and-session-properties/02_seession-properties-dialog.html b/_manual/21_preferences-and-session-properties/02_seession-properties-dialog.html new file mode 100644 index 0000000..154f189 --- /dev/null +++ b/_manual/21_preferences-and-session-properties/02_seession-properties-dialog.html @@ -0,0 +1,10 @@ +--- +layout: default +title: Seession Properties Dialog +--- + + + +

Session Properties Dialog

+

session properties dialog

+ diff --git a/_manual/22_using-control-surfaces.html b/_manual/22_using-control-surfaces.html new file mode 100644 index 0000000..962ba7b --- /dev/null +++ b/_manual/22_using-control-surfaces.html @@ -0,0 +1,13 @@ +--- +layout: default +title: Using Control Surfaces +--- + + + + + + + + +{% children %} diff --git a/_manual/22_using-control-surfaces/01_controlling-ardour-with-osc.html b/_manual/22_using-control-surfaces/01_controlling-ardour-with-osc.html new file mode 100644 index 0000000..283605c --- /dev/null +++ b/_manual/22_using-control-surfaces/01_controlling-ardour-with-osc.html @@ -0,0 +1,895 @@ +--- +layout: default +title: Controlling Ardour with OSC +--- + + + + +

Ardour is probably one of the most OSC-controllable audio applications around, but as with all OSC-controllable apps, you can't do much without knowing what messages can be sent. This document describes the various categories of messages that Ardour understands. It is subject to change, particular the "Actions" part below, since this relates to the GTK GUI for Ardour rather than the backend.

+

Connecting to Ardour via OSC

+

+OSC support is not enabled by default, but can be turned on via Edit > Preferences > User Interaction. Once enabled, Ardour will listen on port 3819 by default. This port number can be changed by editing $ARDOUR_CONFIG and adding this line within the <Config> section:

+
+  <Option name="osc-port" value="YourChoiceHere"/>
+
+

Transport Control

+
+
/ardour/transport_stop +
/ardour/transport_play +
/ardour/set_transport_speed [transport_speed] +
+ + +
where [transport_speed] is a float rangin from -8 to 8. +
+
/ardour/ffwd +
/ardour/rewind +
/ardour/goto_start +
/ardour/goto_end +
/ardour/add_marker +
+ + + + +
(adds marker to the current transport position) +
+
/ardour/next_marker +
/ardour/prev_marker +
/ardour/locate [sample_pos] [with_roll] +
+ + +
where [sample_pos] is the target position and [with_roll] is a bool/integer (whether you want transport to be kept rolling or not). +
+
/ardour/loop_toggle
+
+
+

Editing-related

+
+
/ardour/undo +
/ardour/redo +
/ardour/save_state +
+ + +
(this is regular Session _> Save operatio)
+
+
+

Recording control

+
+
/ardour/toggle_punch_in +
/ardour/toggle_punch_out +
/ardour/rec_enable_toggle +
/ardour/toggle_all_rec_enables +
+ + + +
(toggles all tracks recording state). !currently toggles on but not off for 2.0 branch.
+
+
+

Track specific operations

+

+For each of the following, [remote_id] is the remote_id or the track +

+
+
/ardour/routes/mute [remote_id] [mute_st] +
+
where [mute_st] is a bool/int representing the desired mute state of the track +
+
/ardour/routes/solo [remote_id] [solo_st] +
+
where [solo_st] is a bool/int representing the desired solo state of the track +
+
/ardour/routes/recenable [remote_id] [rec_st] +
+
where [rec_st] is a bool/int representing the desired rec state of the track +
+
/ardour/routes/gainabs [remote_id] [gain_abs] +
+
where [gain_abs] is a float ranging from 0 to 2 (0 being -infinite, 1 being 0dB and 2 being +6dB). +
+
/ardour/routes/gaindB [remote_id] [gain_db] +
+
where [gain_db] is a float ranging from -400 to 6 representing the desired gain of the track in dB.
+
+
+

Menu actions

+

+Every single menu item in Ardour's GUI is accessible via OSC. There is
+a single common syntax to trigger the action as if it was selected
+with the mouse (or keyboard):

+
+/ardour/access_action [action_name]
+
+

The list below shows all available values of [action-name] as of
+mid-March 2010 for Ardour 2.X. You can get the current list at any
+time by running Ardour with the -b flag.

+
    +
  • Common/About +
  • +
  • Common/goto-editor +
  • +
  • Common/Quit +
  • +
  • Common/Save +
  • +
  • Common/toggle-editor-mixer-on-top +
  • +
  • Common/ToggleBigClock +
  • +
  • Common/ToggleColorManager +
  • +
  • Common/ToggleInspector +
  • +
  • Common/ToggleKeyEditor +
  • +
  • Common/ToggleLocations +
  • +
  • Common/ToggleMaximalEditor +
  • +
  • Common/ToggleOptionsEditor +
  • +
  • Editor/add-location-from-playhead +
  • +
  • Editor/addExistingAudioFiles +
  • +
  • Editor/align-regions-end +
  • +
  • Editor/align-regions-start +
  • +
  • Editor/align-regions-start-relative +
  • +
  • Editor/align-regions-sync +
  • +
  • Editor/align-regions-sync-relative +
  • +
  • Editor/audition-at-mouse +
  • +
  • Editor/Autoconnect +
  • +
  • Editor/boost-region-gain +
  • +
  • Editor/brush-at-mouse +
  • +
  • Editor/center-edit-cursor +
  • +
  • Editor/center-playhead +
  • +
  • Editor/crop +
  • +
  • Editor/Crossfades +
  • +
  • Editor/CrossfadesFull +
  • +
  • Editor/CrossfadesShort +
  • +
  • Editor/cut-region-gain +
  • +
  • Editor/cycle-edit-point +
  • +
  • Editor/cycle-edit-point-with-marker +
  • +
  • Editor/cycle-snap-choice +
  • +
  • Editor/cycle-snap-mode +
  • +
  • Editor/duplicate-region +
  • +
  • Editor/Edit +
  • +
  • Editor/edit-cursor-to-next-region-sync +
  • +
  • Editor/edit-cursor-to-previous-region-start +
  • +
  • Editor/edit-cursor-to-previous-region-sync +
  • +
  • Editor/edit-cursor-to-range-end +
  • +
  • Editor/edit-cursor-to-range-start +
  • +
  • Editor/edit-to-playhead +
  • +
  • Editor/EditCursorMovementOptions +
  • +
  • Editor/editor-copy +
  • +
  • Editor/editor-cut +
  • +
  • Editor/editor-delete +
  • +
  • Editor/editor-paste +
  • +
  • Editor/EditSelectRangeOptions +
  • +
  • Editor/EditSelectRegionOptions +
  • +
  • Editor/export-region +
  • +
  • Editor/extend-range-to-end-of-region +
  • +
  • Editor/extend-range-to-start-of-region +
  • +
  • Editor/finish-add-range +
  • +
  • Editor/finish-range +
  • +
  • Editor/fit-tracks +
  • +
  • Editor/goto-mark-1 +
  • +
  • Editor/goto-mark-2 +
  • +
  • Editor/goto-mark-3 +
  • +
  • Editor/goto-mark-4 +
  • +
  • Editor/goto-mark-5 +
  • +
  • Editor/goto-mark-6 +
  • +
  • Editor/goto-mark-7 +
  • +
  • Editor/goto-mark-8 +
  • +
  • Editor/goto-mark-9 +
  • +
  • Editor/goto-visual-state-1 +
  • +
  • Editor/goto-visual-state-2 +
  • +
  • Editor/goto-visual-state-3 +
  • +
  • Editor/goto-visual-state-4 +
  • +
  • Editor/goto-visual-state-5 +
  • +
  • Editor/goto-visual-state-6 +
  • +
  • Editor/goto-visual-state-7 +
  • +
  • Editor/goto-visual-state-8 +
  • +
  • Editor/goto-visual-state-9 +
  • +
  • Editor/goto-visual-state-10 +
  • +
  • Editor/goto-visual-state-11 +
  • +
  • Editor/goto-visual-state-12 +
  • +
  • Editor/insert-region +
  • +
  • Editor/insert-time +
  • +
  • Editor/invert-selection +
  • +
  • Editor/jump-backward-to-mark +
  • +
  • Editor/jump-forward-to-mark +
  • +
  • Editor/LayerAddHigher +
  • +
  • Editor/Layering +
  • +
  • Editor/LayerLaterHigher +
  • +
  • Editor/LayerMoveAddHigher +
  • +
  • Editor/MeterFalloff +
  • +
  • Editor/MeterHold +
  • +
  • Editor/Monitoring +
  • +
  • Editor/move-selected-tracks-down +
  • +
  • Editor/move-selected-tracks-up +
  • +
  • Editor/multi-duplicate-region +
  • +
  • Editor/mute-unmute-region +
  • +
  • Editor/naturalize-region +
  • +
  • Editor/normalize-region +
  • +
  • Editor/nudge-backward +
  • +
  • Editor/nudge-forward +
  • +
  • Editor/nudge-next-backward +
  • +
  • Editor/nudge-next-forward +
  • +
  • Editor/nudge-playhead-backward +
  • +
  • Editor/nudge-playhead-forward +
  • +
  • Editor/pitch-[Shift]-region +
  • +
  • Editor/pitch-shift-region +
  • +
  • Editor/play-edit-range +
  • +
  • Editor/play-from-edit-point-and-return +
  • +
  • Editor/play-selected-regions +
  • +
  • Editor/playhead-backward-to-grid +
  • +
  • Editor/playhead-forward-to-grid +
  • +
  • Editor/playhead-to-edit +
  • +
  • Editor/playhead-to-next-region-boundary +
  • +
  • Editor/playhead-to-next-region-boundary-noselection +
  • +
  • Editor/playhead-to-next-region-sync +
  • +
  • Editor/playhead-to-next-region-sync +
  • +
  • Editor/playhead-to-previous-region-boundary +
  • +
  • Editor/playhead-to-previous-region-boundary-noselection +
  • +
  • Editor/playhead-to-previous-region-sync +
  • +
  • Editor/playhead-to-range-end +
  • +
  • Editor/playhead-to-range-start +
  • +
  • Editor/PullupMinus1 +
  • +
  • Editor/PullupMinus4 +
  • +
  • Editor/PullupMinus4Minus1 +
  • +
  • Editor/PullupMinus4Plus1 +
  • +
  • Editor/PullupNone +
  • +
  • Editor/PullupPlus1 +
  • +
  • Editor/PullupPlus4 +
  • +
  • Editor/PullupPlus4Minus1 +
  • +
  • Editor/PullupPlus4Plus1 +
  • +
  • Editor/redo +
  • +
  • Editor/RegionEditOps +
  • +
  • Editor/remove-last-capture +
  • +
  • Editor/reverse-region +
  • +
  • Editor/save-visual-state-1 +
  • +
  • Editor/save-visual-state-2 +
  • +
  • Editor/save-visual-state-3 +
  • +
  • Editor/save-visual-state-4 +
  • +
  • Editor/save-visual-state-5 +
  • +
  • Editor/save-visual-state-6 +
  • +
  • Editor/save-visual-state-7 +
  • +
  • Editor/save-visual-state-8 +
  • +
  • Editor/save-visual-state-9 +
  • +
  • Editor/save-visual-state-10 +
  • +
  • Editor/save-visual-state-11 +
  • +
  • Editor/save-visual-state-12 +
  • +
  • Editor/scroll-tracks-down +
  • +
  • Editor/scroll-tracks-up +
  • +
  • Editor/select-all +
  • +
  • Editor/select-all-after-edit-cursor +
  • +
  • Editor/select-all-after-playhead +
  • +
  • Editor/select-all-before-edit-cursor +
  • +
  • Editor/select-all-before-playhead +
  • +
  • Editor/select-all-between-cursors +
  • +
  • Editor/select-all-in-loop-range +
  • +
  • Editor/select-all-in-punch-range +
  • +
  • Editor/select-all-within-cursors +
  • +
  • Editor/select-next-route +
  • +
  • Editor/select-prev-route +
  • +
  • Editor/select-range-between-cursors +
  • +
  • Editor/selected-marker-to-next-region-boundary +
  • +
  • Editor/selected-marker-to-previous-region-boundary +
  • +
  • Editor/separate +
  • +
  • Editor/set-edit-point +
  • +
  • Editor/set-fade-in-length +
  • +
  • Editor/set-fade-out-length +
  • +
  • Editor/set-loop-from-edit-range +
  • +
  • Editor/set-loop-from-region +
  • +
  • Editor/set-playhead +
  • +
  • Editor/set-punch-from-edit-range +
  • +
  • Editor/set-punch-from-region +
  • +
  • Editor/set-region-sync-position +
  • +
  • Editor/set-tempo-from-edit-range +
  • +
  • Editor/set-tempo-from-region +
  • +
  • Editor/show-editor-mixer +
  • +
  • Editor/Smpte24 +
  • +
  • Editor/Smpte25 +
  • +
  • Editor/Smpte30 +
  • +
  • Editor/Smpte30drop +
  • +
  • Editor/Smpte60 +
  • +
  • Editor/Smpte2997 +
  • +
  • Editor/Smpte5994 +
  • +
  • Editor/Smpte2997drop +
  • +
  • Editor/Smpte23976 +
  • +
  • Editor/Smpte24976 +
  • +
  • Editor/snap-magnetic +
  • +
  • Editor/snap-normal +
  • +
  • Editor/SnapMode +
  • +
  • Editor/SnapTo +
  • +
  • Editor/Solo +
  • +
  • Editor/split-region +
  • +
  • Editor/start-range +
  • +
  • Editor/step-tracks-down +
  • +
  • Editor/step-tracks-up +
  • +
  • Editor/Subframes +
  • +
  • Editor/Subframes100 +
  • +
  • Editor/Subframes80 +
  • +
  • Editor/tab-to-transient-backwards +
  • +
  • Editor/tab-to-transient-forwards +
  • +
  • Editor/temporal-zoom-in +
  • +
  • Editor/temporal-zoom-out +
  • +
  • Editor/Timecode +
  • +
  • Editor/toggle-auto-xfades +
  • +
  • Editor/toggle-edit-mode +
  • +
  • Editor/toggle-fade-out-active +
  • +
  • Editor/toggle-fade-out-active +
  • +
  • Editor/toggle-follow-playhead +
  • +
  • Editor/toggle-internal-edit +
  • +
  • Editor/toggle-rhythm-ferret +
  • +
  • Editor/toggle-xfades-active +
  • +
  • Editor/toggle-xfades-visible +
  • +
  • Editor/toggle-zoom +
  • +
  • Editor/ToggleGeneric MIDISurface +
  • +
  • Editor/ToggleGeneric MIDISurfaceFeedback +
  • +
  • Editor/ToggleGeneric MIDISurfaceSubMenu +
  • +
  • Editor/ToggleMeasureVisibility +
  • +
  • Editor/ToggleWaveformsWhileRecording +
  • +
  • Editor/ToggleWaveformVisibility +
  • +
  • Editor/track-record-enable-toggle +
  • +
  • Editor/trim-back +
  • +
  • Editor/trim-from-start +
  • +
  • Editor/trim-front +
  • +
  • Editor/trim-to-end +
  • +
  • Editor/undo +
  • +
  • Editor/View +
  • +
  • Editor/zoom-to-region +
  • +
  • Editor/zoom-to-region-both-axes +
  • +
  • Editor/zoom-to-session +
  • +
  • Editor/ZoomFocus +
  • +
  • JACK/JACK +
  • +
  • JACK/JACKDisconnect +
  • +
  • JACK/JACKReconnect +
  • +
  • JACK/JACKLatency32 +
  • +
  • JACK/JACKLatency64 +
  • +
  • JACK/JACKLatency128 +
  • +
  • JACK/JACKLatency256 +
  • +
  • JACK/JACKLatency512 +
  • +
  • JACK/JACKLatency1024 +
  • +
  • JACK/JACKLatency2048 +
  • +
  • JACK/JACKLatency4096 +
  • +
  • JACK/JACKLatency8192 +
  • +
  • Main/AddTrackBus +
  • +
  • Main/AudioFileFormat +
  • +
  • Main/AudioFileFormatData +
  • +
  • Main/AudioFileFormatHeader +
  • +
  • Main/CleanupUnused +
  • +
  • Main/FlushWastebasket +
  • +
  • Main/Close +
  • +
  • Main/ControlSurfaces +
  • +
  • Main/Export +
  • +
  • Main/ExportRangeMarkers +
  • +
  • Main/ExportSelection +
  • +
  • Main/ExportSession +
  • +
  • Main/Help +
  • +
  • Main/KeyMouse Actions +
  • +
  • Main/Metering +
  • +
  • Main/MeteringFallOffRate +
  • +
  • Main/MeteringHoldTime +
  • +
  • Main/New +
  • +
  • Main/Open +
  • +
  • Main/Options +
  • +
  • Main/Recent +
  • +
  • Main/SaveTemplate +
  • +
  • Main/Session +
  • +
  • Main/Snapshot +
  • +
  • Main/TransportOptions +
  • +
  • Main/Windows +
  • +
  • MouseMode/set-mouse-mode-gain +
  • +
  • MouseMode/set-mouse-mode-object +
  • +
  • MouseMode/set-mouse-mode-range +
  • +
  • MouseMode/set-mouse-mode-timefx +
  • +
  • MouseMode/set-mouse-mode-zoom +
  • +
  • options/DoNotRunPluginsWhileRecording +
  • +
  • options/FileDataFormat24bit +
  • +
  • options/FileDataFormatFloat +
  • +
  • options/FileHeaderFormatBWF +
  • +
  • options/FileHeaderFormatCAF +
  • +
  • options/FileHeaderFormatWAVE +
  • +
  • options/FileHeaderFormatWAVE64 +
  • +
  • options/GainReduceFastTransport +
  • +
  • options/InputAutoConnectManual +
  • +
  • options/InputAutoConnectPhysical +
  • +
  • options/LatchedRecordEnable +
  • +
  • options/LatchedSolo +
  • +
  • options/MeterFalloffFast +
  • +
  • options/MeterFalloffFaster +
  • +
  • options/MeterFalloffFastest +
  • +
  • options/MeterFalloffMedium +
  • +
  • options/MeterFalloffOff +
  • +
  • options/MeterFalloffSlow +
  • +
  • options/MeterFalloffSlowest +
  • +
  • options/MeterHoldLong +
  • +
  • options/MeterHoldMedium +
  • +
  • options/MeterHoldOff +
  • +
  • options/MeterHoldShort +
  • +
  • options/OutputAutoConnectManual +
  • +
  • options/OutputAutoConnectMaster +
  • +
  • options/OutputAutoConnectPhysical +
  • +
  • options/RegionEquivalentsOverlap +
  • +
  • options/SendMMC +
  • +
  • options/SendMTC +
  • +
  • options/ShowSoloMutes +
  • +
  • options/SoloInPlace +
  • +
  • options/SoloViaBus +
  • +
  • options/StopPluginsWithTransport +
  • +
  • options/StopRecordingOnXrun +
  • +
  • options/StopTransportAtEndOfSession +
  • +
  • options/UseExternalMonitoring +
  • +
  • options/UseHardwareMonitoring +
  • +
  • options/UseMMC +
  • +
  • options/UseSoftwareMonitoring +
  • +
  • options/VerifyRemoveLastCapture +
  • +
  • redirectmenu/activate +
  • +
  • redirectmenu/activate_all +
  • +
  • redirectmenu/clear +
  • +
  • redirectmenu/copy +
  • +
  • redirectmenu/cut +
  • +
  • redirectmenu/deactivate +
  • +
  • redirectmenu/deactivate_all +
  • +
  • redirectmenu/deselectall +
  • +
  • redirectmenu/edit +
  • +
  • redirectmenu/newinsert +
  • +
  • redirectmenu/newplugin +
  • +
  • redirectmenu/newsend +
  • +
  • redirectmenu/paste +
  • +
  • redirectmenu/rename +
  • +
  • redirectmenu/selectall +
  • +
  • RegionList/RegionListSort +
  • +
  • RegionList/RegionListSort +
  • +
  • RegionList/rlAudition +
  • +
  • RegionList/rlHide +
  • +
  • RegionList/rlRemove +
  • +
  • RegionList/rlShowAll +
  • +
  • RegionList/rlShowAuto +
  • +
  • RegionList/SortAscending +
  • +
  • RegionList/SortByRegionEndinFile +
  • +
  • RegionList/SortByRegionLength +
  • +
  • RegionList/SortByRegionName +
  • +
  • RegionList/SortByRegionPosition +
  • +
  • RegionList/SortByRegionStartinFile +
  • +
  • RegionList/SortByRegionTimestamp +
  • +
  • RegionList/SortBySourceFileCreationDate +
  • +
  • RegionList/SortBySourceFileLength +
  • +
  • RegionList/SortBySourceFileName +
  • +
  • RegionList/SortBySourceFilesystem +
  • +
  • RegionList/SortDescending +
  • +
  • ShuttleActions/SetShuttleUnitsPercentage +
  • +
  • ShuttleActions/SetShuttleUnitsSemitones +
  • +
  • Snap/snap-to-asixteenthbeat +
  • +
  • Snap/snap-to-bar +
  • +
  • Snap/snap-to-beat +
  • +
  • Snap/snap-to-cd-frame +
  • +
  • Snap/snap-to-edit-cursor +
  • +
  • Snap/snap-to-eighths +
  • +
  • Snap/snap-to-frame +
  • +
  • Snap/snap-to-mark +
  • +
  • Snap/snap-to-minutes +
  • +
  • Snap/snap-to-quarters +
  • +
  • Snap/snap-to-region-boundary +
  • +
  • Snap/snap-to-region-end +
  • +
  • Snap/snap-to-region-start +
  • +
  • Snap/snap-to-region-sync +
  • +
  • Snap/snap-to-seconds +
  • +
  • Snap/snap-to-smpte-frame +
  • +
  • Snap/snap-to-smpte-minutes +
  • +
  • Snap/snap-to-smpte-seconds +
  • +
  • Snap/snap-to-thirds +
  • +
  • Snap/snap-to-thirtyseconds +
  • +
  • Transport/focus-on-clock +
  • +
  • Transport/Forward +
  • +
  • Transport/GotoEnd +
  • +
  • Transport/GotoStart +
  • +
  • Transport/GotoZero +
  • +
  • Transport/Loop +
  • +
  • Transport/PlaySelection +
  • +
  • Transport/Record +
  • +
  • Transport/record-roll +
  • +
  • Transport/Rewind +
  • +
  • Transport/ToggleAutoInput +
  • +
  • Transport/ToggleAutoPlay +
  • +
  • Transport/ToggleAutoReturn +
  • +
  • Transport/ToggleClick +
  • +
  • Transport/TogglePunchIn +
  • +
  • Transport/TogglePunchOut +
  • +
  • Transport/ToggleRoll +
  • +
  • Transport/ToggleRollForgetCapture +
  • +
  • Transport/ToggleRollMaybe +
  • +
  • Transport/ToggleTimeMaster +
  • +
  • Transport/ToggleVideoSync +
  • +
  • Transport/TransitionToReverse +
  • +
  • Transport/TransitionToRoll +
  • +
  • Zoom/zoom-focus-center +
  • +
  • Zoom/zoom-focus-edit +
  • +
  • Zoom/zoom-focus-left +
  • +
  • Zoom/zoom-focus-playhead +
  • +
  • Zoom/zoom-focus-right +
  • +
diff --git a/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol.html b/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol.html new file mode 100644 index 0000000..d719f92 --- /dev/null +++ b/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol.html @@ -0,0 +1,40 @@ +--- +layout: default +title: Devices using Mackie/Logic Control Protocol +--- + + + + +

This will walk you through the process of configuring and using a MIDI control surface with Ardour that uses the Mackie Control protocol or the Logic Control protocol. Devices that have been tested and are known to work include the SSL Nucleus, Mackie Control Pro (plus extenders), Behringer devices in Mackie/Logic mode, and Steinberg CMC devices.

+

See the bottom of this page for links to device-specific information.

+

Preparing your device for use with Ardour

+

Each interface model probably has some necessary setup so it's in the state Ardour expects to identify it. See your control surface page to see what's necessary. If there is no page about your control surface, create one!

+

Preparation

+

Please see the platform specific pages for:

+ +

Enabling Mackie Control in Ardour

+

Navigate to Edit > Preferences > User Interaction. Double-click on "Mackie Control" to see the setup dialog:

+

Mackie Control Setup Dialog

+

From the selector at the top, choose the type of device you are using. (What do do if your device is not listed).

+

Once your setup is complete, click "OK" to close the dialog. Now click on the enable checkbox for "Mackie Control".

+

Connecting control surface and Ardour MIDI ports

+

If you are using a device that uses ipMIDI such as the SSL Nucleus, no MIDI port connections are required - Ardour and your control surface will be able to talk to each other automatically.

+

If you are using a device that uses "normal" MIDI (via a standard MIDI or USB cable), you need to connect Ardour's Mackie Control ports to the MIDI ports corresponding to the control surface.

+

Now that you have both control surface and Ardour MIDI ports available, cross connect the control surface MIDI ports and the two mackie ports.

+

Once you have made these connections once, Ardour will recreate them when it is started in the future (as long as you leave Mackie Control enabled as a control protocol).

+

Customizing your control surface

+

Every possible Mackie Control button can be bound to any action present in Ardour's GUI.

+

Please check your control surface page for suggestions.

+ + + + +{% children %} diff --git a/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/01_behringer-devices-in-mackielogic-control-mode.html b/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/01_behringer-devices-in-mackielogic-control-mode.html new file mode 100644 index 0000000..0ca6579 --- /dev/null +++ b/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/01_behringer-devices-in-mackielogic-control-mode.html @@ -0,0 +1,9 @@ +--- +layout: default +title: Behringer devices in Mackie/Logic Control Mode +--- + + + +

No special setup is required.

+ diff --git a/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/02_mackie-control-setup-on-linux.html b/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/02_mackie-control-setup-on-linux.html new file mode 100644 index 0000000..e566ee0 --- /dev/null +++ b/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/02_mackie-control-setup-on-linux.html @@ -0,0 +1,12 @@ +--- +layout: default +title: Mackie Control Setup on Linux +--- + + + +

Devices using ipMIDI

+

If you are using a device like the SSL Nucleus that uses ipMIDI, no set up is required other than to ensure that your control surface and computer are both connected to the same network.

+

Devices using conventional MIDI

+

Before attempting to use a Mackie Control device that communicates via a standard MIDI cable or a USB cable, you should ensure that your Linux MIDI environment is setup.

+ diff --git a/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/03_ssl-nucleus.html b/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/03_ssl-nucleus.html new file mode 100644 index 0000000..fe0e24f --- /dev/null +++ b/_manual/22_using-control-surfaces/02_devices-using-mackielogic-control-protocol/03_ssl-nucleus.html @@ -0,0 +1,8 @@ +--- +layout: default +title: SSL Nucleus +--- + + + + diff --git a/_manual/22_using-control-surfaces/03_midi-binding-maps.html b/_manual/22_using-control-surfaces/03_midi-binding-maps.html new file mode 100644 index 0000000..eabaa95 --- /dev/null +++ b/_manual/22_using-control-surfaces/03_midi-binding-maps.html @@ -0,0 +1,244 @@ +--- +layout: default +title: MIDI Binding Maps +--- + + + + +

+Ardour 2.X supported MIDI learning for more or less any control. This was a nice feature that quite a few other DAWs have now provided, but it didn't allow Ardour to work "out of the box" with sensible defaults for existing commercial MIDI controllers. In Ardour 3 and later versions, we have augmented the MIDI learn feature with the ability to load a MIDI binding map for a given controller, which can set up an arbitrary number of physical controls with anything inside Ardour that can be controlled. At this time, these binding maps need to be created with a text editor, but we currently have presets for

+
    +
  • Behringer BCF 2000 +
  • +
  • Korg_nanoKONTROL +
  • +
  • M-Audio Oxygen 8 v2 +
  • +
  • Roland SI-24 +
  • +
  • Behringer DDX3216 +
  • +
  • M-Audio Axiom 25 +
  • +
+

+MIDI binding maps are accessible by double clicking on the "Generic MIDI" line in the Control Surfaces tab of the Ardour preferences dialog. Ardour will retain your chosen map after you choose one. +

+

+The information below describes in great detail how to create a new MIDI binding map.

+

+

The Basic Concept

+

+Since the beginning of time (well, sometime early in the 2.X series), Ardour has had the concept of identifying each track and bus with a remote control ID. This ID uniquely identifies a track or bus so that when messages arrive from elsewhere (MIDI or OSC), we can determine which track or bus they are intended to control. Ardour has a number of ways of assigning remote control IDs, but they don't really matter very much when creating MIDI binding maps, so we won't discuss that here. You just need to know that there is a "first track" and its remote control ID is 1, and so on. +

+

Getting Started

+

+MIDI bindings are stored in files with the suffix ".map" attached to their name. The minimal content looks like this:

+
+<?xml version="1.0" encoding="UTF-8"?>
+<ArdourMIDIBindings version="1.0.0" name="The name of this set of bindings">
+</ArdourMIDIBindings>
+
+

So, to start, create a file with that as the initial contents. +

+

Finding out what your MIDI control surface sends

+

+This is the most complex part of the job, but its still not very hard. You need to connect the control surface to an application that will show you the information that the device sends each time you modify a knob, slider, button etc. There are a variety of such applications (notably gmidimon and kmidimon, but you can actually use Ardour for this if you want. Start Ardour in a terminal window, connect MIDI ports up, and in the Preferences window, enable "Trace Input" on the relevant MIDI port. A full trace of the MIDI data received will show up in the terminal window. (Note: in Ardour3, you get a dedicated, custom dialog for this kind of tracing) +

+

Types of Bindings

+

+There are two basic kinds of bindings you can make between a MIDI message and something inside Ardour. The first is a binding to a specific parameter of a track or bus. The second is a binding to a function that will change Ardour's state in some way. +

+

Binding to Track/Bus controls

+

+A track/bus binding has one of two basic structures

+
+  <Binding msg specification  uri="... control address ..."/>
+  <Binding msg specification  function="... function name ..."/>
+
+

Message specifications

+

+You can create a binding for either 3 types of channel messages, or for a system exclusive ("sysex") message. A channel message specification looks like this:

+
+   <Binding channel="1" ctl="13" ....
+
+

This defines a binding for a MIDI Continuous Controller message involving controller 13, arriving on channel 1. There are 16 MIDI channels, numbered 1 to 16. Where the example above says ctl, you can alternatively use note (to create binding for a Note On message) or pgm (to create a binding for a Program Change message). +

+

+You can also bind sysex messages:

+
+  <Binding sysex="f0 0 0 e 9 0 5b f7" ....
+  <Binding sysex="f0 7f 0 6 7 f7" ....
+
+

The string after the sysex= part is the sequence of MIDI bytes, as hexadecimal values, that make up the sysex message. +

+

+Finally, you can bind a totally arbitrary MIDI message:

+
+  <Binding msg="f0 0 0 e 9 0 5b f7" ....
+  <Binding msg="80 60 40" ....
+
+

The string after the msg= part is the sequence of MIDI bytes, as hexadecimal values, that make up the message you want to bind. Using this is slightly less efficient than the other variants shown above, but is useful for some oddly designed control devices. +

+

Control address

+

+A control address defines what the binding will actually control. There are quite a few different things that can be specified here:

+

+
+
/route/gain
+
the gain control ("fader") for the track/bus
+
/route/solo
+
a toggleable control for solo (and listen) of the track/bus
+
/route/mute
+
a toggleable control to mute/unmute the track/bus
+
/route/recenable
+
a toggleable control to record-enable the track
+
/route/panwidth
+
interpreted by the track/bus panner, should control image "width"
+
/route/pandirection
+
interpreted by the track/bus panner, should control image "direction"
+
/route/plugin/parameter
+
the Mth parameter of the Nth plugin of a track/bus +
+
/route/send/gain
+
the gain control ("fader") of the Nth send of a track/bus
+
+

Each of the specifications needs an address, which takes various forms too. For track-level controls (solo/gain/mute/recenable), the address is one the following:

+
+
a number, eg. "1" +
+
identifies a track or bus by its remote control ID +
+
B, followed by a number +
+
identifies a track or bus by its remote control ID within the current bank (see below for more on banks) +
+
one or more words +
+
identifies a track or bus by its name +
+
+
+
+

For send/insert/plugin controls, the address consists of a track/bus address (as just described) followed by a number identifying the plugin/send (starting from 1). For plugin parameters, there is an additional third component: a number identifying the plugin parameter number (starting from 1). +

+

+One additional feature: for solo and mute bindings, you can also add momentary="yes" after the control address. This is useful primarily for NoteOn bindings - when Ardour gets the NoteOn it will solo or mute the targetted track or bus, but then when a NoteOff arrives, it will un-solo or un-mute it. +

+

Bindings to Ardour "functions"

+

+Rather than binding to a specific track/bus control, it may be useful to have a MIDI controller able to alter some part of Ardour's state. A binding definition that does this looks like this:

+
+  <Binding channel="1" note="13" function="transport-roll"/>
+
+

In this case, a NoteOn message for note number 13 (on channel 1) will start the transport rolling. The following function names are available: +

+
+
+transport-stop +
+
stop the transport +
+
+transport-roll +
+
start the transport "rolling" +
+
+transport-zero +
+
move the playhead to the zero position +
+
+transport-start +
+
move the playhead to the start marker +
+
+transport-end +
+
move the playhead to the end marker +
+
+loop-toggle +
+
turn on loop playback +
+
+rec-enable +
+
enable the global record button +
+
+rec-disable +
+
disable the global record button +
+
+next-bank +
+
Move track/bus mapping to the next bank (see Banks below) +
+
+prev-bank +
+
Move track/bus mapping to the previous bank (see Banks below)
+
+
+

Binding to Ardour "actions"

+

+You can also bind a sysex or arbitrary message to any of the items that occur in Ardour's main menu (and its submenus). The best place to look for the (long) list of how to address each item is in your keybindings file, which will contain lines that look like this:

+
+(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "equal")
+
+

To create a binding between an arbitrary MIDI message (we'll use a note-off on channel 1 of MIDI note 60 (hex) with release velocity 40 (hex)), the binding file would contain:

+
+   <Binding msg="80 60 40" action="Editor/temporal-zoom-in"/>
+
+

The general rule, when taken an item from the keybindings file and using it in a MIDI binding is to simply strip the <Action> prefix of the second field in the keybinding definition. +

+

Banks and Banking

+

+Because many modern control surfaces offer per-track/bus controls for far fewer tracks & busses than many users want to control, Ardour offers the relatively common place concept of "banks". Banks to allow you to relatively easily control any number of tracks and/or busses regardless of how many faders/knobs etc. your control surface has. To use banking, the control addresses must be specified using the bank relative format mentioned above ("B1" to identify the first track of a bank of tracks, rather than "1" to identify the first track). +

+

+One very important extra piece of information is required to use banking: an extra line near the start of the list of bindings that specifies how many tracks/busses to use per bank. If the device has 8 faders, then 8 would be a sensible value to use for this. The line looks like this:

+
+   <DeviceInfo bank-size="8"/>
+
+

In addition, you probably want to ensure that you bind something on the control surface to the next-bank and prev-bank functions, otherwise you and other users will have to use the mouse and the GUI to change banks, which rather defeats the purpose of the bindings. +

+

A Complete (though muddled) Example

+
+<?xml version="1.0" encoding="UTF-8"?>
+<ArdourMIDIBindings version="1.0.0" name="pc1600x transport controls">
+  <DeviceInfo bank-size="16"/>
+  <Binding channel="1" ctl="1"   uri="/route/gain B1"/>
+  <Binding channel="1" ctl="2"   uri="/route/gain B2"/>
+  <Binding channel="1" ctl="3"   uri="/route/send/gain B1 1"/>
+  <Binding channel="1" ctl="4"   uri="/route/plugin/parameter B1 1 1"/>
+  <Binding channel="1" ctl="6"   uri="/bus/gain master"/>
+
+  <Binding channel="1" note="1"  uri="/route/solo B1"/>
+  <Binding channel="1" note="2"  uri="/route/solo B2" momentary="yes"/>
+
+  <Binding channel="1" note="15"  uri="/route/mute B1" momentary="yes"/>
+  <Binding channel="1" note="16"  uri="/route/mute B2" momentary="yes"/>
+
+  <Binding sysex="f0 0 0 e 9 0 5b f7" function="transport-start"/>
+  <Binding sysex="f0 7f 0 6 7 f7" function="rec-disable"/>
+  <Binding sysex="f0 7f 0 6 6 f7" function="rec-enable"/>
+  <Binding sysex="f0 0 0 e 9 0 53 0 0 f7" function="loop-toggle"/>
+
+  <Binding channel="1" note="13" function="transport-roll"/>
+  <Binding channel="1" note="14" function="transport-stop"/>
+  <Binding channel="1" note="12" function="transport-start"/>
+  <Binding channel="1" note="11" function="transport-zero"/>
+  <Binding channel="1" note="10" function="transport-end"/>
+</ArdourMIDIBindings>
+
+

+Please note that channel, controller and note numbers are specified as decimal numbers in the ranges 1-16, 0-127 and 0-127 respectively (the channel range may change at some point) +

+ diff --git a/_plugins/manual.rb b/_plugins/manual.rb new file mode 100644 index 0000000..cde76c4 --- /dev/null +++ b/_plugins/manual.rb @@ -0,0 +1,239 @@ +require 'erb' +require 'fileutils' +require 'tmpdir' +require 'pp' + +module Manual + + DIRECTORY_ENTRIES = {} + + def self.traverse_data(entries, directory_sort = false, paths = [], key_paths = [], &block) + + entries.map do |entry| + + entry = entry.dup + + if entry[:type] == 'directory' + entry[:children] = traverse_data(entry[:children], directory_sort, paths + [entry[:name]], key_paths + [entry[:key]], &block) + end + block_given? ? block.call(entry) : entry + end + end + + def self.traverse(path, directory_sort = false, paths = [], key_paths = [], &block) + + entries = Dir.glob(File.join(path,'*')) + + entries.sort_by! { |e| File.directory?(e) ? 1 : 0 } if directory_sort + + entries.map do |entry| + is_dir = File.directory?(entry) + + data = extract_data(is_dir ? "#{entry}.html" : entry) + + short_title = data['menu_title'] || data['title'] + + name = entry[/[^\/]+$/] # filename + key = name.sub(/^[0-9]+(\-|_)/,'').sub(/\.[^\.]+$/,'') # slug + my_paths = paths + [name] + my_key_paths = key_paths + [key] + url = '/' + my_key_paths.join('/') + '/' + + without_extension = entry.sub(/\.[^\/\/]+$/,'') + + h = { + name: name, + title: data['title'] || key, + menu_title: short_title || key, + key: key, + filename: entry, + type: is_dir ? 'directory' : 'file', + url: url + } + + if is_dir + h.update \ + children: traverse(entry, directory_sort, my_paths, my_key_paths, &block) + else + h.update extension: File.extname(name), has_dir: File.directory?(without_extension) + end + + if is_dir + DIRECTORY_ENTRIES[url] = h + end + + block_given? ? block.call(h) : h + end + end + + def self.extract_data(filename) + if File.exists?(filename) and !File.directory?(filename) and first3 = File.open(filename) { |fd| fd.read(3) } and first3 == '---' + blah = filename.sub(/^_manual\//,'') + page = Jekyll::Page.new(@site, '_manual', File.dirname(blah), File.basename(blah)) + page.data + else + {} + end + end + + class ManualPage < Jekyll::Page + def initialize(*args) + super + end + end + + class ManualGenerator < Jekyll::Generator + + safe true + + def generate(site) + source = site.config['source'] + destination = site.config['destination'] + + manual_dir = '_manual' + + # now we need to turn our raw input files into something for jekyll to process + # everything is in a directory with it's name and all content is in index.html files + # the tmpdir gets removed at the end of this block automatically + + Dir.mktmpdir do |tmpdir| + + Manual.traverse manual_dir, true do |entry| + output_filename = File.join(tmpdir, entry[:url], "index#{entry[:extension]}") + + FileUtils.mkdir_p File.dirname(output_filename) + + next unless entry[:type] == 'file' + + File.open(output_filename, 'w+') do |f| + f << File.read(entry[:filename]) + end + + relative_filename = File.join(entry[:url], "index#{entry[:extension]}") + + site.pages << Jekyll::Page.new(site, tmpdir, File.dirname(relative_filename), File.basename(relative_filename)) + end + + end + end + + end + + class ManualChildPageTag < Liquid::Tag + def render(context) + current = context['page.url'].sub(/[^\/]+$/,'') + + if entry = DIRECTORY_ENTRIES[current] + + path = File.join(entry[:filename], '*') + + entries = entry[:children].map do |child| + "
  • #{child[:title]}
  • " + end.uniq + + "
      #{entries.join}
    " + end + end + end + + # generates a big
    list of the manual page stucture + + class ManualTOCTag < Liquid::Tag + + def process_hierarchy(items_a, items_b) + current = true + position = nil + level = -1 + + [items_a.length,items_b.length].max.times do |i| + a = items_a[i] + b = items_b[i] + + current = false if a != b + + # start incrementing this when we don't have either a or b + level += 1 if !a || !b + + if a && b + return [false] if a != b + elsif a + position = :parent + elsif b + position = :child + end + end + position ? [current, position, level + 1] : [current] + end + + def render(context) + + @source = '_manual' #context.registers[:site].source + + @@data_tree ||= Manual.traverse(@source) + + @site = context.registers[:site] + current = context['page.url'].sub(/[^\/]+$/,'') + + current_a = current.split('/').reject(&:empty?) + + tree = Manual.traverse_data(@@data_tree) do |entry| + + url = entry[:url] + + url_a = url.split('/').reject(&:empty?) + + is_current, position, level = *process_hierarchy(current_a, url_a) + + css_classes = [] + css_classes << 'active' if is_current + css_classes << position.to_s if position + css_classes << "#{position}-#{level}" if position && level + css_classes << 'other' unless is_current || position || level + + css_classes << "level-#{url_a.length}" + css_classes = css_classes.join(' ') + + if entry[:type] == 'directory' + + erb = ::ERB.new <<-HTML +
    + <%= entry[:menu_title] %> +
    +
    +
    + <%= entry[:children].join %> +
    +
    + HTML + + erb.result(binding) + else + + directory_filename = entry[:filename].sub(/\.[^\/\.]+$/,'') + + unless entry[:has_dir] + + erb = ::ERB.new <<-HTML +
    + <%= entry[:menu_title] %> +
    +
    +
    + HTML + + erb.result(binding) + end + end + end + + "
    #{tree.join}
    " + + end + + + end + +end + +Liquid::Template.register_tag('tree', Manual::ManualTOCTag) +Liquid::Template.register_tag('children', Manual::ManualChildPageTag) diff --git a/drupal-export.html b/drupal-export.html new file mode 100644 index 0000000..7ce7ed0 --- /dev/null +++ b/drupal-export.html @@ -0,0 +1,3813 @@ + + + + + + The Ardour3 Manual + + + + + +
    +

    The Ardour3 Manual

    +

    Welcome to Ardour

    +

    Ardour is a professional tool for working with audio and MIDI.

    +
    +

    Welcome to Ardour

    +

    Welcome to Ardour

    +

    Ardour is a professional tool for working with audio and MIDI.

    +

    This section covers:

    +
    +

    About Ardour

    +

    About Ardour

    +

    Ardour allows you to record and edit both audio and MIDI data, add many different kinds of effects and mix.

    +

    Things you might use Ardour for include:

    +
      +
    • Digitally record acoustic/electric instruments or vocals
    • +
    +
    +

    Isn't This A Really Complicated Program?

    +

    Isn't This A Really Complicated Program?

    +

    There is no point in pretending that Ardour is a simple, easy to use program. The development group has worked hard to try to make simple things reasonably easy, common tasks quick, and hard and/or uncommon things possible. There is no doubt that we have more to do in this area, as well as polishing the user interface to improve its intuitiveness and work flow characteristics. At the same time, multi-track, multi-channel, non-linear, non-destructive audio editing is a far from simple process. Doing it right requires not only a good ear, but a solid appreciation for basic audio concepts and a robust mental model/metaphor of what you are doing. Ardour is not a simple "audio recorder" - you can certainly use it to record stereo (or even mono) material in a single track, but the program has been designed around much richer capabilities than this.

    +

    Some people complain that Ardour is not "intuitive" to use - its lead developer has some thoughts on that.

    +
    +
    +

    Why Write a DAW for Linux?

    +

    Why Write a DAW for Linux?

    +

    It is fairly understandable that existing proprietary DAWs do not run on Linux, given the rather small (but growing) share of the desktop market that Linux has. However, when surveying the landscape of "popular operating systems", we find:

    +
      +
    • older versions of Windows: plagued by abysmal stability and appalling security +
    • newer versions of Windows seem stable but still suffer from security problems +
    • OS X: an amazing piece of engineering that is excellent for audio work but only runs on proprietary hardware and still lacks the flexibility and adaptability of Linux. +
    +

    Security matters today, and will matter more in the future as more and more live or semi-live network based collaborations take place.

    +

    Let's contrast this with Linux, an operating system which:

    +
      +
    • can stay up for months (or even years) without issues +
    • is endlessly configurable down to the tiniest detail +
    • is not owned by any single corporate entity, ensuring its life and direction are not intertwined with that of a company (for a contrary example, consider BeOS) +
    • is fast and efficient +
    • runs on almost any computing platform ever created, including old "slow" systems and new "tiny" systems (e.g. Raspberry Pi) +
    • is one of the most secure operating systems "out of the box" +
    +

    More than anything, however, Ardour's primary author uses Linux and wanted a DAW that ran there.

    +

    Having written a DAW for Linux, it turned out to be relatively easy to port Ardour to OS X, mostly because of the excellent work done by the JACK OS X group that ported JACK to OS X. Although OS X has a number of disadvantages compared to Linux, its ease of use and its presence in many studios already makes it a worthwhile platform.

    +
    +
    +

    Why is it called Ardour?

    +

    Why is it called Ardour?

    +

    The name "Ardour" came from considerations of how to pronounce the acronym HDR(Hard Disk Recorder). The most obvious attempt sounds like a vowelless "harder" and it then was then a short step to an unrelated by slightly homophonic word:

    +

    ardour “ n 1: a feeling of strong eagerness (usually in favor of a person or cause); "they were imbued with a revolutionary ardor"; "he felt a kind of religious zeal" [syn: ardor, elan, zeal] 2: intense feeling of love [syn: ardor] 3: feelings of great warmth and intensity; "he spoke with great ardor" [syn: ardor, fervor, fervour, fervency, fire, fervidness] ”

    +

    Given the work required to develop Ardour, and the personality of its primary author, the name seemed appropriate even without the vague relationship to HDR.

    +

    Years later, another interpretation of "Ardour" appeared, this time based on listening to non-native English speakers attempt to pronounce the word. Rather than "Ardour", it became "Our DAW", which seemed poetically fitting for a Digital Audio Workstation whose source code and design belongs to a group of collaborators.

    +
    +
    +

    Why write another DAW?

    +

    Why write another DAW?

    +

    There are already a number of excellent digital audio workstations. To mention just a few: ProTools, Nuendo, Samplitude, Digital Performer, Logic, Cubase (SX), Sonar, along with several less well known systems such as SADIE, SAWStudio and others. Each of these programs has its strengths and weaknesses, although over the last few years most of them have converged on a very similar set of core features. However, each of them suffers from two problems when seen from the perspective of Ardour's development group:

    +
      +
    • they do not run natively on Linux
    • +
    • they are not available in source code form, making modifications, improvements, bugfixes by technically inclined users or their friends or consultants impossible.
    • +
    +
    +
    +
    +

    About Ardour documentation

    +

    About Ardour documentation

    +

    Conventions Used In This Manual

    +

    This section covers some of the typographical and language conventions used in this manual.

    +

    Keyboards and Modifiers

    +

    Keyboard bindings are shown like this: s or x. Ctrl-x means "press the Ctrl, keep it pressed and then also press the x key. You may also see key combinations such as Ctrl-Shift-e, which mean that you should press the Ctrl key, then while keeping it pressed also press the Shift key and then while keeping them both pressed, finally press the e key.

    +

    Note that different platforms have different conventions for which modifier key (Control or Command) to use as the primary or most common modifier. When viewing this manual from a machine identifying itself as running OS X, will see Cmd- where appropriate. On other machines you will see Ctrl-

    +

    Menu Items

    +

    Menu items are indicated like this: Top > Next > Deeper Each >-separated item indicates an item on a nested (sub) menu.

    +

    Preference/Dialog Options

    +

    Choices in various dialogs, notably the Preferences and Properties dialog, are indicated like this: Edit > Preferences > Audio > Some Option Each successive >-separated item indicates either a (sub) menu or tabbed dialog navigation. The final item is the one to choose/select/deselect, etc.

    +

    Notes

    +

    Important notes about things that might not otherwise be obvious are shown in this format

    +

    "Context-click"

    +

    Many times the term context-click is used to indicate that you should (typically) right-click on a particular element of the graphical user interface. Although right-click is the common, default way to do this, there are other ways to accomplish the same thing - this term refers to any of them, and the result is always that a menu specific to the item you clicked on will be displayed.

    +

    Mouse Buttons

    +

    We refer to mouse buttons as Left, Middle and Right. Ardour can use additional buttons, but they have no default behaviour in the program.

    +

    "The Pointer"

    +

    When the manual refers to the "pointer", it means the on-screen representation of the mouse position or the location of a touch action if you are using a touch interface.

    +
    +
    +

    Additional Resources

    +

    Additional Resources

    +

    In addition to this documentation, you may to check a variety of other resources.

    +

    Release Notes

    +

    The Ardour Forums

    +

    Information about Ardour Support

    +

    The Ardour Users Mailing List

    +
    +
    +
    +

    Introducing Ardour

    +

    Introducing Ardour

    +

    This chapter gives you a conceptual overview of Ardour and provides an example of a common workflow when creating music with the program.

    +

    This chapter covers:

    +
    +

    Creating Music with Ardour

    +

    Creating Music with Ardour

    +

    Ardour can be used in many different ways, from extremely simple to extremely complex. Many projects will be handled using the following kind of workflow.

    +

    Stage 1: Creating Your Project

    +

    The first step is to create a new session, or open an existing one. A session consists of a folder containing a session file that defines all the information about the session. All media files used by the session can be stored within the session folder.

    +

    More details on sessions can be found in Working With Sessions.

    +

    Stage 2: Creating and Importing Audio and MIDI data

    +

    Once you have a session, you will want to add some audio and/or MIDI material to it, which can be done in one of 3 ways:

    +
      +
    • Record incoming audio or MIDI data, either via audio or MIDI hardware connected to your computer, or from other applications. +
    • Create new MIDI data using the mouse and/or various dialogs +
    • Import existing media files into the session +
    +

    MIDI recordings consist of "performance data" ("play note X at time T") rather than actual sound. As a result, they are more flexible than actual audio, since the precise sound that they will generate when played depends on where you send the MIDI to. Two different synthesizers may produce very different sound in response to the same incoming MIDI data.

    +

    Audio recordings can be made from external instruments with electrical outputs (keyboards, guitars etc.) or via microphones for acoustic instruments.

    +

    Ardour uses the JACK Audio Connection Kit for all audio and MIDI I/O, which means that recording audio/MIDI from other applications is fundamentally identical to recording audio/MIDI from your audio/MIDI hardware.

    +

    Stage 3: Editing and Arranging

    +

    Once you have some material within the session, you can start to arrange it in time. This is done in one of the two main windows of Ardour, the Editor window.

    +

    Your audio/MIDI data appears in chunks called "regions", which are arranged into horizontal lanes called "tracks". Tracks are stacked vertically in the Editor window. You can copy, shorten, move, and delete regions without changing the actual data stored in the session at all - Ardour is a non-destructive editor. (Almost) nothing that you do while editing will ever modify the files stored on disk (except the session file itself).

    +

    You can also carry out many transformations to the contents of regions, again without altering anything on disk. You can alter/move/delete MIDI notes, and remove silence from audio regions, for example.

    +

    Stage 4: Mixing and Adding Effects

    +

    Once you have the arrangement of your session mostly complete, you will typically move on to the mixing phase. Mixing is a broad term to cover the way the audio signals that your session generates during playback and processed and added together into a final result that you actually hear. It can involve altering the relative levels of various parts of the session, adding effects that improve or transform certain elements, and others that bring the sound of the whole session to a new level.

    +

    Ardour will allow you to automate changes to any mixing parameters (such as volume, panning, and effects controls) - it will record the changes you make over time, using a mouse or keyboard or some external control device, and can play back those changes later. This is very useful because often the changes you need, even for just one track, will vary in one part of a session compared to another - rather than a single new setting for the volume, you will often need increases followed by decreases (for example, to track the changing volume of a singer). Using automation can make all of this relatively simple.

    +

    Stage 5: Export

    +

    Once you are really satisfied with the arrangement and mix of your session, you will typically want to produce a single audio file that contains a ready-to-listen to version of the work. Ardour will allow you to export audio files in a variety of formats (simultaneously in some cases). This exported file would typically be used in creating a CD, or be the basis for digital distribution of the work.

    +

    OI course sometimes you will want to do export material that isn't finished yet, for example to give a copy to someone else to try to mix on their own system. Ardour will allow you to export as much of a session as you want, at any time, in any supported format.

    +
    +
    +

    Understanding Basic Concepts and Terminology

    +

    Understanding Basic Concepts and Terminology

    +

    This section will help you get acquainted with the basic terminology and concepts associated with Ardour. More detailed information on each aspect of the program is provided in later chapters.

    +

    Sessions

    +

    An Ardour session is a container for an entire project. A session may contain an arbitrary number of tracks and busses consisting of audio and MIDI data, along with information on processing those tracks, a mix of levels, and everything else related to the project. A session might typically contain a song, or perhaps an entire album or a complete live recording.

    +

    Ardour sessions are held in directories; these directories contain one or more session files, some or all of the audio and MIDI data and a number of other state files that Ardour requires. The session file describes the structure of the session, and holds automation data and other details.

    +

    Ardour's session file is kept in XML format, which is advantageous as it is somewhat human-readable, and human-editable in a crisis. Sound files are stored in one of a number of optional formats, and MIDI files as SMF (standard MIDI format).

    +

    It is also possible for Ardour sessions to reference sound and MIDI files outside the session directory.

    +

    Ardour has a single current session at all times; if Ardour is started without specifying one, it will offer to load or create one.

    +

    More details can be bound at Working With Sessions.

    +

    Tracks

    +

    A track is a concept common to most DAWs, and used also in Ardour. Tracks can record audio or MIDI data to disk, and then replay it with processing. They also allow the audio or MIDI data to be edited in a variety of different ways.

    +

    In a typical pop production, one might use a track each for the kick drum, another for the snare, more perhaps for the drum overheads and others for bass, guitars and vocals.

    +

    Ardour can record to any number of tracks at one time, and then play those tracks back. On playback, a track's recordings may be processed by any number of plugins, panned, and its level altered to achieve a suitable mix.

    +

    A track's type is really only related to the type of data that it stores on disk. It is possible, for example, to have a MIDI track with a synthesizer plugin which converts MIDI to audio. Even though the track remains ‘MIDI’, in the sense that its on-disk recordings are MIDI, its output may be audio-only.

    +

    More details can be bound at Working With Tracks.

    +

    Regions

    +

    A track may contain many segments of audio or MIDI. Ardour contains these segments in things called regions, which are self-contained snippets of audio or MIDI data. Any recording pass, for example, generates a region on each track that is enabled for recording. Regions can be subjected to many editing operations; they may be moved around, split, trimmed, copied, and so on.

    +

    More details can be bound at Working With Regions.

    +

    Playlists

    +

    The details of what exactly each track should play back is described by a playlist. A playlist is simply a list of regions; each track always has an active playlist, and can have other playlists which can be switched in and out as required.

    +

    More details can be bound at Working With Playlists.

    +

    Busses

    +

    Busses are another common concept in both DAWs and hardware mixers. They are similar in many ways to tracks; they process audio or MIDI, and can run processing plugins. The only difference is that their input is obtained from other tracks or busses, rather than from disk.

    +

    One might typically use a buss to collect together the outputs of related tracks. Consider, for example, a 3-track recording of a drum-kit; given kick, snare and overhead tracks, it may be helpful to connect the output of each to a bus called ‘drums’, so that the drum-kit's level can be set as a unit, and processing (such as equalisation or compression) can be applied to the mix of all tracks.

    +

    Plugins

    +

    Ardour allows you to process audio and MIDI using any number of plugins. These are external pieces of code, commonly seen as VST plugins on Windows or AU plugins on Mac OS X. Generally speaking, a plugin is written using one (and maybe more) standards. Ardour's plugin support is for the following standards:

    +
    +
    LADSPA
    +
    the first major plugin standard for Linux. Many LADSPA plugins are availble, mostly free and open-source.
    +
    LV2
    +
    the successor to LADSPA. Lots of plugins have been ‘ported’ from LADSPA to LV2, and also many new plugins written.
    +
    VST
    +
    Ardour supports VST plugins that have been compiled for Linux.
    +
    AudioUnit (AU)
    +
    Mac OS X versions of Ardour support AudioUnit (AU) plugins.
    +
    +

    Ardour has some support for running Windows VST plugins on Linux, but this is rather complicated, extremely difficult for the Ardour developers to debug, and generally unreliable. If it is at all possible, you are strongly advised to use native LADSPA, LV2 or Linux VST plugins on Linux, or AU on Mac OS X.

    +

    More details can be bound at Working With Plugins.

    +
    +
    +
    +

    Setting Up Your System

    +

    Setting Up Your System

    +

    Using a general purpose computer for recording digital audio is not always trivial. This chapter will guide you through the basic steps and help you with some of the most common pitfalls.

    +

    This chapter covers the following:

    +
    +

    The Right Computer System for Digital Audio

    +

    The Right Computer System for Digital Audio

    +

    It would be nice to think that you could just go and buy any computer, install a bit of software on it and start using it to record and create music. This idea isn't wrong, but there some important details that it misses.

    +

    Any computer that you can buy today (somewhere around the end of 2012) is capable of recording and processing a lot of audio data. It will come with a builtin audio interface that can accept inputs from microphones or electrical instruments. It will have a disk with a huge amount of space for storing audio files.

    +

    When you are recording, editing and mixing music, you generally want to work with very little delay between the time that a sound is generated and when you can hear it. When the audio signal flows through a computer, that means that the computer has to be able to receive the signal, process it and send it back out again as fast as possible. And that is where it becomes very important what computer system you have, because it is absolutely not the case that any computer can do this job well.

    +

    Routing audio through a computer will always cause some delay, but if it is small, you will generally never notice it. There are also ways to work in which the delay does not matter at all (for example, not sending the output from the computer to speakers).

    +

    The delay or "latency" that you want for working with digital audio is more typically in the 1-5msec range. For comparison, if you are sitting 1m (3ft) from your speakers, the time the sound takes to reach your ears is about 3msec. Any modern computer can limit the delay to 100msec. Most can keep it under 50msec. Many will be able to get down to 10msec without too much effort. If you try to reduce the delay on a computer that cannot meet your goal, you will get clicks and glitches in the audio, which is clearly extremely undesirable.

    +

    Many, many things can affect the lowest latency that a computer can support.

    +

    Hardware-related Considerations

    +
    +
    Video interface

    +
    Poorly engineered video interfaces (and/or their device drivers) can "steal" computer resources for a long time, preventing the audio interface from keeping up with the flow of data
    +
    Wireless interface

    +
    Poorly engineered wireless networking interfaces (and/or their device drivers) can also block the audio interface from keeping up with the flow of data
    +
    USB ports

    +
    If you are using an audio interface connected via USB, and sometimes even if you are not, the precise configuration of your system's USB ports can make a big difference. There are many cases where plugging the interface into one port will work, but using different USB port results in much worse performance. This has been seen even on Apple systems.
    +
    CPU speed control

    +
    Handling audio with low latency requires that your processor keeps running at its best performance (speed) at all times. Many portable systems try to regulate processor speed in order to save power - for low latency audio, you want this totally disabled, either in the BIOS or at the OS level
    +
    Excessive Interrupt Sharing
    +
    If your audio interface is forced by your computer to share an "interrupt line" (basically a way to tell the CPU that something needs its attention) with too many, or the wrong, other devices, this can also prevent the audio interface from keeping up with the flow of data. In laptops it is generally impossible to do anything about this. In many desktop systems, it is possible at the BIOS level to reassign interrupts to workaround the problem.
    +
    System Management Interrupts (SMIs)

    +
    SMIs are interrupts sent by the motherboard to tell the computer about the state of various hardware. They cannot be (safely) disabled, but they can also take a (relatively) long time to process. It is better to have a motherboard which never sends SMIs at all - this is also a requirement for realtime stock trading systems, which have similar issues with latency.
    +
    Excessive (bass) vibration

    +
    This doesn't affect the flow of data to/from the audio interface, but it can cause the flow of data to/from your disk storage to become much slower. If you are going to use a computer in an environment with live sound, make sure to place it so that the disk is not subject to noticeable bass vibration. What actually happens is that the vibrations cause the mechanism inside the disk to detect read errors, and this forces a retry of the reading from the disk itself. Retrying over and over massively reduces the rate at which data can be read from the disk. Avoid this. +
    +

     

    +
    +
    +

    The Mouse

    +

    The Mouse

    +

    Ardour is designed to work best with a 3 button mouse equipped with a scroll wheel.

    +

    It can be used with a 2 button mouse or touchpad, but at least 2 key operations will not (easily) be available to you:

    +
      +
    • time-constrained region copying +
    • MIDI bindings created by "learning" them from incoming MIDI +
    +

    You are strongly encouraged to invest in a 3 button mouse. You will find that a good quality mouse (especially one with a weighted, latchable scroll wheel) will make your use of Ardour vastly more efficient. They are cheap, and time is not.

    +
    +
    +

    Using External MIDI Devices

    +

    Using External MIDI Devices

    +
    +
    +

    Connecting Audio and MIDI Devices

    +

    Connecting Audio and MIDI Devices

    +
    +
    +

    MIDI on OS X

    +

    CoreMIDI is a part of any OS X system and provides the device drivers and libraries needed by MIDI applications.

    +

    You will need to ensure that you are running a version of JACK for OS X that has a working CoreMIDI - JACK MIDI bridge. This first appeared in version 0.89 of JackOS X.

    +
    +
    +

    MIDI on Linux

    +

    Ensure that a2jmidid is running

    +

    a2jmidid is an application that "bridges" between the system MIDI ports and JACK.

    +

    First you should be sure that there is no ALSA sequencer support enabled in jack. To do that open qjackctl's Setup window.

    +

    In the Settings tab set the MIDI Driver drop down to the none option.

    +

    Then go to the Misc tab and uncheck the Enable ALSA Sequencer support option.

    +

    Now it's time to restart your jack server before going on.

    +

    Checking for a2jmidid availability

    +

    First thing is checking if a2jmidid is already installed in your system. To do it first start your jack server and then call

    +
    a2jmidid -e

    from the command. If a2jmidid is there go on with Checking surface control MIDI ports. Otherwise install the newest a2jmidid available and try again.

    +

    Checking surface control MIDI ports

    +

    After starting a2jmidid your control surface MIDI ports should appear in qjackctl's Connections window on the MIDI tab under a2j. If it does go on to the next step: Automatically calling a2jmidid when starting jack. If it doesn't you have to troubleshoot why it didn't. (How to troubleshoot a2jmidid?)

    +

    Automatically calling a2jmidid when starting jack

    +

    It's troublesome to have to manually start a2jmidid by hand each time you start jack. Here is one way to do it automatically. This step isn't mandatory, it's just a convenience. If you are not interested you can go on to the next step Enabling Ardour's mackie control ports in qjackctl.

    +

    Create a script that calls jack if you aren't using one yet. In it change the line that calls jack to have an ampersand at it's end like that:

    +
    +/usr/bin/qjackctl &
    +

    In this case I call qjackctl that starts jack so I include the ampersand in qjackctl's call. If you call jack directly, put the ampersand at the end of it's call line.

    +

    Now include the following lines after the line that calls jack:

    +
    +/usr/bin/sleep 5
    +/bin/bash -c "/usr/bin/a2jmidid -e" &
    +

    All you have to do now is use your new script to call jack.

    +
    +
    +
    +

    Ardour's Interface

    +

    Ardour's Interface

    +

    In Ardour, you work in two main windows: the Editor window and the Mixer window.

    +

    ardour's editor window

    +

    The Editor window includes the editor track "canvas" where you can arrange audio and MIDI data along a timeline. This is the window you will be in while editing and arranging a project. The window has a general "horizontal" sense to it: the timeline flows from left to right, the playhead showing the current position in the session moves from left to right - the window really represents "time" in a fairly literal way.

    +

    ardour's mixer window

    +

    The Mixer window on the other hand represents signal flow and is the window you will probably be using most when mixing a session. It includes elements called "channel strips" for each track and bus in your session. It has a general "vertical" sense to it: signals flow from the top of each channel strip through the processing elements in the strip to reach the output listed at the bottom.

    +

    It is possible to show a single channel strip in the editor window, and some people find this enough to work on mixing without actually opening the mixer window. Most of the time though, you will want both of these windows at various stages of a session's lifetime - sometimes you'll be focused on editing, sometimes on mixing and possibly some of the time on both.

    +
    +

    Starting Ardour

    +

    Starting Ardour

    +

    There are several ways of starting Ardour, which may vary depending on which platform you are using it on.

    +
      +
    • double-click the Ardour icon in your platfom's file manager (e.g. Nautilus on Linux, Finder on OS X)
    • +
    • double click on an Ardour session file in your platform's file manager
    • +
    • on Linux, you can also start Ardour on the command line +
    +

    When Ardour is run for the very first time, a special dialog is displayed that will ask you several questions about your setup. You will not be asked these questions again, but you can always modify your choices via the Preferences dialog.

    +

    In general, it is sensible to start JACK before you run Ardour. This is not necessary, but will provide you with more control and options over JACK's operation.

    +

    If you open Ardour without specifying an existing session it will display the "New Session" dialog. If JACK is not already running, there will be an extra "Audio Engine" tab in that dialog to configure JACK, which Ardour will start automatically.

    +

    If you did specify an existing session but JACK is not already running, the "New Session" dialog will contain just the Audio Engine tab.

    +
    +

    Starting Ardour From the Command Line

    +

    Starting Ardour on the command line (Linux)

    +

    Like (almost) any other program on Linux, Ardour can be started on the command line.

    +
      +
    • type the following command in a terminal window
      +
      ardour3
    • +
    • to start Ardour with an existing session, type the following command in a terminal window
      +
      ardour3 /path/to/session

      replacing /path/to/session with the actual path to your session. You can specify either the session folder or any session file inside the folder (including snapshots).

    • +
    • to start Ardour with a new, named session, type the following command in a terminal window
      +
      ardour3 -N /path/to/new/session

      replacing /path/to/new/session with the name of the folder where you want the session stored. +

    +

    Other Command Line Options

    +
    +
    +
    +
    +
    +
    +
    +

    Basic GUI Operations

    +

    Basic GUI Operations

    +

    Ardour has a number of different techniques to offer when you interact with it. This chapter provides information on basic techniques for entering text, making selections, and using shortcuts.

    +

    This chapter covers the following:

    +
    +

    Interface Elements

    +

    Interface Elements

    +

    Checkboxes

    +

    Buttons

    +

    Pull Down Menus

    +

    Pop Up Menus

    +

    Context Menus

    +

    Browsers

    +
    +
    +

    Key Bindings

    +

    Key Bindings

    +

    Almost every available function in Ardour can be executed via a key binding (or OSC command). There are many more functions available than there are keys on even the largest current computer keyboards, so only a subset of them are bound to keys by default.

    +
    +
    +

    Selection Techniques

    +

    Ardour follows the conventions used by most other computer software (including other DAWs) for selecting objects in the GUI.

    +

    Selecting individual objects

    +

    Clicking on object (sometimes in a particular part of its on-screen representation) will select the object, and deselect other similar objects.

    +

    Selecting multiple (similar) objects

    +

    click on an object toggles it selected status, so using click on a series of objects will select (or deselect) each one of them. You can construct completely arbitrary selections with this technique.

    +

    Selecting a range of objects

    +

    In cases where the idea of "select all objects between this one and that one" makes sense, you can click one object and then Shitft click another to select both of them as well as all object in between them.

    +

    Range Selection

    +

    These basic principles apply to Range Selection - click-drag to select a range, drag to create multiple ranges and shift-click to extend a range to cover a wider area.

    +
    +
    +

    Tooltips

    +

    By default, Ardour will often show helpful information about the purpose and use of most GUI control (buttons etc.) if you position the pointer over the GUI control and leave it there momentarily. These can be a good way to discover the purpose of many aspects of the GUI.

    +

    This can be distracting for experienced users, who may opt to disable it via Edit > Preferences > GUI > Show tooltip if mouse hovers over a control.

    +
    +
    +

    Undo/Redo for Editing

    +

    Undo/Redo for Editing

    +

    It is very common to make changes while editing that you did not intend to, or that you later decide were the wrong choice. All changes to the arrangement of session components (regions, control points) along the timeline can be undone (and then redone). The default keybinding for undo is Ctrl/Cmd-z and for redo is Ctrl/Cmd-r (these match the conventions of most other applications that provide undo/redo.

    +

    Changes are also saved to the session history file, so that undo/redo is possible even if you close the session and reopen it (even if you quit Ardour in between).

    +

    The maximum number of changes that can be undone can be altered in the Editing tab of the Preferences dialog. The maximum number of changes stored in the history file is a separate parameter, and can also be set in the same place.

    +
    +
    +

    Using the Mouse

    +

    Clicking

    +

    Throughout this manual, the term "click" refers to the act of pressing and releasing the leftmost mouse button (technically the button that is identified as button number 1 - your operating system may allow this be reassigned). This action is used to select objects, activate buttons, turn on/off choices, popup menus and so forth.

    +

    On touch surfaces, it also corresponds to a regular, single-finger tap on the GUI.

    +

    Right Clicking

    +

    Throughout this manual, the term "right-click" refers to the act of pressing and releasing the rightmost mouse button (technically the button that is identified as button number 3 - your operating system may allow this be reassigned). This action is used to pop up "context menus" (hence the term "context click", which you will also see). It is also used by default in combination with the shift key for deleting objects within the editor window.

    +

    Double Clicking

    +

    A "double click" refers to two rapid press/release actions on the leftmost mouse button. The time interval between the two press/release actions that determines whether this is seen as two clicks or one double click is controlled by your system preferences, not by Ardour.

    +

    Drags

    +

    Throughut this manual, the term "drag" primarily refers to the act of pressing the leftmost mouse button, then moving the mouse with the button held down, and then releasing the button. On touch surfaces, this term also corresponds to a normal single finger touch-motion-release action.

    +

    Ardour also uses the middle mouse button for certain kinds of drags, which will be referred to as "middle-drag" - these are identical to a normal drag except that they involve using the middle button rather than the left button.

    +

    Modifiers

    +

    There are many actions in Ardour that can be carried out using a mouse button in combination with a "modifier key". When the manual refers to Ctrl-click, it means that you should first press the Control key, then carry out a normal click while the Control key is held down, and then finally release the Control key. Available modifiers depend on the platform you are using Ardour on:

    +

    Linux Modifiers

    +
      +
    • Control (Ctrl) +
    • Shift
    • +
    • Alt
    • +
    • Mod2
    • +
    • Mod3
    • +
    • Mod4
    • +
    • Mod5
    • +
    +

    Mod2 typically correspond to the NumLock key on many systems. On most Linux systems, there are no keys that will function as modifiers Mod3, Mod4 or Mod5 by default, but they can be setup using xmodmap(1). This can be rather useful.

    +

    OS X Modifiers

    +
      +
    • Command (Cmd) +
    • Control (Ctrl) +
    • Option (Alt) +
    • Shift +
    +

    Mouse Wheel/Scroll

    +

    Ardour can make good use of a scroll wheel on your mouse, which can be utilized for a variety of purposes. Scroll wheels can generate both vertical scroll events (ScrollUp and ScrollDown) and/or horizontal events (ScrollLeft and ScrollRight). When appropriate, Ardour will differentiate between these two different scroll axes. Otherwise it will interpret ScrollDown and ScrollLeft as equivalent and similarly interpret ScrollUp and ScrollRight as equivalent.

    +

    Typically, scrolling is used to adjust continuous controls (e.g. faders/knobs), or to scroll vertically or horizontally.

    +
    +
    +

    Cut and Paste Operations

    +

    Cut and Paste Operations

    +

    The clipboard is a holder for various kinds of objects (regions, control events, plugins) that is used during cut-n-paste operations.

    +

    Cut

    +

    A cut operation removes selected objects and places them in the clipboard. The existing contents of the clipboard are overwriten. The default key binding is x.

    +

    Copy

    +

    A copy of the selected objects are placed in clipboard. There is no effect on the selected objects. The existing contents of the clipboard are overwritten. The default key binding is c.

    +

    Paste

    +

    The current contents of the clipboard are inserted into the session, using the current edit point as the reference point. The contents of the clipboard remain unchanged. The default key binding is v.

    +
    +
    +

    Deleting Objects

    +

    Within the Editor window (and to some extent within the Mixer window too), there are several techniques for deleting objects (regions, control points, and more).

    +

    Using the mouse and keyboard

    +

    Select the object(s) and then press the Delete key. This does not put the deleted object(s) into the cut buffer, so they cannot be pasted elsewhere.

    +

    Using normal cut and paste

    +

    Select the object(s) and then press x. This puts the deleted object(s) into the cut buffer so that they can be pasted elsewhere.

    +

    Using just the mouse

    +

    By default, Shift-right-click will delete the clicked-upon object. Like the Delete key, this does not put the deleted object(s) into the cut buffer, so they cannot be pasted elsewhere.

    +

    The modifier and mouse button used for this can be controlled via Edit > Preferences > User Interaction > Delete using .... Any modifier and mouse button combination can be used.

    +
    +
    +
    +

    Introducing the Editor Window

    +

    Introducing the Editor Window

    +
    +

    Editor Lists

    +

    Editor Lists

    +

    At the right of the editor is an optional area which provides one of a range of useful lists of parts of your session. It is not shown by default when you first start using Ardour. The list can be hidden or shown using the Show Editor List option from the View menu. The very right-hand side of the list gives a selection of tabs which are used to choose the list to view. The left-hand border of the list can be dragged to vary the width of the list.

    +
    +

    Ranges & Marks List

    +

    Ranges & Marks List

    +

    See this section for information on this list/section of the Editor Lists.

    +
    +
    +

    Region List

    +

    Region List

    +

    The region list shows all the regions in the session. The left-hand column gives the region name, and there are a range of times given for information. At the right of the list are four columns of flags that can be altered:

    +

    The region list shows all the regions in the session. The left-hand column gives the region name, and there are a range of times given for information. At the right of the list are four columns of flags that can be altered:

    +
    +
    L
    +
    whether the region position is locked, so that it cannot be moved.
    +
    G
    +
    whether the region's position is ‘glued’ to bars and beats. If so, the region will stay at the same position in bars and beats even if the tempo and/or time signature change.
    +
    M
    +
    whether the region is muted, so that it will not be heard.
    +
    O
    +
    whether the region is opaque; opaque regions ‘block’ regions below them from being heard, whereas ‘transparent’ regions have their contents mixed with whatever is underneath.
    +
    +

    Hovering the mouse pointer over a column heading shows a tool-tip which can be handy to remember what the columns are for.

    +

    A handy feature of the region list is that its regions can be dragged and dropped into a suitable track in the session.

    +
    +
    +

    Snapshot List

    +

    Snapshot List

    +

    This list gives the snapshots that exist of this session. Clicking on a snapshot name will load that snapshot.

    +

    See Working with Sessions for more information on snapshots.

    +
    +
    +

    Track & Bus Group List

    +

    Track & Bus Group List

    +

    This shows the track/bus groups that exist in the session. These groups allow related tracks to share various properties (such as mute or record enable state). For full details, see the section called “Track and bus groups”.

    +

    The columns in this list are as follows:

    +
    +
    Col
    +
    the colour that the group uses for its tab in the editor.
    +
    Name
    +
    the group name.
    +
    V
    +
    whether the tracks and busses in the group are visible.
    +
    On
    +
    whether the group is enabled.
    +
    G
    +
    ticked if the constituents of the group are sharing gain settings.
    +
    Rel
    +
    ticked if shared gains are relative.
    +
    M
    +
    ticked if the constituents share mute status.
    +
    S
    +
    ticked if the constituents share solo status.
    +
    Rec
    +
    ticked if the constituents share record-enable status.
    +
    Mon
    +
    whether the constituents share monitor settings.
    +
    Sel
    +
    whether the constituents are selected together.
    +
    E
    +
    whether edits to the constituents are performed to all others.
    +
    A
    +
    whether the constituents share active status.
    +
    +

     

    +
    +
    +

    Tracks & Busses List

    +

    This lists the tracks and busses that are present in the session. The list order reflects the order in the editor, and you can drag-and-drop track or bus names in the editor list to re-order them in the editor. The columns in the list can all be clicked to alter the track/bus state, and they represent the following:

    +
    +
    V
    +
    whether the track or bus is visible; they can be hidden, in which case they will still play, but just not be visible in the editor; this can be useful for keeping the display uncluttered.
    +
    A
    +
    whether the track or bus is active; unactive tracks will not play, and will not consume any CPU.
    +
    I
    +
    for MIDI tracks, whether the MIDI input is enabled; this dictates whether MIDI data from the track's inputs ports will be passed through the track.
    +
    R
    +
    whether the track is record-enabled.
    +
    M
    +
    whether the track is muted.
    +
    S
    +
    track solo state.
    +
    SI
    +
    track solo-isolated state.
    +
    SS
    +
    solo safe state.
    +
    +

    As with the region list, hovering the mouse pointer over a column heading shows a tool-tip which can be handy to remember what the columns are for.

    +
    +
    +
    +

    The Editing Toolbar

    +

    The Editing Toolbar

    +

    Mouse Modes

    +
    +
    Object Tool
    +
    Used for selecting, moving, deleting and copying objects. See below for a full description.
    +
    Range Mode
    +
    When in range mode, the mouse pointer appears as a vertical line whenever it is over the track canvas or the rulers. The mouse will now be able to select a point or range of time. Time ranges can be selected over one or several tracks, depending ond the selection of your tracks.

    +

    If none of your track is selected, the Range Tool will operate on all the session track visualized in the Editor.

    +

    If you want to operate just some track, select the track you want to edit with the Range Tool.

    +
    Zoom Tool
    +
    When in zoom mode, the mouse pointer appears as a magnifying glass whenever it is over the track canvas or the rulers. This mode is used to zoom the display to any range that is determined by clicking and dragging the Button1 to specify the range. You can also utilize a single click with Button1 to zoom in by one level focused on the mouse cursor, likewise a single click on Button3 will zoom out by one level focused on the mouse.
    +
    Region Gain Tool
    +
    When in gain edit mode, the mouse pointer will change to cross-hairs. You can then click within a region to change the gain automation for that region. This automation is separate from fader automation for individual tracks, but works in conjunction with the track's fader. This automation will remain locked to the region's time, so if the region is moved, the region gain automation is moved along with it.
    +
    TimeFX Tool
    +
    When in timefx mode, the mouse pointer appears as a distinctive 'expanding' illustration whenever it is over the track canvas or the rulers. This mode is used to resize regions using a timestretch algorithm. It is utilized by clicking on an edge of a region of audio and dragging it one way or the other to either stretch or shrink the region.
    +
    Audition Tool
    +
    Clicking a region using the "audition" tool will audition the region.

    +

    You can also "scrub" with this tool by clicking and dragging in the direction you wish to listen. The amount you drag in one direction or the other will determine the playback speed.

    +
    Draw Tool
    +
    +
    Internal/Region Edit Mode
    +
    +
    +

    Object Tool

    +

    When in object mode, the mouse pointer appears as a hand whenever it is over the track canvas or the rulers. The mouse can now be used to select and perform operations on objects such as regions, markers etc. This is the most commonly utilized mode in Ardour, as it allows you to select and move regions, as well as modify automation points on the automation tracks.

    +
    +
    Selecting Regions
    +
    +
    Resizing Regions
    +
    +
    Moving Regions
    +
    +
    Editing Fade In and Fade Out
    +
    +
    +

    Smart Mode

    +

    The "Smart Mode" button to the left of the mouse mode buttons modifies "Object Tool" mode. When enabled, the mouse behaves as if it is in "Range Tool" mode in the upper half of a region, and in "Object Tool" mode in the lower half.

    +
    +
    +

    The Transport Bar

    +

    The Transport Bar

    +
    +
    +
    +

    Introducing the Mixer Window

    +

    Introducing the Mixer Window

    +
    +
    +

    Using Ardour Clock Displays

    +

    Using Ardour Clock Displays

    +

    +Clocks in Ardour are the basic way of displaying time values precisely. In many cases, they are also one way to edit (change) time values, and in a few cases, the only way. All clocks share the same basic appearance and functionality, which is described below, but a few clocks serve particularly important roles.

    +

    Transport Clocks

    +

    +In the transport bar of the editor window there are two (or, if you are on a very small screen, just one) clocks that display both the current position of the playhead, and additional information related to transport control and the timeline. These are called the "transport clocks"; the leftmost one is the primary transport clock and the rightmost one is the secondary transport clock. They look like this: +

    +

    +an image of the transport clocks in ardour 3 +

    +

    +Editing the time in the transport clocks will reposition the playhead in the same way that various other editing operations will. +

    +

    The Big Clock

    +

    +Under the Windows item in the main menu you will find the "Big Clock" window, which also shows the playhead position in a big, fully resizable window. The big clock is very useful when you need to work away from the screen but still want to see the playhead position clearly (such as when working with a remote control device across, or in another, room). The big clock will also change its visual appearance to indicate when active recording is taking place. Below on the left is a screenshot showing a fairly large big clock window filling a good part of the display, and on the right, the same clock during active recording. +

    +

    +an image of the big clock filling a screen an image of the big clock while recording +

    +

    The Special Role of the Secondary Transport Clock

    +

    +There are a number occasions when Ardour needs to display time values to the user but there is no obvious way to specify what units to use. The most obvious is in the big cursor that appears when dragging regions. For this and other similar cases, Ardour will display time using the same units as the secondary clock. +

    +

    Why are there two transport clocks

    +

    +Having two transport clocks lets you see the playhead position in two different time units without having to change any settings. For example, you can see the playhead position in both timecode units and BBT time.

    +

    Selection and Punch Clocks

    +

    +The transport bar also contains a set of 5 clocks that show the current selection range and punch ranges. Clicking on the punch range clocks will locate to either the beginning or end of the punch range. Similarly, clicking on the range clocks will locate to either the beginning or end of the current selection. In this screen shot there is no current selection range, so the selection clocks show an "off" state. +

    +

    +an image of the the selection and punch clocks in ardour 3 +

    +

    Clock Modes

    +

    Every clock in Ardour has four different modes it can be set to, each of which displays time using different units. You can change the clock mode by right-clicking on the clock and selecting the desired mode from the menu. Some clocks are entirely independent of any other clock's mode; others are linked so that changing one changes all clocks in that group. The different modes are:

    +
    +
    Timecode
    +
    Time is shown as Hours:Minutes:Seconds:Frames, measured from the timecode zero point on the timeline (which may or may not correspond to the session start and/or absolute zero on the timeline). The frames per second (FPS) value is dictated by either the session FPS setting, or, if slaved to an external timecode master, the master. In the transport clocks, the FPS value is shown below the time display, along with an indication of the current timecode source (INT means that Ardour is its own timecode source)
    +
    BBT
    +
    Time is shown as Bars:Beats:Ticks, indicating musical time measured from the start of the session. The transport clocks show the current tempo (as bpm) and meter below the time display
    +
    Minutes:Seconds
    +
    Time is shown as Hours:Minutes:Seconds.Milliseconds, measured from the absolute start of the timeline (ignoring the session start and any timecode offsets).
    +
    Samples
    +
    Time is shown as a sample count from the absolute start of the timeline (ignoring the session start and any timecode offsets). The number of samples per second is given by the current sample rate, and in the transport clocks, this rate is shown below the time display along with any pullup/pulldown adjustment.
    +
    +

    +

    Special Modes for the Transport Clocks

    +

    +In addition to the time-unit modes mentioned above, each of the two transport clocks (if you work on a small screen, you may only have one) can be independently set to display "Delta to Edit Point" in whatever time units its current mode indicates. This setting means that the clock shows the distance between the playhead and the current edit point, and it may show a positive or negative value depending on the relationship between these two points. The clocks will use a different color when in this mode to avoid confusion about the displayed value. +

    +

    +To switch either (or both!) of the transport clocks into this mode, use Edit->Preferences->Transport and select or de-select the relevant check-button. +

    +

    +Note that when set into this "Delta to Edit Point" mode, the transport clocks cannot be edited. +

    +

    Changing clock values with the keyboard

    +

    +New values for the clock can be typed from the keyboard after clicking on the relevant clock. Clicking on the clock will show a thin vertical cursor bar just to the right of the next character to be overwritten. Enter time in the same order as the current clock mode - if the clock is in Timecode mode, you need to enter hours, minutes, seconds, frames. So, to change to a time of 12:15:20:15 you would type 1 2 1 5 2 0 1 5. Each number you type will appear in a different color, from right to left, overwriting the existing value. Mid-edit, after typing 3 2 2 2 the clock might look like this:

    +

    +an image of a clock being edited in ardour 3 +

    +

    +To finish the edit, press the enter/return or tab key. To exit an edit without changing the clock press the escape key. If you mis-type an entry so that the new value would be illegal (for example, resulting in more than 30 frames when Timecode is set to 30 frames per second), the clock will reset at the end of the edit, and move the cursor back to the start so that you may begin again. +

    +

    +To end an edit without changing the clock press the escape key. +

    +

    Avoiding the mouse entirely

    +

    +There is a shortcut available for those who wish to be able to edit the transport clocks entirely without the mouse. It can be found in the keybinding editor under "Transport" called "Focus On Clock". If bound to a key (the divide key on a keypad is the default at time of writing), then pressing that key is equivalent to clicking on the primary (left) transport clock, and editing can begin immediately. +

    +

    Entering Partial Times

    +

    +One detail of the editing design that is not immediately obvious is that it is possible to enter part of a full time value. Suppose that the clock is in BBT mode, and displaying 024|03|0029 and you want to alter the value to be the first beat of the bar. Click on the clock and type 0 1 0 0 0 0. Similarly, if it is in Minutes:Seconds mode, and displaying 02:03:04.456 and you want to get to exactly 2 hours, click on the clock and type 0 0 0 0 0 0 0 to reset the minutes, seconds and milliseconds fields. +

    +

    Entering Delta Times

    +

    +You can also type values into the clock that are intended as a relative change, rather than a new absolute value. Simply end the edit by pressing the + or - keys (the ones on any keypad will also work). Using the plus key will add the entered value to the current value of the clock; using minus will subtract it. For example, if the clock is in Samples mode and displays 2917839, you move it back 2000 samples by typing 2 0 0 0 and then the - key rather than enter/return/tab.

    +

    Changing clock values with the mouse

    +

    Using a scroll wheel

    +

    +Position the mouse pointer over the clock, and move the scroll wheel. Moving the scroll wheel away from you will increase the value shown on the clock, moving it towards you will decrease the value shown on the clock. The step size is determined by which field of the clock you position the mouse over. If the clock is in Timecode mode and the mouse pointer is over the Seconds field, the clock value will increase or decrease by one second at a time. If you move the mouse point to the Hours field, the value will increase or decrease by one hour at a time. It works similarly in all other clock modes. +

    +

    Dragging the mouse

    +

    +Position the mouse pointer over the clock, press the left mouse button and drag. Dragging upwards will increase the value shown on the clock, dragging downwards will decrease the value shown on the clock. The step size is determined by which field of the clock you position the mouse over. If the clock is in Timecode mode and you begin dragging with the mouse pointer over the Seconds field, the clock value will increase or decrease by one second at a time. If you begin dragging with the mouse over the Hours field, the value will increase or decrease by one hour at a time. It works similarly in all other clock modes. +

    +
    +
    +
    +

    Controlling Playback

    +

    Controlling Playback

    +

    Ardour offers many ways to control playback of your session, including the transport bar, key bindings and remote controls. You can also use markers to define locations or ranges within the session and rapidly move around between them.

    +

    Note that if you synchronize Ardour with other devices then some or all of these control methods may not be available - depending on the synchronization protocol, Ardour may respond only to commands sent from the other device(s).

    +

    This chapter covers the following:

    +
    +

    Looping the Transport

    +

    Looping the Transport

    +

    When the loop transport button is pressed, the playhead will jump the start of the loop range, and continue to the end of the loop range before returning to the start and repeating.

    +

    While looping, a light green area is displayed over the tracks to show the loop range.

    +

    Please see this section for more information on defining and altering the loop range.

    +
    +
    +

    Positioning the Playhead

    +

    The playhead is a vertical line with two arrows at each end that indicates the current position of playback.

    +

    Positioning the Playhead at the current pointer position

    +

    The command Editor/set-playhead (default binding: p) will set the playhead at the position of the pointer, if it is within the editor track area.

    +

    Positioning the Playhead on the timeline

    +

    An unmodified click anywhere on the timeline (rulers) will move the playhead to that position.

    +

    Positioning the Playhead with the transport clocks

    +

    Click on either the primary or secondary transport clock and edit the value to move the playhead to a specific position.

    +

    Positioning the Playhead at a marker

    +

    Context-click on the marker and select either Locate to here or Play from here.

    +

    Alternatively, position the pointer within the marker and press p to set the playhead at the marker.

    +
    +
    +

    Using Key Bindings

    +

    Ardour has many available commands for playback control that can be bound to keys. Many of them have default bindings, some do not, so the list below shows both the default bindings and command names.

    +
    +
    Space
    +
    switch between playback and stop.
    +
    Home
    +
    Move playhead to session start marker
    +
    End
    +
    Move playhead to session end marker
    +
    +
    Right Arrow
    +
    +
    Left Arrow
    +
    +
    0
    +
    Move playhead to start of the timeline
    +
    +

    Commands without default bindings include:

    +
    +
    +

    Using the Nudge Controls

    +

    Using the Nudge Controls

    +

    If there are no selected objects, the nudge controls can be used to move the playhead by a fixed amount backward or forward. The left and right buttons move either backward or forward in time, and the small clock to the left of these buttons sets the amount of time to nudge by. As with all other clocks, you can right-click on the clock to choose the time representation you want to use.

    +

    Note that this is a secondary purpose of the nudge controls - it is usually used to move selected objects by specific distances, rather than the playhead.

    +
    +
    +

    Using the Transport Bar

    +

    Using the Transport Bar

    +
    +
    +
    +

    Working With Markers

    +

    Working With Markers

    +

    It is very useful to be able to tag different locations in a session for use when editing and mixing. Ardour supports both locations, which define specific single positions in time and ranges which define a start and end position in time.

    +

    There are also 3 special kinds of markers:

    +
    +
    CD markers
    +
    locations that are restricted to legal CD track boundaries, and be used to add track marks/info to compact disc (CD) images.
    +
    Loop range
    +
    a range used to define transport loop start and end points.
    +
    Punch range
    +
    a range used to define start and/or end points for punch recording
    +
    +

    This chapter covers the following:

    +
    +

    Creating Location Markers

    +

    Creating Location Markers

    +

    You can create a location marker at any position in a session.

    +

    Create a location marker at the current position of the playhead

    +

    Create a location marker in a specific position on the timeline

    +
    +
    +

    Creating Range Markers

    +

    Creating Range Markers

    +

    Creating a Range on the timeline

    +

    Creating a Range in the Locations+Marks List

    +
    +
    +

    Getting To Know the Locations+Marks List

    +

    Getting To Know the Locations+Marks List

    +

    The Locations+Marks List is visible on a tab in the Editor Lists area. It can be used as a single point of control for all range and location markers (including the punch and loop ranges), or as a supplement to other methods of working with them.

    +

    First, there is the current loop and punch range; there are three clocks, being the start of the range, the end of the range and the length of the range. The start and end points have a ‘Use PH’ button beside them, which you can click to set the corresponding position using the current position of the playhead. Following this is a list of the session's markers, and finally there is a list of the range markers. At the bottom of the list are buttons to add new markers or ranges. The - button beside each marker and range allows that particular mark to be removed.

    +
    +
    +

    Moving Markers

    +

    To move a single marker

    +

    Click and drag it to a new location on the timeline.

    +

    To move multiple markers

    +

    Ctrl-click each marker you want to move, then drag one of the selected markers to a new location. All other selected markers will move with it, though bounded by the zero point on the timeline.

    +

    To move both ends of a range at once

    +

    drag one of the range markers (the start or end) and the other will in sync with it.

    +
    +
    +

    The Loop Range

    +

    The Loop Range

    +

    The loop range is a special range that defines the start and end points when loop-mode is enabled in the transport bar.

    +

    Defining the loop range on the timeline

    +

    Defining the loop range in the Locations+Marks list

    +
    +
    +

    The Marker Context Menu

    +

    The Marker Context Menu

    +

    Several operations on markers are available by right-clicking them to open the marker context menu. From this menu, you can:

    +
    +
    Locate to Here
    +
    move the playhead to this marker's position.
    +
    Play from Here
    +
    start playback from this marker's position.
    +
    Move Mark to Playhead
    +
    move this marker to the current playhead position. +
    Create Range to Next Marker
    +
    create a range marker between this location and the next one along on the timeline.
    +
    Hide
    +
    hide this marker from the view. It can be re-shown from the Locations window
    +
    Rename
    +
    change the name of the marker.
    +
    Lock
    +
    if this is ticked, it will be impossible to drag the marker's position; useful if you want to prevent accidental movements.
    +
    Glue to Bars and Beats
    +
    if this is ticked, the marker will maintain its position in bars and beats even if there are changes in tempo and meter
    +
    Remove
    +
    removes the marker.
    +
    +

    There are also a few options on the Active Mark submenu of the Transport menu. These options apply to the currently selected location marker, and move it to a nearby region boundary, region sync point, or to the playhead or mouse.

    +
    +
    +

    The Punch Range

    +

    The Punch Range

    +

    The punch range is a special range used to define where recording will start and/or stop during a punch.

    +

    Defining the punch range on the timeline

    +

    Defining the punch range in the Locations+Marks list

    +
    +
    +
    +

    Working With Sessions

    +

    Working With Sessions

    +

    This chapter covers the following:

    +
    +

    Backup and Sharing of Sessions

    +

    Backup and Sharing of Sessions

    +

    An Ardour session is stored in a single folder on your computer's filesystem. This makes backup very easy - any tool capable of backing up a folder (i.e. all of them) can be used to backup a session. You pick the location of a session when it is created - by default it will be in your default session location, which can be altered via Edit > Preferences > Misc > Session Management.

    +

    +There is complication: a session may reference embedded media that are stored outside of the session folder. At this time (December 2012), there is no particularly good solution for this. Backing up a session with embedded files will not create a copy of the session containing those files. +

    +

    The single folder approach also makes sharing a project easy. Simply copy the session folder (onto a storage device, or across a network) and another Ardour user (on any platform) will be able to use it. The limitation regarding embedded files applies to session sharing as well.

    +
    +
    +

    Interchange with other DAWs

    +

    Interchange with other DAWs

    +

    It has never been particularly easy to move sessions/projects created on one DAW to another. There are two "standards" that exist that have reasonably widespread support:

    +
      +
    • OMF (Open Media Framwwork), also known as OMFI. Developed and controlled by Avid, never standardized
    • +
    • AAF (Advanced Authoring Format). Developed by a consortium of media-related corporations.
    • +
    +

    but in practice both of these "standards" have such complex and/or incomplete specifications that different DAWs support them partially, differently or not at all.

    +

    Moving an Ardour session to another DAW

    +

    To move an Ardour session to another DAW, you have 3 basic choices:

    +
      +
    • Stem exports +
    • Copy the interchange folder +
    • Use AATranslator +
    +

    Moving another DAW session to Ardour

    +

    To move a session from another DAW to Ardour, you have 2 basic choices:

    +
      +
    • Stem exports +
    • Use AATranslator +
    +

    More details on these options are available:

    +
    +

    Copying The Interchange Folder

    +

    Copying The Interchange Folder

    +

    All media in a session folder is stored in a sub-folder called "interchange". Below that is another folder with the name of the session. You can copy either of these to another location and use the files within them with any other application, importing them all into a project/session. You will lose all information about regions, tracks, and timeline positioning, but all the data that Ardour was working with will be present in the other DAW. Nothing below the "interchange" folder is specific to Ardour - any DAW or other audio/MIDI application should be able to handle the files without any issues.

    +
    +
    +

    Stem Exports

    +

    Stem Exports

    +

    Stem exports are covered fully in the Export chapter. A stem export creates 1 file per track, starting at the beginning of the session. You can then import each track into another DAW and begin working on it. You lose all data except the actual audio/MIDI (no plugins, no automation). This is one of the most common methods of interchange because it works between all DAWs.

    +
    +
    +

    Using AATranslator

    +

    Using AATranslator

    +

    AATranslator is a Windows application that can convert sessions/projects from many diffferent DAWs into other formats. At the present time (December 2012), it can read and write Ardour 2.X sessions, and can read Ardour 3 sessions.

    +

    The program runs very well on Linux using Wine (a Windows environment for Linux). There are equivalent solutions for running Windows applications on OS X, but we have no experience with them at this time. Ardour users have reported great results using AATranslator on Ardour 2.X sessions.

    +

    The AATranslator website has full details on which formats/DAWs it supports, but they include ProTools, Live, Reaper, OMF, AAF and many more.

    +

    +
    +
    +
    +

    Renaming a Session

    +

    Renaming a Session

    +

    Use Session > Rename to give your session a new name. A dialog will appear to ask you for the new name.

    +

    This operation does not make a new session folder - the existing session folder and relevant contents are renamed. If your session was not saved before a rename operation, it will be saved automatically and then renaming will continue.

    +

    Ardour has no "Save As" operation that actually makes a new copy of the session folder and its contents.

    +
    +
    +

    Session Templates

    +

    Session Templates

    +

    Session templates are a way to store the setup of a session for future (re)use. They do not store any data but do store (for example):

    +
      +
    • The number of tracks and busses, along with their names +
    • The plugins present on each track or bus (if any) +
    • All I/O connections +
    +

    Creating a Session Template

    +

    Choose Session > Save Template. A dialog will appear to ask you for the name of the new template.

    +

    Using a Session Template

    +

    In the New Session dialog, choose the desired template from the combo selector.

    +

    Note that you can also use an existing session as a template, without saving it as one. This is available as an option in the New Session dialog. Doing this will not alter the existing session at all, but will use its track, bus and plugin configuration just like a template.

    +

    See also Track & Bus templates for information on templates for individual tracks or busses.

    +
    +
    +

    Snapshots

    +

    Snapshots

    +

    Sometimes you will want to save the current state of a session for possible use in the future. For example, you may be about to change the entire arrangement of a piece, or drastically alter the signal processing, and want a reference to come back to should that not work out.

    +

    This is easily accomplished using Session > Snapshot. A small dialog will appear allowing you to enter a name for the snapshot. The default name is based on the current date and time.

    +

    Creating a snapshot does not modify your session, nor does it save your session. Instead, it saves an "alternate" version of the session, within the session folder. The snapshot shares all data present in the session. You can create any number of snapshots.

    +

    After creating a snapshot, you can continue working on the session and save it normally using Session > Save and any existing snapshots will remain unchanged.

    +

    Switching to a Snapshot

    +

    If you are already working on a session and want to to switch to an existing snapshot, navigate the Snapshots tab of the Editor Lists. Find the name of the snapshot in the list and click it. Ardour will switch to the snapshot. If the session has not been saved, you will asked what you want to do.

    +

    Starting Ardour With A Snapshot

    +

    Since a snapshot is just another session file stored within the session folder, you can specify that "version" when loading an existing session. The browser in the "Open Session" dialog will show an expander arrow for sessions that have more than 1 session file (i.e. snapshots) present - click on it to see the list, and then click on the name of the snapshot you want to load.

    +

    Saving And Switching to a Snapshot

    +

    Sometimes you want to create a snapshot and then have all future edits and modifications saved to that snapshot rather than the main session. This is easily done using Session > Save As. This does not create a new session folder, but saves your session as a new snapshot and then switches the "current snapshot" to the newly created one. All subsequent saves of the session will be stored in this new snapshot, and existing snapshots (and the main session) will be left unaffected.

    +
    +
    +

    The New Session Dialog

    +

    The New Session Dialog

    +

    New Session Tab

    +

    In this tab you can type in the name of a session to create in the Name: field. You can also select a folder for this session to be created in, and if desired a template to create the new session as a copy of.

    +

    Under the Advanced Options, you can select specific behaviors that occur by default. This includes settings whether you wish to create a Master Bus, or a Control Bus, and how many channels you wish either to have.

    +

    You can also select whether you want Ardour to automatically connect all inputs to the physical ports of your hardware. If you select this Ardour will do so sequentially, to give an example, the first input of a track or bus will be connected to the first input of your hardware. The second input of a track or bus will be automatically connected to the second input of your hardware, and so on. When Ardour reaches the limits of your hardware, it will circle around and begin connecting with the first physical input of your hardware again. You can limit the number of channels on your physical hardware Ardour uses if you desire, and if that is the case, Ardour will only connect that many physical inputs to your tracks. Useful if you only want to connect the first input to do some voice over recording for instance.

    +

    Just like you can tell Ardour not to automatically connect track inputs, you can also modify how it automatically connects the outputs of the track or bus. By default Ardour will connect all tracks and busses to the Master Bus if there is one. However you can also tell it to automatically connect each output to the physical outputs of your interface or sound card, and like inputs can also limit the amount of physical outputs used, so for instance if you only have stereo monitors attached to the first two outputs of your sound card, you would not want Ardour to automatically connect to the next 6 that may be there with nothing attached to them.

    +

    Open Session Tab

    +

    The Open Session Tab will allow you to open an already existing session. You can also open any snapshot of a particular session by clicking on the arrow next to the session name to display all snapshots, and then selecting a snapshot. If a session is not displayed by default in the dialog you can click on the button next to "Browse" in order to bring up a file selection dialog to navigate your hard drive to find the file.

    +

    Audio Setup Tab

    +

    More details on this dialog/tab can be found below. Note that this tab is not visible if JACK is already running when the New Session dialog is displayed.

    +
    +

    Audio Setup

    +

    Audio Setup

    +

    This is a tabbed-dialog within the New Session dialog that will appear only if JACK is not already running as you start Ardour. It provides a simple interface to configure JACK, which will then be started by Ardour. For more control and options regarding JACK, it is recommended that you start JACK before using Ardour, via a JACK control application such as qjackctl (sometimes called "Jack Control"), JackPilot, etc.

    +

    Device Tab

    +

    On this tab you can tell Ardour about the device it should use. The driver setting will tell it what driver to attempt to access.

    +
    +
    Driver
    +
    On Mac OS X this will typically be CoreAudio. On Linux usually this will be either FFADO or ALSA, depending on whether or not you are utilizing a firewire device. Advanced users on all platforms may also use NetJack which provides network audio I/O
    +
    Interface
    +
    The selector should show all availiable interfaces that driver provides that are duplex capable for Ardour to use. Important if you are using an Intel Mac running OS X and the builtin audio interface, you must first merge its separate input and output devices into a single "aggregate device" before Ardour will be able to use it.
    +
    +
    Sample Rate
    +
    The selector will allow you to select from any sample rate supported by the device selected above it.
    +
    Buffer Size
    +
    You can adjust the size of the buffer used by your audio interface to allow for either lower latency, or lower CPU usage and higher latency.
    +
    +

    Options Tab

    +

    This tab has a few options that should be rarely used by most users. The Realtime Option allows Jack to run with Realtime privileges, which allows for smoother audio. The Verbose Output checkbox is primarily used for troubleshooting, it will cause Jack to use verbose messaging and output it to the console. The client timeout will help prevent clients from disconnecting from Jack if they don't respond to Jack fast enough. The number of ports changes the total number of ports that Jack will provide to all clients. And the server dropdown will allow you to change the path to the Jack executable to match where it is installed on your system.

    +

    Advanced Tab

    +

    The Advanced tab will allow you to set some advanced settings that are rarely needed. By default the input and output channels will automatically try to give you the amount of inputs and outputs as requested by the software, however some software doesn't always request as many as you need, this can provide more to software that can handle it.

    +
    +

    Using More Than One Audio Device

    +

    Using More Than One Audio Device

    +

    Ardour will only use a single interface. If you want to use more than one interface you will need to lock them all to a sample clock, and then set up the device outside of Ardour.

    +

    +Ardour is fundamentally designed to be a component in a pro-audio/music creation environment and standard operating practice for such setups involves using only a single digital sample "clock" (something counting off the time between audio samples). This means that trying to use multiple independent soundcards is problematic, because each soundcard has its own sample clock, running independently from the others. Over time, these different clocks drift out of sync with each other, and cause glitches in the audio. You can't stop this drift, although in some cases the effects may be insignificant enough that some people might not care about them.

    +

    Thus in an ideal world you should not use multiple independent soundcards but instead use a single device with a single clock and all the inputs, outputs and other features that you need.

    +

    Of course, a lot of people don't live in an ideal world, and believe that software should make up for this. +

    +

    OS X

    +

    The precise instructions for creating an "aggregate device" on OS X have varied from one released to another.

    +
    +
    OS X 10.5
    +
    Please read http://support.apple.com/kb/HT1215
    +
    OS X 10.6 or later
    +
    +
    Please read http://support.apple.com/kb/HT3956
    +
    +

    Aggregate devices also provide a method to use multiple soundcards as a single device. For example, you can "aggregate" 2 different 8-channel devices so that you can record 16 channels into Mixbus.

    +

    Linux

    +

    Please see the instructions at http://jackaudio.org/faq

    +
    +
    +
    +
    +

    What's In A Session?

    +

    What's In A Session?

    +

    The Session is the fundamental document type that is created and modified by the Ardour workstation. A "Session" is a folder on your computer filesystem that contains all the items that pertain to a particular project or "recording/editing/mixing session".

    +

    The Session folder includes these files and folders:

    +
      +
    • The main session snapshot (session_name.ardour) +
    • Any additional snapshots (filenames ending in ardour) +
    • the auto-backup snapshot (session_name.ardour.bak) +
    • the undo history for the session (session_name.history) +
    • the instant file (instant.xml) which records the last-used zoom scale and other metadata +
    • a folder called "interchange" which holds your raw audio and MIDI files (whether imported or recorded) +
    • a folder called "export" which contains any files created by the "Export" function +
    • a folder called "peaks" which contains a waveform rendering of each raw audio file in the session +
    • a folder called "analysis" which contains transient and pitch information of each raw audio file +
    • a folder called "dead sounds" which contains sounds which Ardour has detected are no longer used in the session +
    +

    A session combines some setup information (such as audio and MIDI routing, musical tempo & meter, timecode synchronization, etc.) with one or more Tracks and Buses, and all the Regions and Plug-Ins they contain.

    +
    +
    +

    Where are Sessions Stored?

    +

    Where are Sessions Stored?

    +

    Sessions are stored in a single folder on your computer's filesystem.

    +

    The first time you run Ardour, you will be asked where you would like the default location for sessions to be, with the initial choice being your home folder.

    +

    You can change it in that startup dialog, or later via Edit > Preferences > Misc > Session Management. You can also specify a particular (different) location for a session when creating it, in the New Session dialog.

    +
    +
    +
    +

    Working WIth Regions

    +

    Working Witth Regions

    +

    Regions are the basic elements of editing and composing in Ardour. In most cases, a region represents a single contiguous section of one or more media files. Regions are defined by a fixed set of attributes:

    +
      +
    • the source audio/MIDI file(s) they represent +
    • a starting point in the audio/MIDI file(s) +
    • a length +
    +

    When placed into a playlist, they gain additional attributes:

    +
      +
    • a position along the timeline
    • +
    • a layer
    • +
    +

    There are other attributes as well, but they do not define the region. Things you should know about regions:

    +

    Regions are Cheap

    +

    By themselves, regions consume very little of your computer's resources. Each region requires a small amount of memory, and represents a rather small amount of CPU work if placed into an active track. So, don't worry about creating regions whenever you need to.

    +

    Regions are not files

    +

    Although a region can represent an entire audio file, they are never equivalent to an audio file. Most regions represent just parts of an audio file(s) on disk, and removing a region from a track has nothing to do with removing the audio file(s) from the disk (the Destroy operation, one of Ardour's few destructive operations, can affect this). Changing the length of a region has no effect on the audio file(s) on disk. Splitting and copying regions does not alter the audio file in anyway, nor does it create new audio files (only recording, and the Export , Bounce and Reverse operations create new audio files).

    +

    This chapter covers the following:

    +
    +

    Region Naming

    +

    Region Naming

    +

    Regions are initially named using either:

    +
      +
    • the name of the playlist for which they were recorded +
    • the name of the track for wich they were recorded +
    • the name of the embedded/imported file they represent +
    +

    Whole File Region Names

    +

    These are not audio files, but regions that represent the full extent of an audio file. Every time a new recording is done, or a new file is embedded/imported, a new region is created that represents the entire audio file(s) This region will have the name of the track/playlist/original file, followed by a "-" and then a number plus a dot and then a number.

    +

    For recorded regions, the number will increase each time a new recording is made. So, for example, if there is a playlist called "Didgeridoo", the first recorded whole file region for that playlist will be called "Digderidoo-1". The next one will be "Digeridoo-2" and so on.

    +

    For imported/embedded files, the region name will be based on the file name, but with any final suffix (e.g. ".wav" or ".aiff") removed.

    +

    Normally, whole file regions are not inserted into tracks/playlists, but regions derived from them are. The whole-file versions live in the editor region list where they act as an organizing mechanism for regions that are derived from them.

    +

    Normal Region Names

    +

    When a region is inserted into a track/playlist, its initial name will end in a version number, such as ".1" or ".103". For a recorded region, if the whole file region was "Hang drum-1", then the region in the track will appear with the name "Hang drum-1.1". For an imported/embedded region, if the whole file region was "Bach:Invention3", then the region in the track will appear with the name "Bach:Invention3.1".

    +

    Copied Region Names

    +

    If the region is a copy of another region, it will begin life with the same name as the original. When an operation is carried out that modifies one of the copies, that particular copy will be renamed by incrementing the version number.

    +

    Renaming Regions

    +

    You can rename a region at any time. Use the region context menu to popup the rename dialog. The new name does not need to have a version number in it (in fact, it probably should not). The region will retain its name until it is modified after being copied.

    +
    +
    +

    Region Selection Equivalence

    +

    Track Groups have a property titled "Select" which, if enabled, will cause Ardour to try to propagate a region selection in one of a group's member tracks to the other members of the group..

    +

    For example, let's assume you have used multiple microphones to record a drum kit to multiple tracks. You have created a track group, added all the drum tracks, enabled the group and enabled the "Select" property for the group. When you select a region in one of the drum tracks, Ardour will select the corresponding track in every other drum track, which in turn means that a subsequent edit operation will affect all the selected regions (and thus all the drum tracks) together.

    +

    How Ardour decides which regions are "equivalent"

    +

    Regions in different tracks are considered to be equivalent for the purposes of sharing "selection" if they satisfy all the following criteria:

    +
      +
    1. Each region starts at the same offset within its source file
    2. +
    3. Each region is located at the same position on the timeline
    4. +
    5. Each region has the same length
    6. +
    +

    Overlap Equivalence

    +

    Sometimes, the rules outlined above are too strict to get Ardour to do what you want. Regions may be slightly different lengths, or positioned slightly differently, and this will cause Ardour to not select regions in other grouped tracks that you would like it to.

    +

    In this case, enable Edit > Preferences > Editor > Use overlap equivalency for regions. With this option enabled, regions in different tracks will be considered equivalent for the purposes of selection if they overlap. This is much more flexible and will cover almost all of the cases that the fixed rules above might make cumbersome.

    +
    +
    +

    The Region Context Menu

    +

    In the editor window, context clicking on a region brings up a menu to provide access to many region operations. The menu begins with the name of the region, or "Selected Regions" if multiple regions are selected.

    +

    If there is more than 1 region layered at the point where you clicked, the menu will also contain an item "Choose Top" that if selected will show a dialog that allows you to adjust the layering of regions there. See Adjusting Region Layering for more details.

    +

    Below these items is the rest of the Track Context Menu, which provides access to track-level operations. To see the region context menu's contents, select the region name or "Selected Regions", and a submenu will appear with the following structure/contents:

    +
    +
    Play
    +
    +
    Loop
    +
    +
    Properties
    +
    +
    Rename
    +
    +
    Edit
    +
    +
    +
    Combine
    +
    +
    Uncombine
    +
    +
    Split
    +
    +
    Make Mono Regions
    +
    +
    Opaque
    +
    +
    Mute
    +
    +
    Pitch Shift
    +
    +
    Reverse
    +
    +
    Close Gaps
    +
    +
    Place Transients
    +
    +
    Rhythm Ferret
    +
    +
    Strip Silence
    +
    +
    +
    +
    Position
    +
    +
    +
    Move To Original Position
    +
    +
    Lock
    +
    +
    Glue to Bars and Beats
    +
    +
    Snap Position to Grid
    +
    +
    Set Sync Position
    +
    +
    Remove Sync
    +
    +
    Nudge Later
    +
    +
    Nudge Earlier
    +
    +
    Nudge Later by capture offset
    +
    +
    Nudge Earlier by capture offset
    +
    +
    +
    +
    Trim
    +
    +
    +
    Trim Start at Edit Point
    +
    +
    Trim End at Edit Point
    +
    +
    Trim to Loop
    +
    +
    Trim to Punch
    +
    +
    Trim to Previous
    +
    +
    Trim to Next
    +
    +
    +
    +
    Layering
    +
    +
    +
    Raise to Top
    +
    +
    Raise
    +
    +
    Lower
    +
    +
    Lower to Bottom
    +
    +
    +
    +
    Ranges
    +
    +
    +
    Set Loop Range
    +
    +
    Set Punch Range
    +
    +
    Add Single Range Marker
    +
    +
    Add Range Marker per Region
    +
    +
    Set Range Selection
    +
    +
    +
    +
    Gain
    +
    +
    +
    Normalize
    +
    +
    Boost
    +
    +
    Cut
    +
    +
    Reset Envelope
    +
    +
    Envelope Active
    +
    +
    +
    +
    Fades
    +
    +
    +
    Fade In
    +
    +
    Fade Out
    +
    +
    Fades
    +
    +
    +
    +
    Duplicate
    +
    +
    +
    Duplicate
    +
    +
    Multi-Duplicate
    +
    +
    Fill Track
    +
    +
    +
    +
    Export
    +
    +
    Bounce (without processing)
    +
    +
    Bounce (with processing)
    +
    +
    Spectral Analysis
    +
    +
    Remove
    +
    +
    +
    +
    +
    +

    Working With Playlists

    +

    Working With Playlists

    +

    Playlists are a fundamental concept in Ardour that you may or may not end up using, depending on your workflow.

    +
    +

    Playlist Operations

    +

    Playlist Operations

    +

    All operations on playlists start by clicking on the playlist button (labelled p) in a track header in the editor window. Clicking the button will popup a menu with the following choices:

    +
    +
    (Local Playlists)
    +
    Shows all of the playlists associated with this track, and indicates the currently selected playlist
    +
    Rename
    +
    Pops up a dialog that allows the current playlist to be renamed
    +
    New
    +
    Creates a new empty playlist, and switches this track to use it
    +
    New Copy
    +
    Creates a new playlist that is a copy of the current playlist, and switches this track to use it
    +
    Clear Current
    +
    Removes all regions from the current playlist
    +
    Select from All
    +
    pops up a playlist browser to manually choose which playlist this track should use ( you can even select playlists from other tracks here)
    +
    +

    Renaming Playlists

    +

    Playlists are created with the name of the track of which they are associated, plus a version number. So, the first playlist for a track called "Cowbell" will be called "Cowbell.1". This name will be used to define the names of any regions added to the playlist by recording. You can change the name at any time, to anything you want. Ardour does not require that your playlist names are all unique, but it will make your life easier if they are. Suggested examples of user-assigned names for a playlist might include "Lead Guitar, 2nd take", "vocals (quiet)", and "downbeat cuica". Notice how these might be different from the associated track names, which for these examples might be "Lead Guitar", "Vocals" and "Cuica". The playlist name provides more information because it is about a specific version of the material that may (or may not) end up in the final version of the track.

    +

    If you are going to rename your playlists, do so before recording new material to them.

    +

    Sharing Playlists

    +

    It is entirely possible to share playlists between tracks. The only slightly unusual thing you may notice when sharing is that edits to the playlist made in one track will magically appear in the other. If you think about this for a moment, its an obvious consequence of sharing. One application of this attribute is parrallel processing, described below.

    +

    You might not want this kind of behaviour, even though you still want two tracks to use the same (or substantially the same) playlist. To accomplish this, select the chosen playlist in the second track, and then use New Copy to generate an independent copy of it for that track. You can then edit this playlist without affecting the original.

    +

    Using Playlists for "Parallel Processing"

    +

    One of the uses of Playlists is to apply multiple effects to the same audio stream. For example, let's say you have a track and you'd like to apply a second set of effects, at the same time to the original track. In this case you could make a new track, select the original track's Playlist, and then apply different effects to the second track than the first (including panning, inserts, and bussing changes). Now, if you edit either of the track's playlists, the changes will appear in both tracks.

    +

    Using Playlists for "Takes"

    +

    Using Playlists for takes is a good solution if you are going to need the ability to edit individual takes, and select between them, but you won't be "compositing" multiple takes together. This might be the case if you were recording multiple languages of a given track, and you want to use the same "track" for each language so that they get the same processing. Then you select each language before exporting the mix for each separate language.

    +

    You use the Clear Current operation each time you want to start a new take. This is a non-destructive operation that removes all existing regions from the current playlist. Although you won't lose any information doing this, its probably not appropriate unless the last take was so awful that you want to discard it (although without the finality of Remove Last Capture ). Finally, and probably most useful, you can use the New operation in the playlist button menu to create a new empty playlist, ready for the next take. Later, you can Select your way back to previous or later takes as desired, either in this or some other track.

    +

    If you want to record multiple takes and then "comp" between them, it is probably better to simply record each successive take on top of the others in "layers" and then edit them using the layer tools, explained later.

    +
    +
    +

    Understanding Playlists

    +

    Understanding Playlists

    +

    A playlist is a list of regions ordered in time. It defines which parts of which source files should be played and when. Playlists are a fairly advanced topic, and can be safely ignored for many types of audio production, however the use of playlists allows the audio engineer more flexibility for tasks like multiple takes of a single instrument, alternate edits of a given recording, parallel effects such as reverb or compression, and other tasks.

    +

    Each audio track in Ardour is really just a mechanism for taking a playlist and generating the audio stream that it represents. As a result, editing a track really means modifying its playlist in some way. Since a playlist is a list of regions, most of the modifications involve manipulating regions: their position, length and so forth. This is covered in the chapter about regions. Here, we cover some of the things you can do with playlists as objects in their own right.

    +

    Tracks are not Playlists

    +

    It is important to understand that a track is not a playlist. A track has a playlist. A track is a mechanism for generating the audio stream represented by the playlist and passing it through a signal processing pathway. At any point in time, a track has a single playlist associated with it. When the track is used to record, that playlist will have one or more new regions added to it. When the track is used for playback, the contents of the playlist will be heard. You can change the playlist associated with a track at (almost) any time, and even share playlists between tracks.

    +

    If you have some experience of other DAWs, then you might have come across the term "virtual track", normally defined as a track that isn't actually playing or doing anything, but can be mapped/assigned to a "real track". This concept is functionally identical to Ardour's playlists. We just like to be little more clear about what is actually happening rather than mixing old and new terminology ("virtual" and "track") into confusing terminology.

    +

    Playlists are Cheap

    +

    One thing you should be clear about is that playlists are cheap. They don't cost anything in terms of CPU consumption, and they have very minimal efforts on memory use. Don't be afraid of generating new playlists whenever you want to. They are not equivalent to tracks, which require extra CPU time and significant memory space, or audio files, which use disk space, or to plugins that require extra CPU time. If a playlist is not in use, it occupies a small amount of memory, and nothing more.

    +
    +
    +
    +

    Working with Tracks

    +

    Working with Tracks

    +

    This chapter covers the following:

    +
    +

    Track Types

    +

    Data Type

    +

    An Ardour track can be either ‘audio’ or ‘MIDI’. The only real difference between the two is the type of data that the track will record and play back. Either type of track can pass either type of data. Hence, for example, one might have a MIDI track that contains an instrument plugin; such a track would record and playback MIDI data from disk but would produce audio, since the instrument would turn the one into the other.

    +

    Nevertheless, when adding tracks to a session, you typically have an idea of what you need to use the new tracks for, and Ardour offers you three choices:

    +
    +
    Audio Tracks
    +
    an Audio Track is created with a user-specified number of inputs. The number of outputs is defined by the master bus channel count (see "Channel Configuration" below for more on this), This is the type of bus to use when planning to work with existing or newly recorded audio.
    +
    MIDI Tracks
    +
    A MIDI track is created with a single MIDI input, and a single MIDI output. This is the type of track to use when planning to record and playback MIDI, whether or not the MIDI will be processed by instrument plugins or sent to other applications or external MIDI hardware. If/when you add an instrument plugin, the output configuration of a MIDI track will be changed to have audio outputs to deliver the signal from the instrument to other parts of Ardour.
    +
    Audio/MIDI Tracks
    +
    There are a few notable plugins that can usefully accept both audio and MIDI data (Reaktor is one, and various "auto-tune" like plugins are another example. It can be tricky to configure this type of track manually, so Ardour allows you to select this track type specifically for use when working with such plugins. It is not generally the right choice when working normal MIDI tracks, and a dialog will warn you of this.
    +
    +

    Track Modes

    +

    Audio tracks in Ardour can have a "mode" which affects how they behave when recording.

    +
    +
    Normal
    +
    Tracks using this mode will record non-destructively - new data is written to new files, and when overdubbing, new regions will be layered on top of existing ones (with or without crossfades. This is the recommended mode for most workflows.

    +
    Non-Layered
    +
    Tracks using this mode will record non-destructively - new data is written to new files, but when overdubbing if new regions overlap existing regions, the existing regions are trimmed so that there are no overlaps. This can be a very useful way of working with spoken word material, especially in combination with push/pull trimming.

    +
    Tape
    +
    Tracks using this mode do destructive recording: all data is recorded to a single file and if you overdub a section of existing data, the existing data is destroyed (irrevocably - there is no undo). Fixed crossfades are added at every punch in and out point. This mode can be useful for certain kinds of dubbing workflows, but it not suggested for normal use.
    +
    +

    Below is a screenshot that shows the subtly different results of an overdub in normal and non-layered mode. Both tracks were created using identical audio data. The upper track is in normal mode, and the overdub (the middle shorter region) has created a new region which if you look carefully has been layered on top of the the existing (longer) region. The lower track is in non-layered mode, and rather than overlay the overdub region, it split the existing region and inserted the new one in between.

    +

    normal and non-layered overdubbing comparision

    +


    +

    Channel Configuration

    +

    +

    Ardour tracks can have any number of inputs and any number of outputs, and the number of either can be changed at any time (subject to restrictions caused by any plugins in a track). However it is useful to not have to configure this sort of thing for the most common cases, and so the Add Tracks dialog allows you to select "Mono", "Stereo" and few other typical configurations.

    +

    What does Mono or Stereo actually mean?

    +

    Given that tracks have a certain number of inputs and a certain number of outputs and that these numbers may not necessarily be the same, it is not immediately clear what terms like "Mono" or "Stereo" mean. Most people will know that they refer to "1 channel" and "2 channels" in some way, but this leaves room for interpretation. 1 input channel? 2 output channels?

    +

    If you are using Ardour's default mode of automatically connecting track (and bus) inputs and outputs, then the designation "Mono" or "Stereo" refers to the input of the track. A Mono track will have a single input and a Stereo track will have two inputs.

    +

    The number of outputs for each will be determined by the number of inputs of the master bus, to which the track outputs will be connected. So in the most common case, using a 2 channel master bus, a Mono track has 1 input and 2 outputs that are connected to the master; a Stereo track has 2 inputs and 2 outputs that are connected to the master.

    +

    However, if you choose not to have Ardour make connections automatically, then tracks will be left disconnected by default. In this scenario, a Mono track has 1 input and 1 output, and a stereo track has 2 inputs and 2 outputs. It is up to you to connect them as you wish. This is not a particularly useful way to work unless you are doing something fairly unusual with signal routing and processing. It is almost always preferable to leave Ardour to make connections automatically, even if you later change them manually.

    +
    +
    +

    Adding Tracks

    +

    Adding and removing tracks

    +

    A track or bus can be added to a session in various ways:

    +
      +
    • Choose Add Track or Bus… from the Track menu. +
    • Right-click in an empty part of the track controls area. +
    • Click the + button underneath the list of tracks in the mixer. +
    +

    Any of these actions will open the Add Track or Bus dialogue,

    +

    the add-track dialog

    +

    From here, you can select firstly the number of tracks or busses to add, and the type; audio track, MIDI track or bus. There are also some options, which vary depending on the type of thing you are creating.

    +

    These options are:

    +
    +
    Configuration (for audio tracks and busses)
    +
    this is the number of input and outputs the track is set up with. You can always change these counts later.
    +
    Track mode (for audio tracks)
    +
    this can be ‘normal’, ‘non-layered’ or ‘tape’.
    +
    Group
    +
    tracks and busses can be put into groups so that a selected range of operations are applied to all members of a group at the same time (selecting record enable, or editing, for example). This option allows you to specify an existing group to add the new track(s) or bus(ses) to, or to create a new group to put the new things in.
    +
    Instrument (for MIDI tracks)
    +
    this is a short-cut to allow you to create a MIDI track with an instrument plugin already added to it. You can achieve the same effect by creating a MIDI track with no plugins and adding it yourself; this option just makes things slightly quicker.
    +
    +

    Adding tracks will add them to both the editor and mixer windows; the editor window shows the timeline, with any recorded data, and the mixer shows just the processing elements of the track (its plugins, fader and so on).

    +

    Tracks and busses can be removed by selecting them, right-clicking and choosing ‘Remove’ from the menu. A warning dialogue will pop up, as track removal cannot be undone; use this option with care!

    +
    +
    +

    Selecting Tracks

    +
    +

    Region and Track Selection

    +

    By default, selecting regions has no impact on track selection. You can select a track, then select a region in another track (or vice versa) and both selections will co-exist happily. Operations that are applied to tracks will use the track selection, and those that apply to regions will use the region selection. Similarly,. deselecting a region will not deselect the track it is in (if that track was selected).

    +

    In some workflows, and particularly if you have experience of some other DAWs, this is not the most comfortable way to work. You may prefer to work in a style where selecting a region will also select the track that the region is in. Similarly, when the last selected region in a track is deselected, the track will also become unselected.

    +

    To control this behaviour, set Edit > Preferences > Editor > Link selection of regions and tracks.

    +
    +
    +
    +

    Controlling Track Appearance

    +

    Ardour offers many options for controlling the specific appearance of tracks, including color, height, waveform style and more.

    +

    Global Options

    +

    These can all be found via Edit > Preferences > Editor

    +
    +
    Show meters on tracks in the editor
    +
    By default, ardour will put meters in the track header in the editor window. Disable this option to avoid this.
    +
    Show waveforms in regons
    +
    By default, ardour will draw waveforms within audio regions. Disable this option to avoid this.
    +
    Waveform scale
    +
    +
    +
    Linear
    +
    +
    Logarithmic
    +
    +
    +
    +
    Waveform shape
    +
    +
    +
    Traditional
    +
    Waveforms are drawn as positive and negative heights above and below a "zero" line
    +
    Rectified
    +
    Waveforms are show as absolute heights above a "zero" line
    +
    +
    +
    +

    Per-Track or per-group options are covered below:

    +
    +

    Layering Display

    +

    Ardour allows arbitrary layering of regions - you can stack as you wish in a given position. By default, the editor windows draws them overlapping, which has the big benefit that is very economical in terms of using vertical space.

    +

    In this drawing mode however, working with a track that has many overdubs can sometimes be a little confusing because its not always entirely clear how the overdubs are all layered with respect to each other. Although there are other methods of moving particular regions to the top of an overlapping set, and although Ardour also has playlists to let you manage takes a bit more efficiently than just continually overdubbing, there are times when being able to clearly see all regions in a track without any overlaps is reassuring and potentially useful.

    +

    Here is an image of a track with a rather drastic overdub/overlap situation, viewed in normal "overlaid" mode:

    +

    overlapping regions in overlaid mode

    +

    To change this display, right click on the track header, and you'll see this menu:

    +

    layer display menu

    +

    You will see that there are two choices for "Layers": overlaid (currently selected) and stacked. Click on stacked and the track display changes to this:

    +

    overlapping regions in stacked mode

    +

    You can still move regions around as usual, and in fact you can even drag them so that they overlay each again, but when you release the mouse button, things will flip back to them being all stacked cleaning. This display mode works best when you use sensible track heights. The number of "lanes" for the track is determined by the maximum number of regions existing in any one spot throughout the track, so if you have really stacked up 10 overdubs in one spot, you'll end up with 10 lanes. Obviously, using a large track height works much better for this than a small one.

    +
    +
    +

    Track Coloring

    +

    Track Color

    +

    New tracks in Ardour are assigned a random color from a somewhat pastel-like color spectrum, so they should never end up being particularly bright or particularly dark.

    +

    Changing the color of specific tracks

    +

    Select the tracks whose color you wish to change. Context-click on the track header of one of them. From the context menu, select "Color". A color dialog will appear. Choose the new color for the track, and click "OK" in the dialog. Every selected track will be recolored, both in the editor and mixer window.

    +

    Note that if you are only changing one track, context-clicking on that track's header will be enough to select it, saving the extra mouse click.

    +

    Changing the color of all tracks in a group

    +

    Tracks that belong to a track/bus group can share the color of the group by enabling the Color option for the group.

    +

    When this is enabled, you can change the color of the entire group by following the process described above for specific tracks - the new color will be used by all tracks in the group.

    +

    You can also explicitly change the group color by context-clicking on the group tab, selecting Edit Group... and then clicking on the Color selector in the dialog that is displayed. After you click "OK" in the color dialog that is provided for picking the color, all tracks in the group will be recolored to match the group color.

    +
    +
    +

    Track Height

    +

    Changing Track Height from the Header Context menu

    +

    Context clicking on the track header will select a track and display a conttext menu that includes the Height choice. Choose this, and a submenu will appear containg a number of preset heights. Choose one of them, and all selected tracks will be redrawn using that height.

    +

    Changing Track Height by dragging the track header

    +

    Select the tracks you wish to resize. Move the pointer to the bottom edge of the track header. The cursor will change to a 2-way vertical arrow shape. Left-click-drag to dynamically resize all selected tracks.

    +

    Making Track Heights fit the Editor Window

    +

    Select the tracks you wish to display in the Editor window. Choose Track > Height > Fit Selected Tracks (or use its shortcut, default is f). The tracks are resized and the editor track view is scrolled so that the selected tracks completely fill the vertical space available.

    +

    You can use Visual Undo (default bindng: Shift-z to undo this operation.

    +
    +
    +
    +

    Controlling Track Ordering

    +

    Ardour does not impose any particular ordering of tracks and busses in either the editor or mixer windows. The default arrangement is as follows:

    +

    Editor default arrangement

    +
      +
    • Master bus on top
    • +
    • Tracks in the order they are added below, including busses
    • +
    • Even if you use a Monitor section, it is never visible in the editor window. +
    +

    Mixer default arrangement

    +
      +
    • Tracks in the order they are added, from left to right +
    • Master bus on the right, in its own pane so that it is always visible no matter how other mixer strips are scrolled. +
    • If a Monitor section is used, that is at the right edge of the mixer window (it can be torn off, too) +
    +

    Synchronizing Editor and Mixer Window Ordering

    +

    By default the ordering within the editor and mixer windows is synchronized: if you reorder in one window, the ordering in the other window will change. You can disable this via Edit > Preferences > Editor > Synchronize Editor and Mixer Track Order. When disabled, the ordering both both windows is totally indepedent of the other.

    +

    Reordering Specific Tracks...

    +

    ... in the Editor Window, via the Keyboard

    +

    Select the tracks you want to move. Then use Track > Move Selected Tracks Up () or Track > Move Selected Tracks Down () to move the selected track(s) up or down in the editor window.

    +

    ... in the Editor Window, via Drag-n-Drop

    +

    Make the Editor Lists visible. Select the Tracks & Busses tab. In the browser there, you can freely drag-and-drop tracks and busses into any order you prefer.

    +

    ... in the Editor Window, via Drag-n-Drop

    +

    Within the "Strips" browser in the upper left area of the Mixer window, you can freely drag-and-drop tracks and busses into any order you prefer.

    +

    "Collecting" Group Members together

    +

    Tracks and Busses that are members of a group can be reordered so that they display contiguously within the Editor and Mixer windows. Context-click on the group tab and choose "Collect".

    +
    +

    Track Ordering and Remote Control IDs

    +

    Every track and bus in Ardour is assigned a remote control ID. When various protocols such as Mackie Control or OSC are used to control Ardour, these remote control IDs are used to identify which track(s) or buss(es) are the intended target of the commands.

    +

    By default, remote ID's will be assigned to tracks and busses in the order that they are created, starting from 1. The master bus and monitor section have their own unique IDs (318 and 319).

    +

    Ardour provides 3 methods to control remote control IDs, which can be chosen via Edit > Preferences > User Interaction:

    +
    +
    Follow order of editor
    +
    When enabled, remote control IDs will be reset to match the editor window order, so that the leftmost track/bus has RID 1. Manual assignment of RIDs is not possible.
    +
    Follow order of mixer
    +
    When enabled, remote control IDs will be reset to match the mixer window order, so that the leftmost track/bus has RID 1. Manual assignment of RIDs is not possible.
    +
    Assigned by user
    +
    When enabled, the remote control ID is completely independent of the ordering in either window, and RID's may be changed manually by the user.
    +
    +

     

    +
    +
    +
    +

    Bus Controls

    +

    A typical control area for a bus is shown below:

    +

    bus controls

    +

    At the top-left of the controls is the name of the bus. This can be edited directly to whatever is suitable, although the name must be unique within the session. Underneath the name is a copy of the bus' main level fader. The control buttons to the right-hand side are:

    +
    +
    m
    +
    mute. left-click to mute the bus. Right-click to display a menu which dictates what particular parts of the bus should be muted.
    +
    s
    +
    solo — solo the bus. The behaviour of the solo system is described in detail in the section called “Mute and solo”.
    +
    a
    +
    automation — click to open a menu related to automation for the bus. Automation is covered in Chapter 9, Automation.
    +
    g
    +
    group — click to open a menu related to the bus group, as discussed in the section called “Track and bus groups” above.
    +
    +

     

    +
    +
    +

    Audio Track Controls

    +

    A typical control area for an audio track is shown below:

    +

    audio track controls

    +

    An audio track has the same controls as a bus, with the addition of two extras. The red button with the pink circle is the track's record enable. When this is clicked it will gain a bright red outline, and the track will then be recorded onto when the main session record enable is turned on with the transport rolling.

    +

    The ‘p’ button below the record enable will open a playlist menu when clicked. The menu offers various operations related to the track's playlist. This, as you will recall, is simply a list of the regions that the track should play. Playlists may be swapped on a given track, and may be used by more than one track at the same time. They are often useful to keep different takes, for example, or to allow one set of regions to be played off two tracks with different processing.

    +
    +
    +

    MIDI Track Controls

    +

    A typical control area for a MIDI track is shown below:

    +

    midi track controls

    +

    The MIDI track example is shown at a greater height than the other examples, as with MIDI tracks there are some control elements which only appear when there is sufficient vertical space to fit them in.

    +

    A MIDI track has the same basic controls as an audio track, with the addition of two extra elements. The set of buttons below the main track controls controls the MIDI channels that should be visible in the editor. A MIDI track's data may span any number of the 16 available MIDI channels, and sometimes it is useful to view only a subset of those channels; different instruments may, for example, be put on different MIDI channels. Clicking on a channel number toggles its visibility.

    +

    To the right of the MIDI track controls is a representation of a piano keyboard called the ‘scroomer’. This performs a couple of functions. Firstly, the scroll-bar controls the range of pitches that are visible on the track. Dragging the scroll-bar body up and down scrolls up and down through the visible pitches, and dragging the scroll-bar ‘handles’ zooms in and out, so that more or fewer pitches are visible. The piano keyboard gives a reference for the pitches that the track is displaying. In addition, clicking on the notes will generate the corresponding MIDI note in the track.

    +
    +
    +

    The Track Context Menu

    +

    Within the editor window, context-clicking on either a region or empty space within a track will popup the track context menu, which provides easy access to many track-level operations.

    +

    If you click on a region, the first item in the menu will the name of the region. If there are more than one regions stacked where you clicked, this will be followed by an item called Choose Top. If selected, you will see a dialog that allows you to reorder the stacking of layers at that point. See Adjusting Region Layering for more details.

    +

    The rest of the track context menu is structured as follows:

    +
    +
    Play
    +
    +
    +
    Play from Edit Point
    +
    Play from the location of the current edit point.
    +
    Play from Start
    +
    Play from the start of the session
    +
    Play Region(s)
    +
    Plays the duration of the session from the start of the earliest selected region to the end of the latest selected region
    +
    +
    +
    Select
    +
    +
    +
    Select All in Track
    +
    Select All
    +
    Invert Selection in Track
    +
    Invert Selection
    +
    Set Range to Loop Range
    +
    Set Range to Punch Range
    +
    Select All After Edit Point
    +
    Select All Before Edit Point
    +
    Select All After Playhead
    +
    Select All Before Playhead
    +
    Select All Between Playhead and Edit Point
    +
    Select All Within Playhead and Edit Point
    +
    Select Range Between Playhead and Edit Point
    +
    +
    +
    Edit
    +
    +
    +
    Cut
    +
    Copy
    +
    Paste
    +
    Align
    +
    Align Relative
    +
    +
    +
    Insert Selected Region
    +
    Insert Existing Media
    +
    Nudge
    +
    +
    +
    Nudge Entire Track Later
    +
    Nudge Track After Edit Point Later
    +
    Nudge Entire Track Earlier
    +
    Nudge Track After Edit Point Earlier
    +
    +
    +
    Freeze
    +
    +

     

    +
    +
    +

    Track and Bus Groups

    +

    Tracks and busses can be put into groups. The members of a group can be set to share various settings, which can be useful for managing tracks which are closely related to each other. Examples might include tracks that contain multiple-microphone recordings of a single source (an acoustic guitar, perhaps, or a drum-kit).

    +

    You can put tracks and busses into groups in various ways. In the editor window, a track's controls might look like these:

    +

    track headers for a group

    +

    The green tab to the left of the track header indicates that this track is in a group called ‘Fred’. These tabs can be dragged in the editor window to add to or remove tracks from groups.

    +

    Creating New Groups

    +

    There are several ways to create track/bus groups:

    +

    Context-click on the group tab and use one of the "Create..." options there. You can create a group with no members, or one that starts with the currently selected tracks, or record-enabled tracks, or soloed tracks as it members.

    +

    Alternatively, clicking the ‘g’ button on a track header opens a menu which gives a list of the available groups; selecting one of these groups will add the track or bus to that group. This menu also allows a new group to be created.

    +

    Finally, the Groups tab of the Editor Lists or the Mixer Window has a "+" button at the bottom of the list that can be clicked upon to create a new group.

    +

    Removing Groups

    +

    Context-click on a group tab and select Remove Group from the menu. Removing a group does not remove the members of a group.

    +

    You can also remove groups by selecting them in the Groups tab of the Editor Lists or Mixer Window and then pressing the "-" button at the bottom of the list.

    +

    Adding/Removing Tracks and Busses to a Group

    +

    Clicking the ‘g’ button opens a menu which gives a list of the available groups; selecting one of these groups will add the track or bus to that group. Selecting "No Group" will remove it.

    +

    You can also drag a group tab to add or remove tracks from the group.

    +

    Activating/Deactivating Groups via the group tab

    +

    Clicking on a group tab will toggle the group between being active and inactive. An inactive group will have no effect when editing its members. An active group will share 1 or more properties across its members. Tabs for disabled groups are coloured grey.

    +

    Modifying Group Properties

    +

    The properties of a group can be edited by right-clicking on its tab and choosing Edit Group…. This will open the track/bus group dialogue, which is also used when creating new groups:

    +

    the track/bus group dialog

    +

    Group Color

    +

    Clicking on the color selector button allows the group's colour can be changed. This affects the colour of the group's tab in the editor and mixer windows. The color does not affect the color of the group members unless you also enable the shared Color property.

    +

    Following these options are a list of the things that the members of the group can share.

    +

    Shared Properties

    +

    Gain means that the track faders will be synced to always have the same value; ‘Relative’ means that the gain changes are applied relative to each member's current value. If, for example, there are two tracks in a group with relative gain sharing, and their faders are set to -3dB and -1dB, a change of the first track to a gain of -6dB will result in the second track having a gain of -4dB (so that the difference in gains is the same).

    +

    Muting, soloing, record enable, route active state, colour and monitoring are all straightforward; they simply mean that all member tracks or busses will share the same settings in these respects. See Working With Tracks for more on these properties.

    +

    Selection means that if a region is selected or deselected on one constituent track, corresponding regions on other member tracks will be similarly selected. Corresponding regions are those that are at the same position and have the same length. Since region editing operations are applied to all currently selected regions, this is the way to make edits apply across all tracks in the group.

    +

    Group Tab Context Menu

    +

    Context-clicking on the group tab offers a further menu of group-related actions.

    +
    +
    Create a New Group
    +
    create a new group
    +
    Create New Group from...
    +
    create a new group and automatically add ...

    +
    +
    Selected
    +
    all currently selected tracks and busses
    +
    Rec-enabled
    +
    all currently record-enabled tracks
    +
    Soloed
    +
    all currently soloed tracks and busses
    +
    +
    +
    Collect Group
    +
    moves all the member tracks so that they are together in the editor window
    +
    Remove Group
    +
    removes the group (and only the group, not its members).
    +
    Add New Subgroup Bus
    +
    creates a bus (giving it the name of the group) and connects the output of each member to the new bus.

    +
    Add New Aux Bus
    +
    adds a bus and gives each member a send to that bus. There are two options for this, specifying whether the sends should be placed pre- or post-fader.
    +
    Fit to Window
    +
    will zoom the member tracks so that they fill the editor window.
    +
    Enable All Groups
    +
    makes all group active, including any hidden groups.
    +
    Disable All Groups
    +
    makes all groups inactive, including any hidden groups.
    +
    +

     

    +
    +
    +
    +

    Working with Plugins

    +

    Plugins are bits of software that get loaded by Ardour in order to:

    +
      +
    • Create various audio or MIDI effects +
    • Generate audio by functioning as "software instruments" +
    +

    Plugins are written by 3rd parties, and Ardour supports a variety of different plugin standards:

    +
    +
    LADSPA
    +
    An early, simple, lightweight plugin API, audio effects only, plugins have no editors/GUI of their own
    +
    LV2
    +
    An extensible, full-featured plugin API, audio and MIDI, plugins can provide their own editors/GUIs
    +
    AudioUnit
    +
    OS X only, full featured, audio and MIDI, plugins can provide their own GUI
    +
    Linux VST
    +
    Plugins using Steinberg's VST plugin standard but compiled specifically for Linux
    +
    Windows VST
    +
    Plugins using Steinberg's VST plugin standard but compiled for Windows. Support for this plugin format is not available in regular builds of Ardour. Read more...
    +
    +

    Adding/Removing/Copying Plugins

    +

    Within Ardour, plugins are just another type of Processor and so the techniques for adding/removing/copying/moving processors apply to plugins as well. These techniques are covered on the Processor Box page.

    +
    +

    Managing Plugin Presets

    +

    All plugin editors, whether they are created by Ardour or by the plugin, have a common set of controls at the top of their window. These include 4 controls for managing plugin presets.

    +

    What is a Plugin preset?

    +

    A preset for a plugin is simply a saved set of values for all of a plugin's parameters. If you load a preset, you are restoring all the parameters within that plugin to the values stored in the preset. This is an easy, fast way to manage your preferred settings for particular plugins.

    +

    The Preset Selector

    +

    The preset selector is a regular selector that can be clicked to display a list of all known presets for this plugin. This will include presets that you have created yourself, and for some plugin formats, presets that come with the plugin itself.

    +

    To load a new preset

    +

    Click on the preset selector to popup a menu showing the names of all available presets. Click on the name of the preset you wish to load. The preset will be loaded - you may see various controls in the plugin editor change to reflect the new value of some or all parameters.

    +

    Creating Presets

    +

    To save the current plugin settings as a new preset, click on the "Add" button at the top of the window. A dialog will appear to ask for the name of the preset. Enter the desired name, and then click the "OK" button in the dialog. The preset selector will now show the name you have just entered.

    +

    Saving a Preset

    +

    If you wish to modify the settings in an existing preset, use the preset selector to load the preset. Then adjust the settings as you wish. When done, click the "Save" button and the new values will be stored, overwriting the previous version of this preset.

    +

    To delete a preset

    +

    To delete an existing preset, use the preset selector to load the preset. Click the "Delete" button, and the preset will be removed. The preset selector will be blank, showing that no preset is currently loaded (although the settings will stay as they were).

    +
    +
    +

    The Plugin Manager

    +
    +
    +

    The Processor Box

    +

    A ‘processor’ is a thing which treats the signal in some way. Ardour provides several builtin processors, such as the "fader" processor which controls the gain (volume) of a track or bus. Processors can also be plugins used for effects or as instruments, as well as sends/inserts which are used to change signal routing. The arrangement of processors is arbitrary, and there is no limit to how many there can be.

    +

    The main box in the top half of a mixer strip shows the processor list. Processors are shown as coloured rectangles, with a small ‘LED’ beside them; this indicates whether or not the plugin is enabled, and can be clicked to enable or disable a processor. The colour of the processor depends on its location in the sequence; processors that occur before the fader are coloured in red, and those after are coloured green (in the default theme).

    +

    The processor box will always contain a blue processor called ‘Fader’. This indicates where in the processor chain the main volume fader is located — this is the fader shown in the lower half of the strip.

    +

    To Reorder (Move) Processors

    +

    Processors can be re-ordered using drag-and-drop. Dragging a processor allows it to be moved around within the chain, or copied to another processor list on another track or bus.

    +

    To Enable/Disable a Processor

    +

    To the left of the name of each processor is a small LED symbol; if this is lit-up, the processor is active. Clicking on it will deactivate the processor. It will still pass audio or MIDI signals, but they will not be affected.

    +

    Adding Processors

    +

    Finally, processors can be added to or removed from the chain. Right-clicking the processor list does three things:

    +
      +
    • A gap is opened up to indicate the location of the click. The gap shows where any new processors will be inserted. +
    • The processor under the click is selected. +
    • A menu is presented giving options of what to do. +
    +

    From the menu, some new processors can be inserted.

    +

    Removing Processors

    +

    Context-click on the processor you want to remove.

    +
    +
    +

    Windows VST Support

    +

    Thanks to the combined work of Torben Hohn, Kjetil Mattheusen, Paul Davis and a few other developers, it is possible to use Windows VST plugins (that is, plugins in VST format built and distributed for the Windows platforms) on Ardour running on Linux. (Note: there is no VST support of any kind on OS X).

    +

    However, doing so has three substantial downsides:

    +
      +
    • It requires a special build of Ardour that is fundamentally very different from normal builds. +
    • Support is reliant on Wine, a Windows "emulator". +
    • As usual with plugins, crashes in the plugin will crash Ardour. And crashes in Windows VST plugins are more likely when used in this way. +
    +

    The dependence on Wine makes it almost impossible for the Ardour project to support this feature. Wine's functionality generally improves over time, but any given release of Wine may behave worse with some or all Windows VST plugins. It may even just crash Ardour completely.

    +

    Step back and think about what "using Windows VSTs" really means: taking bits of software written with only one idea in mind - running on the Windows platform - and then trying to use them on an entirely different platform. It is a bit of a miracle (largely thanks to the incredible work done by the Wine project) that it works at all. But is this the basis of a stable, reliable DAW for a non-Windows platform? Getting Ardour on Linux to pretend that its really a Windows application running on Windows?

    +

    We understand that there are many outstanding plugins available as Windows VSTs and that in many cases, no equivalent is available for Ardour's Linux-based users. If your workflow is so dependent on those plugins, then remain on Windows (or potentially consider using an actual Windows VST host running inside of Wine). If you can make the effort, you will get a better environment by using a normal build of Ardour and exploring the world of plugins built to run on Linux natively. This covers LADSPA, LV2 and Linux VST formats, and even some outstanding proprietary plugins such as those from LinuxDSP and Loomer.

    +
    +
    +

    Working with Ardour-built Plugin Editors

    +

    If a plugins does not have its own editor/GUI, Ardour will construct one from a small set of common control elements. Ardour will do this even for plugins that have their own, if you disable Edit > Preferences > GUI > Use Plugins' own interface instead of Ardour's

    +

    To view a plugin editor, double-click on the plugin within the processor box. A new window will appear showing the editor/GUI for the plugin.

    +

    Adjusting parameter sliders

    +

    Resetting a value to its default

    +

    Shift-click on the controller.

    +

    Automation Controls

    +
    +
    +
    +

    Adding Pre-existing Material

    +

    Adding Pre-existing Material

    +

    Many sessions will involve the use of pre-existing material, whether it consists of audio and/or MIDI data. Using existing samples, loops and riffs from files stored on your system can be the basis for a new session, or a way to deepen and improve one that is already underway.

    +

    There are four pathways for importing/embedding an audio or MIDI file into a session.

    +
      +
    • Session > Import
    • +
    • Region List context menu > Import To Region List
    • +
    • Track context menu > Import Existing Media
    • +
    +

    These methods are all equivalent: they open the "Add Existing Media" import dialog. Once the dialog is open, you can choose to add new audio as new tracks, as regions in the region list, or as audio in the selected track. You can change this behavior once the dialog is opened.

    +

    Finally, you can also easily import files into your project by dragging and dropping the file from some other application (e.g. your platform's file manager such as Nautilus or Finder). You can drag onto the Region List or into the desired track or into empty space in the editor track display. The file will be imported (copied) into your session, and positioned at the mouse pointer position when the drag ended.

    +

    This chapter covers the following:

    +
    +

    Importing versus Embedding

    +

    Importing versus Embedding

    +

    Importing and embedding are two different methods of using existing audio files on your computer (or network file system) within a session. They differ in one key aspect:

    +

    Importing

    +

    An existing media file is copied to the session's audio folder, and if necessary is converted into the session's native format.

    +

    For audio files, you can control the choice of this format (eg. WAVE or Broadcast WAVE). Audio files will also be converted to the session sample rate if necessary, which can take several minutes for larger files.

    +

    MIDI files will already be in SMF format, and are simply copied into the session's MIDI folder.

    +

    Embedding

    +

    An existing media file is used as a the source for a region, but is not copied or modified in any way.

    +

    You can choose to import or embed the files in your session selecting or de-selecting the "Copy file to session" option in the Import dialog window.

    +

    the file will be imported in the audio/MIDI folder of your session

    +

    the file won't be copied.

    +

    If it doesn't work you can uncheck Preferences > Misc > Session Management > Always copy imported files.

    +
    +
    +

    Searching and Importing From Freesound

    +

    Searching and Importing From Freesound

    +

    http://www.freesound.org is an online repository of searchable sound files. The “Search Freesound” of the Import dialog tab allows you to search the Freesound database, download & audition files from within the Import dialog.

    +

    Tags: enter the “tags” that you would like to search. You may enter multiple search terms separated by spaces. For example “drums 120bpm” will search for files that are tagged “drums” OR “120bpm”.

    +

    Sort: Choosing one of the sort options will cause Freesound to order the files before returning the list of available files. This can save time if you know (for example) the sound you need is very short.

    +

    Search: Click this button to initiate the search. Freesound will begin returning pages of information, with 20 items per page. You may click “Stop” to stop downloading.

    +

    The file list: Click on a file to download it from Freesound. Double-click the file to auto-play it in the auditioner.

    +

    Files imported with Freesound will automatically include any Tags that are associated with the file, and these tages will be included in a search when you use the “Search Tags” tab.

    +
    +
    +

    Searching for Files Using Tags

    +

    Searching for Files Using Tags

    +

    A "tag" is bit of information, or metadata, that is associated with a data file. Specifically, tags are keywords or terms that you feel have some relevance to a particular soundfile. Ardour can store these tags in a searchable database so that you can quickly search for sounds based on the tags that you have assigned to them. For example you can assign the term "120bpm" to a sound, and then when you search for this tag, the file will appear in the search list. Tags are independent of the filename or anything else about the file. Tags, and the file paths that they are associated with, are stored in a file called "sfdb" in your Ardour user folder.

    +
    +

    How To Add Tags To a File

    +

    How To Add Tags To a File

    +

    The process is quite easy:

    +
      +
    1. Show the Import dialog +
    2. Select the file in the Import dialog's file browser +
    3. Type in new/extra tags in the Tags section of the Soundfile Information box +
    +

    +

    Tags are stored when the input box loses focus, there is no reason to explicitly "save" them.

    +
    +
    +

    Searching With Tags

    +

    Searching With Tags

    +
      +
    1. Show the Import dialog +
    2. Select the "Search Tags" tab of the Import dialog +
    3. Enter the tag(s) you want to search for and press "Search" +
    +

    +

    Files which have been "tagged" with the input terms will appear in the results window. You can audition these files and apply tags to them from this window.

    +
    +
    +
    +

    Supported File Formats

    +

    Supported File Formats

    +

    The list of audio file formats that Ardour can import/embed is quite long. It is based on the functionality offered by libsndfile, an excellent and widely used software library by Australian programmer Erik de Castro Lopo. As libsndfile's capabilities expand, so will Ardour's abilities to import (and export) new formats. Ardour supports all common audio file formats, including WAV, AIFF, AIFC, CAF, W64 and BWF. with all typical sample formats (8,16,24,32 bit integer, floating point, and more).

    +

    You can find a full list of libsndfile's supported formats here.

    +

    For MIDI import, Ardour will read any Standard MIDI Format (SMF) file.

    +
    +
    +

    The Import Dialog

    +

    The Import Dialog

    +

    +

    The Soundfile Information Box

    +

    Previewing Files Before Import

    +

    Importing Files as Tracks or Regions

    +

    Importing versus Embedding

    +
    +
    +
    +

    Recording

    +

    Recording

    +

    This chapter covers the following:

    +
    +

    Monitoring

    +

    An Introduction to Monitoring

    +

    When recording, it is important to hear yourself, and to hear any pre-recorded tracks that you are performing with.

    +

    Audio recorders typically have the ability to "monitor" (i.e. listen to) the tracks that are armed for recording, while playing back the tracks that aren't. In the days of analog tape recording, this was performed with relays and other analog audio switching devices. Digital recorders have the same feature, but may impart some "latency" (delay) between the time you make a noise and the time that you hear it come back from the recorder.

    +

    The latency of any conversion from analog to digital and back to analog is about 1.5-2 milliseconds. Despite common listening conditions creating 3 millisecond delays, some musicians claim that even the basic A/D/A conversion time is objectionable. However it is commonly believed that a latency below 5 milliseconds is suitable for a professional recording setup. Because 2 milliseconds have already been used in the A/D/A process, you must use extremely low "buffer sizes" in your workstation I/O setup to keep the overall latency below 5ms. Not all computer audio systems are able to work reliably at such low buffer sizes.

    +

    For this reason it is sometimes best to use an external device to monitor yourself while recording to digital medium. Many professional studios use a mixing console for this feature. Many computer I/O devices have an "monitoring" function built-in (although this is typically only for 1 or 2 channels). In either case, the monitoring hardware may be digital or analog. And in the digital case you will still have the A-D-A conversion latency of 1-2ms.

    +

    Different ways of monitoring

    +

    There are three basic ways in which monitoring may be approached:

    +

    External Monitoring

    +

    With this approach, Ardour plays no role in monitoring at all. Perhaps the recording set-up has an external mixer which can be used to set up monitor mixes, or perhaps the sound-card being used has some ‘listen to the input’-style feature. This approach often has the advantage of zero or near-zero latency. On the other hand it requires external hardware, and the monitoring settings are not saved with the session.

    +

    +

    JACK-based hardware Monitoring

    +

    Some sound cards have the ability to mix signals from their inputs to their outputs with zero- or low-latency. Furthermore, on some cards these features can be controlled by JACK. This is a nice arrangement, if the sound card supports it, as it combines the convenience of having the monitoring controlled by Ardour with the low latency operation of doing it externally.

    +

    +

    Software Monitoring

    +

    With this approach all monitoring is performed by Ardour; it makes track inputs available at track outputs, under the influence of various controls. This approach will almost always have more routing flexibility than JACK-based monitoring. The disadvantage is that there will be a latency between the input and the output which will depend mainly on the JACK buffer size that is being used.

    +

    +

    Setting up Monitoring

    +

    There are three main settings which affect how monitoring is performed. The first is Edit > Preferences > Audio > Record monitoring handled by. There are two or three options here, depending on the capabilities of your hardware:

    +

    The other two settings are more complex; one is ‘Tape machine mode’, in the same dialogue, and the other is ‘Monitoring automatically follows transport state (‘auto-input’)’ setting in Session Properties.

    +

    Monitoring is also somewhat dependent on the state of the track's record-enable button, the session record enable button, and whether or not the transport is rolling.

    +

    Monitoring in software or hardware monitoring modes

    +

    If Ardour is set to ‘external monitoring’, the explanation of Ardour's monitoring behaviour is simple: it does not do any. In the other two modes, things are more complex.

    +

    Monitoring in non-tape-machine mode

    +

    This section describes what happens when Ardour is not set to tape-machine mode.

    +

    Consider first the case when a track is record-enabled. In this situation, it will always monitor the live input unless the session is not record-enabled, auto-input is enabled, and the transport is rolling.

    +

    When a track is not record-enabled, the track will play back its contents from disc unless the transport is stopped and auto-input is enabled. In this case, the track monitors its live input.

    +

    Monitoring in tape-machine mode

    +

    In tape-machine mode, things are slightly simpler; when a track is record-enabled, its behaviour is the same as in non-tape-machine mode: it will always monitor the live input unless the session is not record-enabled, auto-input is enabled, and the transport is rolling.

    +

    When a track is not record-enabled, however, the track will always just play back its contents from disk; the live input will never be monitored.

    +
    +
    +

    Track Recording Modes

    +

    "Recording mode" is a per-track property (audio tracks only) that affects the way that recording new material on top of existing material ("overdubbing") operates in that track. Ardour offers 3 different recording modes:

    +
    +
    Normal
    +
    overdubs write to new files, new regions are layered on top of existing regions (with or without crossfades)
    +
    Tape mode
    +
    overdubs destructively write to an existing file, single region per track (fixed crossfades at every punch)
    +
    Non-Layered mode
    +
    overdubs write to new audio files, new regions are created but if they overlap with existing regions, the existing regions are trimmed so that there no overlaps
    +
    +

    To change the recording mode of a track, right click on its track header to get the context menu:

    +

    track header context menu

    +

    Below is a screenshot that shows the subtly different results of an overdub in normal and non-layered mode. Both tracks were created using identical audio data.

    +

    The upper track is in normal mode, and the overdub (the middle shorter region, selected) has created a new region which if you look carefully has been layered on top of the the existing (longer) region.

    +

    The lower track is in non-layered mode, and rather than overlay the overdub region, it split the existing region and inserted the new one in between.

    +

    different results from normal and non-layered recording

    +

    Non-layered mode is extremely useful when combined with push/pull trimming.

    +
    +
    +
    +

    Signal Routing

    +

    The default connections created by Ardour are as follows:

    +
      +
    • Track inputs are connected to hardware inputs, in round robin order (explained here in more detail). +
    • Bus inputs are left disconnected +
    • Track and bus outputs are configured based on the channel count of the master bus +
    • Track and bus outputs are connected to the master bus inputs +
    • Master bus outputs are connected to hardware outputs +
    +

    this configuration is sufficient to do basic tracking and playback of many sessions without any adjustment by the user. If you are using Ardour and start to change these connections, be certain that you have a good reason to do so - it is generally not necessary and often leads to problems.

    +

    However, for many workflows during mixing, more complicated signal routing is required. Ardour offers many possibilties for connecting things in the way you may need or want them.

    +
    +

    Aux Sends

    +

    What is an Aux

    +

    Using auxes involves two distinct components of Ardour's mixer. One is an aux bus, which is just a normal Ardour bus that has no inputs arriving from the outside world. The other is an aux send, which is a secondary signal routing out of a track (or bus) that delivers the signal it receives to a separate aux bus. The output of the aux bus may be delivered to entirely separate hardware outputs (e.g. for headphone or monitor wedge mixes), or returned to the main mix after some common FX are applied to the signal on the bus.

    +

    Common uses for aux sends include:

    +
      +
    • Applying real time FX (either with plugins or external FX) to a submix +
    • Creating headphone or monitor wedge mixes for performers to listen to +
    • Consolidating volume control of a submix under a single fader (though there are other ways to do this) +
    +

    It may be useful to compare and contrast the use of aux sends with subgrouping.

    +

    Adding a new aux bus

    +

    Choose Session > Add New Track or Bus. In the New Track & Bus dialog, select "Busses" in the Track/Bus selector at the upper right.

    +

    Adding a send to an aux bus

    +

    Context-click on the processor box for the track you want to send to the bus, and choose New Aux Send. From the submenu, choose the bus you want to send to. A send will be added (and will be visible in the processor box). Note that the submenu may be empty if there are no aux busses.

    +

    Pre-fader and Post-fader Aux Sends

    +

    Depending on whether you context-click above or below the fader in the processor box, the new aux send can be placed before or after the fader in the channel strip. Post-fader aux sends are typically used when using an aux for shared signal processing (FX), so that the adjusting the main fader on a channel alters how much signal goes to the FX bus. Aux sends are placed pre-fader so that the level sent to the bus is controlled only by the send, not the main fader - this is typical when constructing headphone/monitor wedge mixes.

    +

    Adding a new aux bus and sending a Track Group to it

    +

    You can add aux sends to all members of a group and connect them to a new aux bus with a single click. After creating the track group (and adding tracks to it), context-click on the group tab and choose either Add New Aux Bus (pre-fader) or Add New Aux Bus (post-fader). A new aux bus will be created, and a new aux send added to every member of the track group that connects to the new aux bus.

    +

    Altering Send Levels

    +

    You can alter the amount of the signal received by a send that it delivers to the bus it connects to. There are two approaches to this:

    +

    Use the Send Fader

    +

    Every send has a small horizontal fader that can be adjusted in the usual way. It is not very big and so this can be a little unsatisfactory if you want very fine control over the send level.

    +

    Mapping the Main Fader

    +

    Double-clicking on the send in the processor box will allow you to use the "big" fader of the mixer strip to control the send. The visual appearance of the mixer strip will change to reflect this. Double-click the send again to revert back to normal function for the strip.

    +

    Map Aux Sends To Main Faders

    +

    Pressing the button marked "Aux Sends" on a aux bus will alter the channel strip for every track/bus that feeds the aux bus. Many aspects of the strip will become insensitive and/or change their visual appearance. More importantly, the main fader of the affected channel strips will now control the send level and not the track gain. This gives a larger, more configurable control to alter the level. Click the "Aux Sends" button of the aux bus again to revert the channel strips to their normal use.

    +

    Bypassing Sends

    +

    Clicking on the small "led" in the send display in the processor box of the channel strip will enable/disable the send. When disabled, only silence will be delivered by this track to the aux bus. When enabled, the signal arriving at the send will be delivered to the aux bus.

    +

    Send Panning

    +

    In the current version of Ardour, sends share the same panning as the main outs of a track. This is scheduled to change in the future.

    +
    +
    +

    Comparing Aux Sends and Subgroups

    +

    Auxes and Subgroups do share a common concept - they both provide a way for 1 or more tracks (or busses) to send their signal to a single bus so that common signal processing can be applied to the mix of their signals.

    +

    An aux send leaves the existing signal routing to the main mix inplace, and is typically used to create a separate mix to send to (for example) monitors or headphones (for performer monitor mixes).

    +

    Subgroups remove the original signal routing to the main mix, but create a new one that delivers the output of the subgroup bus to the main mix instead.

    +

    The following two diagrams compares the signal flow when using subgroups and when using aux sends:

    +

    Subgroup signal routing

    +

    +

    Aux send signal routing

    +

    +
    +
    +

    External Sends

    +

    An external send is a way to send the signal from within a channel strip to an external application or piece of hardware. By itself, an external send has no effect whatsoever on the audio signals within Ardour - it is a one-way signal routing that leaves all existing signal processing just as it was.

    +

    Most people will not have much use for this, but it can be useful if you want to experiment with external applications or hardware signal processing applications.

    +

    Adding an External Send

    +

    Context-click on the processor box in a channel strip and choose Add new External Send. A dialog will appear containing the standard Ardour patchbay to allow you to connect the send to the desired destination. After you are done (or immediately, if you don't know where you want to send to at this point), close the window.

    +

    The send will appear in the processor box. Depending on whether you context-clicked above or below the fader, it will either before or after the fader.

    +

    Removing an External Send

    +

    You can remove an external send in several ways:

    +
      +
    • Shift-right-click the send in the processor box +
    • Position the pointer over the send and press the Delete key +
    • Position the pointer over the send and press x +
    • Context-click the send and choose either Cut or Delete +
    +

    Altering Send Levels

    +

    Just below the send in the processor box is a small fader that can be used like all other faders in Ardour to control the gain applied to the signal delivered by the send. Drag it to alter the level, Shift-click to restore to unity (0dB) gain.

    +

    Bypassing Sends

    +

    Click the small "led" in the send display within the processor box to turn it on and off. When turned off, silence will be delivered to the send. When turned on, the signal within the channel strip will be delivered.

    +

    Editing Send Routing

    +

    Double-clicking or Edit-clicking on the send in the processor box will redisplay the patchbay dialog that allows you full control over the routing of the send.

    +
    +
    +

    Inserts

    +
    +
    +

    Returns

    +
    +
    +

    Subgrouping

    +

    Subgrouping (sometimes known as "Grouping" or "Audio Grouping") is a way to collect related signals together, before they progress to the main mix.

    +

    When to use subgrouping

    +

    blah blah blah

    +

    To create a subgroup from an existing Track/Bus group

    +

    Context-click on the relevant group tab, and choose Add new subgroup bus. A new bus will be created and every member of the track group will have its outputs disconnected from other destinations and then connected to the new bus inputs. The bus outputs will feed the master bus unless you have selected manual connections for the session. Ths bus will be named based on the track group name,

    +

    To create a subgroup from a set of Tracks and Busses

    +

    Put them in a Track Group first, then follow the steps above.

    +

    Arbitrary (manual) subgrouping

    +

    The steps taken by the options above can all be done by hand if your needs are too specialized:

    +
      +
    1. Add a new bus, which we will call the "subgroup bus"
    2. +
    3. For each track you want to feed the subgroup bus, connect its outputs to the inputs of the subgroup bus and disconnect them from the any other destinations. You can do this in the global audio patchbay or a track by track basis via the output button of each track's channel strip. +
    +

    To remove a subgroup (bus)

    +

    Context click on the track group tab, and select Remove subgroup bus. You can also simply delete the bus itself. Note that this operation will not restore signal routing to the way it was before the addition of the subgroup bus - tracks that had been subgrouped will be left with their main outputs disconncted; you will need to manually connect them again in order to be able to hear the signal from their main outputs.

    +
    +
    +

    The Patchbay

    +

    The patchbay is the main way to make connections to, from and within Ardour's mixer.

    +

    +Notable exceptions are aux sends and connections to the monitor bus (if you are using one): these cannot be controlled from a patchbay, and are basically not under manual control at all. +

    +

    an example patchbay

    +

    The patchbay presents two groups of ports; one set of sources (which produce data), and one of destinations (which consume data). Depending on the relative number of each, the sources will be placed on the left or the top of the dialogue, and the destinations on the right or the bottom. Thus, in general, signal flow is from top or left to right or bottom.

    +

    Both sources and destinations are divided up into groups, with each group being given a tab. Click on the appropriate tab to show the ports in each group (‘Ardour Busses’, ‘Ardour Tracks’ and so on).

    +

    The groups that are used are as follows:

    +
    +
    Hardware
    +
    ports which are connected to a physical piece of hardware (a sound card or MIDI interface).
    +
    Ardour Busses
    +
    ports belonging to busses.
    +
    Ardour Tracks
    +
    ports belonging to tracks.
    +
    Ardour Misc
    +
    other ports that do not fit into the previous two categories; for example, the ports on which the metronome click is output, and MIDI ports for things like control surfaces and timecode.
    +
    Other
    +
    If you have other JACK clients running, their ports will be found here. If there are no such ports, the tab will not exist (on one or both axes of the grid).
    +
    +

    The main body of the patchbay is a grid. Within this grid, green dots represent connections, and you can click in any of the squares to make or break connections. You can also click and drag to draw a line of connections, which is sometimes useful for making many connections at once.

    +

    In the example patchbay shown above we can note various things. We are using the ‘Ardour Tracks’ sources tab, so we see the output ports of the three tracks in our session: Fred, Jim and Foo. Our destinations are from the ‘Ardour Busses’ tab, so we have the inputs of a session bus, Sheila, and the inputs of the master bus. Fred and Jim have stereo outputs, so have L and R connections. Foo is a MIDI track, so it only has one connection, and its squares in the grid are coloured light grey to indicate that no connection can be made between Foo (a MIDI output) and our busses (which are all audio-input).

    +

    The green dots in the example show that both Foo and Bar are connected to the master bus, left to left and right to right.

    +

    Variants on the Patchbay

    +

    Slightly different versions of the patchbay are available from different places in Ardour. For a global view of all JACK audio connections, use the Audio Patchbay which can be opened from the Window menu, or by using Alt+P. A corresponding MIDI Connection Manager can be opened using Shift+Alt+P.

    +

    There is also a patchbay available when connecting individual tracks; clicking on the input or output buttons of a mixer strip will open a connection manager which has the corresponding track input or output as the only destination or source, with all other ports available for connection to it.

    +

    Other patchbay features

    +

    Context-clicking on a port name in the connection manager opens a menu which provides a few handy options:

    +
    +
    Add audio port and Add MIDI port
    +
    these options add audio or MIDI ports to the thing that you opened the menu over, if this is possible. In this way, for example, tracks and busses can be extended to have more inputs or outputs.
    +
    Remove
    +
    removes the given port, if possible.
    +
    Disconnect all from…
    +
    disconnects everything from the given port.
    +
    Rescan
    +
    Ardour will try to keep abreast of any changes to the JACK ports on your system, and reflect them in any connection managers which are open. If for some reason this fails, choosing Rescan will re-scan the list of ports and update the manager.
    +
    Show individual ports
    +
    if you have a session which has lots of multi-channel tracks or busses, it may be an unnecessary detail that you have to connect left to left and right to right every time you make a connection. This obviously gets worse with higher channel counts (such as for 5.1 or ambisonics). To make life easier with such sessions, you can untick Show individual ports. After that, the channels of tracks and busses will be hidden, and any green dots you add in the connection manager will automatically connect each channel of the source to the corresponding channel of the destination (left to left, right to right and so on). In this mode, a half-circle in the connection grid indicates that some (but not all) of the source's ports are connected to the destination.
    +
    Flip
    +
    this will flip the visible ports on the vertical axis with those on the horizontal. If, for example, the top of the connection manager is showing ‘Ardour Busses’ and the right is showing ‘Hardware’, flip will swap the view to the opposite so that the top of the manager displays ‘Hardware’ and the right ‘Ardour Busses’. You can also flip by pressing f. Note that if there are no matching tabs on both axes, flipping will be impossible.
    +
    +

     

    +
    +
    +

    The Role of JACK

    +
    +
    +
    +

    Editing and Arranging

    +

    Editing and Arranging

    +

    This chapter covers the following:

    +
    +

    The Edit Point

    +

    Editing operations in a DAW like Ardour can be broken down according to how many points on the timeline are required to carry the operation out. Splitting a region for example, requires just one position on the timeline (the one where the split will happen). Cutting out a time range requires two positions, one for the start of the cut and one for the end.

    +

    In Ardour the edit point is the location where most single-point editing operations take place. It can be defined as one of the 3 possibilities:

    +
      +
    • the playhead +
    • the position of the pointer (mouse or touch) +
    • the selected marker +
    +

    The default edit point is the location of the pointer.

    +

    There are 2 keybindings available to cycle through the edit point options; the most common workflow tends to involve just switching back and forth between edit point = playhead and edit point = mouse (default `). Another binding ^ will cycle through all three choices (including the selected marker). You can also switch the edit point using a combo-selector just right of the snap/grid unit selector.

    +

    The Implict Range

    +

    In addition to explicit range selections made with the Range tool, Ardour also provides an implicit edit range. This edit range can be very useful if you want to edit by ear, rather than by mouse. If there is no regions selected, and no explicit range selection, then any editing operations that require a range (such as separate) will use the implicit edit range.

    +

    The implicit range is the area between the current edit point and some other position. In most cases it is either:

    +
      +
    • The area between the mouse and the playhead OR +
    • The area between a selected marker and the mouse or playhead +
    +

    Which of these is true depends on which edit point setting you are using (Mouse, Playhead or Marker) and whether
    +there is a selected marker at that time.

    +
    +
    +

    Selecting Regions

    +

    Many editing operations in Ardour require you to first select one or more regions that you want to change in some way. You can select a single region, or multiple regions, including regions in different tracks. When you select a region, it will appear in a darker color than unselected regions.

    +

    Note that if a track is a member of a group that is active and has the "Select" property enabled, then Ardour will attempt to match whatever selections you make in one track across every other track of the group. See Selection Equivalence for more information on precisely how selections will be propagated to other tracks.

    +

    Region Selection and Track Selection

    +

    Please read Region & Track Selection for more information on how selecting regions and selecting tracks interact.

    +

    To select a region

    +

    Click on the region. If smart editing is enabled, click in the lower half of the region.

    +

    To deselect a region

    +

    click the region. If smart editing is enabled, click in the lower half of the region.

    +

    Note that click simply toggles the selected status of an object, so it can be used to select unselected regions too

    +

    To select multiple regions in the same track

    +

    Do one of the following:

    +
      +
    • click each region +
    • drag from a point in "empty space" in track before the first region you wish to select to a point within or after the last region you wish to select. You can use drag to do this multiple times +
    • if the regions are all adjacent to one another, click the first region you wish to select, then Shift-click the last region you wish to select +
    +

    To select multiple regions in different tracks

    +

    click or Shift-click the regions you wish to select.

    +

    To select a region from the region list

    +

    Click the name of the region in the region list. Note that this will do nothing for whole-file regions, since they do not exist anywhere in a playlist or track.

    +

    To select all regions in a track

    +

    Context-click the track, and in the context menu, navigate to Select > Select All In Track

    +

    See the Track Context Menu for more information on other per-track selection operations that are available.

    +
    +
    +

    What Regions Are Affected?

    +

    What Regions Are Affected?

    +

    This section explains the rules used to decide what regions are affected by editing operations. You don't really have to understand them - hopefully things will Just Work - but it may be useful to understand the rules some of the time.

    +

    Ardour divides operations up into those that operate on a single point in time (Split being the obvious example) and those that operate on two points (which can also be considered to be a range of sorts), Separate is a good example of this.

    +

    Most operations will operate on the currently selected region(s), but if no regions are selected, the region that the mouse is in will be used instead. Single-point operations will generally pick a set of regions to use based on the following rules:

    +
      +
    1. If the edit point is `mouse': +
        +
      • if the mouse is over a selected region, or no region, use all selected regions. +
      • if the mouse is over an unselected region, use just that region. +
      +
    2. For all other edit points +
        +
      • use the selected regions and those that are both under the edit position
        + and on a selected track, or on a track which is in the same active edit-enabled route group
        + as a selected region. +
      +
    +

    The rationale here for the two different rules is that the mouse edit point is special in that its position indicates both a time and a track; the other edit points (Playhead,Marker) indicates only a time.

    +
    +
    +

    Snapping To The Grid

    +

    Snapping To The Grid

    +

    Ardour's editor utilizes a grid to assist in the placement of regions on the timeline, or with editing functions that need to happen on a specific time. With these buttons you can choose if you want the cursor and various objects to snap to this grid, and how you want the snapping to act. You can also modify what units the grid measures as well to fit your needs.

    +

    With grid mode set to "No Grid", all kind of objects can be moved freely along the timeline. "Grid" will restrict the positions to certain grid units (i.e. beats), "Magnetic" will snap to grid units, but it is still possible to move objects to other places.

    +

    Syncing Regions to the Grid

    +

    By default a region's beginning will snap to points along the timeline, but you can change this behaviour by setting a sync point in the region. Select the region(s) and press v . This will set the sync point to your edit point.

    +

    Grid Units

    +

    The selector next to the grid mode selector defines the size of the grid elements. The most useful settings are "Bars" and "Beats", but you can set your grid to several different units:

    +
    +
    CD Frames
    +
    a CD Frame is 1/75th of a second. Snapping to CD Frames can be used to avoid issues with CD track lengths
    +
    Timecode Frames/Seconds/Minutes
    +
    These duration depend on the timecode settings for the session
    +
    Seconds/Minutes
    +
    These are absolute time units, unaffected by sample rate or timecode settings
    +
    Beats/N
    +
    Sets the grid to units of 1/N beats, where N can be 128, 64, 32, 16, 8, 7, 6, 5, 4, 3, 2. The duration of a grid unit will depend on the tempo and meter in effect at that point in the timeline.
    +
    Beats
    +
    Sets the grid to whole beats. The duration of a grid unit will depend on the tempo and meter in effect at that point in the timeline.
    +
    Bars
    +
    Sets the grid to whole bars. The duration of a grid unit will depend on the tempo and meter in effect at that point in the timeline.
    +
    Markers
    +
    Snaps positions to the nearest marker
    +
    Region Starts
    +
    Snaps positions to the nearest region start (see below)
    +
    Region Ends
    +
    Snaps positions to the nearest region end
    +
    Region Syncs
    +
    Snaps positions to the nearest region sync point
    +
    Region Bounds
    +
    Snaps positions to the nearest region start or end
    +
    +

    To use Region starts/ends/syncs/bounds as snap choices, you must have either (a) NO tracks selected, which means that Ardour will snap to regions on any track, or (b) several tracks selected, and Ardour will only snap to regions on those selected tracks. If you are moving items on a track, and only the current track is selected, then you will only be able to snap to other regions on the same track. This means that enabling Edit > Preferences > Editor > Link Selections of Regions and Tracks will make the "Region" grid units unusable. Avoid the use of this option if you are going to use any of the Region grid units.

    +

    Snap Modes

    +

    Ardour supports three different types of snapping to the grid:

    +
    +
    No Grid
    +
    disables the grid. All objects can be moved freely in this mode.
    +
    Grid
    +
    activates normal snapping, all positions of objects are restricted to points of the grid. (See Grid Units on how to change these points) If you try to move an object in "Grid"-mode, it will not change its position until you move the mouse far enough for the object to reach the next grid point. New objects will always be created at grid points, too.
    +
    Magnetic
    +
    is a less strict type of snapping. Objects can still be moved to any position, but positions close to grid points will snap to the grid point. In order to move an object very close to a grid point, it may be necessary to zoom in to prevent snapping to that point.
    +
    +

     

    +
    +
    +

    Common Region Editing Operations

    +

    Common Region Editing Operations

    +

    This section covers a set of region editing operations that you will likely use again and again while working on a session. Depending on your working habits (and experience of other DAWs) some of them will be critical while others may be more rarely used.

    +

    All of these operations can be carried out from the keyboard. Default keybindings can be found in the list. Equivalent operations can be done with mouse in most cases.

    +

    You may want to review your understanding of the edit point/range and which regions will be affected by region operations.

    +
    +
    Spot (Align)
    +
    move selected regions to the edit point
    +
    Split
    +
    split selected regions at the edit point
    +
    Trim Start
    +
    Adjust the start of selected regions to the edit point (or as close as possible)
    +
    Trim End
    +
    Adjust the end of selected regions to the edit point (or as close as possible)
    +
    Duplicate
    +
    Make a copy of each selected region and position it immediately after the original
    +
    Crop
    +
    Truncate selected regions to the edit range
    +
    Separate
    +
    Split selected regions at both ends of the edit range
    +
    Set Fade In
    +
    Adjust selected audio regions' fade in to end at the edit point
    +
    Set Fade Out
    +
    Adjust selected audio regions' fade out to end at the edit point
    +
    Toggle Fade In
    +
    Turn selected audio regions' fade in on or off
    +
    Toggle Fade Out
    +
    Turn selected audio regions' fade out on or off
    +
    Play Region
    +
    Play session from the start of the earliest selected region
    +
    Zoom To Region
    +
    Zoom horizontally so that the selected regions span the editor track view
    +
    Set Sync Point
    +
    Set the sync point of all selected regions to the edit point
    +
    Insert
    +
    Inserts the currently selected regions in the Region List at the edit point
    +
    +

     

    +
    +
    +

    Changing Region Lengths

    +

    Changing Region Lengths

    +

    Changing the length of a region is a very common editing operation, often known as "trimming". There are several ways to accomplish this with Ardour, and some very useful specialized trimming operations.

    +

    Drag-Trimming with the mouse

    +

    In object mode, move the pointer near the beginning or end of the region. The cursor will change to indicate that trimming is possible, and you then Left-click-and-drag the edge of the region.

    +

    Trimming will obey Snap settings.

    +

    Click Trimming with the mouse

    +

    Left-click in the colored bar at the bottom of a region. If you are nearer to the start of a region, this will trim the start time to the position of the pointer. If you are nearer to the end of a region, it will trim the end time.

    +

    Keyboard bindings for Trimming

    +

    There are several commands for region trimming. Some use the edit point to determine where to trim to. Some are not bound to any keys by default (but could be via the Keybindings Editor).

    +
    +
    Region/trim-front j
    +
    trim selected region(s) start to edit point
    +
    Region/trim-end k
    +
    trim selected region(s) end to edit point
    +
    +

    Trim to Next/Previous Region

    +

    Sometimes you just want to extend the start or end of region so that it reaches the end or start of an adjacent region. There is now an operation accessible from the region context menu, under Edit >Trim > Trim to Next or Edit > Trim > Trim to Previous. This will extend the selected regions so they directly adjoin their neighbours, unless their source files are not long enough, in which case they will be extended to the maximum possible. Trim to Next will extend the end of the selected regions to the start of the next region; Trim to Previous will extend the start of the selected regions to the end of the previous region.

    +
    +
    Region/trim-to-previous-region j
    +
    trim the start of selected region(s) to the end of the previous region
    +
    Region/trim-to-next-region k
    +
    trim the end of selected region(s) to the start of the following region
    +
    +

    Other Possible Commands for Trimming

    +

    These are not bound to any keys by default, but could be via the Keybindings Editor. They can also be sent via OSC or other control protocols.

    +
    +
    Region/trim-region-to-loop
    +
    Trim region to match the current loop range
    +
    Region/trim-region-to-punch
    +
    Trim region to match the current punch range
    +
    +

     

    +
    +

    Push/Pull Trimming

    +

    Push/Pull Trimming

    +

    Normally when you trim regions by dragging with the mouse, it affects only the selected regions. Their lengths are directly affected by the trim operation, but nothing else is. Sometimes though, you'd like to trim a region that directly adjoins another, and keep this relationship the same - you're not trying to make one of the regions extend over the other - you'd like the junction to move in one direction or the other as part of the trim. This requires trimming both regions on either side of the junction, in opposite directions. Push/Pull trim, activated by pressing shift key before starting the drag, will do just that. Here's a few pictures to show the difference in the results of a normal trim and push/pull trim. First, the initial situation:

    +

    region arrangement before trim

    +

    Now lets look at what happens after we trim the right hand (selected) region by dragging its starting position earlier:

    +

    region arrangement after a trim

    +

    You can see that it now overlaps the earlier region and a cross fade has been created between them.

    +

    Lets look now at what happens if we do the same trim, but using shift-drag to turn it into a push-pull trim instead:

    +

    region arrangement after a push trim

    +

    There is no overlap, and the end of the earlier region has been moved along with the start of the later region, so that they still directly adjoin each other.

    +
    +
    +
    +

    Copying Regions

    +

    To Copy A Region

    +

    To copy a region, make sure you are in object mouse mode. Move the mouse pointer into the region Left-click and drag. A new region is created and will follow the mouse pointer as it moves. See "moving Regions" for more details on moving the copied region around.

    +

    Copying more than one region

    +

    To copy multiple regions, select them before copying. Then click+drag on one of the selected regions. All the regions will be copied and as they move, the will keep their positions relative to each other.

    +

    Fixed-time copying

    +

    If you want to copy region(s) to other track(s) but keep the copies at the exact position on the timeline as the originals, simply use Middle-click-drag instead.

    +
    +
    +

    Moving Regions

    +

    Moving and Copying Regions

    +

    Moving and copying regions may be affected by the current edit mode. Ardour has the following edit modes:

    +
    +
    Slide
    +
    Regions can be freely moved, and overlaps will be created when necessary
    +
    Lock
    +
    No region motion is possible at all
    +
    Splice
    +
    Regions can be moved freely, but Ardour will close all gaps between regions after any movement has occured
    +
    +

    The edit mode is set via a combo selector at the left of the editing toolbar.

    +

    If "Snap To Grid" is enabled, then regions can only moved so that they align with locations determined by the current snap settings (beats, or seconds, or other region boundaries, etc). See Snapping To The Grid.

    +
    +

    Moving Regions With the Mouse

    +

    To move or copy a region, make sure you are in object mode. If you are using "smart mode", the pointer must be in the lower half of the region to begin a move or copy operation.

    +

    Move the pointer into the region, use Left-click-drag. The region will follow the pointer as you move it around. By default, the region can move freely along the timeline.

    +

    To move a region from one track to another, simply start a move as described above, but move the pointer into the desired track. The region will follow the pointer. Note that if you have other kinds of "tracks" visible, the region will remain where it is as the pointer moves across them, and will then jump to the new track. This serves as a visual reminder that you cannot drag an audio region into an automation track or a bus, for example.

    +

    Moving more than one region

    +

    To move multiple regions, select them before moving. Then click+drag on one of the selected regions. All the regions will move, keeping their positions relative to each other.

    +

    Fixed-time motion

    +

    Sometimes, you want to move a region to another track, but keeping its position along the timeline exactly the same. To do this, use Middle-click-drag instead.

    +
    +
    +

    Aligning (Spotting) Regions

    +

    Aligning regions (sometimes called "spotting") means moving one or more regions based on a defined location, which in Ardour is always the edit point. An alignment operation moves the region(s) so that some part of the region is positioned at the edit point. Available alignment commands include:

    +
    +
    Align Region starts a
    +
    Selected region(s) are moved so that their start is located at the current edit point
    +
    Align Region ends a +
    Selected region(s) are moved so that the end is located at the current edit point
    +
    Align Region sync points Shift-a
    +
    Selected region(s) are moved so that their sync point is located at the current edit point
    +
    Align Region starts relative a
    +
    Selected region(s) are moved so that the start of the earliest region is located at the current edit point, and all others maintain their relative position relative to that region
    +
    +

     

    +
    +
    +
    +

    Separation

    +

    Separation

    +
    +

    Separate Range

    +

    Separate Range

    +

    A final new editing feature is an operation in the context menu of a range labelled "Separate Regions Under Range". This will split any selected regions that are covered by the range at both ends of the range (or just one, if the range only covers part of the region). This makes it easy to generate regions that correspond precisely to a range.

    +
    +
    +

    Separate Under

    +

    Separate Under

    +

    You may have a situation where you've positioned one region over another, and you just want to cut the lower region so that it directly adjoins both ends of the overlapping one, with no overlaps. To do this, select the upper region, then choose Edit > Separate > Separate Under. This will split the lower region so that it no longer overlaps the upper region at all. Here is an example where we start with a short region placed so that it overlaps a longer region:

    +

    region arrangement before separate under

    +

    Now we perform the separate under edit, and the lower region has been split in two, with boundaries exactly positioned at the edges of the upper region:

    +

    region arrangement after separate under

    +

    If the lower region is only covered at one end by the upper region, then this operation is equivalent to Trim to Next or Trim to Previous, depending on which end is covered.

    +
    +
    +
    +

    Stripping SiIence from Audio Regions

    +

    Stripping SiIence from Audio Regions

    +

    Selecting Edit > Strip Silence from the region context menu will detect silence (based on a user-chosen threshold in dBFS), split a region based on the boundaries of the silent segments, and remove the silence. You can also specify a minimum length for silence, which can useful when editing very percussive material and just needing to automatically trim the ends of a region. The dialog looks like this:

    +

    strip silence dialog

    +

    The edit will be carried out on all selected regions, allowing batch processing. You can also see in the screenshot how the main editor window is used to show silent segments and report the number and durations of the shortest segments.

    +
    +
    +

    Editing MIDI

    +

    Editing MIDI

    +

    Ardour's handling of MIDI editing is a bit different from most other DAWs and MIDI sequencers.

    +

    Key features of Ardour MIDI handling

    +
      +
    • All editing is done in-place, in-window. There is no separate piano roll window or pane. Edit notes right where you see them. +
    • All MIDI I/O is done via JACK for sample accurate timing and maximal efficiency when communicating with external software synthesizers +
    • Every MIDI track has its own JACK MIDI port for input; it may have an arbitrary combination of audio and MIDI outputs, depending on the signal processing in the track; the full flexibility of JACK connectivity is present for MIDI just as it is for audio. +
    • Full automation for MIDI tracks, integrated with the handling of all MIDI CC data for each track +
    • Controllers (CC data) can be set to discrete or continuous modes (the latter will interpolate between control points and send additional data) +
    • Normal or Percussive mode for note data editing +
    • The "scroomer" (a combination scroll/zoom tool) for altering the zoom level and range of visible MIDI data +
    +

    Notable Differences

    +
      +
    • As mentioned above, all editing is done in-place +
    • Fader (volume) control currently operates on transmitted MIDI data, not by sending CC #7 +
    • All note/data editing is per-region. There are no cross-region operations at this time +
    • By default, copying a MIDI region creates a "deep link" or "cloned copy" - both regions share the same data source, and edits to the contents of one will affect the other. To break this link, select MIDI > Unlink from other copies from the region context menu, after which the selected region(s) will have their own copies of only the data that they visually display on screen. You will not be able to trim the region back its "original" length after an Unlink operation, and the operation cannot be undone. +
    +
    +

    Fundamental Concepts for MIDI Editing

    +

    Fundamental Concepts for MIDI Editing

    +

    Ardour's MIDI editing is based on a few basic principles:

    +
      +
    1. Editing should be done without having to enter a new window +
    2. Editing should be able to carried out completely with the keyboard, or completely with the mouse, or with any combination of the two. +
    +

    Currently MIDI editing is primarily restricted to note data. Other kinds of data (controller events, sysex data) are present and can be added and deleted, but not actually edited.

    +

    Fundamentals of MIDI Editing in Ardour 3

    +

    MIDI, just like audio, exists in "regions". MIDI regions behave like audio regions: they can be moved, trimmed, copied, (cloned) or deleted. Ardour allows either editing MIDI (or audio) regions, or MIDI region content (the notes), but never both at the same time. The "e" key (by default) toggles between "region level" and "note level" editing, as will double-clicking on a MIDI region.

    +

    +One very important thing to note: editing note information in Ardour 3.0 occurs in only a single region. There is no way currently to edit in note data for multiple regions at the same time, so for example you cannot select notes in several regions and then delete them all, nor can you copy-n-paste notes from one region to another. You can, of course, copy and paste the region(s), just as with audio. +

    +
    +
    +

    Creating MIDI Tracks

    +

    Creating MIDI Tracks

    +

    To create a new MIDI track, choose Session > Add Track/Bus. In the Add Track/Bus dialog, pick "MIDI Track" from the combo selector at the upper right.

    +

    You may decide to use a track template if you have one. You may also know the instrument (a plugin that will generate audio in response to receiving MIDI) that you want to use in the track. The Instrument selector will show you a list of all plugins that you have which accept MIDI input and generate audio output.

    +
    +
    +

    Creating MIDI Regions

    +

    Creating MIDI Regions

    +

    Although recording MIDI is a common way to create new MIDI regions, it is often desirable to do so as part of editing/arranging.

    +

    To create a new MIDI region, simply Left-click in a MIDI track. A region will be created that is one bar long. You can trim it to any length you want.

    +

    Once you have created a region, you will probably want to Add some notes to it.

    +
    +
    +

    Adding New Notes

    +

    Adding new notes

    +

    In general, you will probably do most MIDI editing with the mouse in object mode. This allows you to select notes, copy, move or delete them and alter their properties (see below). But at some point, you're going to want to add notes to a MIDI region using the mouse, and if they are to be anything other than a fixed length, this means dragging with the mouse. Since this would normally be a selection operation if the mouse is in object mode, there needs to be some way for you to tell Ardour that you are trying to "draw" new notes within a MIDI region. Ardour provides two ways do this. One is to leave the mouse in object mode and press the control key while dragging (on OS X, use the Command key). The other, useful if you plan to enter a lot of notes for a while, is to switch the mouse into "Draw Notes" mode, which will now interpret any drags and clicks as requests to add a new note. For obvious reasons, you cannot use "Draw Notes" mode while using region-level editing.

    +

    So, to summarize:

    +
    +
    Selecting, moving, copying, trimming, deleting regions
    +
    +
    leave "Note Level Editing" disabled, use object, range or other mouse modes
    +
    Selecting, moving, copying trimming, deleting notes
    +
    enable "Note Level Editing" and use mouse object mode.
    +
    Adding new notes
    +
    enable "Note Level Editing" and then either

    +
      +
    • use mouse object mode and Ctrl-drag (Cmd-drag on OS X) +
    • use mouse draw mode +
    +
    +
    +

    Note that is also a a step entry editor allowing you to enter notes from a virtual keyboard and lots more besides.

    +
    +
    +

    Changing Note Properties

    +

    Changing Note Properties

    +

    You can view all the details about a selected note by context-clicking on it. The dialog that pops up will also allow you to modify all the properties of the selected note(s). You can modify individual properties more efficiently using the techniques described below.

    +

    Moving notes

    +

    Right arrow and Left arrow move the selected note(s) early and later in time.

    +

    Changing pitch values

    +

    The up arrow key increases the pitch of the selected notes. The down arrow key reduces the pitch of the selected notes. If any of the selected notes are already at the maximum or minimum value, no changes will be made to any of the notes, to preserve relative pitches. You can override this with the Alt/Option key. The default shift distance is one semitone. Use the Shift modifier to alter this to one octave.

    +

    Changing velocity values

    +

    Up arrow increases the velocity of the selected notes. The Down arrowreduces the velocity of the selected notes. If any of the selected notes are already at the maximum or minumum value, no changes will be made to any of the notes, to preserve relative velocities. You can override this with the Alt/Option key.

    +

    You can also press v to popup a dialog that will allow you to set the absolute velocity value of each selected note.

    +

    Finally, the scroll wheel will also adjust notes in the same way as the arrow keys (note that like the arrow keys it only affects selected notes, not the note the pointer is over).

    +

    Changing channel

    +

    +Press the "c" key to bring up a dialog that allow you to see and alter the MIDI channel of the selected notes. If the selected notes use different channels, they will all be forced to the newly selected channel. +

    +

    Changing start/end/duration

    +

    +Comma (',') will alter the start time of the note. Period ('.') will alter the end time of the note. Both keys will by default make the note longer (either by moving the start earlier or the end later). For the opposite effect, use Ctrl-comma/Ctrl-period (or Cmd-command/Cmd-period on OS X). The note will be altered by the current grid setting. To change the start/end positions by 1/128th of a beat, use the Alt/Option key along with either Comma, Ctrl-Comma, etc. +

    +

    Quantization

    +

    +The q key will quantize the selected notes using the current quantize settings. If the quantize settings have not been set for this session yet, the quantize dialog will appear. Alt/Option-q will display the quantize dialog to allow you to reset the quantize settings and then quantizes the selected notes. The default quantize settings are: quantize note starts to the current grid setting, no swing, no threshold, full strength.

    +

    Step Entry, Quantize etc.

    +
    +
    +

    Handling Overlapping Notes

    +

    Handling Overlapping Notes

    +

    Every MIDI note consists of two messages, a NoteOn and a NoteOff message. Each one has a note number and a channel (also a velocity, but that isn't relevant here). The MIDI standard stresses that it is invalid to send a second NoteOn for the same note number on the same channel before a NoteOff for the first NoteOn. It is more or less impossible to do this with a physical MIDI controller such as a keyboard, but remarkably easy to trigger when editing in a DAW - simply overlapping two instances of the same note will do it.

    +

    Ardour offers many options for how to deal with instances where you overlap two instances of the same note. Which one to use is a per-session property and can be modified from Session > Properties > Misc > MIDI Options

    +
    +
    never allow them
    +
    Edits that would create note overlaps are not allowed
    +
    don't do anything in particular
    +
    Ardour leaves overlapping notes alone - the behaviour of a MIDI receiver (plugin or hardware) is undefined
    +
    replace any overlapped existing note
    +
    When one note is moved to overlap another, remove the one that wasn't being moved
    +
    shorten the overlapped existing note
    +
    When one note is moved to overlap another, shorten the one that wasn't moved so that there is no overlap
    +
    shorten the overlapping new note
    +
    When one note is moved to overlap another, shorten the one that was moved so that there is no overlap
    +
    replace both overlapping notes with a single note
    +
    When one note is moved to overlap another, merge them both to form one (longer) note
    +
    +

    Changing the option in use will not retroactively make changes - it will only affect new note overlaps created while the option remains chosen.

    +

    Ardour does not check for note overlaps across tracks or even across regions. If you create these, it is your responsibility to deal with the consequences. +

    +
    +
    +

    Note Cut, Copy and Paste

    +

    Note Cut, Copy and Paste

    +

    While in note edit mode, selected notes can be cut using x, copied with c and deleted with Delete, just as regions can. Once cut or copied, they can be pasted at the edit point using v.

    +
    +
    +

    Note Selection

    +

    Selecting/Navigating note-by-note

    +

    Tab selects the next note. Tab selects the previous note. Shift-Tab or Tab adds the next/previous note to the selection.

    +

    Selecting notes with the mouse

    +

    While in mouse object mode, you can click on a note to select it. Once you've selected one note, shift-click on another to select all notes between them. To add or remove a note to/fromt the selection, use click. You can also click and drag outside of a note to "rubberband select" a series of notes.

    +

    Three different selection operations are possible if you switch to mouse range mode:

    +
      +
    • Vertical drags within the MIDI region will select all notes within the spanned note range +
    • Clicks on the piano header of the track (if visible - the track must be tall enough to display it) will select all occurences of that note +
    • Drags on the piano header of the track will select all notes within the spanned note range +
    +

    Listening to Selected Notes

    +

    if Edit > Preferences > MIDI > Sound MIDI notes as they are selected is enabled, Ardour will send a pair of NoteOn/NoteOff messages through the track, which will typically allow you to hear each note as it is selected.

    +
    +
    +

    Quantizing MIDI

    +

    Quantizing MIDI

    +

    quantize dialog

    +

    Accessed via the "q" key, the dialog includes:

    +
      +
    • Options for grid, legato amd groove quantize +
    • Snap note start, or end +
    • Snap to current grid, or many beat subdivisions +
    • Quantize threshold (how far away from a chosen position a note must be in order to be quantized) +
    • Strength (how close to move a note to its new position, as a percentage of the nominal distance) +
    • Swing +
    +
    +
    +

    Step Entry

    +

    Step Entry

    +

    Sometimes you'll want to edit MIDI data directly from a connected MIDI device like a music keyboard or pad controller. Sometimes you'll want to use the mouse. Sometimes you'll want the fine-grain control, precision and speed of entry that comes from using a custom note entry dialog.

    +

    The step entry dialog is accessed via a right click context menu on the rec-enable button (its there because step entry is related to recording MIDI data. You cannot simultaneously step edit and record MIDI via the track's MIDI port.

    +

    +

    The dialog (quite closely modelled on Logic's) contains:

    +
      +
    • Chord entry switch (successive notes are stacked in a chord until it is released +
    • Note length selectors +
    • Triplet toggle +
    • Normal, single, double and triple dotted note selectors +
    • Sustain button +
    • Buttons to: +
        +
      • Insert a rest of the current selected note duration +
      • Insert a rest of the current grid step size +
      • Move back to the last inserted note +
      • Move forward to the next beat, or bar +
      • Move forward to the edit point +
      +
    • Dynamics controls from pianississimo to fortississimo +
    • Channel selector +
    • Explicit numerical velocity selector, for more precise control than the dynamics selectors +
    • Octave selector +
    • Buttons to add bank or program change events +
    • a full 10 octave virtual keyboard +
    +

    More or less all actions in the step entry dialog can be driven directly from the keyboard, so you do not need to keep moving back and forth from keyboard to mouse to do complex data insertion.

    +

    The step entry dialog is accessed via a right click context menu on the rec-enable button (its there because step entry is related to recording MIDI data. You cannot simultaneously step edit and record MIDI via the track's MIDI port.

    +
    +
    +

    Using Patch Changes

    +

    Using Patch Changes

    +

    A ‘patch change’ is Ardour's description for a combination of MIDI program change and bank select messages, that (typically) instruct a synthesizer or sampler to select a different sound to use on a particular channel.

    +

    Patch changes are shown within MIDI regions as small rectangles or "flags", as shown below:

    +

    Inserting Patch Changes

    +

    Ensure that the edit point is located where you want the patch change to be (within an existing MIDI region). Context click, and from the MIDI region's context menu, select MIDI > Insert Patch Change. A dialog will appear allowing you to set the bank and program values.

    +

    Modifying Patch Changes

    +

    Context-clicking on a patch change will bring up the same dialog that was used to create it, allowing you to modify the program and/or bank numbers.

    +

    You can also use the mousewheel: regular scroll on the patch change will alter the program number, scroll will modify the bank number.

    +

    Moving Patch Changes

    +

    Just Left-click-and-drag on the patch change to move it around.

    +

    Removing Patch Changes

    +

    Put the mouse pointer into the rectangular area, and press Delete or use the delete mouse button operation. This will remove the patch change (the operation can be undone).

    +

    Names for Patch Numbers: MIDNAM files

    +
    +
    +
    +
    +

    Automation

    +

    Automation
    +

    +

    This chapter covers the following:

    +

    +
    +

    Mixing

    +

    Mixing

    +

    This chapter covers the following:

    +
    +

    Muting and Soloing

    +

    Each track and bus has two buttons which have important implications for signal flow: mute and solo. The behaviour of these buttons is configurable in Ardour, so that they can behave in one of a few different ways to suit different studio set-ups.

    +

    Without a monitor bus

    +

    If you are using Ardour without a monitor bus, there is only one way in which mute and solo will work. Without a monitor bus:

    +
      +
    • Mute on a track or bus will mute that track on the master bus, so that it will not be heard. +
    • Solo on a track or bus will solo that track or bus and mute all others except that soloing a bus will also solo any tracks or busses that feed that bus. +
    +

    With a monitor bus

    +

    For setups with a monitor bus, you have more options, mostly governed by the setting of the ‘Solo controls are Listen controls’ option in the Solo / mute tab of ‘Ardour Preferences’.

    +

    With ‘Solo controls are Listen controls’ unticked, behaviour is almost exactly the same as the situation without a monitor bus. Mute and solo behave the same, and the monitor bus is fed from the master bus, so it sees the same thing.

    +

    With ‘Solo controls are Listen controls’ ticked, things change; the master and monitor busses behave differently. In this mode, solo controls are more properly called ‘listen’ controls, and Ardour's solo buttons will change their legend from ‘S’ to either ‘A’ or ‘P’ (we'll come to that shortly) to reflect this.

    +

    Now, without any mute or listen, the monitor bus remains fed by the master bus. Also:

    +
      +
    • Mute will mute the track or bus, so that it will not be heard anywhere (neither on the master nor monitor busses), much as before. +
    • Listen will disconnect the monitor bus from the master bus, so that the monitor bus now only receives things that are ‘listened’. Listen will not perform any muting, and hence the master bus will not be affected by a listened track or bus. +
    +

    There are further options with when solo controls are listen controls: the part of the track or bus from which the listen signal is obtained can be configured. Underneath the ‘Solo controls are Listen controls’ option in ‘Ardour Preferences’ is an option for ‘listen position’, which can be either After-Fade Listen (AFL) or Pre-Fade Listen (PFL). AFL, as its name suggests, obtains its signal from some point after the track or bus’ fader, and PFL from before it. The precise point to get the signal from can further be configured using the ‘PFL signals come from’ and ‘AFL signals come from’ options.

    +

    The solo-mute arrangement with a monitor bus is shown below:

    +

    mute/solo signal flow

    +

    Here we have a number of tracks or busses (in orange). Each one has an output which feeds the master bus. In addition, each has PFL and AFL outputs; we have a choice of which to use. PFL/AFL from each track or bus are mixed. Then, whenever anything is set to AFL/PFL, the monitor out becomes just those AFL/PFL feeds; the rest of the time, the monitor out is fed from the master bus.

    +

    In this scheme Solo has no effect other than to mute other non-soloed tracks; with solo (rather then listen), the monitor out is fed from the master bus.

    +

    Other solo options

    +

    There are a few other configuration options related to the behaviour of solo. They can be found in the Solo / Mute tab of Ardour Preferences dialogue.

    +

    Solo-in-place mute cut

    +

    When using ‘solo-in-place’ (SiP), in other words when soloed tracks are being listened to on the master bus, this fader specifies the gain that will be applied to other tracks in order to mute them. Setting this level to -∞dB will mean that other tracks will not be heard at all; setting to some higher value less than 0dB means that other non-soloed tracks will be heard, just reduced in volume compared to the soloed tracks. Using a value larger than -∞dB is sometimes called "Solo-In-Front" by other DAWs, because the listener has the sense that soloed material is "in front" of other material. In Ardour, this is not a distinct mode, but instead the mute cut control offers any level of "in-front-ness" that you might want to use.

    +

    Exclusive solo

    +

    If this is enabled, only one track or bus will ever be soloed at once; soloing track B while track A is currently soloed will un-solo track A before soloing track B.

    +

    Show solo muting

    +

    If this is enabled, the mute button of tracks and busses will be drawn outlined to indicate that the track or bus is muted because something else is soloed. This is enabled by default, and we recommend that you leave it that way unless you are extremely comfortable with Ardour's mute/solo behaviour

    +

    Soloing overrides muting

    +

    If this is enabled, a track or bus that is both soloed and muted will behave as if it is soloed.

    +

    Mute affects…

    +

    These options dictate whether muting the track will affect various routes out of the track; through the sends, through the control outputs (to the monitor bus) and to the main outputs.

    +
    +
    +

    Panning Control

    +

    Panning Control

    +
    +
    +
    +

    Exporting

    +

    Exporting

    +

    This chapter covers the following:

    +
    +
    +

    Synchronization

    +

    Synchronization

    +

    Ardour can be synchronized with a variety of external devices and other software.

    +

    This chapter covers the following:

    +
    +
    +

    Default Keyboard Bindings

    +

    Default Keyboard Bindings

    +

    Although (almost) every key binding ("shortcut") in Ardour can be redefined, the program comes with a rich set of default bindings. The default bindings are "mnemonic" in that they focus on trying use to the letter that starts the name of an operation as the binding for that operation. This is not always possible, but it acts as a general rule. This does not necessarily lead to the best ergonomics for rapid editing - there are alternative binding sets for that - but it does make it simpler for newcomers to remember some of the most common bindings (e.g. "s" for "Split", "p" for "position playhead").

    +

    The conventions for using modifier keys (Control, Alt, Command etc.) differ from platform to platform, so we provide different bindings for each platform.

    +
    +

    Mnemonic Bindings for Linux

    +

    Mnemonic Bindings for Linux

    +

    A printable cheat-sheet with these bindings is available for downloading.

    +

    Transport & Recording Control

    +
    +
    destroy last recording
    +
    Control+Delete
    +
    engage record
    +
    Shift+r
    +
    fast forward
    +
    Shift+→
    +
    loop play (the loop range)
    +
    l
    +
    rewind
    +
    Shift+←
    +
    set playhead position
    +
    p
    +
    start recording
    +
    Shift+space
    +
    stop (keep loop/range play)
    +
    Control+Alt+space
    +
    stop and destroy
    +
    Control+space
    +
    toggle auto play
    +
    5
    +
    toggle auto return
    +
    6
    +
    toggle click (metronome)
    +
    7
    +
    toggle playhead follows edits
    +
    Shift+f
    +
    toggle playhead tracking
    +
    Control+f
    +
    toggle roll
    +
    space
    +
    toggle track rec-enable
    +
    Shift+b
    +
    toggle track solo status
    +
    Alt+s
    +
    transition to reverse
    +
    Shift+↓
    +
    transition to roll
    +
    Shift+↑
    +
    +

    Session & File Handling

    +
    +
    add track(s) or bus(ses)
    +
    Control+Shift+n
    +
    export session
    +
    Win+e
    +
    import audio files
    +
    Control+i
    +
    open a new session
    +
    Control+n
    +
    open a recent session
    +
    Control+Shift+o
    +
    open an existing session
    +
    Control+o
    +
    quit
    +
    Control+q
    +
    save session
    +
    Control+s
    +
    snapshot session
    +
    Control+Shift+s
    +
    toggle sel. track MIDI input
    +
    Alt+i
    +
    +

    Changing What's Visible

    +
    +
    fit tracks vertically
    +
    f
    +
    move selected tracks down
    +
    Control+↓
    +
    move selected tracks up
    +
    Control+↑
    +
    scroll down (page)
    +
    PageDown
    +
    scroll down (step)
    +
    +
    scroll up (page)
    +
    PageUp
    +
    scroll up (step)
    +
    +
    toggle editor window mixer
    +
    Shift+e
    +
    toggle last 2 zoom states
    +
    Shift+z
    +
    zoom (x) to selected region(s)
    +
    Control+Alt+z
    +
    zoom (x+y) to selected region
    +
    Alt+z
    +
    zoom in
    +
    =
    +
    zoom out
    +
    -
    +
    +

    Window Visibility

    +
    +
    toggle locations dialog
    +
    Alt+l
    +
    focus on main clock
    +
    KP_Divide
    +
    maximise editor space
    +
    Control+Alt+f
    +
    rotate editor & mixer window
    +
    Alt+m
    +
    show rhythm ferret window
    +
    Alt+f
    +
    toggle big clock
    +
    Alt+b
    +
    toggle color manager
    +
    Alt+c
    +
    toggle editor window
    +
    Alt+e
    +
    toggle global audio patchbay
    +
    Alt+p
    +
    toggle global midi patchbay
    +
    Alt+Shift+p
    +
    toggle key bindings editor
    +
    Alt+k
    +
    toggle preferences dialog
    +
    Alt+o
    +
    toggle preferences dialog
    +
    Control+Shift+p
    +
    +

    Editing with Edit Point

    +

    Most edit functions operate on a single "Edit Point". The edit point can be any of: playhead (default), the mouse or an active marker. The choice of Edit Point (by default) also sets the Zoom Focus.

    +
    +
    EP to next region sync
    +
    ;
    +
    EP to prev region sync
    +
    '
    +
    cycle to next grid snap mode
    +
    2
    +
    cycle to next zoom focus
    +
    1
    +
    insert from region list
    +
    i
    +
    insert time
    +
    Control+t
    +
    move EP to playhead
    +
    Alt+Return
    +
    next EP w/marker
    +
    Control+^
    +
    next EP w/o marker
    +
    `
    +
    trim back
    +
    k
    +
    trim front
    +
    j
    +
    trim region end to edit point
    +
    Shift+}
    +
    trim region start to edit point
    +
    Shift+{
    +
    trim region to end of prev region
    +
    Control+j
    +
    trim region to start of next region
    +
    Control+k
    +
    use next grid unit
    +
    3
    +
    use next grid unit
    +
    4
    +
    use next musical grid unit
    +
    Control+4
    +
    use previous grid unit
    +
    Control+3
    +
    +

    Aligning with the Edit Point

    +

    Align operations move regions so that their start/end/sync point is at the edit point. "Relative" operations
    +just align the first region and moves other selected regions to maintain relative positioning.

    +
    +
    align end(s)
    +
    Alt+a
    +
    align start(s)
    +
    Control+Win+a
    +
    align start(s) relative
    +
    Win+a
    +
    align sync points
    +
    Shift+a
    +
    align sync points (relative)
    +
    a
    +
    range end to next prev edge
    +
    Control+>
    +
    range end to next region edge
    +
    >
    +
    range start to next region edge
    +
    Control+<
    +
    range start to prev region edge
    +
    <
    +
    +

    Edit Point Playback

    +
    +
    play edit range
    +
    Alt+space
    +
    play from EP & return
    +
    Win+space
    +
    play selected region(s)
    +
    h
    +
    +

    Region Operations

    +
    +
    duplicate region (multi)
    +
    Shift+d
    +
    duplicate region (once)
    +
    Alt+d
    +
    export selected region(s)
    +
    Control+Win+e
    +
    increase region gain
    +
    ^
    +
    move to original position
    +
    Alt+o
    +
    mute/unmute
    +
    Control+m
    +
    normalize
    +
    n
    +
    nudge backward
    +
    KP_Subtract
    +
    nudge forward
    +
    KP_Add
    +
    quantize MIDI notes
    +
    q
    +
    reduce region gain
    +
    &
    +
    reverse
    +
    Alt+r
    +
    set fade in length
    +
    /
    +
    set fade out length
    +
    \
    +
    set region sync point
    +
    v
    +
    split
    +
    s
    +
    toggle fade in active
    +
    Control+/
    +
    toggle fade out active
    +
    Control+\
    +
    transpose
    +
    Alt+t
    +
    +

    Edit Range

    +

    There are only a few functions that refer to an "Edit Range". The current edit range is defined using combinations of the possible edit points: Playhead, Marker or Mouse.

    +
    +
    copy
    +
    Control+c
    +
    cut
    +
    Control+x
    +
    delete
    +
    Delete
    +
    paste
    +
    Control+v
    +
    redo
    +
    Control+r
    +
    undo
    +
    Control+z
    +
    +

    Selecting

    +
    +
    all after playhead
    +
    Shift+Control+p
    +
    all before playhead
    +
    Control+p
    +
    all enclosed by edit range
    +
    Control+u
    +
    all present in edit range
    +
    u
    +
    convert edit range to range
    +
    F6
    +
    invert selection
    +
    Shift+i
    +
    select all after EP
    +
    Control+Shift+e
    +
    select all before EP
    +
    Control+e
    +
    select all in loop range
    +
    Control+l
    +
    select all in punch range
    +
    Control+d
    +
    select everything
    +
    Control+a
    +
    select next track/bus
    +
    Alt+↓
    +
    select previous track/bus
    +
    Alt+↑
    +
    +

    Defining Loop, Punch Range and Tempo Changes

    +
    +
    set loop range from edit range
    +
    ]
    +
    set loop range from region(s)
    +
    Alt+]
    +
    set punch range from edit range
    +
    [
    +
    set punch range from region(s)
    +
    Alt+[
    +
    set tempo (1 bar) from edit range
    +
    0
    +
    set tempo (1 bar) from region(s)
    +
    9
    +
    +

     

    +
    +
    +

    Mnemonic Bindings for OS X

    +

    Mnemonic Bindings for OS X

    +

    A printable cheat sheet for these bindings is available for download.

    +

    Transport & Recording Control

    +
    +
    destroy last recording
    +
    Cmd+Delete
    +
    engage record
    +
    Shift+r
    +
    fast forward
    +
    Shift+→
    +
    loop play (the loop range)
    +
    l
    +
    rewind
    +
    Shift+←
    +
    set playhead position
    +
    p
    +
    start recording
    +
    Shift+space
    +
    stop (keep loop/range play)
    +
    Cmd+Control+space
    +
    stop and destroy
    +
    Cmd+space
    +
    toggle auto play
    +
    5
    +
    toggle auto return
    +
    6
    +
    toggle click (metronome)
    +
    7
    +
    toggle playhead follows edits
    +
    Shift+f
    +
    toggle playhead tracking
    +
    Cmd+f
    +
    toggle roll
    +
    space
    +
    toggle track rec-enable
    +
    Shift+b
    +
    toggle track solo status
    +
    Control+s
    +
    transition to reverse
    +
    Shift+↓
    +
    transition to roll
    +
    Shift+↑
    +
    +

    Session & File Handling

    +
    +
    add track(s) or bus(ses)
    +
    Cmd+Shift+n
    +
    export session
    +
    Mod1+e
    +
    import audio files
    +
    Cmd+i
    +
    open a new session
    +
    Cmd+n
    +
    open a recent session
    +
    Cmd+Shift+o
    +
    open an existing session
    +
    Cmd+o
    +
    quit
    +
    Cmd+q
    +
    save session
    +
    Cmd+s
    +
    snapshot session
    +
    Cmd+Shift+s
    +
    toggle sel. track MIDI input
    +
    Control+i
    +
    +

    Changing What's Visible

    +
    +
    fit tracks vertically
    +
    f
    +
    move selected tracks down
    +
    Cmd+↓
    +
    move selected tracks up
    +
    Cmd+↑
    +
    scroll down (page)
    +
    PageDown
    +
    scroll down (step)
    +
    +
    scroll up (page)
    +
    PageUp
    +
    scroll up (step)
    +
    +
    toggle editor window mixer
    +
    Shift+e
    +
    toggle last 2 zoom states
    +
    Shift+z
    +
    zoom (x) to selected region(s)
    +
    Cmd+Control+z
    +
    zoom (x+y) to selected region
    +
    Control+z
    +
    zoom in
    +
    =
    +
    zoom out
    +
    -
    +
    +

    Window Visibility

    +
    +
    toggle locations dialog
    +
    Control+l
    +
    focus on main clock
    +
    KP_Divide
    +
    maximise editor space
    +
    Cmd+Control+f
    +
    rotate editor & mixer window
    +
    Control+m
    +
    show rhythm ferret window
    +
    Control+f
    +
    toggle big clock
    +
    Control+b
    +
    toggle color manager
    +
    Control+c
    +
    toggle editor window
    +
    Control+e
    +
    toggle global audio patchbay
    +
    Control+p
    +
    toggle global midi patchbay
    +
    Control+Shift+p
    +
    toggle key bindings editor
    +
    Control+k
    +
    toggle preferences dialog
    +
    Control+o
    +
    toggle preferences dialog
    +
    Cmd+Shift+p
    +
    +

    Editing with Edit Point

    +

    Most edit functions operate on a single "Edit Point". The edit point can be any of: playhead (default), the mouse or an active marker. The choice of Edit Point (by default) also sets the Zoom Focus.

    +
    +
    EP to next region sync
    +
    ;
    +
    EP to prev region sync
    +
    '
    +
    cycle to next grid snap mode
    +
    2
    +
    cycle to next zoom focus
    +
    1
    +
    insert from region list
    +
    i
    +
    insert time
    +
    Cmd+t
    +
    move EP to playhead
    +
    Control+Return
    +
    next EP w/marker
    +
    Cmd+^
    +
    next EP w/o marker
    +
    `
    +
    trim back
    +
    k
    +
    trim front
    +
    j
    +
    trim region end to edit point
    +
    Shift+}
    +
    trim region start to edit point
    +
    Shift+{
    +
    trim region to end of prev region
    +
    Cmd+j
    +
    trim region to start of next region
    +
    Cmd+k
    +
    use next grid unit
    +
    3
    +
    use next grid unit
    +
    4
    +
    use next musical grid unit
    +
    Cmd+4
    +
    use previous grid unit
    +
    Cmd+3
    +
    +

    Aligning with the Edit Point

    +

    Align operations move regions so that their start/end/sync point is at the edit point. "Relative" operations
    +just align the first region and moves other selected regions to maintain relative positioning.

    +
    +
    align end(s)
    +
    Control+a
    +
    align start(s)
    +
    Cmd+Mod1+a
    +
    align start(s) relative
    +
    Mod1+a
    +
    align sync points
    +
    Shift+a
    +
    align sync points (relative)
    +
    a
    +
    range end to next prev edge
    +
    Cmd+>
    +
    range end to next region edge
    +
    >
    +
    range start to next region edge
    +
    Cmd+<
    +
    range start to prev region edge
    +
    <
    +
    +

    Edit Point Playback

    +
    +
    play edit range
    +
    Control+space
    +
    play from EP & return
    +
    Mod1+space
    +
    play selected region(s)
    +
    h
    +
    +

    Region Operations

    +
    +
    duplicate region (multi)
    +
    Shift+d
    +
    duplicate region (once)
    +
    Control+d
    +
    export selected region(s)
    +
    Cmd+Mod1+e
    +
    increase region gain
    +
    ^
    +
    move to original position
    +
    Control+o
    +
    mute/unmute
    +
    Cmd+m
    +
    normalize
    +
    n
    +
    nudge backward
    +
    KP_Subtract
    +
    nudge forward
    +
    KP_Add
    +
    quantize MIDI notes
    +
    q
    +
    reduce region gain
    +
    &
    +
    reverse
    +
    Control+r
    +
    set fade in length
    +
    /
    +
    set fade out length
    +
    \
    +
    set region sync point
    +
    v
    +
    split
    +
    s
    +
    toggle fade in active
    +
    Cmd+/
    +
    toggle fade out active
    +
    Cmd+\
    +
    transpose
    +
    Control+t
    +
    +

    Edit Range

    +

    There are only a few functions that refer to an "Edit Range". The current edit range is defined using combinations of the possible edit points: Playhead, Marker or Mouse.

    +
    +
    copy
    +
    Cmd+c
    +
    cut
    +
    Cmd+x
    +
    delete
    +
    Delete
    +
    paste
    +
    Cmd+v
    +
    redo
    +
    Cmd+r
    +
    undo
    +
    Cmd+z
    +
    +

    Selecting

    +
    +
    all after playhead
    +
    Shift+Cmd+p
    +
    all before playhead
    +
    Cmd+p
    +
    all enclosed by edit range
    +
    Cmd+u
    +
    all present in edit range
    +
    u
    +
    convert edit range to range
    +
    F6
    +
    invert selection
    +
    Shift+i
    +
    select all after EP
    +
    Cmd+Shift+e
    +
    select all before EP
    +
    Cmd+e
    +
    select all in loop range
    +
    Cmd+l
    +
    select all in punch range
    +
    Cmd+d
    +
    select everything
    +
    Cmd+a
    +
    select next track/bus
    +
    Control+↓
    +
    select previous track/bus
    +
    Control+↑
    +
    +

    Defining Loop, Punch Range and Tempo Changes

    +
    +
    set loop range from edit range
    +
    ]
    +
    set loop range from region(s)
    +
    Control+]
    +
    set punch range from edit range
    +
    [
    +
    set punch range from region(s)
    +
    Control+[
    +
    set tempo (1 bar) from edit range
    +
    0
    +
    set tempo (1 bar) from region(s)
    +
    9
    +
    +

     

    +
    +
    +
    +

    Preferences and Session Properties

    +

    Ardour splits preferences into two categories:

    +
      +
    • Settings that should logically apply to all sessions, because they are based on user workflow or system configuration +
    • Settings that are per session, because they depend or reflect session content or design +
    +

    There are two separate (but similarly designed) dialogs, one under Edit > Preferences for the first category of preferences and Session > Properties for the second. Each window uses tabs to group a set of preferences

    +

    This chapter covers the following:

    +
    +

    Preferences Dialog

    +

    Preferences Dialog

    +

    ardour preferences dialog

    +
    +
    +

    Seession Properties Dialog

    +

    Session Properties Dialog

    +

    session properties dialog

    +
    +
    +
    +

    Using Control Surfaces

    +

    Using Control Surfaces

    +
    +

    Controlling Ardour with OSC

    +

    Controlling Ardour with OSC

    +

    Ardour is probably one of the most OSC-controllable audio applications around, but as with all OSC-controllable apps, you can't do much without knowing what messages can be sent. This document describes the various categories of messages that Ardour understands. It is subject to change, particular the "Actions" part below, since this relates to the GTK GUI for Ardour rather than the backend.

    +

    Connecting to Ardour via OSC

    +

    +OSC support is not enabled by default, but can be turned on via Edit > Preferences > User Interaction. Once enabled, Ardour will listen on port 3819 by default. This port number can be changed by editing $ARDOUR_CONFIG and adding this line within the <Config> section:

    +
    +  <Option name="osc-port" value="YourChoiceHere"/>
    +

    Transport Control

    +
    +
    /ardour/transport_stop

    +
    /ardour/transport_play

    +
    /ardour/set_transport_speed [transport_speed]

    +
    where [transport_speed] is a float rangin from -8 to 8.

    +
    /ardour/ffwd

    +
    /ardour/rewind

    +
    /ardour/goto_start

    +
    /ardour/goto_end

    +
    /ardour/add_marker

    +
    (adds marker to the current transport position)

    +
    /ardour/next_marker

    +
    /ardour/prev_marker

    +
    /ardour/locate [sample_pos] [with_roll]

    +
    where [sample_pos] is the target position and [with_roll] is a bool/integer (whether you want transport to be kept rolling or not).

    +
    /ardour/loop_toggle
    +
    +

    Editing-related

    +
    +
    /ardour/undo

    +
    /ardour/redo

    +
    /ardour/save_state

    +
    (this is regular Session _> Save operatio)
    +
    +

    Recording control

    +
    +
    /ardour/toggle_punch_in

    +
    /ardour/toggle_punch_out

    +
    /ardour/rec_enable_toggle

    +
    /ardour/toggle_all_rec_enables

    +
    (toggles all tracks recording state). !currently toggles on but not off for 2.0 branch.
    +
    +

    Track specific operations

    +

    +For each of the following, [remote_id] is the remote_id or the track +

    +
    +
    /ardour/routes/mute [remote_id] [mute_st]

    +
    where [mute_st] is a bool/int representing the desired mute state of the track

    +
    /ardour/routes/solo [remote_id] [solo_st]

    +
    where [solo_st] is a bool/int representing the desired solo state of the track

    +
    /ardour/routes/recenable [remote_id] [rec_st]

    +
    where [rec_st] is a bool/int representing the desired rec state of the track

    +
    /ardour/routes/gainabs [remote_id] [gain_abs]

    +
    where [gain_abs] is a float ranging from 0 to 2 (0 being -infinite, 1 being 0dB and 2 being +6dB).

    +
    /ardour/routes/gaindB [remote_id] [gain_db]

    +
    where [gain_db] is a float ranging from -400 to 6 representing the desired gain of the track in dB.
    +
    +

    Menu actions

    +

    +Every single menu item in Ardour's GUI is accessible via OSC. There is
    +a single common syntax to trigger the action as if it was selected
    +with the mouse (or keyboard):

    +
    +/ardour/access_action [action_name]
    +

    The list below shows all available values of [action-name] as of
    +mid-March 2010 for Ardour 2.X. You can get the current list at any
    +time by running Ardour with the -b flag.

    +
      +
    • Common/About +
    • Common/goto-editor +
    • Common/Quit +
    • Common/Save +
    • Common/toggle-editor-mixer-on-top +
    • Common/ToggleBigClock +
    • Common/ToggleColorManager +
    • Common/ToggleInspector +
    • Common/ToggleKeyEditor +
    • Common/ToggleLocations +
    • Common/ToggleMaximalEditor +
    • Common/ToggleOptionsEditor +
    • Editor/add-location-from-playhead +
    • Editor/addExistingAudioFiles +
    • Editor/align-regions-end +
    • Editor/align-regions-start +
    • Editor/align-regions-start-relative +
    • Editor/align-regions-sync +
    • Editor/align-regions-sync-relative +
    • Editor/audition-at-mouse +
    • Editor/Autoconnect +
    • Editor/boost-region-gain +
    • Editor/brush-at-mouse +
    • Editor/center-edit-cursor +
    • Editor/center-playhead +
    • Editor/crop +
    • Editor/Crossfades +
    • Editor/CrossfadesFull +
    • Editor/CrossfadesShort +
    • Editor/cut-region-gain +
    • Editor/cycle-edit-point +
    • Editor/cycle-edit-point-with-marker +
    • Editor/cycle-snap-choice +
    • Editor/cycle-snap-mode +
    • Editor/duplicate-region +
    • Editor/Edit +
    • Editor/edit-cursor-to-next-region-sync +
    • Editor/edit-cursor-to-previous-region-start +
    • Editor/edit-cursor-to-previous-region-sync +
    • Editor/edit-cursor-to-range-end +
    • Editor/edit-cursor-to-range-start +
    • Editor/edit-to-playhead +
    • Editor/EditCursorMovementOptions +
    • Editor/editor-copy +
    • Editor/editor-cut +
    • Editor/editor-delete +
    • Editor/editor-paste +
    • Editor/EditSelectRangeOptions +
    • Editor/EditSelectRegionOptions +
    • Editor/export-region +
    • Editor/extend-range-to-end-of-region +
    • Editor/extend-range-to-start-of-region +
    • Editor/finish-add-range +
    • Editor/finish-range +
    • Editor/fit-tracks +
    • Editor/goto-mark-1 +
    • Editor/goto-mark-2 +
    • Editor/goto-mark-3 +
    • Editor/goto-mark-4 +
    • Editor/goto-mark-5 +
    • Editor/goto-mark-6 +
    • Editor/goto-mark-7 +
    • Editor/goto-mark-8 +
    • Editor/goto-mark-9 +
    • Editor/goto-visual-state-1 +
    • Editor/goto-visual-state-2 +
    • Editor/goto-visual-state-3 +
    • Editor/goto-visual-state-4 +
    • Editor/goto-visual-state-5 +
    • Editor/goto-visual-state-6 +
    • Editor/goto-visual-state-7 +
    • Editor/goto-visual-state-8 +
    • Editor/goto-visual-state-9 +
    • Editor/goto-visual-state-10 +
    • Editor/goto-visual-state-11 +
    • Editor/goto-visual-state-12 +
    • Editor/insert-region +
    • Editor/insert-time +
    • Editor/invert-selection +
    • Editor/jump-backward-to-mark +
    • Editor/jump-forward-to-mark +
    • Editor/LayerAddHigher +
    • Editor/Layering +
    • Editor/LayerLaterHigher +
    • Editor/LayerMoveAddHigher +
    • Editor/MeterFalloff +
    • Editor/MeterHold +
    • Editor/Monitoring +
    • Editor/move-selected-tracks-down +
    • Editor/move-selected-tracks-up +
    • Editor/multi-duplicate-region +
    • Editor/mute-unmute-region +
    • Editor/naturalize-region +
    • Editor/normalize-region +
    • Editor/nudge-backward +
    • Editor/nudge-forward +
    • Editor/nudge-next-backward +
    • Editor/nudge-next-forward +
    • Editor/nudge-playhead-backward +
    • Editor/nudge-playhead-forward +
    • Editor/pitch-[Shift]-region +
    • Editor/pitch-shift-region +
    • Editor/play-edit-range +
    • Editor/play-from-edit-point-and-return +
    • Editor/play-selected-regions +
    • Editor/playhead-backward-to-grid +
    • Editor/playhead-forward-to-grid +
    • Editor/playhead-to-edit +
    • Editor/playhead-to-next-region-boundary +
    • Editor/playhead-to-next-region-boundary-noselection +
    • Editor/playhead-to-next-region-sync +
    • Editor/playhead-to-next-region-sync +
    • Editor/playhead-to-previous-region-boundary +
    • Editor/playhead-to-previous-region-boundary-noselection +
    • Editor/playhead-to-previous-region-sync +
    • Editor/playhead-to-range-end +
    • Editor/playhead-to-range-start +
    • Editor/PullupMinus1 +
    • Editor/PullupMinus4 +
    • Editor/PullupMinus4Minus1 +
    • Editor/PullupMinus4Plus1 +
    • Editor/PullupNone +
    • Editor/PullupPlus1 +
    • Editor/PullupPlus4 +
    • Editor/PullupPlus4Minus1 +
    • Editor/PullupPlus4Plus1 +
    • Editor/redo +
    • Editor/RegionEditOps +
    • Editor/remove-last-capture +
    • Editor/reverse-region +
    • Editor/save-visual-state-1 +
    • Editor/save-visual-state-2 +
    • Editor/save-visual-state-3 +
    • Editor/save-visual-state-4 +
    • Editor/save-visual-state-5 +
    • Editor/save-visual-state-6 +
    • Editor/save-visual-state-7 +
    • Editor/save-visual-state-8 +
    • Editor/save-visual-state-9 +
    • Editor/save-visual-state-10 +
    • Editor/save-visual-state-11 +
    • Editor/save-visual-state-12 +
    • Editor/scroll-tracks-down +
    • Editor/scroll-tracks-up +
    • Editor/select-all +
    • Editor/select-all-after-edit-cursor +
    • Editor/select-all-after-playhead +
    • Editor/select-all-before-edit-cursor +
    • Editor/select-all-before-playhead +
    • Editor/select-all-between-cursors +
    • Editor/select-all-in-loop-range +
    • Editor/select-all-in-punch-range +
    • Editor/select-all-within-cursors +
    • Editor/select-next-route +
    • Editor/select-prev-route +
    • Editor/select-range-between-cursors +
    • Editor/selected-marker-to-next-region-boundary +
    • Editor/selected-marker-to-previous-region-boundary +
    • Editor/separate +
    • Editor/set-edit-point +
    • Editor/set-fade-in-length +
    • Editor/set-fade-out-length +
    • Editor/set-loop-from-edit-range +
    • Editor/set-loop-from-region +
    • Editor/set-playhead +
    • Editor/set-punch-from-edit-range +
    • Editor/set-punch-from-region +
    • Editor/set-region-sync-position +
    • Editor/set-tempo-from-edit-range +
    • Editor/set-tempo-from-region +
    • Editor/show-editor-mixer +
    • Editor/Smpte24 +
    • Editor/Smpte25 +
    • Editor/Smpte30 +
    • Editor/Smpte30drop +
    • Editor/Smpte60 +
    • Editor/Smpte2997 +
    • Editor/Smpte5994 +
    • Editor/Smpte2997drop +
    • Editor/Smpte23976 +
    • Editor/Smpte24976 +
    • Editor/snap-magnetic +
    • Editor/snap-normal +
    • Editor/SnapMode +
    • Editor/SnapTo +
    • Editor/Solo +
    • Editor/split-region +
    • Editor/start-range +
    • Editor/step-tracks-down +
    • Editor/step-tracks-up +
    • Editor/Subframes +
    • Editor/Subframes100 +
    • Editor/Subframes80 +
    • Editor/tab-to-transient-backwards +
    • Editor/tab-to-transient-forwards +
    • Editor/temporal-zoom-in +
    • Editor/temporal-zoom-out +
    • Editor/Timecode +
    • Editor/toggle-auto-xfades +
    • Editor/toggle-edit-mode +
    • Editor/toggle-fade-out-active +
    • Editor/toggle-fade-out-active +
    • Editor/toggle-follow-playhead +
    • Editor/toggle-internal-edit +
    • Editor/toggle-rhythm-ferret +
    • Editor/toggle-xfades-active +
    • Editor/toggle-xfades-visible +
    • Editor/toggle-zoom +
    • Editor/ToggleGeneric MIDISurface +
    • Editor/ToggleGeneric MIDISurfaceFeedback +
    • Editor/ToggleGeneric MIDISurfaceSubMenu +
    • Editor/ToggleMeasureVisibility +
    • Editor/ToggleWaveformsWhileRecording +
    • Editor/ToggleWaveformVisibility +
    • Editor/track-record-enable-toggle +
    • Editor/trim-back +
    • Editor/trim-from-start +
    • Editor/trim-front +
    • Editor/trim-to-end +
    • Editor/undo +
    • Editor/View +
    • Editor/zoom-to-region +
    • Editor/zoom-to-region-both-axes +
    • Editor/zoom-to-session +
    • Editor/ZoomFocus +
    • JACK/JACK +
    • JACK/JACKDisconnect +
    • JACK/JACKReconnect +
    • JACK/JACKLatency32 +
    • JACK/JACKLatency64 +
    • JACK/JACKLatency128 +
    • JACK/JACKLatency256 +
    • JACK/JACKLatency512 +
    • JACK/JACKLatency1024 +
    • JACK/JACKLatency2048 +
    • JACK/JACKLatency4096 +
    • JACK/JACKLatency8192 +
    • Main/AddTrackBus +
    • Main/AudioFileFormat +
    • Main/AudioFileFormatData +
    • Main/AudioFileFormatHeader +
    • Main/CleanupUnused +
    • Main/FlushWastebasket +
    • Main/Close +
    • Main/ControlSurfaces +
    • Main/Export +
    • Main/ExportRangeMarkers +
    • Main/ExportSelection +
    • Main/ExportSession +
    • Main/Help +
    • Main/KeyMouse Actions +
    • Main/Metering +
    • Main/MeteringFallOffRate +
    • Main/MeteringHoldTime +
    • Main/New +
    • Main/Open +
    • Main/Options +
    • Main/Recent +
    • Main/SaveTemplate +
    • Main/Session +
    • Main/Snapshot +
    • Main/TransportOptions +
    • Main/Windows +
    • MouseMode/set-mouse-mode-gain +
    • MouseMode/set-mouse-mode-object +
    • MouseMode/set-mouse-mode-range +
    • MouseMode/set-mouse-mode-timefx +
    • MouseMode/set-mouse-mode-zoom +
    • options/DoNotRunPluginsWhileRecording +
    • options/FileDataFormat24bit +
    • options/FileDataFormatFloat +
    • options/FileHeaderFormatBWF +
    • options/FileHeaderFormatCAF +
    • options/FileHeaderFormatWAVE +
    • options/FileHeaderFormatWAVE64 +
    • options/GainReduceFastTransport +
    • options/InputAutoConnectManual +
    • options/InputAutoConnectPhysical +
    • options/LatchedRecordEnable +
    • options/LatchedSolo +
    • options/MeterFalloffFast +
    • options/MeterFalloffFaster +
    • options/MeterFalloffFastest +
    • options/MeterFalloffMedium +
    • options/MeterFalloffOff +
    • options/MeterFalloffSlow +
    • options/MeterFalloffSlowest +
    • options/MeterHoldLong +
    • options/MeterHoldMedium +
    • options/MeterHoldOff +
    • options/MeterHoldShort +
    • options/OutputAutoConnectManual +
    • options/OutputAutoConnectMaster +
    • options/OutputAutoConnectPhysical +
    • options/RegionEquivalentsOverlap +
    • options/SendMMC +
    • options/SendMTC +
    • options/ShowSoloMutes +
    • options/SoloInPlace +
    • options/SoloViaBus +
    • options/StopPluginsWithTransport +
    • options/StopRecordingOnXrun +
    • options/StopTransportAtEndOfSession +
    • options/UseExternalMonitoring +
    • options/UseHardwareMonitoring +
    • options/UseMMC +
    • options/UseSoftwareMonitoring +
    • options/VerifyRemoveLastCapture +
    • redirectmenu/activate +
    • redirectmenu/activate_all +
    • redirectmenu/clear +
    • redirectmenu/copy +
    • redirectmenu/cut +
    • redirectmenu/deactivate +
    • redirectmenu/deactivate_all +
    • redirectmenu/deselectall +
    • redirectmenu/edit +
    • redirectmenu/newinsert +
    • redirectmenu/newplugin +
    • redirectmenu/newsend +
    • redirectmenu/paste +
    • redirectmenu/rename +
    • redirectmenu/selectall +
    • RegionList/RegionListSort +
    • RegionList/RegionListSort +
    • RegionList/rlAudition +
    • RegionList/rlHide +
    • RegionList/rlRemove +
    • RegionList/rlShowAll +
    • RegionList/rlShowAuto +
    • RegionList/SortAscending +
    • RegionList/SortByRegionEndinFile +
    • RegionList/SortByRegionLength +
    • RegionList/SortByRegionName +
    • RegionList/SortByRegionPosition +
    • RegionList/SortByRegionStartinFile +
    • RegionList/SortByRegionTimestamp +
    • RegionList/SortBySourceFileCreationDate +
    • RegionList/SortBySourceFileLength +
    • RegionList/SortBySourceFileName +
    • RegionList/SortBySourceFilesystem +
    • RegionList/SortDescending +
    • ShuttleActions/SetShuttleUnitsPercentage +
    • ShuttleActions/SetShuttleUnitsSemitones +
    • Snap/snap-to-asixteenthbeat +
    • Snap/snap-to-bar +
    • Snap/snap-to-beat +
    • Snap/snap-to-cd-frame +
    • Snap/snap-to-edit-cursor +
    • Snap/snap-to-eighths +
    • Snap/snap-to-frame +
    • Snap/snap-to-mark +
    • Snap/snap-to-minutes +
    • Snap/snap-to-quarters +
    • Snap/snap-to-region-boundary +
    • Snap/snap-to-region-end +
    • Snap/snap-to-region-start +
    • Snap/snap-to-region-sync +
    • Snap/snap-to-seconds +
    • Snap/snap-to-smpte-frame +
    • Snap/snap-to-smpte-minutes +
    • Snap/snap-to-smpte-seconds +
    • Snap/snap-to-thirds +
    • Snap/snap-to-thirtyseconds +
    • Transport/focus-on-clock +
    • Transport/Forward +
    • Transport/GotoEnd +
    • Transport/GotoStart +
    • Transport/GotoZero +
    • Transport/Loop +
    • Transport/PlaySelection +
    • Transport/Record +
    • Transport/record-roll +
    • Transport/Rewind +
    • Transport/ToggleAutoInput +
    • Transport/ToggleAutoPlay +
    • Transport/ToggleAutoReturn +
    • Transport/ToggleClick +
    • Transport/TogglePunchIn +
    • Transport/TogglePunchOut +
    • Transport/ToggleRoll +
    • Transport/ToggleRollForgetCapture +
    • Transport/ToggleRollMaybe +
    • Transport/ToggleTimeMaster +
    • Transport/ToggleVideoSync +
    • Transport/TransitionToReverse +
    • Transport/TransitionToRoll +
    • Zoom/zoom-focus-center +
    • Zoom/zoom-focus-edit +
    • Zoom/zoom-focus-left +
    • Zoom/zoom-focus-playhead +
    • Zoom/zoom-focus-right +
    +
    +
    +

    Devices using Mackie/Logic Control Protocol

    +

    Devices using Mackie/Logic Control Protocol

    +

    This will walk you through the process of configuring and using a MIDI control surface with Ardour that uses the Mackie Control protocol or the Logic Control protocol. Devices that have been tested and are known to work include the SSL Nucleus, Mackie Control Pro (plus extenders), Behringer devices in Mackie/Logic mode, and Steinberg CMC devices.

    +

    See the bottom of this page for links to device-specific information.

    +

    Preparing your device for use with Ardour

    +

    Each interface model probably has some necessary setup so it's in the state Ardour expects to identify it. See your control surface page to see what's necessary. If there is no page about your control surface, create one!

    +

    Preparation

    +

    Please see the platform specific pages for:

    + +

    Enabling Mackie Control in Ardour

    +

    Navigate to Edit > Preferences > User Interaction. Double-click on "Mackie Control" to see the setup dialog:

    +

    Mackie Control Setup Dialog

    +

    From the selector at the top, choose the type of device you are using. (What do do if your device is not listed).

    +

    Once your setup is complete, click "OK" to close the dialog. Now click on the enable checkbox for "Mackie Control".

    +

    Connecting control surface and Ardour MIDI ports

    +

    If you are using a device that uses ipMIDI such as the SSL Nucleus, no MIDI port connections are required - Ardour and your control surface will be able to talk to each other automatically.

    +

    If you are using a device that uses "normal" MIDI (via a standard MIDI or USB cable), you need to connect Ardour's Mackie Control ports to the MIDI ports corresponding to the control surface.

    +

    Now that you have both control surface and Ardour MIDI ports available, cross connect the control surface MIDI ports and the two mackie ports.

    +

    Once you have made these connections once, Ardour will recreate them when it is started in the future (as long as you leave Mackie Control enabled as a control protocol).

    +

    Customizing your control surface

    +

    Every possible Mackie Control button can be bound to any action present in Ardour's GUI.

    +

    Please check your control surface page for suggestions.

    +
    +

    Behringer devices in Mackie/Logic Control Mode

    +

    No special setup is required.

    +
    +
    +

    Mackie Control Setup on Linux

    +

    Devices using ipMIDI

    +

    If you are using a device like the SSL Nucleus that uses ipMIDI, no set up is required other than to ensure that your control surface and computer are both connected to the same network.

    +

    Devices using conventional MIDI

    +

    Before attempting to use a Mackie Control device that communicates via a standard MIDI cable or a USB cable, you should ensure that your Linux MIDI environment is setup.

    +
    +
    +

    SSL Nucleus

    +
    +
    +
    +

    MIDI Binding Maps

    +

    MIDI Binding Maps

    +

    +Ardour 2.X supported MIDI learning for more or less any control. This was a nice feature that quite a few other DAWs have now provided, but it didn't allow Ardour to work "out of the box" with sensible defaults for existing commercial MIDI controllers. In Ardour 3 and later versions, we have augmented the MIDI learn feature with the ability to load a MIDI binding map for a given controller, which can set up an arbitrary number of physical controls with anything inside Ardour that can be controlled. At this time, these binding maps need to be created with a text editor, but we currently have presets for

    +
      +
    • Behringer BCF 2000 +
    • Korg_nanoKONTROL +
    • M-Audio Oxygen 8 v2 +
    • Roland SI-24 +
    • Behringer DDX3216 +
    • M-Audio Axiom 25 +
    +

    +

    +MIDI binding maps are accessible by double clicking on the "Generic MIDI" line in the Control Surfaces tab of the Ardour preferences dialog. Ardour will retain your chosen map after you choose one. +

    +

    +The information below describes in great detail how to create a new MIDI binding map.

    +

    The Basic Concept

    +

    +Since the beginning of time (well, sometime early in the 2.X series), Ardour has had the concept of identifying each track and bus with a remote control ID. This ID uniquely identifies a track or bus so that when messages arrive from elsewhere (MIDI or OSC), we can determine which track or bus they are intended to control. Ardour has a number of ways of assigning remote control IDs, but they don't really matter very much when creating MIDI binding maps, so we won't discuss that here. You just need to know that there is a "first track" and its remote control ID is 1, and so on. +

    +

    Getting Started

    +

    +MIDI bindings are stored in files with the suffix ".map" attached to their name. The minimal content looks like this:

    +
    +<?xml version="1.0" encoding="UTF-8"?>
    +<ArdourMIDIBindings version="1.0.0" name="The name of this set of bindings">
    +</ArdourMIDIBindings>
    +

    So, to start, create a file with that as the initial contents. +

    +

    Finding out what your MIDI control surface sends

    +

    +This is the most complex part of the job, but its still not very hard. You need to connect the control surface to an application that will show you the information that the device sends each time you modify a knob, slider, button etc. There are a variety of such applications (notably gmidimon and kmidimon, but you can actually use Ardour for this if you want. Start Ardour in a terminal window, connect MIDI ports up, and in the Preferences window, enable "Trace Input" on the relevant MIDI port. A full trace of the MIDI data received will show up in the terminal window. (Note: in Ardour3, you get a dedicated, custom dialog for this kind of tracing) +

    +

    Types of Bindings

    +

    +There are two basic kinds of bindings you can make between a MIDI message and something inside Ardour. The first is a binding to a specific parameter of a track or bus. The second is a binding to a function that will change Ardour's state in some way. +

    +

    Binding to Track/Bus controls

    +

    +A track/bus binding has one of two basic structures

    +
    +  <Binding msg specification  uri="... control address ..."/>
    +  <Binding msg specification  function="... function name ..."/>
    +

    Message specifications

    +

    +You can create a binding for either 3 types of channel messages, or for a system exclusive ("sysex") message. A channel message specification looks like this:

    +
    +   <Binding channel="1" ctl="13" ....
    +

    This defines a binding for a MIDI Continuous Controller message involving controller 13, arriving on channel 1. There are 16 MIDI channels, numbered 1 to 16. Where the example above says ctl, you can alternatively use note (to create binding for a Note On message) or pgm (to create a binding for a Program Change message). +

    +

    +You can also bind sysex messages:

    +
    +  <Binding sysex="f0 0 0 e 9 0 5b f7" ....
    +  <Binding sysex="f0 7f 0 6 7 f7" ....
    +

    The string after the sysex= part is the sequence of MIDI bytes, as hexadecimal values, that make up the sysex message. +

    +

    +Finally, you can bind a totally arbitrary MIDI message:

    +
    +  <Binding msg="f0 0 0 e 9 0 5b f7" ....
    +  <Binding msg="80 60 40" ....
    +

    The string after the msg= part is the sequence of MIDI bytes, as hexadecimal values, that make up the message you want to bind. Using this is slightly less efficient than the other variants shown above, but is useful for some oddly designed control devices. +

    +

    Control address

    +

    +A control address defines what the binding will actually control. There are quite a few different things that can be specified here:

    +

    +
    /route/gain
    +
    the gain control ("fader") for the track/bus
    +
    /route/solo
    +
    a toggleable control for solo (and listen) of the track/bus
    +
    /route/mute
    +
    a toggleable control to mute/unmute the track/bus
    +
    /route/recenable
    +
    a toggleable control to record-enable the track
    +
    /route/panwidth
    +
    interpreted by the track/bus panner, should control image "width"
    +
    /route/pandirection
    +
    interpreted by the track/bus panner, should control image "direction"
    +
    /route/plugin/parameter
    +
    the Mth parameter of the Nth plugin of a track/bus

    +
    /route/send/gain
    +
    the gain control ("fader") of the Nth send of a track/bus
    +
    +

    Each of the specifications needs an address, which takes various forms too. For track-level controls (solo/gain/mute/recenable), the address is one the following:

    +
    +
    a number, eg. "1"

    +
    identifies a track or bus by its remote control ID

    +
    B, followed by a number

    +
    identifies a track or bus by its remote control ID within the current bank (see below for more on banks)

    +
    one or more words

    +
    identifies a track or bus by its name

    +
    +
    +

    For send/insert/plugin controls, the address consists of a track/bus address (as just described) followed by a number identifying the plugin/send (starting from 1). For plugin parameters, there is an additional third component: a number identifying the plugin parameter number (starting from 1). +

    +

    +One additional feature: for solo and mute bindings, you can also add momentary="yes" after the control address. This is useful primarily for NoteOn bindings - when Ardour gets the NoteOn it will solo or mute the targetted track or bus, but then when a NoteOff arrives, it will un-solo or un-mute it. +

    +

    Bindings to Ardour "functions"

    +

    +Rather than binding to a specific track/bus control, it may be useful to have a MIDI controller able to alter some part of Ardour's state. A binding definition that does this looks like this:

    +
    +  <Binding channel="1" note="13" function="transport-roll"/>
    +

    In this case, a NoteOn message for note number 13 (on channel 1) will start the transport rolling. The following function names are available: +

    +
    +
    transport-stop

    +
    stop the transport

    +
    transport-roll

    +
    start the transport "rolling"

    +
    transport-zero

    +
    move the playhead to the zero position

    +
    transport-start

    +
    move the playhead to the start marker

    +
    transport-end

    +
    move the playhead to the end marker

    +
    loop-toggle

    +
    turn on loop playback

    +
    rec-enable

    +
    enable the global record button

    +
    rec-disable

    +
    disable the global record button

    +
    next-bank

    +
    Move track/bus mapping to the next bank (see Banks below)

    +
    prev-bank

    +
    Move track/bus mapping to the previous bank (see Banks below)
    +
    +

    Binding to Ardour "actions"

    +

    +You can also bind a sysex or arbitrary message to any of the items that occur in Ardour's main menu (and its submenus). The best place to look for the (long) list of how to address each item is in your keybindings file, which will contain lines that look like this:

    +
    +(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "equal")
    +

    To create a binding between an arbitrary MIDI message (we'll use a note-off on channel 1 of MIDI note 60 (hex) with release velocity 40 (hex)), the binding file would contain:

    +
    +   <Binding msg="80 60 40" action="Editor/temporal-zoom-in"/>
    +

    The general rule, when taken an item from the keybindings file and using it in a MIDI binding is to simply strip the <Action> prefix of the second field in the keybinding definition. +

    +

    Banks and Banking

    +

    +Because many modern control surfaces offer per-track/bus controls for far fewer tracks & busses than many users want to control, Ardour offers the relatively common place concept of "banks". Banks to allow you to relatively easily control any number of tracks and/or busses regardless of how many faders/knobs etc. your control surface has. To use banking, the control addresses must be specified using the bank relative format mentioned above ("B1" to identify the first track of a bank of tracks, rather than "1" to identify the first track). +

    +

    +One very important extra piece of information is required to use banking: an extra line near the start of the list of bindings that specifies how many tracks/busses to use per bank. If the device has 8 faders, then 8 would be a sensible value to use for this. The line looks like this:

    +
    +   <DeviceInfo bank-size="8"/>
    +

    In addition, you probably want to ensure that you bind something on the control surface to the next-bank and prev-bank functions, otherwise you and other users will have to use the mouse and the GUI to change banks, which rather defeats the purpose of the bindings. +

    +

    A Complete (though muddled) Example

    +
    +<?xml version="1.0" encoding="UTF-8"?>
    +<ArdourMIDIBindings version="1.0.0" name="pc1600x transport controls">
    +  <DeviceInfo bank-size="16"/>
    +  <Binding channel="1" ctl="1"   uri="/route/gain B1"/>
    +  <Binding channel="1" ctl="2"   uri="/route/gain B2"/>
    +  <Binding channel="1" ctl="3"   uri="/route/send/gain B1 1"/>
    +  <Binding channel="1" ctl="4"   uri="/route/plugin/parameter B1 1 1"/>
    +  <Binding channel="1" ctl="6"   uri="/bus/gain master"/>
    +
    +  <Binding channel="1" note="1"  uri="/route/solo B1"/>
    +  <Binding channel="1" note="2"  uri="/route/solo B2" momentary="yes"/>
    +
    +  <Binding channel="1" note="15"  uri="/route/mute B1" momentary="yes"/>
    +  <Binding channel="1" note="16"  uri="/route/mute B2" momentary="yes"/>
    +
    +  <Binding sysex="f0 0 0 e 9 0 5b f7" function="transport-start"/>
    +  <Binding sysex="f0 7f 0 6 7 f7" function="rec-disable"/>
    +  <Binding sysex="f0 7f 0 6 6 f7" function="rec-enable"/>
    +  <Binding sysex="f0 0 0 e 9 0 53 0 0 f7" function="loop-toggle"/>
    +
    +  <Binding channel="1" note="13" function="transport-roll"/>
    +  <Binding channel="1" note="14" function="transport-stop"/>
    +  <Binding channel="1" note="12" function="transport-start"/>
    +  <Binding channel="1" note="11" function="transport-zero"/>
    +  <Binding channel="1" note="10" function="transport-end"/>
    +</ArdourMIDIBindings>
    +

    +

    +Please note that channel, controller and note numbers are specified as decimal numbers in the ranges 1-16, 0-127 and 0-127 respectively (the channel range may change at some point) +

    +
    +
    +
    + + + diff --git a/export.rb b/export.rb new file mode 100644 index 0000000..b3e58d7 --- /dev/null +++ b/export.rb @@ -0,0 +1,229 @@ +require 'nokogiri' +require 'fileutils' +require 'open-uri' + +URL = 'http://ardour.org/book/export/html/5848' +FILENAME = 'drupal-export.html' + +WRITE = true +DOWNLOAD_FILES = false +GET_ARDOUR_ORG_IMAGES = false +HANDLE_OTHER_IMAGES = false + +OUTPUT_DIR = '_manual' + +FILES_DIR = 'source' + +SLUG_MAPPINGS = { + 'working_with_sessions' => 'sessions', + 'export_stem' => 'export', + 'track_groups' => 'track_bus_groups', + 'vst_support' => 'windows_vst', + 'kbd_default' => 'default_bindings', + 'midistep_entry' => 'midi_step_entry', + 'midi_stepentry' => 'midi_step_entry' +} + +MISSING_SLUGS = %w( + range_selection + track_templates + track_template + color_dialog + region_layering + round_robin_inputs + mcp_osx + mcp_new_device +) + +FILES_MAPPINGS = { + '/files/a3_mnemonic_cheatsheet.pdf' => '/files/ardour-2.8.3-bindings-x.pdf', + '/files/a3_mnemonic_cheat_sheet_osx.pdf' => '/files/ardour-2.8.3-bindings-osx-a4.pdf' +} + +LINK_SLUG_TO_NODE_ID = {} + +def link_slug_to_node_id(slug) + + slug = SLUG_MAPPINGS[slug] || slug + + return nil if MISSING_SLUGS.include? slug + + LINK_SLUG_TO_NODE_ID[slug] ||= begin + filename = "tmp/slug-to-node/#{slug}" + + if File.exists? filename + File.read(filename).to_i + else + url = "http://ardour.org/manual/#{slug}" + puts "opening #{url}" + node_id = Nokogiri(open(url)).at('#content .node')['id'].sub(/^node\-/,'').to_i + File.open(filename,'w+') { |f| f << node_id } + node_id + end + end +end + + +def register_node(node_id, path) + filename = "tmp/node-to-path/#{node_id}" + File.open(filename,'w+') { |f| f << path } unless File.exists? filename +end + +def node_id_to_path!(node_id) + filename = "tmp/node-to-path/#{node_id}" + return '' unless File.exists? filename + #raise "no path for node-id #{node_id}" unless File.exists? filename + File.read(filename) +end + +def process(html, level = 1, path = [], numbered_path = []) + html.search("div.section-#{level}").each_with_index do |child, i| + + title = child.at('h1.book-heading').inner_text + + node_id = child['id'].sub(/^node\-/,'') + + + slug = title.downcase.gsub(' ','-').gsub(/[^a-z0-9\-]/, '') + + root = slug == 'the-ardour3-manual' + + if root + + # top level + + this_path = [] + this_numbered_path = [] + else + numbered_slug = "%02d_%s" % [i + 1, slug, node_id] + + this_path = path + [slug] + this_numbered_path = numbered_path + [numbered_slug] + end + + register_node node_id, this_path.join('/') + + indent = ' ' * level * 3 + + has_children = child.search("div.section-#{level + 1}").length > 0 #&& possible_children.any? { |child| child.search('div').length > 0 } + + output_dir = "#{OUTPUT_DIR}/#{this_numbered_path.join('/')}" + + output_file = case + when root + "#{OUTPUT_DIR}/blah.html" + #when has_children + # "#{output_dir}/index.html" + else + "#{output_dir}.html" + end + + content = child.dup + + content.search('h1.book-heading').remove + content.search("div.section-#{level + 1}").remove + + if heading = content.at('h2') and heading.inner_text == title + heading.remove + end + + #puts "processing links in [#{this_path.join('/')}]" + + content.search('a').each do |a| + href = a['href'] + case href + when /^\/manual\/(.*)/ + slug = $1 + if node_id = link_slug_to_node_id(slug) + link_path = node_id_to_path! node_id + #puts " link slug [#{slug}] -> #{node_id} -> #{link_path}" + a['href'] = "/#{link_path}" + else + a['href'] = "/missing" + end + + when /^(\/files\/.*)/ + + if DOWNLOAD_FILES + file_path = $1 + + + if FILES_MAPPINGS[file_path] + file_path = FILES_MAPPINGS[file_path] + a['href'] = file_path + end + + puts "downloading [#{file_path}] (for #{this_path.join('/')})" + + filename = "#{FILES_DIR}/#{file_path}" + FileUtils.mkdir_p File.dirname(filename) + File.open(filename,'w+') { |f| f << open("http://ardour.org/#{file_path}").read } + end + end + end + + content.search('img').each do |img| + + src = img['src'] + + case src + when /^\// + if GET_ARDOUR_ORG_IMAGES + url = "http://ardour.org#{src}" + puts "getting #{url}" + img_path = "#{FILES_DIR}#{src}" + FileUtils.mkdir_p File.dirname(img_path) + File.open(img_path, 'w+') { |f| f << open(url).read } + end + when /^http/ + new_src = '/' + src.sub(/^http:\/\/[^\/]+\//,'') + img['src'] = new_src + + if HANDLE_OTHER_IMAGES + puts "new_src: #{new_src}" + img_path = "#{FILES_DIR}#{new_src}" + FileUtils.mkdir_p File.dirname(img_path) + puts "getting #{src}" + File.open(img_path, 'w+') { |f| f << open(src).read } + end + end + + end + + if WRITE + FileUtils.mkdir_p output_dir if has_children + File.open(output_file, 'w:UTF-8') do |f| + f << <<-HTML +--- +layout: default +title: #{title} +--- + +#{content.inner_html} + HTML + + if has_children + f << <<-HTML +{% children %} + HTML + end + + + end + end + + process(child, level + 1, this_path, this_numbered_path) + end +end + + +unless File.exists?(FILENAME) + puts "downloading #{URL} to #{FILENAME}" + File.open(FILENAME,'w+') { |f| f << open(URL).read } +end + +FileUtils.mkdir_p('tmp/node-to-path') +FileUtils.mkdir_p('tmp/slug-to-node') + +process Nokogiri(File.read(FILENAME)) + diff --git a/source/_layouts/bootstrap.html b/source/_layouts/bootstrap.html new file mode 100644 index 0000000..c491671 --- /dev/null +++ b/source/_layouts/bootstrap.html @@ -0,0 +1,84 @@ +--- +bootstrap_path: /bootstrap-2.2.2 +page_title: The Ardour Manual +--- + + + + + + + + {{page.page_title}} + + + + + + + + + + + + + +
    +
    +
    +

    The Ardour Manual

    + {% tree %} +
    +
    +

    {{ page.title }}

    + {{ content }} +
    +
    +
    + + + + + diff --git a/source/_layouts/default.html b/source/_layouts/default.html new file mode 100644 index 0000000..8a79e18 --- /dev/null +++ b/source/_layouts/default.html @@ -0,0 +1,5 @@ +--- +layout: bootstrap +--- + +{{content}} \ No newline at end of file diff --git a/source/ardour/manual/html/diagrams/ardour-monitoring.png b/source/ardour/manual/html/diagrams/ardour-monitoring.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad0e5e4080894dc8600a4d1b7c3d96d4b6d9121 GIT binary patch literal 7650 zcmd^k`9GBJ_y5e;cVi2M8hhC%OBAvuWl5BMkVzq99gJm2Wf^*-Fin<5N?|O6FlgkJ zs6qBDGe$yL#*}4b{mkqA!}o{p51)VFb3Y#Ua?XA3>zw;K=X##&I#-61gRKz1EI$AM z5VE^ubqxRj+OVG&dAZrwH|-j4**DHe3%l#Q>?48qRyv#JLtJu?WXn(ddjc)gaItKr zOqBJ_D3>sJ6w)su5P(D?weH*tjtuZa1Zssv+{Q7^%K`v$zIIj@ug5-LqoQKHql?#n zvkdL>i_fYznyZHfrGPY>MpMhuPu^&<9^y!qdTgA@qX~T+i<`HnH5dik)M(+$-*!Y6HQw0^_=}>&aD>1QjXK7fS#qmk;wxT z8ealei`M9Qj-3k9yENHZ;dbHct$X74x4JTVdtINf_TA_s0C)^?9rnj%4p91C6>UaFNvjvD~3sjyi37RcPF#Gg+6> z*@pXN0;E)9ex~(r_|cO2YC0TX#Uy0Q-qcsUnWu(FL~=#kmnqT3S{`8oqGdPgXpJ%5 zy>XvHK@%fJcm~16MxQm$9Q#LzJT&+BuXz==*kV+#cxFWv0x9>gTix@_@JM+7E3i`- zuXCEqBVb*B@j|kkG>(<%8e3yhVJ_}`^W8@uLp-|XGpa+cnXuiy6gU^mQ8!L~2XuUd zmIVKDb~c*JGZ{$`LFhV(cWN(W|EDj}cbVai56ImBQbKaDa=9oo!+KIJ@EIi}6D#@X zSJ;3jZB^&UBxQj?YkwRqFBM#t{}HC_u=#pbvXg)4r&?co4sgl z@duyzk-qofku!-ESUH~d$Ca*sPYm5#{cCkQJ1mCf21S`5)Q0LmEcLIt%F{JvMK~9 zDDn4@W)38wIIa`iqiuVOX{NSdnTr(ahaUVmg-GX<>{ART(0=22D#QNfq_7D-*5#Od1^wgAs((umt#9fjg6Ze*ei?FnwlCS zadNdNGc&VkZEel5skzzoVpQDK=64I}=}MZvVP}cq0iSX@bo2YX>R?@|nONv;ss19} z`&U%D?X^4pSsts3`}yLL>_m+x>vCk|#>Y840-QUlB#VK^SXf(s9R9npbR+3^mam4k zw)X5&Ba4O#+eXdq`Pdua4u%<2QW$M14Fch_*O2b7#^dq+TX^fNw}Ym8tETYz-S)BmndY7?#ox*XsS)DX~*Ng`*`nYLhjfp zN%ya6Dl01s5ZeEI&O97238S4i`TdW$s-&c3qCv(KyP5p!S-(d|989w713qn=1{w~S zthZ;ref#$BeXsoVOQlL;7*|)<^%Cgq0rE9)k$$jLadEM#5d10xlK6C#u-P8)SZ)WF zIyN>I6%!*bvFjuOmbqrf72p~W5U?)JutcFuyuH0Yu2L=ErT6~ll9IHEv2pX*__%QF zp?>hVlaCL>PeU4=8{g6le3zO50;`uYd!&q);( z52nN3%fYB+$5bH0Ja*m$7ii$;Csf~~-HAJ4Ve5&@=VuSM-(mFv`O{vwTU$N!xYpG| zV0$)ndv#L7qcMGPana{C0?BBZ7xqc`ZJl#&v1owJWArphf$hBfyIP`G#v5vrwyH44 z4RanRZI++k8gJ*TIpE@x(Cwf^~h z=I^}1QE$_PPZm};a`6g$;JKYjzF+?{{c4|%XIF6s^@uqOtX#JTz3Zsi|p|)`4=oB%ioB^rWD3==MM7mY$Ea z2Tu^(83cqx?y17-S-E+6c|y_A(Wun=%F6URBd>Hrr_L_+l+i7@Rn>TDZF#--D4UAIGP^ zRH=ti;KW*j=R3kIvUYT0VxEy~k5>Wbc3z6u8I8sngf6of2ygG=ca4odWo^KASMgmf zfnN%A4~p;1_hgeyOiaf7CD_A227{A5ejGX(a`Z5hR_ABQ)ArEW>e`c=I&G*M?(Xj0 z&7sq~`o8RjUce-BC6p)qZ&8YLal5F#fgCxL&qHfyNFLtmzAmo+u*R&bC3r%MQr%6( ziD}sX+k@Nzk&%&C*>P4XqBlM7W#S;?IpyTWL z$u)ypvF_f%?v`9)aZ6`s$@ccPzMYg3q)!KGPkPvucT-iYi`{i?-#Z=J+5Nd)P*6~q zr*Vk}gD(Lq%$4heDkE6Fs*MCOx@_4PwbssGE^cL)-)W6;L#b6h?mpHPWCk*&J&yZ~ z4o+EPBqd&J60#cB?Aa0$5?V+si9OhLi?WHoR5S^;nhP%_9f2xADk@E#U)6g<&7-fa z^lm7^c15dgX$Wq_D{S`qiXel=J;Qayq53WG@>ywWM@>shEYi}_vh>w#dt9WHcel}X z2d+P!8zO*dai81oO(bPbZc)x|en#)1vv$wTI)#cK0S@IFQ(p zt~cs`; ziZy?jj+NtF1u!@X97%aBnk4y!)wEL+>1dSl7R?fq>%_`?j>}k0&q%{6NE6t}r4)BY zQY*HYYhN6}hmdAQ({q^ne8}WDoupSUkrhCnUtgLqY?y9rZq5NlwGN0PST^)q`1vf6 zqDe8RiBbCj2P}hRX4jaKG(+_T-c7OmaPPM^TE@>E33?55NBVMmiRP$VNO(A=O&Bt& zaaVHh&9BFW4DoCFyp`N=o6(0Uyli(CFnLO-O_1 z5O77GxbHo$04fC~iJX`5A#uejh4`Y{qy=BZwv&zqsD+>-Fs+Tx2z)X`AOJ0f^u4-C zD&d)`wn$2K(p6}qA|}nPCY249w6{XKMS8ta?*8> zgW0G(4dyRqyM7q>H+2k-JPKf()9I%ObLB*^V`PwY;~m{WkR9*}l9 znOA5mZ@7VKNY>xhuVB<+18JQyJ+SThz3bc1(C-LeLSS`ORr$-8w_Jv|dgYJxXw|j= zi#QtVS*Hq4yV*Rw=U`fxV_5<9Z)s3Ob{1?C?A-vFN$X-)T-h2Dg@9%wowU~;D z&~J4wYTjj7@H7QKDwEH+0yGVSw}#Ts!sgBd1>6moKwr z_9+||RWSDSM9Rl3!!T_0oFRt-rw;KN6s3TWuhVEW&JkF_iN8|7;fAOr^rQX|x7c4l zh;t{BfsWxFVu`KwFiy6?*Y43_^jJK#GMe0KRWop;bhp3wQWT%_;VZ8Tth1F4uHqZcAmG1C;U#dv5pp|RK-KRe?UF#r7X{s1SrYgu` z2JLAS$|6uzRBpIMwLM0P>42Z@x=&UogUM4f`VD@L3ra9C=at_FImS)0?DL7$~kuHH5P1W^!g3@QM!^f9Qk6T;i6~MD{ z5z6}lWbOXy!3&95=}PKjFhNt>(a6t^@i-@|TWT-mF>^k>j{!tVby-iMXzq~u7K{_Y zlEUMiKu_vHgy%FH_<0`TkY$7spk=CuQRXDQ88$ zC7mvUr3EoHkVmR`M)f^CqC%QanQ{*m37XH?ZT7qi7w8r((93*~%c6zBlcB`v{?+}j z-L0FJr;o+5dZ@{_;bB~dLY4YNQp%Au<#7CAzE0U_TKlIRW)N2iH%(mr25wS{?#91~ z^i-4e@Vv9O`aB3O5MLVqZSr!Xx7Vdn?S)w8jpIFRUhuNg9hLb>0h1>C!lz^>ZbipxC}WV{8DVY7nw-DH z@VdGTUycDV(jz&VNmaM1%n2M zN1iz&a!5jUtTYU}R>@biw4||Ts{+qszuOuyTH;nO2!8$P%IqqdXVi)d<;Hbj`<0d< z$zYukN)pd`+o<{-0V-FYlOB;{(quE@RP5QIGRLY6gKw_nun(--hkoXJcTX@6nXT!7 zp}u4I-{G_pL!ZyMCr_T}qPBSeEkE*bLBYX`CbMy>zK4JKGczAv)lh=pOad`FGu5sW zL<+Ylin5m9Ey>Rj=NBGZT}Ta^olrbc$sm6HZjxRZeJuHhM=CVk=BsD-abRp1qm{&p z9&MLzMXleD{!%I4{Hv68yX5=#Yo||NZrvRIxc_&MH8k3oJ>vMjoh4&i=O=^tJCk?@ z;TikmL$J!w$qV@zsjHPt{UhBj%2b@98ZLwT&p`HFH(8X=<+EZmEtsd_g>q?Q15VX9bwmRsoS zGqCyV^=og3)BMYzFtA-IcIaEn)2S)jVJ&5Sej9LHeqa7=7w<%nkkIiFEoDhI>zA9$ zh}+cEvk@&t$?{$4dEOiDv!nl%#>)(%8sh_(9NHS(sg^VM6(65}T5K{A`SS&ISSzqs zUD}qAFLkt_eZC>4<{oCvCerp%belqcjNF6j@&Ln{n(~c9AlH2F*61;Za|;;j+a+&M z?QP++Z(Y4&jt-jcOgQ&aGS$>&inH&^1)OM|8qtDD|GYv%TS!sQ=o)9!O1-S&8{z%y zMaEm9cM5a)xysX{s__2j0|U#6>j7-4y)SZ*+Et{Bbv}+U{tJPi?gR&auPk?{AQF9x z9kbQ$>Sp%($S3XG9VaB_S&9^6W7OX`XE|GK->mFb%^SW zPW3h8hnFq8Rbtlfl~q+069_SxS)X2dUwg}zFqih`^bUhbdjFzZTRv^@MPzK ztA|HSM2}3VBk5&o8BF6O+(1OS+EWPL93_~g`{CLMw!Z*3shw`)@!aaH)kg>VBQg+f zAZ9CizJWdGsH_O&F`P{R7y7gn*(!9DI419EWpCx#mRk9>O2&evF(WBZ+*I_&m(Edr z{h{H>b3#SJ*MWg^HDY)_-Nl!#o*#q}gB~i-90Bcpt*1{PF|mXDr`MkG=cLv%6Q-yv zlKly&=h^VpZ()Kq7Zr#6o<7B#(e!SrsaVi};`kFz#2y=py=co37Rf5Oo^=I{?blRS zN8u|g)BcO`E_D(Zz2(-ucsdRMcjJF9L{XKk^|U#~Renhx8OBra()-a%`(v?L>Hnxn zTU+`6w-Uh)r(9{ab1q?0ovoB?3Rf_&Dj!t#o?Fdj5+-$%(ld1KKj+O+D0{oB*@R2W z8Lh!l{T6=kE%MC8wvE89u7!ot<7o{x)dd8?C*1TD!H$&k;uhRCP;WlT=h`*nHqzj) zi|ntfQtQ!zaGlIv@-ONCr>sj2B32HQ0B1PsWd1KU{T~v$37~`|tnQtLo^hy>&mD5; zx+&f12ZwfVM9?2GXiwo6A?4WAdYx)ek^lynBy|0yXHM_WS1=91tc;{%JfKe;X7=w+ z!VOQ#bu_RMIqg%-@$X#>cPKJXbpl4`J z@;Dnt>*Zs|sYJ_t#dOSR{vOUEcQC>LA%!qzy1|5;MB2x@19+V5B+954ayW%KlDKAm zF$RSvMU?e2)uefHv2xrAQY}x^elj>pI7`A=;}<yI4are%@$8E4bvhs24VmmH`+_||sY)3^-ysX#89k|&$F`)G(gS?Val~L8 zsjkI;(4}moK>JtmjVoZ8fyOfz%;DRKWgn>8_N0OYcnmjFoUX~B<;Glqbmyjqvt4Ff z_gpO@=9RbObF3!t9+G7;Ot8LXG)&keCvdiui(2aLNHS9zvqWVG5*Ut1u=Asa2g_i5 z))(trfPWc+LlwFY-U7EkT6!@4o)mSU@rV|l#~aN(A|`W^Yo3e&^8dwzsq)+80$p^3 zuhf&OKC0oAq? zKUzeq46S8C^Z;xHae_vMYmj(^it~~bo71L@VE=;@vy9~ENGfRgYWO3VJjCd{zz&0l zicQiyCk1c1%EymromB;_NMu4dUc*kbSWt^ikFD8ctsZ0BcftH@wRsoseMF+vPT*8i zy5McLlD%ZIGkm+bQJ`<*B3&Pue0t5o>LHYC9`L}#w^L+4a;oV^Yigwmcv8gpOosxc znm<-D)^nDOfpyeR(4qb)`Q< z4Dpbp?GTh$2+lq?;tvgecyzX;xKrQ zSmmyTEX>{i56!!ZFx+$zb|^qN%2%Wxor0R2__oUMzB2*Q6I1^;1^in;6f37igP)2V7A zKVT#|#;yVB9p+SXOI?lInlN&s&nr}cTKXrEC~ru^kpu=6thg-q`rQOK{>|f&HTksY zjNYWLgeWsCyRe{EHblMgXd;J41++$XX(fJyyKz3Zi9*4wV>K<$+I;cAf7RrYN3sgq z$1qSL5_~Z4F*hfO#mezr;c9MSBjs^{1mPX=Iw2#$Sc3_(0BPFRO+2hN9BD{=2XeJ4 z_Nqp(b~#N|a{aDq_88)B!382j%8XeLu~)e|*BOHxPvOm9DVZr}W)5`mUw18vnt5A< zDx+Bov|u2_huY|hN7R&@_OU1B3Y8=ihbJvCA|=J>Dg);b$#GMI!JXXfc#7+;iAkC z`i3`IAMR!&VIC$hGN5XlLDWnrHB+%yWFAA#{$SK{JO&8-q4`R6-UGnXmP&z#0^3oc zF)3L0o8unHS($>T0we)+p=He@jxeDwq|cO2i?ir)U+zD^3``Uo5U_y#F=}ZH>-Ee* zo~XkOQLdYsVF|Bn>yVY(w|Iu`Ar4vRS})eBh_A&jT?b;B2`Ix613KK+FK7?`?Qwh6TeCK7K{Q%cVQ|KeJp~g3&n~op<4qFBUIDah9W?89#Vw z6ls?b?EP4Powb7%!2*{0Ke{}l-~a#s literal 0 HcmV?d00001 diff --git a/source/ardour/manual/html/diagrams/editor-summary.png b/source/ardour/manual/html/diagrams/editor-summary.png new file mode 100644 index 0000000000000000000000000000000000000000..bd06ed7996690b052afdc2d3a15851f5a9b2d27a GIT binary patch literal 80980 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 EKY$u>ssI20 literal 0 HcmV?d00001 diff --git a/source/ardour/manual/html/diagrams/external-monitoring.png b/source/ardour/manual/html/diagrams/external-monitoring.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7b10b99cca3637b480fc26db081415503d873d GIT binary patch literal 7474 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 literal 0 HcmV?d00001 diff --git a/source/ardour/manual/html/diagrams/jack-monitoring.png b/source/ardour/manual/html/diagrams/jack-monitoring.png new file mode 100644 index 0000000000000000000000000000000000000000..da5664e4b6b0d2398b28698a561c98afa8ee726b GIT binary patch literal 8741 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 literal 0 HcmV?d00001 diff --git a/source/ardour/manual/html/diagrams/solo-mute.png b/source/ardour/manual/html/diagrams/solo-mute.png new file mode 100644 index 0000000000000000000000000000000000000000..7a0438041ab2def0f05588d1171f67ace9874067 GIT binary patch literal 20813 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 literal 0 HcmV?d00001 diff --git a/source/ardour/manual/html/screenshots/route-group-dialogue.png b/source/ardour/manual/html/screenshots/route-group-dialogue.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e8d02316ccd324fb1c1a030bd70c17c1001598 GIT binary patch literal 15633 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 literal 0 HcmV?d00001 diff --git a/source/ardour/manual/html/screenshots/typical-audio-track-controls.png b/source/ardour/manual/html/screenshots/typical-audio-track-controls.png new file mode 100644 index 0000000000000000000000000000000000000000..c736b02211cd1e8c3ae7d33f61fc9d579c9dfdb5 GIT binary patch literal 6143 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 RlV$(_002ovPDHLkV1k*5`i}qr literal 0 HcmV?d00001 diff --git a/source/ardour/manual/html/screenshots/typical-bus-controls.png b/source/ardour/manual/html/screenshots/typical-bus-controls.png new file mode 100644 index 0000000000000000000000000000000000000000..5189f98e6e298b0abe0cd8aa6c0d45ee07767c21 GIT binary patch literal 5089 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 DfoHc` literal 0 HcmV?d00001 diff --git a/source/bootstrap-2.2.2/css/bootstrap-responsive.css b/source/bootstrap-2.2.2/css/bootstrap-responsive.css new file mode 100644 index 0000000..a3352d7 --- /dev/null +++ b/source/bootstrap-2.2.2/css/bootstrap-responsive.css @@ -0,0 +1,1092 @@ +/*! + * Bootstrap Responsive v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +@-ms-viewport { + width: device-width; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 1170px; + } + .span12 { + width: 1170px; + } + .span11 { + width: 1070px; + } + .span10 { + width: 970px; + } + .span9 { + width: 870px; + } + .span8 { + width: 770px; + } + .span7 { + width: 670px; + } + .span6 { + width: 570px; + } + .span5 { + width: 470px; + } + .span4 { + width: 370px; + } + .span3 { + width: 270px; + } + .span2 { + width: 170px; + } + .span1 { + width: 70px; + } + .offset12 { + margin-left: 1230px; + } + .offset11 { + margin-left: 1130px; + } + .offset10 { + margin-left: 1030px; + } + .offset9 { + margin-left: 930px; + } + .offset8 { + margin-left: 830px; + } + .offset7 { + margin-left: 730px; + } + .offset6 { + margin-left: 630px; + } + .offset5 { + margin-left: 530px; + } + .offset4 { + margin-left: 430px; + } + .offset3 { + margin-left: 330px; + } + .offset2 { + margin-left: 230px; + } + .offset1 { + margin-left: 130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1156px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1056px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 956px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 856px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 756px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 656px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 556px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 456px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 356px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 256px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 156px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 56px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} + +@media (max-width: 767px) { + body { + padding-right: 20px; + padding-left: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .uneditable-input[class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + .modal { + position: fixed; + top: 20px; + right: 20px; + left: 20px; + width: auto; + margin: 0; + } + .modal.fade { + top: -100px; + } + .modal.fade.in { + top: 20px; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .media .pull-left, + .media .pull-right { + display: block; + float: none; + margin-bottom: 10px; + } + .media-object { + margin-right: 0; + margin-left: 0; + } + .modal { + top: 10px; + right: 10px; + left: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .dropdown-menu a:hover { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: #999999; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: #111111; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: none; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/source/bootstrap-2.2.2/css/bootstrap-responsive.min.css b/source/bootstrap-2.2.2/css/bootstrap-responsive.min.css new file mode 100644 index 0000000..5cb833f --- /dev/null +++ b/source/bootstrap-2.2.2/css/bootstrap-responsive.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Responsive v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */@-ms-viewport{width:device-width}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} diff --git a/source/bootstrap-2.2.2/css/bootstrap.css b/source/bootstrap-2.2.2/css/bootstrap.css new file mode 100644 index 0000000..8ab3cef --- /dev/null +++ b/source/bootstrap-2.2.2/css/bootstrap.css @@ -0,0 +1,6039 @@ +/*! + * Bootstrap v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover { + color: #356635; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover td, +.table-hover tbody tr:hover th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success td { + background-color: #dff0d8; +} + +.table tbody tr.error td { + background-color: #f2dede; +} + +.table tbody tr.warning td { + background-color: #fcf8e3; +} + +.table tbody tr.info td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus, +.dropdown-submenu:hover > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .disabled > a, +.dropdown-menu .disabled > a:hover { + color: #999999; +} + +.dropdown-menu .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #bbbbbb; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-mini .caret, +.btn-small .caret, +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -3px; +} + +.tooltip.right { + margin-left: 3px; +} + +.tooltip.bottom { + margin-top: 3px; +} + +.tooltip.left { + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + width: 236px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media .pull-left { + margin-right: 10px; +} + +.media .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/source/bootstrap-2.2.2/css/bootstrap.min.css b/source/bootstrap-2.2.2/css/bootstrap.min.css new file mode 100644 index 0000000..140f731 --- /dev/null +++ b/source/bootstrap-2.2.2/css/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover{color:#808080}.text-warning{color:#c09853}a.text-warning:hover{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover{color:#2d6987}.text-success{color:#468847}a.text-success:hover{color:#356635}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success td{background-color:#dff0d8}.table tbody tr.error td{background-color:#f2dede}.table tbody tr.warning td{background-color:#fcf8e3}.table tbody tr.info td{background-color:#d9edf7}.table-hover tbody tr.success:hover td{background-color:#d0e9c6}.table-hover tbody tr.error:hover td{background-color:#ebcccc}.table-hover tbody tr.warning:hover td{background-color:#faf2cc}.table-hover tbody tr.info:hover td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999}.dropdown-menu .disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #bbb;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#c5c5c5;border-color:rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-3px}.tooltip.right{margin-left:3px}.tooltip.bottom{margin-top:3px}.tooltip.left{margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media .pull-left{margin-right:10px}.media .pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} diff --git a/source/bootstrap-2.2.2/img/glyphicons-halflings-white.png b/source/bootstrap-2.2.2/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae GIT binary patch literal 8777 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 B7G?kd literal 0 HcmV?d00001 diff --git a/source/bootstrap-2.2.2/img/glyphicons-halflings.png b/source/bootstrap-2.2.2/img/glyphicons-halflings.png new file mode 100644 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/source/bootstrap-2.2.2/js/bootstrap.js b/source/bootstrap-2.2.2/js/bootstrap.js new file mode 100644 index 0000000..6c15a58 --- /dev/null +++ b/source/bootstrap-2.2.2/js/bootstrap.js @@ -0,0 +1,2159 @@ +/* =================================================== + * bootstrap-transition.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-alert.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT NO CONFLICT + * ================= */ + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + /* ALERT DATA-API + * ============== */ + + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery);/* ============================================================ + * bootstrap-button.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON NO CONFLICT + * ================== */ + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + /* BUTTON DATA-API + * =============== */ + + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-carousel.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.options = options + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , to: function (pos) { + var $active = this.$element.find('.item.active') + , children = $active.parent().children() + , activePos = children.index($active) + , that = this + + if (pos > (children.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activePos == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle() + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + e = $.Event('slide', { + relatedTarget: $next[0] + }) + + if ($next.hasClass('active')) return + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL NO CONFLICT + * ==================== */ + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + /* CAROUSEL DATA-API + * ================= */ + + $(document).on('click.carousel.data-api', '[data-slide]', function (e) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = $.extend({}, $target.data(), $this.data()) + $target.carousel(options) + e.preventDefault() + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-collapse.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSE PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = typeof option == 'object' && option + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSE NO CONFLICT + * ==================== */ + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + /* COLLAPSE DATA-API + * ================= */ + + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-dropdown.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + $parent.toggleClass('open') + } + + $this.focus() + + return false + } + + , keydown: function (e) { + var $this + , $items + , $active + , $parent + , isActive + , index + + if (!/(38|40|27)/.test(e.keyCode)) return + + $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + if (!isActive || (isActive && e.keyCode == 27)) return $this.click() + + $items = $('[role=menu] li:not(.divider):visible a', $parent) + + if (!$items.length) return + + index = $items.index($items.filter(':focus')) + + if (e.keyCode == 38 && index > 0) index-- // up + if (e.keyCode == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items + .eq(index) + .focus() + } + + } + + function clearMenus() { + $(toggle).each(function () { + getParent($(this)).removeClass('open') + }) + } + + function getParent($this) { + var selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.length || ($parent = $this.parent()) + + return $parent + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.dropdown + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* DROPDOWN NO CONFLICT + * ==================== */ + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(document) + .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) + .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() }) + .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle) + .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + +}(window.jQuery);/* ========================================================= + * bootstrap-modal.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + this.options.remote && this.$element.find('.modal-body').load(this.options.remote) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + , e = $.Event('show') + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.escape() + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } + + that.$element + .show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.enforceFocus() + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : + that.$element.focus().trigger('shown') + + }) + } + + , hide: function (e) { + e && e.preventDefault() + + var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + + $(document).off('focusin.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + + $.support.transition && this.$element.hasClass('fade') ? + this.hideWithTransition() : + this.hideModal() + } + + , enforceFocus: function () { + var that = this + $(document).on('focusin.modal', function (e) { + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { + that.$element.focus() + } + }) + } + + , escape: function () { + var that = this + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.modal', function ( e ) { + e.which == 27 && that.hide() + }) + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal') + } + } + + , hideWithTransition: function () { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + that.hideModal() + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + that.hideModal() + }) + } + + , hideModal: function (that) { + this.$element + .hide() + .trigger('hidden') + + this.backdrop() + } + + , removeBackdrop: function () { + this.$backdrop.remove() + this.$backdrop = null + } + + , backdrop: function (callback) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('