diff --git a/README.md b/README.md index 0383c7b2f..4cb258a3a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ![](https://github.com/Audiveris/docs/blob/master/images/SplashLogo.png) -Logo by [Katka](https://www.facebook.com/katkastreetart/) +Logo crafted by [Katka](https://www.facebook.com/katkastreetart/) # Audiveris - Open-source Optical Music Recognition @@ -23,10 +23,10 @@ via the manual editing of a few music symbols. ## Key characteristics -* Good recognition efficiency on real-world quality scores (as those seen on [IMSLP][imslp] site) +* Good recognition efficiency on real-world quality scores (as those seen on the [IMSLP][imslp] site) * Effective support for large scores (with up to hundreds of pages) * Convenient user-oriented interface to detect and correct most OMR errors -* Available on Windows, Linux and MacOS +* Available on Windows, Linux and macOS * Open source The core of engine music information (OMR data) is fully documented and made publicly available, @@ -43,28 +43,28 @@ on the dedicated [Audiveris Releases][releases] page. The goal of a release is to provide significant improvements, well tested and integrated, resulting in a software as easy as possible to install and use: - for **Windows**, an installer is provided on [Github][releases]; -The installer comes with pre-installed Tesseract OCR languages ``deu``, ``eng``, ``fra`` and ``ita``. +The installer comes with the pre-installed Tesseract OCR language ``eng``. But **it requires Java version 17** or higher to be available in your environment. -If no suitable Java version is found at runtime, a prompt will ask you install it. +If no suitable Java version is found at runtime, a prompt will remind you to install it. - for **Linux**, a flatpak package is provided on [Flathub](https://flathub.org/apps/org.audiveris.audiveris); -The package comes with pre-installed Tesseract OCR languages ``deu``, ``eng``, ``fra`` and ``ita``. +The package comes with the pre-installed Tesseract OCR language ``eng``. The needed Java environment is included in its packaging, therefore no Java installation is needed. -- for **MacOS**, unfortunately, we have nothing similar yet [^macos] +- for **macOS**, unfortunately, we have nothing similar yet [^macos] -- for now, you have to build from sources as described in the following section on [Development versions](#development-versions). -See details in the related [handbook section][installation]. +See details in the handbook [installation section][installation]. ## Development versions The Audiveris project is developed on GitHub, the site you are reading. -Any one can download, build and run this software. +Any one can clone, build and run this software. The needed tools are ``git``, ``gradle`` and a Java Development Kit (``jdk``), -as described in this [handbook section][sources]. +as described in the handbook [sources section][sources]. -There are two main branches in Audiveris project: -- the ``master`` branch is GitHub default branch; +There are two main branches in the Audiveris project: +- the ``master`` branch is the GitHub default branch; we use it for releases, and only for them; To build from this branch, you will need a ``jdk`` for Java version **17** or higher. - the ``development`` branch is the one where all developments continuously take place; @@ -75,7 +75,7 @@ See details in the [Wiki article][workflow] dedicated to the chosen development ## Further Information -Users and Developers are advised to read Audiveris [User Handbook][handbook], +Users and developers are advised to read the Audiveris [User Handbook][handbook], and the more general [Wiki][audiveris-wiki] set of articles. [^macos]: If you wish to give a hand, you are more than welcome! diff --git a/docs/_config.yml b/docs/_config.yml index 0b3b90871..d0c1fda2d 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -31,7 +31,9 @@ url: "https://audiveris.github.io" # the base hostname & protocol for your site, #twitter_username: jekyllrb github_username: hbitteur -show_excerpts: false # set to false to remove excerpts on the homepage +github: [metadata] + +show_excerpts: true # set to false to remove excerpts on the homepage include: ['_pages'] permalink: /:title/ @@ -40,7 +42,7 @@ permalink: /:title/ #theme: minima #theme: just-the-docs #remote_theme: pmarsceill/just-the-docs -remote_theme: just-the-docs/just-the-docs +remote_theme: just-the-docs/just-the-docs@v0.10.0 plugins: @@ -66,6 +68,9 @@ search_enabled: true # Set the search token separator for hyphenated-word search: search_tokenizer_separator: /[\s/]+/ +# TODO +search_button: true + # Enable or disable heading anchors heading_anchors: true @@ -74,12 +79,15 @@ aux_links: "Audiveris organization on GitHub": - "https://github.com/Audiveris" +# navigation sidebar +nav_enabled: true + # Back to top link back_to_top: true back_to_top_text: "Back to top" # Footer content appears at the bottom of every page's main content -footer_content: "Copyright © Audiveris 2024. Distributed under Affero General Public License." +footer_content: "Copyright © Audiveris 2024. Distributed under the Affero General Public License." # Color scheme currently only supports "dark" or nil (default) color_scheme: nil @@ -126,73 +134,74 @@ callouts: # --------------------------------- # Latest Audiveris version -audiveris_version: 5.3 - -# Latest Audiveris release -audiveris_release: 5.3.1 +audiveris_version: 5.4 # Needed Java version -java_version: 17 - -# Tesseract version -tesseract_version: 5.3.1 +java_version: 21 # File menu paths -file_input: File → Input +file_input: File → Input # Book menu paths -book_split: Book → Split and merge -book_parameters: Book → Set book parameters -book_transcribe: Book → Transcribe book -book_swap: Book → Swap book sheets -book_select: Book → Select sheets -book_export: Book → Export book -book_stop: Book → Stop book transcription -book_save: Book → Save book -book_close: Book → Close book +book_split: Book → Split and merge +book_parameters: Book → Set book parameters +book_transcribe: Book → Transcribe book +book_swap: Book → Swap book sheets +book_select: Book → Select sheets +book_print: Book → Print book +book_print_as: Book → Print book as +book_export: Book → Export book +book_export_as: Book → Export book as +book_sample: Book → Sample book symbols +book_stop: Book → Stop book transcription +book_save: Book → Save book +book_save_as: Book → Save book as +book_close: Book → Close book # Sheet menu paths -sheet_repetitive: Sheet → Toggle repetitive input -sheet_transcribe: Sheet → Transcribe sheet -sheet_status: Sheet → Current status -sheet_scaling: Sheet → Set scaling data -sheet_scale_plots: Sheet → Display scale plots -sheet_staves_plots: Sheet → Display staves plots -sheet_stem_plot: Sheet → Display stem plot -sheet_binary: Sheet → Display binary -sheet_nostaff: Sheet → Display no-staff +sheet_repetitive: Sheet → Toggle repetitive input +sheet_transcribe: Sheet → Transcribe sheet +sheet_status: Sheet → Current status +sheet_scaling: Sheet → Set scaling data +sheet_scale_plots: Sheet → Display scale plots +sheet_staves_plots: Sheet → Display staves plots +sheet_stem_plot: Sheet → Display stem plot +sheet_binary: Sheet → Display binary +sheet_nostaff: Sheet → Display no-staff +sheet_sample: Sheet → Sample sheet symbols # View menu paths -view_jumbos: View → Show jumbo inters -view_voices: View → Show score voices -view_errors: View → Show score errors -view_selections: View → Switch selections -view_layers: View → Switch layers -view_slots: View → Show score slots -view_annotations: View → Show annotations -view_chords: View → Show chord IDs -view_parts: View → Show part names +view_jumbos: View → Show jumbo inters +view_voices: View → Show score voices +view_errors: View → Show score errors +view_selections: View → Switch selections +view_layers: View → Switch layers +view_slots: View → Show score slots +view_annotations: View → Show annotations +view_chords: View → Show chord IDs +view_parts: View → Show part names # Tools menu paths -tools_train: Tools → Train classifier -tools_memory: Tools → Memory -tools_options: Tools → Options -tools_advanced: Tools → Advanced topics +tools_languages: Tools → Languages +tools_train: Tools → Train classifier +tools_memory: Tools → Memory +tools_constants: Tools → Constants +tools_preferences: Tools → Preferences # Help menu paths -help_handbook: Help → Handbook -help_updates: Help → Check for updates -help_about: Help → About +help_handbook: Help → Handbook +help_updates: Help → Check for updates +help_about: Help → About # Popup menu paths -popup_chords: ≡ Chords -popup_inters: ≡ Inters -popup_glyphs: ≡ Glyphs -popup_slot: ≡ Slot N° -popup_measure: ≡ Measure N° -popup_staff: ≡ Staff N° -popup_part: ≡ Part N° -popup_system: ≡ System N° -popup_page: ≡ Page N° -popup_score: ≡ Score N° -popup_extraction: ≡ Extraction +popup_chords: ≡ Chords +popup_inters: ≡ Inters +popup_glyphs: ≡ Glyphs +popup_slot: ≡ Slot N° +popup_measure: ≡ Measure N° +popup_staff: ≡ Staff N° +popup_part: ≡ Part N° +popup_system: ≡ System N° +popup_page: ≡ Page N° +popup_score: ≡ Score N° +popup_extraction: ≡ Extraction diff --git a/docs/_includes/toc_heading_custom.html b/docs/_includes/toc_heading_custom.html new file mode 100644 index 000000000..348aadcb4 --- /dev/null +++ b/docs/_includes/toc_heading_custom.html @@ -0,0 +1 @@ +

Table of Contents

\ No newline at end of file diff --git a/docs/_pages/advanced/README.md b/docs/_pages/advanced/README.md deleted file mode 100644 index bda68f556..000000000 --- a/docs/_pages/advanced/README.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: default -title: Advanced Features -nav_order: 6 -has_children: true ---- -# Advanced Features {#advanced} - -Audiveris provides a few features that are mostly interesting only for the advanced user. -They are all gathered in this chapter. diff --git a/docs/_pages/advanced/topics.md b/docs/_pages/advanced/topics.md deleted file mode 100644 index 5cb22c197..000000000 --- a/docs/_pages/advanced/topics.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: default -title: Advanced Topics -parent: Advanced Features -nav_order: 2 ---- -# Advanced Topics -{: .no_toc } - ---- -Table of contents -{: .no_toc .text-delta } - -1. TOC -{:toc} ---- - -Only standard features are visible by default in Audiveris user interface. - -Some advanced features are gathered by `Topics`, that we can explicitly activate. - -This is done via the {{ site.tools_advanced }} pull-down menu. - -![](../assets/images/advanced_topics.png) - -## Input Step - -This box allows to define which step is automatically trigerred on an input file. - -## Default Plugin - -This allows to interactively choose a new default plugin among the declared ones, -since by default the first declared plugin is set as the default one -(See [Plugins](./plugins.md) section). - -## Target output folders -{: .d-inline-block } -new in 5.3 -{: .label .label-yellow } - -These boxes govern where output files are located by default. - -- **Input sibling**: If set, all outputs are stored in the same folder as the input file -(unless the ``-output`` option is specified on command line). -- **Separate folders**: If set, all outputs related to a given input file are stored in a *separate* -folder, created according to the input file name without its extension. - -For further explanation, see section on [Standard folders](../folders/standard.md). - -## Global font ratio -{: .d-inline-block } -new in 5.3 -{: .label .label-yellow } - -The slider allows to select a larger font size used throughout the application views. - -## Locale -{: .d-inline-block } -new in 5.3 -{: .label .label-yellow } - -We can pick up a different user language. -As of this writing, available locales are: -- **en** (English), the default -- **fr** (French), still partially implemented... - -## Advanced Topics - - Each of these topics can gather several related features. - -* `SAMPLES` deals with sample repositories and classifier training. -* `ANNOTATIONS` deals with production of symbol annotations. -* `PLOTS` deals with display of plots for scale, stem, staff or header projections. -* `SPECIFIC_VIEWS` deals with specific sheet tabs (staff free, staff-line glyphs). -* `SPECIFIC_ITEMS` deals with display of specific items on views (attachments, glyph axis, ...) -* `DEBUG` deals with many debug features (notably browsing a book internal hierarchy). - - - Note that an __application restart__ is needed to take any modified selection into account, - because of the various impacts this implies on UI elements. diff --git a/docs/_pages/assets/images/Accidentals_palette.png b/docs/_pages/assets/images/Accidentals_palette.png new file mode 100644 index 000000000..fd81b77fe Binary files /dev/null and b/docs/_pages/assets/images/Accidentals_palette.png differ diff --git a/docs/_pages/assets/images/Articulations_palette.png b/docs/_pages/assets/images/Articulations_palette.png new file mode 100644 index 000000000..ab531b90e Binary files /dev/null and b/docs/_pages/assets/images/Articulations_palette.png differ diff --git a/docs/_pages/assets/images/Attributes_palette.png b/docs/_pages/assets/images/Attributes_palette.png new file mode 100644 index 000000000..5481aedc3 Binary files /dev/null and b/docs/_pages/assets/images/Attributes_palette.png differ diff --git a/docs/_pages/assets/images/Barlines_palette.png b/docs/_pages/assets/images/Barlines_palette.png new file mode 100644 index 000000000..2e027c572 Binary files /dev/null and b/docs/_pages/assets/images/Barlines_palette.png differ diff --git a/docs/_pages/assets/images/BeamsEtc_palette.png b/docs/_pages/assets/images/BeamsEtc_palette.png new file mode 100644 index 000000000..535b558be Binary files /dev/null and b/docs/_pages/assets/images/BeamsEtc_palette.png differ diff --git a/docs/_pages/assets/images/shapes_sub.png b/docs/_pages/assets/images/ClefsAndShifts_palette.png similarity index 100% rename from docs/_pages/assets/images/shapes_sub.png rename to docs/_pages/assets/images/ClefsAndShifts_palette.png diff --git a/docs/_pages/assets/images/Digits_palette.png b/docs/_pages/assets/images/Digits_palette.png new file mode 100644 index 000000000..5b62d82c6 Binary files /dev/null and b/docs/_pages/assets/images/Digits_palette.png differ diff --git a/docs/_pages/assets/images/Dynamics_palette.png b/docs/_pages/assets/images/Dynamics_palette.png new file mode 100644 index 000000000..e83695209 Binary files /dev/null and b/docs/_pages/assets/images/Dynamics_palette.png differ diff --git a/docs/_pages/assets/images/Flags_palette.png b/docs/_pages/assets/images/Flags_palette.png new file mode 100644 index 000000000..70aeb7c23 Binary files /dev/null and b/docs/_pages/assets/images/Flags_palette.png differ diff --git a/docs/_pages/assets/images/GraceAndOrnaments_palette.png b/docs/_pages/assets/images/GraceAndOrnaments_palette.png new file mode 100644 index 000000000..59b3f276b Binary files /dev/null and b/docs/_pages/assets/images/GraceAndOrnaments_palette.png differ diff --git a/docs/_pages/assets/images/HeadsAndDot_palette.png b/docs/_pages/assets/images/HeadsAndDot_palette.png new file mode 100644 index 000000000..51556ae16 Binary files /dev/null and b/docs/_pages/assets/images/HeadsAndDot_palette.png differ diff --git a/docs/_pages/assets/images/Holds_palette.png b/docs/_pages/assets/images/Holds_palette.png new file mode 100644 index 000000000..f8a00fcf4 Binary files /dev/null and b/docs/_pages/assets/images/Holds_palette.png differ diff --git a/docs/_pages/assets/images/Keys_palette.png b/docs/_pages/assets/images/Keys_palette.png new file mode 100644 index 000000000..6cfd39723 Binary files /dev/null and b/docs/_pages/assets/images/Keys_palette.png differ diff --git a/docs/_pages/assets/images/Markers_palette.png b/docs/_pages/assets/images/Markers_palette.png new file mode 100644 index 000000000..8a33ba67e Binary files /dev/null and b/docs/_pages/assets/images/Markers_palette.png differ diff --git a/docs/_pages/assets/images/Physicals_palette.png b/docs/_pages/assets/images/Physicals_palette.png new file mode 100644 index 000000000..1f06e2684 Binary files /dev/null and b/docs/_pages/assets/images/Physicals_palette.png differ diff --git a/docs/_pages/assets/images/Pluckings_palette.png b/docs/_pages/assets/images/Pluckings_palette.png new file mode 100644 index 000000000..e069b0998 Binary files /dev/null and b/docs/_pages/assets/images/Pluckings_palette.png differ diff --git a/docs/_pages/assets/images/Rests_palette.png b/docs/_pages/assets/images/Rests_palette.png new file mode 100644 index 000000000..c6210f91e Binary files /dev/null and b/docs/_pages/assets/images/Rests_palette.png differ diff --git a/docs/_pages/assets/images/Romans_palette.png b/docs/_pages/assets/images/Romans_palette.png new file mode 100644 index 000000000..d12e330a6 Binary files /dev/null and b/docs/_pages/assets/images/Romans_palette.png differ diff --git a/docs/_pages/assets/images/Texts_palette.png b/docs/_pages/assets/images/Texts_palette.png new file mode 100644 index 000000000..428ab79a2 Binary files /dev/null and b/docs/_pages/assets/images/Texts_palette.png differ diff --git a/docs/_pages/assets/images/Times_palette.png b/docs/_pages/assets/images/Times_palette.png new file mode 100644 index 000000000..ee6dfdfaa Binary files /dev/null and b/docs/_pages/assets/images/Times_palette.png differ diff --git a/docs/_pages/assets/images/about_dialog.png b/docs/_pages/assets/images/about_dialog.png index 1e51aae52..18319d647 100644 Binary files a/docs/_pages/assets/images/about_dialog.png and b/docs/_pages/assets/images/about_dialog.png differ diff --git a/docs/_pages/assets/images/advanced_topics.png b/docs/_pages/assets/images/advanced_topics.png deleted file mode 100644 index 7c16d1a57..000000000 Binary files a/docs/_pages/assets/images/advanced_topics.png and /dev/null differ diff --git a/docs/_pages/assets/images/beam_book_spec.png b/docs/_pages/assets/images/beam_book_spec.png index 7274d3d57..ee07a068b 100644 Binary files a/docs/_pages/assets/images/beam_book_spec.png and b/docs/_pages/assets/images/beam_book_spec.png differ diff --git a/docs/_pages/assets/images/binarization_adaptive.png b/docs/_pages/assets/images/binarization_adaptive.png new file mode 100644 index 000000000..8badd3b78 Binary files /dev/null and b/docs/_pages/assets/images/binarization_adaptive.png differ diff --git a/docs/_pages/assets/images/binarization_board_adaptive.png b/docs/_pages/assets/images/binarization_board_adaptive.png deleted file mode 100644 index df06072e1..000000000 Binary files a/docs/_pages/assets/images/binarization_board_adaptive.png and /dev/null differ diff --git a/docs/_pages/assets/images/binarization_board_global.png b/docs/_pages/assets/images/binarization_board_global.png deleted file mode 100644 index a90044b44..000000000 Binary files a/docs/_pages/assets/images/binarization_board_global.png and /dev/null differ diff --git a/docs/_pages/assets/images/binarization_global_nok.png b/docs/_pages/assets/images/binarization_global_nok.png new file mode 100644 index 000000000..254bbefc2 Binary files /dev/null and b/docs/_pages/assets/images/binarization_global_nok.png differ diff --git a/docs/_pages/assets/images/binarization_global_ok.png b/docs/_pages/assets/images/binarization_global_ok.png new file mode 100644 index 000000000..cb02ccbec Binary files /dev/null and b/docs/_pages/assets/images/binarization_global_ok.png differ diff --git a/docs/_pages/assets/images/binarization_gray.png b/docs/_pages/assets/images/binarization_gray.png new file mode 100644 index 000000000..c6306a4b2 Binary files /dev/null and b/docs/_pages/assets/images/binarization_gray.png differ diff --git a/docs/_pages/assets/images/binarization_multisheet.png b/docs/_pages/assets/images/binarization_multisheet.png new file mode 100644 index 000000000..3a2a860a9 Binary files /dev/null and b/docs/_pages/assets/images/binarization_multisheet.png differ diff --git a/docs/_pages/assets/images/binary_adaptive.png b/docs/_pages/assets/images/binary_adaptive.png new file mode 100644 index 000000000..97888f4cd Binary files /dev/null and b/docs/_pages/assets/images/binary_adaptive.png differ diff --git a/docs/_pages/assets/images/binary_global.png b/docs/_pages/assets/images/binary_global.png new file mode 100644 index 000000000..a3989cd52 Binary files /dev/null and b/docs/_pages/assets/images/binary_global.png differ diff --git a/docs/_pages/assets/images/boards.png b/docs/_pages/assets/images/boards.png deleted file mode 100644 index c648dd7a6..000000000 Binary files a/docs/_pages/assets/images/boards.png and /dev/null differ diff --git a/docs/_pages/assets/images/book_menu.png b/docs/_pages/assets/images/book_menu.png index 4acc1ca72..38b2f31cd 100644 Binary files a/docs/_pages/assets/images/book_menu.png and b/docs/_pages/assets/images/book_menu.png differ diff --git a/docs/_pages/assets/images/book_parameters.png b/docs/_pages/assets/images/book_parameters.png index 70222aa08..261d1f919 100644 Binary files a/docs/_pages/assets/images/book_parameters.png and b/docs/_pages/assets/images/book_parameters.png differ diff --git a/docs/_pages/assets/images/book_save.png b/docs/_pages/assets/images/book_save.png new file mode 100644 index 000000000..151b6cd67 Binary files /dev/null and b/docs/_pages/assets/images/book_save.png differ diff --git a/docs/_pages/assets/images/chula_transcribed.png b/docs/_pages/assets/images/chula_transcribed.png index a6b37cd89..425b315fc 100644 Binary files a/docs/_pages/assets/images/chula_transcribed.png and b/docs/_pages/assets/images/chula_transcribed.png differ diff --git a/docs/_pages/assets/images/constants.png b/docs/_pages/assets/images/constants.png new file mode 100644 index 000000000..870c9058d Binary files /dev/null and b/docs/_pages/assets/images/constants.png differ diff --git a/docs/_pages/assets/images/options_accid.png b/docs/_pages/assets/images/constants_accid.png similarity index 100% rename from docs/_pages/assets/images/options_accid.png rename to docs/_pages/assets/images/constants_accid.png diff --git a/docs/_pages/assets/images/debug_menu.png b/docs/_pages/assets/images/debug_menu.png index c613f4dc3..f0867b27c 100644 Binary files a/docs/_pages/assets/images/debug_menu.png and b/docs/_pages/assets/images/debug_menu.png differ diff --git a/docs/_pages/assets/images/dialog_options.png b/docs/_pages/assets/images/dialog_options.png deleted file mode 100644 index cc1909931..000000000 Binary files a/docs/_pages/assets/images/dialog_options.png and /dev/null differ diff --git a/docs/_pages/assets/images/file_menu.png b/docs/_pages/assets/images/file_menu.png index d9d54ea13..9d385237f 100644 Binary files a/docs/_pages/assets/images/file_menu.png and b/docs/_pages/assets/images/file_menu.png differ diff --git a/docs/_pages/assets/images/heads_leland.png b/docs/_pages/assets/images/heads_leland.png new file mode 100644 index 000000000..9d6039422 Binary files /dev/null and b/docs/_pages/assets/images/heads_leland.png differ diff --git a/docs/_pages/assets/images/heads_palette.png b/docs/_pages/assets/images/heads_palette.png deleted file mode 100644 index 354a2af55..000000000 Binary files a/docs/_pages/assets/images/heads_palette.png and /dev/null differ diff --git a/docs/_pages/assets/images/help_menu.png b/docs/_pages/assets/images/help_menu.png index 57f6bd1c8..8f2fe6b86 100644 Binary files a/docs/_pages/assets/images/help_menu.png and b/docs/_pages/assets/images/help_menu.png differ diff --git a/docs/_pages/assets/images/java_mismatch_message.png b/docs/_pages/assets/images/java_mismatch_message.png new file mode 100644 index 000000000..f40474449 Binary files /dev/null and b/docs/_pages/assets/images/java_mismatch_message.png differ diff --git a/docs/_pages/assets/images/ledgers_allegretto_delta.png b/docs/_pages/assets/images/ledgers_allegretto_delta.png new file mode 100644 index 000000000..f7fee7b78 Binary files /dev/null and b/docs/_pages/assets/images/ledgers_allegretto_delta.png differ diff --git a/docs/_pages/assets/images/ledgers_allegretto_ok.png b/docs/_pages/assets/images/ledgers_allegretto_ok.png new file mode 100644 index 000000000..11e9beef3 Binary files /dev/null and b/docs/_pages/assets/images/ledgers_allegretto_ok.png differ diff --git a/docs/_pages/assets/images/ledgers_zizi_binary.png b/docs/_pages/assets/images/ledgers_zizi_binary.png new file mode 100644 index 000000000..f42a43fcf Binary files /dev/null and b/docs/_pages/assets/images/ledgers_zizi_binary.png differ diff --git a/docs/_pages/assets/images/ledgers_zizi_glyphs.png b/docs/_pages/assets/images/ledgers_zizi_glyphs.png new file mode 100644 index 000000000..d648b1f78 Binary files /dev/null and b/docs/_pages/assets/images/ledgers_zizi_glyphs.png differ diff --git a/docs/_pages/assets/images/ledgers_zizi_sections_x6.png b/docs/_pages/assets/images/ledgers_zizi_sections_x6.png new file mode 100644 index 000000000..e7b6b0421 Binary files /dev/null and b/docs/_pages/assets/images/ledgers_zizi_sections_x6.png differ diff --git a/docs/_pages/assets/images/metronome_carmen.png b/docs/_pages/assets/images/metronome_carmen.png new file mode 100644 index 000000000..dbacc9918 Binary files /dev/null and b/docs/_pages/assets/images/metronome_carmen.png differ diff --git a/docs/_pages/assets/images/metronome_dnd.png b/docs/_pages/assets/images/metronome_dnd.png new file mode 100644 index 000000000..87431d8e9 Binary files /dev/null and b/docs/_pages/assets/images/metronome_dnd.png differ diff --git a/docs/_pages/assets/images/metronome_field.png b/docs/_pages/assets/images/metronome_field.png new file mode 100644 index 000000000..bde679ee1 Binary files /dev/null and b/docs/_pages/assets/images/metronome_field.png differ diff --git a/docs/_pages/assets/images/metronome_insert.png b/docs/_pages/assets/images/metronome_insert.png new file mode 100644 index 000000000..b3de993b8 Binary files /dev/null and b/docs/_pages/assets/images/metronome_insert.png differ diff --git a/docs/_pages/assets/images/metronome_manual.png b/docs/_pages/assets/images/metronome_manual.png new file mode 100644 index 000000000..558d954ca Binary files /dev/null and b/docs/_pages/assets/images/metronome_manual.png differ diff --git a/docs/_pages/assets/images/metronome_minimum.png b/docs/_pages/assets/images/metronome_minimum.png new file mode 100644 index 000000000..7f36b42c2 Binary files /dev/null and b/docs/_pages/assets/images/metronome_minimum.png differ diff --git a/docs/_pages/assets/images/no_languages.png b/docs/_pages/assets/images/no_languages.png new file mode 100644 index 000000000..2d0a557c7 Binary files /dev/null and b/docs/_pages/assets/images/no_languages.png differ diff --git a/docs/_pages/assets/images/ocr_languages.png b/docs/_pages/assets/images/ocr_languages.png new file mode 100644 index 000000000..526dc6ba2 Binary files /dev/null and b/docs/_pages/assets/images/ocr_languages.png differ diff --git a/docs/_pages/assets/images/options.png b/docs/_pages/assets/images/options.png deleted file mode 100644 index c59a419f5..000000000 Binary files a/docs/_pages/assets/images/options.png and /dev/null differ diff --git a/docs/_pages/assets/images/options_dialog.png b/docs/_pages/assets/images/options_dialog.png deleted file mode 100644 index 7fc64c885..000000000 Binary files a/docs/_pages/assets/images/options_dialog.png and /dev/null differ diff --git a/docs/_pages/assets/images/plugins_menu.png b/docs/_pages/assets/images/plugins_menu.png index 9e497e4ce..9e2698134 100644 Binary files a/docs/_pages/assets/images/plugins_menu.png and b/docs/_pages/assets/images/plugins_menu.png differ diff --git a/docs/_pages/assets/images/preferences.png b/docs/_pages/assets/images/preferences.png new file mode 100644 index 000000000..76ebad13d Binary files /dev/null and b/docs/_pages/assets/images/preferences.png differ diff --git a/docs/_pages/assets/images/scaling_staves.png b/docs/_pages/assets/images/scaling_staves.png new file mode 100644 index 000000000..905dcb180 Binary files /dev/null and b/docs/_pages/assets/images/scaling_staves.png differ diff --git a/docs/_pages/assets/images/shape_board.png b/docs/_pages/assets/images/shape_board.png index 205b1e2ef..424436963 100644 Binary files a/docs/_pages/assets/images/shape_board.png and b/docs/_pages/assets/images/shape_board.png differ diff --git a/docs/_pages/assets/images/sheet_menu.png b/docs/_pages/assets/images/sheet_menu.png index d92e0a7f5..7faf8cd58 100644 Binary files a/docs/_pages/assets/images/sheet_menu.png and b/docs/_pages/assets/images/sheet_menu.png differ diff --git a/docs/_pages/assets/images/step_menu.png b/docs/_pages/assets/images/step_menu.png index d8ccf5691..46abbc178 100644 Binary files a/docs/_pages/assets/images/step_menu.png and b/docs/_pages/assets/images/step_menu.png differ diff --git a/docs/_pages/assets/images/symbol_ripper.png b/docs/_pages/assets/images/symbol_ripper.png new file mode 100644 index 000000000..9db717b06 Binary files /dev/null and b/docs/_pages/assets/images/symbol_ripper.png differ diff --git a/docs/_pages/assets/images/template.png b/docs/_pages/assets/images/template.png new file mode 100644 index 000000000..e0b4925d4 Binary files /dev/null and b/docs/_pages/assets/images/template.png differ diff --git a/docs/_pages/assets/images/template_applied.png b/docs/_pages/assets/images/template_applied.png new file mode 100644 index 000000000..5bbb7250b Binary files /dev/null and b/docs/_pages/assets/images/template_applied.png differ diff --git a/docs/_pages/assets/images/tools_menu.png b/docs/_pages/assets/images/tools_menu.png index 749d34e53..c8d19957a 100644 Binary files a/docs/_pages/assets/images/tools_menu.png and b/docs/_pages/assets/images/tools_menu.png differ diff --git a/docs/_pages/assets/images/version_ok.png b/docs/_pages/assets/images/version_ok.png new file mode 100644 index 000000000..1a2897c06 Binary files /dev/null and b/docs/_pages/assets/images/version_ok.png differ diff --git a/docs/_pages/assets/images/view_menu.png b/docs/_pages/assets/images/view_menu.png index 15cb5cf5b..4cd627151 100644 Binary files a/docs/_pages/assets/images/view_menu.png and b/docs/_pages/assets/images/view_menu.png differ diff --git a/docs/_pages/assets/images/voices_colored.png b/docs/_pages/assets/images/voices_colored.png new file mode 100644 index 000000000..d261ab649 Binary files /dev/null and b/docs/_pages/assets/images/voices_colored.png differ diff --git a/docs/_pages/assets/images/windows_start_menu_wide.png b/docs/_pages/assets/images/windows_start_menu_wide.png new file mode 100644 index 000000000..669c60f92 Binary files /dev/null and b/docs/_pages/assets/images/windows_start_menu_wide.png differ diff --git a/docs/_pages/boards/binarization.md b/docs/_pages/boards/binarization.md deleted file mode 100644 index c115c2d1c..000000000 --- a/docs/_pages/boards/binarization.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default -title: Binarization board -grand_parent: References -parent: Boards -nav_order: 2 ---- -# Binarization board -{: .no_toc :} - -This board, together with the [Pixel board](./pixel.md), is meant to visualize the behavior of the binarization algorithm documented in the [BINARY step](../steps/binary.md). - -The board is displayed by default in the Gray tab and on demand in the Binary tab. -Of course, to be effective, the gray image must still be available. - -- The pixel board displays the selected _location_ (x, y). -It can also display the _gray level_ at this location when available. -- The binarization board always displays the _threshold_ value and the resulting _binary color_. - -## Threshold -The threshold value to be compared with the gray level at the selected location. - -## Color -The resulting color of binarization at the selected location -- either _black_ or _white_. - -## Board for the Global filter -![](../assets/images/binarization_board_global.png) - -For the global filter, the threshold value is constant for all pixels in the image. - -## Board for the Adaptive filter -![](../assets/images/binarization_board_adaptive.png) - -For the adaptive filter, the threshold value is computed for each location, -based on the mean and the standard deviation of gray values in location vicinity. - -### Mean -The average value of all gray pixels read around the selected location. - -### StdDev -The standard deviation value of all gray pixels read around the selected location. - diff --git a/docs/_pages/boards/classifier.md b/docs/_pages/boards/classifier.md deleted file mode 100644 index 37ed4c2ed..000000000 --- a/docs/_pages/boards/classifier.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: default -title: Classifier board -grand_parent: References -parent: Boards -nav_order: 7 ---- -# Basic Classifier board - -![](../assets/images/basic_classifier_board.png) - -In current Audiveris, the basic classifier is a Glyph classifier. - -If a glyph is selected by whatever means, it is submitted to the classifier and the top 5 shapes -are displayed as active buttons, by decreasing grade value. - -Notice that the sum of grade values may exceed 1.0 (because no SoftMax filter is applied). - -A simple click on a shape button assigns the related shape to the glyph at hand. -(To be strictly correct, an Inter instance is created with proper shape and glyph). diff --git a/docs/_pages/boards/shape.md b/docs/_pages/boards/shape.md deleted file mode 100644 index 19b0d6399..000000000 --- a/docs/_pages/boards/shape.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: default -title: Shape board -grand_parent: References -parent: Boards -nav_order: 6 ---- -# Shape board -{: .no_toc :} - --- -Table of contents -{: .no_toc .text-delta } - -1. TOC -{:toc} ---- - -## Top dialog: sets -![](../assets/images/shape_board.png) - -The shape board displays a panel of shape sets. - -In the picture above, we can see: -- First row: Accidentals, Articulations, Attributes, Barlines, BeamsAndTuplets, - Clefs, Dynamics, Flags, Holds. -- Second row: Keys, HeadsAndDot, Markers, Ornaments, Rests, Times, Digits, - Pluckings, Romans, Physicals. - -## Palettes: shapes -Clicking on a shape set button replaces the global shape panel by the selected set palette, -for example the ``HeadsAndDot`` palette which adapts to the book at hand: - -Here is a simple configuration - -![](../assets/images/heads_palette.png) - -And here is a more complex configuration for drums notation. -See [Drums](../specific/drums.md) chapter for further details. - -![](../assets/images/font_ophelia_heads.png) - -From any shape palette we can: -* Assign a shape, via a double-click on proper shape button, to the current glyph. -* Initiate a drag & drop action, by pressing and dragging a proper shape button to the desired -location in sheet. - -To leave the current palette and return to the global shape set panel, -we press the `ESCAPE` key or click on the ``up`` (▲) button. - -## More recently used -The shapes most recently assigned (by whatever means) always appear at the top of shape panel, -available for a direct reuse. diff --git a/docs/_pages/explanation/README.md b/docs/_pages/explanation/README.md new file mode 100644 index 000000000..5d4dd7d4d --- /dev/null +++ b/docs/_pages/explanation/README.md @@ -0,0 +1,10 @@ +--- +layout: default +title: Explanation +nav_order: 4 +--- + +# Explanation + +1. [Steps Internals](./steps/README.md) +How the engine works step by step. diff --git a/docs/_pages/steps/README.md b/docs/_pages/explanation/steps/README.md similarity index 50% rename from docs/_pages/steps/README.md rename to docs/_pages/explanation/steps/README.md index 94c169938..6b92bb1a7 100644 --- a/docs/_pages/steps/README.md +++ b/docs/_pages/explanation/steps/README.md @@ -1,19 +1,20 @@ --- layout: default title: Steps internals -parent: References +parent: Explanation nav_order: 1 -has_children: true --- # Steps internals -All the 20 steps of the OMR engine are presented here in chronological order. +All the 20 steps of the OMR engine are to be presented here in chronological order. + +This is a work in progress, to date only the first 9 have been documented in this handbook. A step presentation is generally organized in: -- goal -- inputs -- outputs -- main processing operations +1. goal +2. inputs +3. outputs +4. main processing operations Some steps work on the sheet as a whole. Other steps work system per system, and can present: @@ -23,4 +24,5 @@ Other steps work system per system, and can present: {: .note :} This type of documentation is halfway between a user manual (functional) and a developer manual (implementation). -Reading it is not obligatory, but should help understand step by step how the engine behaves and how to best control it. \ No newline at end of file +Reading it is not mandatory, but should help understand step by step how the engine behaves and how to best control it. + diff --git a/docs/_pages/steps/beams.md b/docs/_pages/explanation/steps/beams.md similarity index 63% rename from docs/_pages/steps/beams.md rename to docs/_pages/explanation/steps/beams.md index 01ab2467a..f8816cbe2 100644 --- a/docs/_pages/steps/beams.md +++ b/docs/_pages/explanation/steps/beams.md @@ -2,19 +2,18 @@ layout: default title: BEAMS step parent: Steps internals -grand_parent: References nav_order: 7 --- # BEAMS step {: .no_toc } -The purpose of the ``BEAMS`` step is to detect all beams in a sheet, both standard -and small beams if any. +The purpose of the ``BEAMS`` step is to detect all beams in a sheet, +both (standard) beams and small beams if any. As a side effect, it also detects any multi-measure rest found in the sheet. --- -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -49,8 +48,9 @@ using a disk-shaped mask whose diameter is the expected beam thickness -- the smaller value, when the sheet exhibits two beam thickness values The resulting cleaned image uses a gray scale. -All spots with a rather high density of black are interesting for two purposes, -beams recognition of course but also black heads recognition[^head_spots]. +All spots with a rather high density of black are interesting for two purposes: +- beams recognition of course, +- but also black heads later recognition by the [`HEADS` step](./heads.md). [^head_spots] Regarding beam recognition, the prolog final actions are as follows: 1. Binarize the resulting gray image, using a global threshold @@ -63,12 +63,12 @@ Notice that, in the cleaned image, the tiny black or white items have disappeare | Legend | Image | | :---: | :---: | -| Binary image | ![coffrets_binary](../assets/images/coffrets_binary.png) | -| Cleaned image | ![coffrets_gray_spots](../assets/images/coffrets_gray_spots.png) | -| Detected glyphs | ![coffrets_beam_spots](../assets/images/coffrets_beam_spots.png) | +| Binary image | ![coffrets_binary](../../assets/images/coffrets_binary.png) | +| Cleaned image | ![coffrets_gray_spots](../../assets/images/coffrets_gray_spots.png) | +| Detected glyphs | ![coffrets_beam_spots](../../assets/images/coffrets_beam_spots.png) | The ``binary`` tab is always available via the {{ site.sheet_binary }} pull-down menu. -The two other tabs require specific booleans to be set in the {{ site.tools_options}} menu, +The two other tabs require specific booleans to be set in the {{ site.tools_constants}} menu, respectively ``displayGraySpots`` and ``displayBeamSpots``. ## Beams detection @@ -89,7 +89,7 @@ a structure, based on the glyph vertical sections: | Legend | Image | | :---: | :---: | -| Sections | ![coffrets_beam_sections](../assets/images/coffrets_beam_sections.png) | +| Sections | ![coffrets_beam_sections](../../assets/images/coffrets_beam_sections.png) | The structure focuses on the top and bottom lines of the most significant vertical sections -- the {{ site.view_selections }} menu allows the display of sections. @@ -103,14 +103,14 @@ it is thus split into thinner structures: | Legend | Image | | :---: | :---: | -| Double beam glyph | ![coffrets_double_ beam](../assets/images/coffrets_double_beam.png) | +| Double beam glyph | ![coffrets_double_ beam](../../assets/images/coffrets_double_beam.png) | The final structures are converted to elementary beams, which can be further merged or extended horizontally to full beams and beam hooks Inters. | Legend | Image | | :---: | :---: | -| Beams inters | ![coffrets_beams](../assets/images/coffrets_beams.png) | +| Beams inters | ![coffrets_beams](../../assets/images/coffrets_beams.png) | At the end of this ``BEAMS`` step, all the created Inters are just candidates. In particular, Inters for short beams and beam hooks may still coexist for the same underlying glyph! @@ -123,6 +123,27 @@ to confirm or discard these candidates. ## Multi-measure rests detection -TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO +Here is a multi-measure rest example: -[^head_spots]: This is a forward reference to the [``HEADS`` step](./heads.md), since filled black heads are very likely to appear in these spots. A specially binarized version of the cleaned image is thus set aside to be used later by the ``HEADS`` step. \ No newline at end of file +![](https://www.w3.org/2021/06/musicxml40/static/elements/multiple-rest.png) + +It looks like a horizontal beam, vertically centered on the staff middle line, +and with vertical serifs on each horizontal side. +A number ("4" in the example), located above the staff, +indicates the number of measures covered by the multiple rest. + +At the end of the `BEAMS` step, every beam candidate is checked to decide if +it should be considered as a multi-measure rest rather than a plain beam. + +The checks are rather obvious: +- Minimum length +- Maximum vertical distance from staff mid-line for the left and right extremum points +- Presence of vertical serifs on left and right sides. +At this point in time, the stem seeds have not yet been detected, therefore the engine +uses a staff projection to detect peaks and thus serifs on both sides. + +NOTA: The count above the staff cannot be detected during the `BEAMS` step. +The `SYMBOLS` step should detect this number symbol, and the subsequent `LINKS` step +should link the multi-measure rest and the count via a MultipleRestCountRelation. + +[^head_spots]: This is a forward reference to the ``HEADS`` step, since filled black heads are very likely to appear in these spots. A specially binarized version of the cleaned image is thus set aside to be used later by the ``HEADS`` step. \ No newline at end of file diff --git a/docs/_pages/steps/binary.md b/docs/_pages/explanation/steps/binary.md similarity index 79% rename from docs/_pages/steps/binary.md rename to docs/_pages/explanation/steps/binary.md index fec8ef942..903c28d34 100644 --- a/docs/_pages/steps/binary.md +++ b/docs/_pages/explanation/steps/binary.md @@ -2,7 +2,6 @@ layout: default title: BINARY step parent: Steps internals -grand_parent: References nav_order: 2 --- # BINARY step @@ -14,7 +13,7 @@ In such image, the black pixels compose the foreground and the white pixels the The goal of the BINARY step is to provide this black & white image. --- -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -59,12 +58,12 @@ available in the ``data/examples`` folder of Audiveris. Here is the bottom part of the gray image: -![](../assets/images/BachInvention5_gray.png) +![](../../assets/images/BachInvention5_gray.png) Note that the image appears dark on the left and pale on the right. If we apply the _global_ filter on it, we get this binary image: -![](../assets/images/BachInvention5_binary_global.png) +![](../../assets/images/BachInvention5_binary_global.png) The following engine steps will miss both the left part and the right part of this system. The left part because almost every pixel looks like foreground. @@ -93,7 +92,7 @@ The parameters are by default ``0.7`` for ``mean_coeff`` and ``0.9`` for ``std_d We can modify them via the {{ site.book_parameters }} pull-down menu. On the same example, we now get this binary image: -![](../assets/images/BachInvention5_binary_adaptive.png) +![](../../assets/images/BachInvention5_binary_adaptive.png) Our experience on hundreds of gray images has shown that the adaptive filter gives good results and its default parameters are OK. @@ -104,26 +103,36 @@ for every input... was recently posted on Audiveris forum. Here below is a portion of the gray input image posted in the discussion: -![](../assets/images/Mercy_gray.png) +![](../../assets/images/Mercy_gray.png) We can notice that the staff lines, as well as the bar lines, are painted in a pale gray color. Here, the pale gray is not a transition between black and white as seen on the other scores. Applying the standard _adaptive_ filter gives this binary result: -![](../assets/images/Mercy_binary_adaptive.png) +![](../../assets/images/Mercy_binary_adaptive.png) Here, we must go back to the _global_ filter. With a threshold value set to 225, we now obtain this binary result: -![](../assets/images/Mercy_binary_global.png) +![](../../assets/images/Mercy_binary_global.png) -## Binarization board +## Boards -To observe the binarization behavior, we can use the ``binarization board`` available in the ``Gray`` and ``Binary`` tabs. +### Binarization board -It presents the selected filter in action around the current user location. +The Binarization board is present in the `Binary` tab. -Please refer to the [Binarization board](../boards/binarization.md) dedicated section. +It allows the end user to interactively choose the filter, adjust its parameters, +and observe the results on the image immediately. + +Please refer to the [Binarization board](../../reference/boards/binarization.md) section. + +### Binary board + +Available in the ``Gray`` and ``Binary`` tabs, +the Binary pixel board presents the resulting black or white pixel value at the current location. + +Please refer to the [Binary board](../../reference/boards/binary.md) section. [^threshold_computation]: The implementation does not use brute force to compute mean and standard deviation around each and every point, but the result is the same. \ No newline at end of file diff --git a/docs/_pages/steps/chords.md b/docs/_pages/explanation/steps/chords.md similarity index 59% rename from docs/_pages/steps/chords.md rename to docs/_pages/explanation/steps/chords.md index e75e41b4a..9b43c679d 100644 --- a/docs/_pages/steps/chords.md +++ b/docs/_pages/explanation/steps/chords.md @@ -2,7 +2,9 @@ layout: default title: CHORDS step parent: Steps internals -grand_parent: References nav_order: 15 --- # CHORDS step + +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/steps/cue_beams.md b/docs/_pages/explanation/steps/cue_beams.md similarity index 61% rename from docs/_pages/steps/cue_beams.md rename to docs/_pages/explanation/steps/cue_beams.md index 82fe90114..91354f8de 100644 --- a/docs/_pages/steps/cue_beams.md +++ b/docs/_pages/explanation/steps/cue_beams.md @@ -2,7 +2,9 @@ layout: default title: CUE_BEAMS step parent: Steps internals -grand_parent: References nav_order: 12 --- # CUE_BEAMS step + +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/steps/curves.md b/docs/_pages/explanation/steps/curves.md similarity index 59% rename from docs/_pages/steps/curves.md rename to docs/_pages/explanation/steps/curves.md index 5ae362d63..e242857f4 100644 --- a/docs/_pages/steps/curves.md +++ b/docs/_pages/explanation/steps/curves.md @@ -2,7 +2,9 @@ layout: default title: CURVES step parent: Steps internals -grand_parent: References nav_order: 16 --- # CURVES step + +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/steps/grid.md b/docs/_pages/explanation/steps/grid.md similarity index 78% rename from docs/_pages/steps/grid.md rename to docs/_pages/explanation/steps/grid.md index 354479283..ea4025d47 100644 --- a/docs/_pages/steps/grid.md +++ b/docs/_pages/explanation/steps/grid.md @@ -2,7 +2,6 @@ layout: default title: GRID step parent: Steps internals -grand_parent: References nav_order: 4 --- # GRID step @@ -11,7 +10,7 @@ nav_order: 4 The purpose of the ``GRID`` step is to retrieve the systems and staves of the sheet. --- -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -24,7 +23,7 @@ The purpose of the ``GRID`` step is to retrieve the systems and staves of the sh ## Outputs -- The [LAG](../main/run_section.md#lag) of horizontal [sections](../main/run_section.md#section) +- The LAG of horizontal sections -- See [Section and LAG](../../tutorials/main_concepts/run_section.md#section-and-lag) description. - The LAG of vertical sections - The staff lines organized in staves - The global skew of the image @@ -41,7 +40,7 @@ The purpose of the ``GRID`` step is to retrieve the systems and staves of the sh ### Filtering runs and sections First, all the foreground (black) pixels of the binary image are organized into vertical -[runs](../main/run_section.md#run). +[runs](../../tutorials/main_concepts/run_section.md#run-and-runtable). Then, the engine determines a maximum line thickness, based on the maximum staff line thickness provided by the [``SCALE`` step](./scale.md#outputs), @@ -54,27 +53,27 @@ Therefore: - All "long" vertical runs are set aside into the _vertical LAG_. - All remaining pixels are organized in horizontal runs gathered in the _horizontal LAG_. -Then, within each [LAG](../main/run_section.md#lag), adjacent runs are organized into -[sections](../main/run_section.md#section). +Then, within each [LAG](../../tutorials/main_concepts/run_section.md#lag), adjacent runs are organized into +[sections](../../tutorials/main_concepts/run_section.md#section). The horizontal sections are further separated between short sections and long sections, because the long sections will drive the staff lines detection. We can visualize this material. -To do so, we have to use the {{ site.tools_options}} pull-down menu and there +To do so, we have to use the {{ site.tools_constants}} pull-down menu and there tick the boolean constant ``displayRuns`` (it is located in class ``LinesRetriever``). | Content | View | | :--- | :---: | -| Binary image | ![bin img](/audiveris/_pages/assets/images/chula_binary.png) | -| Long vertical sections | ![](../assets/images/chula_long_vert.png) | -| Short horizontal sections | ![](../assets/images/chula_short_hori.png) | -| Long horizontal sections | ![](../assets/images/chula_long_hori.png) | +| Binary image | ![bin img](../..//assets/images/chula_binary.png) | +| Long vertical sections | ![](../../assets/images/chula_long_vert.png) | +| Short horizontal sections | ![](../../assets/images/chula_short_hori.png) | +| Long horizontal sections | ![](../../assets/images/chula_long_hori.png) | ### Long horizontal filaments From the set of long horizontal sections, the engine gradually builds long and thin -[filaments](../main/run_section.md#filament) +[filaments](../../tutorials/main_concepts/run_section.md#filament) which are likely to correspond to long portions of staff lines. The filaments that are not straight enough are discarded. @@ -103,7 +102,7 @@ we can visualize this projection: - either via the {{ site.sheet_staves_plots}} pull-down menu - or via the {{ site.popup_staff }} contextual menu from a staff -![](../assets/images/chula_staff_plot.png) +![](../../assets/images/chula_staff_plot.png) From this projection limited to the staff height, the engine detects peaks which can represent: - barlines, @@ -114,7 +113,7 @@ From this projection limited to the staff height, the engine detects peaks which The slim vertical sections located within a peak are used to build vertical filaments. Note that these filaments may extend past the top and/or the bottom of the staff. -If, via the {{ site.tools_options}} pull-down menu, we have ticked the boolean constant +If, via the {{ site.tools_constants}} pull-down menu, we have ticked the boolean constant ``displayFilaments``, then a specific ``Filaments`` tab is displayed for both horizontal and vertical filaments initial material: - The horizontal filaments are in pale red @@ -122,7 +121,7 @@ for both horizontal and vertical filaments initial material: | Content | View | | :--- | :---: | -| Initial Filaments | ![](../assets/images/chula_filaments.png) | +| Initial Filaments | ![](../../assets/images/chula_filaments.png) | All the peaks in vertical projection are handled as vertices in a common peak graph at sheet level. Any vertical alignment detected between a peak in one staff and a peak in the following staff is @@ -149,7 +148,7 @@ Also, the peaks that extend past the system vertical limits are discarded. Brace portions and bracket portions are searched on the left of the starting column. The presence of braces in left margin drives the gathering of staves into parts. -Finally, Inters are created in each system [SIG](../main/sig.md#sig) for: +Finally, Inters are created in each system [SIG](../../tutorials/main_concepts/sig.md#sig) for: - barlines - connectors - braces @@ -162,13 +161,13 @@ populated with the grid of systems and staves (shown below in physical and logic | Mode | View | | :---: | :---: | -| ![](../assets/images/ModePhysical.png) Physical | ![](../assets/images/chula_data.png) | -| ![](../assets/images/ModeLogical.png) Logical | ![](../assets/images/chula_data_output.png) | +| ![](../../assets/images/ModePhysical.png) Physical | ![](../../assets/images/chula_data.png) | +| ![](../../assets/images/ModeLogical.png) Logical | ![](../../assets/images/chula_data_output.png) | Note that some false barlines may persist at the end of the ``GRID`` step. They generally get discarded later in the [``REDUCTION`` step](./reduction.md). -### No-staff image +### The no-staff image Since the engine knows which precise horizontal sections compose the staff lines, it can logically "erase" these sections from the binary source and provide @@ -180,7 +179,7 @@ We can visualize the no-staff image via the {{ site.sheet_nostaff}} pull-down me | Content | View | | :---: | :---: | -| No staff | ![](../assets/images/chula_nostaff.png) | +| No staff | ![](../../assets/images/chula_nostaff.png) | [^one_line_projection]: In the specific case of a 1-line staff, the engine uses a target barline-height defined as a number of interlines (and perhaps modified via the {{ site.book_parameters }} pull-down menu). \ No newline at end of file diff --git a/docs/_pages/steps/headers.md b/docs/_pages/explanation/steps/headers.md similarity index 93% rename from docs/_pages/steps/headers.md rename to docs/_pages/explanation/steps/headers.md index 4de76b2be..56cdb394b 100644 --- a/docs/_pages/steps/headers.md +++ b/docs/_pages/explanation/steps/headers.md @@ -2,16 +2,15 @@ layout: default title: HEADERS step parent: Steps internals -grand_parent: References nav_order: 5 --- # HEADERS step {: .no_toc } -The ``HEADER`` step detects clef, key and time information at the beginning of every staff. +The ``HEADERS`` step detects clef, key and time information at the beginning of every staff. --- -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -57,7 +56,7 @@ and thus limit the region of interest for each of them. Specifically for the key signature, the projection is also used to detect peaks likely to represent "stem-like" portions of sharp or flat signs. -![](../assets/images/chula_header.png) +![](../../assets/images/chula_header.png) ### Clef candidates @@ -96,7 +95,7 @@ At the staff level, the engine strategy is as follows: 1. Look for projection peaks in the area representing "stem-like" portions (one for the flat shape, two for the sharp shape) Since at this point in time there is no reliable way to choose between flats and sharps, - the engine will work in parallel on the two hypotheses (flat-based key vs sharp-based key). + the engine will work in parallel on the two hypotheses (flat-based key vs. sharp-based key). 1. Determine a precise splitting of the projection into vertical regions of interest (slices), based on the "stem-like" peaks and the shape hypothesis. 1. Try to retrieve one good component in each slice, @@ -135,7 +134,7 @@ We can see the lookup areas used for: - Key: rectangular slice for each item of this two-sharp key - Time: one whole and two half rectangles -![](../assets/images/chula_lu_areas.png) +![](../../assets/images/chula_lu_areas.png) The next picture presents the results on the second system. @@ -146,4 +145,4 @@ But no time symbol could be recognized there. Consequently, the header of the second staff was not even considered for a time signature lookup. -![](../assets/images/chula_lu_areas_2.png) \ No newline at end of file +![](../../assets/images/chula_lu_areas_2.png) \ No newline at end of file diff --git a/docs/_pages/explanation/steps/heads.md b/docs/_pages/explanation/steps/heads.md new file mode 100644 index 000000000..09b5e6ebe --- /dev/null +++ b/docs/_pages/explanation/steps/heads.md @@ -0,0 +1,160 @@ +--- +layout: default +title: HEADS step +parent: Steps internals +nav_order: 9 +--- +# HEADS step +{: .no_toc } + +The `HEADS` step uses a template matching technique to retrieve all note head candidates +(black head, void head, whole head) in the current sheet. +The note rests will be addressed later in the [`SYMBOLS` step](./symbols.md). + +--- +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Inputs + +- The `BINARY` image of the sheet +- The interline value for each staff +- The staff lines and ledgers +- The stem seeds +- The book parameters (musical font family, specific staves, specific head shapes) + +## Outputs + +- The detected note heads + +## Prolog + +### Building the distance table + +On a copy of the `BINARY` image, all the pixels that compose horizontal lines (staff lines, ledgers) +as well as vertical lines (barlines, connectors and stem seeds) +are "erased", that is replaced by the background color (white). + +Based on the resulting image, the engine computes the sheet "distance table": +Each (x,y) cell of this table contains an integer value, which represents the euclidian distance +from the (x,y) pixel to the nearest foreground (black) pixel. [^chamfer] + +For the "erased" elements (the vertical and horizontal lines), +the distance integer value is replaced by a special value (-1) +to indicate that these locations must be ignored by the template matching process. +The reason is these black pixels in the input image would still be there, +regardless of the presence or absence of any head. + +A cell of the distance table can now contain: +- the value `0` (foreground point) +- a positive value (distance of this background point to the nearest foreground point) +- the value `-1` (point to be ignored) + +### Loading the head spots + +The engine loads the "head spots" detected and stored during the [`BEAMS` step](./beams.md). + +These spots are likely to correspond to black heads and are therefore used to speed up +the application of black head templates along a staff/ledger line even without stem seeds. + +## System processing + +The processing is done separately for every staff of every system. + +The engine considers a collection of possible head shapes (out of a total of about 25) +which can be narrowed down depending on the selection made in the {{ site.book_parameters }} menu, +notably: + +| Option | Expected note heads | +| :--- | :--- | +| [X] 1-line percussion staves | Oval | +| [X] 5-line standard staves | Oval | +| [X] 5-line unpitched percussion staves | Drum notation | +| [X] Small heads | Small oval | +| [X] Cross note heads | Crossed oval | + +Within the shapes selection, specific processing is made for: +- Stem-based heads -- they are imposed near a stem seed +- Heads with a hollow part -- they are slightly boosted compared to the full ones + + +### Head templates + +Based on the staff interline value and on the chosen music font family, +a specific version of the templates is picked up from the template factory. + +- For every head shape, the factory defines a template as follows +(the display is here magnified 16 times) + +![](../../assets/images/template.png) + +- The above example represents the template for an oval void head: + - It expects a stem on the lower left side of the head (hence the anchor point) + - It defines interior and exterior background pixels + (note the exterior pixels are limited to a kind of ring around the head) + - It defines foreground pixels + +### Staff processing + +Two passes are made along every staff, with all relevant templates: +- The first pass is driven by the stem seeds. + Only abscissa locations next to a stem seed are looked up, and with just the "stem heads" templates. +- The second pass explores the entire range of possible x values, regardless of stem seeds, + because of potential missing portions of stems. + All heads templates are applied on every x value, so this pass is rather costly. + +In both passes, every line (staff line or ledger) is scanned +as well as every space between or just beyond lines (staff line or ledger). + +Depending on the region within a template, a pixel match or mismatch is weighted differently: +- Weight 6 for the foreground region, +- Weight 4 for the interior background region, +- Weight 1 for the exterior background region. + +At the end of a staff processing: +- Duplicates (same shape, same bounds, same underlying glyph) are removed +- Good long beams defeat overlapping head candidates +- Good heads defeat overlapping short beams +- The remaining head candidates are inserted in the system SIG. +- Overlaps between two head candidates are detected using IOU (Intersection Over Union) criteria, +and are formalized by an exclusion relationship in the system SIG. + +### Observing a template in action + +By defaut, the `Templates` tab, which allows to interactively observe the template behavior +is not presented to the end user. +It requires the constant boolean `displayTemplates` to be selected in the `DistancesBuilder` class. + +Note this is only a way to *study* very precisely the behavior of the template mechanism. +It is available after the `HEADS` step has been run, and is *not meant to modify its results*. + +![](../../assets/images/template_applied.png) + +The picture above presents the application of a template at a specific location in the input image. + +Note the green pixels which correspond to the points to be ignored in the input image (staff line, ledger, stem, barline). + +The Template board, in the right column, allows to manually select a template by its anchor +and by its shape. + +The location where the template is applied is defined by the mouse right button. +It is convenient to use the Alt + arrow keys to move the location one pixel at a time. + +The result of applying the chosen template at the chosen location can be read in the Template board. +- The distance appears in the upper left field, +- The resulting grade in the field below. + +## Epilog + +- The head spots, gathered by the `BEAMS` step for this `HEADS` step, can now be discarded. + +- The whole population of heads candidates in the sheet are analyzed to measure +the effective horizontal distance, per horizontal side and per head shape, +between the head anchor and the related stem seed. +This data is stored in the sheet Scale class, and will later be used to precisely adjust +the stem reference point of every head inter. + + +[^chamfer]: The distance is computed using the Chamfer Distance algorithm with a 3x3 kernel \ No newline at end of file diff --git a/docs/_pages/explanation/steps/ledgers.md b/docs/_pages/explanation/steps/ledgers.md new file mode 100644 index 000000000..7f50c61b8 --- /dev/null +++ b/docs/_pages/explanation/steps/ledgers.md @@ -0,0 +1,112 @@ +--- +layout: default +title: LEDGERS step +parent: Steps internals +nav_order: 8 +--- +# LEDGERS step +{: .no_toc } + +The `LEDGERS` step tries to detect all ledgers in a sheet. + +This data is important because the following scan for heads will be driven precisely +along and between the staff lines and ledgers of the sheet. +See the [`HEADS` step](./heads.md). + +--- +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Inputs + +- The no-staff image +- The detected staves + +## Outputs + +- The collection of ledgers, organized by (even) pitch around each staff + +## Prolog: retrieval of candidate sections + +In terms of vertical distance, a ledger cannot be closer than one interline to a staff. + +![](../../assets/images/ledgers_zizi_binary.png) + +Therefore, the engine takes the no-staff image as input, +and erases the areas occupied by the detected staves, +vertically augmented by a half-interline margin above and below each staff. + +This gives the picture below, where the remaining pixels are viewed as a horizontal run table, +hence the pale red color. + +![](../../assets/images/ledgers_zizi_glyphs.png) + +These runs are then gathered into horizontal sections. +The chosen policy is to combine adjacent runs only when they exhibit +the same starting and ending abscissa values. +This results in rectangular sections as can be seen below in a magnified view of the `Ledgers` tab: + +(the `Ledgers` tab is displayed only if the constant `displayLedgers` is set to true beforehand) + +![](../../assets/images/ledgers_zizi_sections_x6.png) + +These horizontal sections are finally dispatched to their related systems +(if a section is located between two systems, it is dispatched to both). + +## Ledgers detection at system level + +The engine uses a stick factory to build short straight horizontal filaments. +(the same as used vertically in the [`STEMS_SEEDS` step](./stem_seeds.md#vertical-filaments)). + +There is no possible histogram approach to measure the expected ledger thickness. +And it can be as thick as 3 times the staff line thickness. +So, the engine uses a maximum value extrapolated +from the staff line thickness and the staff interline value. + +Filaments that are too long or which intersect (good) beam candidates are discarded. + +The candidate ledgers are then checked incrementally around each staff: +- Starting one interline above staff and going up, one interline at a time, +- Starting one interline below staff and going down, one interline at a time. + +And of course, to be considered, a candidate ledger must build upon the needed intermediate ledgers. + +A candidate ledger is then applied weighted checks: +- Minimum length +- Minimum and maximum thickness +- Straightness +- Gap with the theoretical vertical location +- Convexity on horizontal sides (check for white pixels above and below the ledger end portions) + +If the resulting check grade is too low, the ledger candidate is discarded +(and no further candidate can be looked up beyond the candidate position). + +## Epilog: post-analysis + +During the collecting of ledgers candidates at system level, the engine had only empirical values +of acceptable ranges for ledger attributes. +Moreover, we must remember that this `LEDGERS` step is performed before the `HEADS` step. +So, at this point in time, the engine cannot use any information coming from head candidates. + +But now that the whole population of ledgers candidates is available for the current sheet, +the engine can compute the mean value and the standard deviation for key attributes +and re-check each ledger candidate about: +- the vertical distance from the previous ledger or staff line +- the ledger thickness + +The purpose of this post-analysis is to further filter out some candidates. +For example, in the picture below, the designated candidate is somewhat +too close vertically to the ledger above it: + +![](../../assets/images/ledgers_allegretto_delta.png) + +The additional filtering leads to this final configuration: + +![](../../assets/images/ledgers_allegretto_ok.png) + +Remark: This is not the end of it, since the `REDUCTION` step, +which is run after the `HEADS` and `STEMS` steps, will discard the ledgers left unused. + + diff --git a/docs/_pages/steps/links.md b/docs/_pages/explanation/steps/links.md similarity index 59% rename from docs/_pages/steps/links.md rename to docs/_pages/explanation/steps/links.md index c25c97705..a0a2ea7c6 100644 --- a/docs/_pages/steps/links.md +++ b/docs/_pages/explanation/steps/links.md @@ -2,7 +2,9 @@ layout: default title: LINKS step parent: Steps internals -grand_parent: References nav_order: 18 --- # LINKS step + +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/steps/load.md b/docs/_pages/explanation/steps/load.md similarity index 94% rename from docs/_pages/steps/load.md rename to docs/_pages/explanation/steps/load.md index 11a4024e5..7207b98e5 100644 --- a/docs/_pages/steps/load.md +++ b/docs/_pages/explanation/steps/load.md @@ -2,7 +2,6 @@ layout: default title: LOAD step parent: Steps internals -grand_parent: References nav_order: 1 --- # LOAD step diff --git a/docs/_pages/steps/measures.md b/docs/_pages/explanation/steps/measures.md similarity index 60% rename from docs/_pages/steps/measures.md rename to docs/_pages/explanation/steps/measures.md index f426fad58..721ebc99f 100644 --- a/docs/_pages/steps/measures.md +++ b/docs/_pages/explanation/steps/measures.md @@ -2,7 +2,9 @@ layout: default title: MEASURES step parent: Steps internals -grand_parent: References nav_order: 14 --- # MEASURES step + +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/steps/page.md b/docs/_pages/explanation/steps/page.md similarity index 57% rename from docs/_pages/steps/page.md rename to docs/_pages/explanation/steps/page.md index bd4480baf..895e46b2b 100644 --- a/docs/_pages/steps/page.md +++ b/docs/_pages/explanation/steps/page.md @@ -2,7 +2,9 @@ layout: default title: PAGE step parent: Steps internals -grand_parent: References nav_order: 20 --- # PAGE step + +Documentation not yet provided +{: .label .bg-red-300 } diff --git a/docs/_pages/steps/reduction.md b/docs/_pages/explanation/steps/reduction.md similarity index 61% rename from docs/_pages/steps/reduction.md rename to docs/_pages/explanation/steps/reduction.md index dd8f7fdc6..51f3df36d 100644 --- a/docs/_pages/steps/reduction.md +++ b/docs/_pages/explanation/steps/reduction.md @@ -2,7 +2,8 @@ layout: default title: REDUCTION step parent: Steps internals -grand_parent: References nav_order: 11 --- # REDUCTION step +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/steps/rhythms.md b/docs/_pages/explanation/steps/rhythms.md similarity index 60% rename from docs/_pages/steps/rhythms.md rename to docs/_pages/explanation/steps/rhythms.md index c7240f107..75fb5bbff 100644 --- a/docs/_pages/steps/rhythms.md +++ b/docs/_pages/explanation/steps/rhythms.md @@ -2,7 +2,9 @@ layout: default title: RHYTHMS step parent: Steps internals -grand_parent: References nav_order: 19 --- # RHYTHMS step + +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/steps/scale.md b/docs/_pages/explanation/steps/scale.md similarity index 90% rename from docs/_pages/steps/scale.md rename to docs/_pages/explanation/steps/scale.md index e303e3ffc..d23e9c130 100644 --- a/docs/_pages/steps/scale.md +++ b/docs/_pages/explanation/steps/scale.md @@ -2,7 +2,6 @@ layout: default title: SCALE step parent: Steps internals -grand_parent: References nav_order: 3 --- # SCALE step @@ -17,7 +16,7 @@ And the dimensions of almost all the music elements to be detected depend on the The purpose of the ``SCALE`` step is to measure this key scaling data for the sheet at hand. --- -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -55,7 +54,7 @@ found in the ``data/examples`` of Audiveris installation. It is a partial view of a column read at a given abscissa, with the sequence of white and black runs and the length of each run in pixels: -![](../assets/images/run_heights.png) +![](../../assets/images/run_heights.png) With all these vertical run lengths read in the whole image, the engine builds two histograms: - The **black** histogram uses the length of every black run, @@ -68,7 +67,7 @@ The final histograms can be viewed via the {{ site.sheet_scale_plots }} pull-dow ### Black histogram -![](../assets/images/black_plot.png) +![](../../assets/images/black_plot.png) In this plot, we can clearly see two peaks on the length of vertical black runs: - a first peak around value 3, this is the typical staff line thickness @@ -76,7 +75,7 @@ In this plot, we can clearly see two peaks on the length of vertical black runs: ### Combo histogram -![](../assets/images/combo_plot.png) +![](../../assets/images/combo_plot.png) Here we have just one peak around value 21, this is the typical interline value. @@ -99,7 +98,7 @@ Regarding the _black_ histogram: The image can in fact contain no beam, but it can also contain too few of them, resulting in no clear peak. In the latter case, the end user may have to explicitly provide the beam thickness to the engine. - See this [sheet scale section about beam thickness](../main/sheet_scale.md#beam-thickness). + See this [sheet scale section about beam thickness](../../guides/main/sheet_scale.md#beam-thickness). - It may exhibit 3 peaks, one for the typical line thickness and the two others for two populations of beams: small and large (standard). @@ -112,4 +111,4 @@ one with a smaller interline and one with a larger (standard) interline. The engine will notify the user about a sheet considered as "*invalid*" from the OMR point of view. - This case can also occur when the score contains no multi-line staff, hence there is no physical *inter*-line to measure. - See [snippets with only one-line staves](../specific/snippets.md). + See [snippets with only one-line staves](../../guides/specific/snippets.md). diff --git a/docs/_pages/steps/stem_seeds.md b/docs/_pages/explanation/steps/stem_seeds.md similarity index 92% rename from docs/_pages/steps/stem_seeds.md rename to docs/_pages/explanation/steps/stem_seeds.md index d0073b55a..7e1ea3c4f 100644 --- a/docs/_pages/steps/stem_seeds.md +++ b/docs/_pages/explanation/steps/stem_seeds.md @@ -2,7 +2,6 @@ layout: default title: STEM_SEEDS step parent: Steps internals -grand_parent: References nav_order: 6 --- # STEM_SEEDS step @@ -26,7 +25,7 @@ and finally to: 1. filter all the candidates -- the [``REDUCTION`` step](./reduction.md) --- -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -52,7 +51,7 @@ In the normal case -- that is with no thickness value provided -- the engine must, as a step prolog, measure the typical stem thickness. It does so by crafting an input image suitable for a global stem analysis. -To avoid any pollution brought by lyrics, title or other external entities, +To avoid any pollution brought by lyrics, title or other external Main concepts, the engine focuses only on the core staff areas, which is the staff height augmented vertically slightly less than one interline above and one interline below. @@ -64,14 +63,14 @@ this should have a negligible impact on the stem thickness computation. The result is an input image like this one (still for the ``chula`` example): -![chula stems buffer](../assets/images/chula_stems_buffer.png) +![chula stems buffer](../../assets/images/chula_stems_buffer.png) On this input, it is easy to build a histogram of horizontal black runs lengths, as shown below. We can display this histogram via the {{ site.sheet_stem_plot }} pull-down menu -- provided we have activated the ``PLOTS`` topic in the {{ site.tools_advanced }} menu. -![chula stems histo](../assets/images/chula_stems_histo.png) +![chula stems histo](../../assets/images/chula_stems_histo.png) The retrieved peak gives the stem thickness: in our example, the most frequent value is 2 pixels, and the maximum value is 3 pixels. diff --git a/docs/_pages/steps/stems.md b/docs/_pages/explanation/steps/stems.md similarity index 59% rename from docs/_pages/steps/stems.md rename to docs/_pages/explanation/steps/stems.md index 8292d36ec..d88cf3101 100644 --- a/docs/_pages/steps/stems.md +++ b/docs/_pages/explanation/steps/stems.md @@ -2,7 +2,9 @@ layout: default title: STEMS step parent: Steps internals -grand_parent: References nav_order: 10 --- # STEMS step + +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/steps/symbols.md b/docs/_pages/explanation/steps/symbols.md similarity index 60% rename from docs/_pages/steps/symbols.md rename to docs/_pages/explanation/steps/symbols.md index fa95617ed..16aa5c7e2 100644 --- a/docs/_pages/steps/symbols.md +++ b/docs/_pages/explanation/steps/symbols.md @@ -2,7 +2,9 @@ layout: default title: SYMBOLS step parent: Steps internals -grand_parent: References nav_order: 17 --- # SYMBOLS step + +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/steps/texts.md b/docs/_pages/explanation/steps/texts.md similarity index 59% rename from docs/_pages/steps/texts.md rename to docs/_pages/explanation/steps/texts.md index f6d9c51cb..6ff2f41fc 100644 --- a/docs/_pages/steps/texts.md +++ b/docs/_pages/explanation/steps/texts.md @@ -2,7 +2,9 @@ layout: default title: TEXTS step parent: Steps internals -grand_parent: References nav_order: 13 --- # TEXTS step + +Documentation not yet provided +{: .label .bg-red-300 } \ No newline at end of file diff --git a/docs/_pages/folders/standard.md b/docs/_pages/folders/standard.md deleted file mode 100644 index 1bb00230f..000000000 --- a/docs/_pages/folders/standard.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: default -title: Standard folders -grand_parent: References -parent: Folders -nav_order: 1 ---- -# Standard folders -{: .no_toc :} -{: .d-inline-block } -new in 5.3 -{: .label .label-yellow } ---- -Table of contents -{: .no_toc .text-delta } - -1. TOC -{:toc} ---- - -## Purpose - -This is where, by default, Audiveris stores all score outputs, such as the `.omr` project -files, the `.pdf` printouts, the `.mxl` MusicXML files, etc. - -## Historical target policy - -Before 5.3, Audiveris policy was to gather all outputs of a given input file -in a specific sub-folder, named according to the input radix, created under the base folder. - -For example, with this historical policy, the processing of some "``Bach_Fugue.tif``" input file -results in a single specific "``Bach_Fugue``" sub-folder -containing "``Bach_Fugue.omr``", "``Bach_Fugue.mxl``" and perhaps "``Bach_Fugue-samples.zip``", etc. - -This gives something like: - -``` - - ├── Bach_Fugue - │   ├── Bach_Fugue.omr - │   ├── Bach_Fugue.mxl - │   └── Bach_Fugue-samples.zip - ├── ... - ... -``` - -All that Audiveris needs to know is the **base folder**. - -The *default* path to the base folder depends on Operating System: - -| OS | `DATA_FOLDER` base | -| --- | --- | -| **Windows** | <User Documents>\\Audiveris | -| **Linux** (choice #1)| $XDG_DATA_HOME/AudiverisLtd/audiveris | -| **Linux** (choice #2)| $HOME/AudiverisLtd/audiveris | -| **MacOS** | $HOME/Library/AudiverisLtd/audiveris/data | - -We can change this _default_ **base folder** via the pull-down menu {{ site.tools_options }} dialog, -by modifying the value of `org.audiveris.omr.sheet.BookManager.baseFolder` constant. -(the modification persists between runs, until it is reset). - -Rather than a base folder and a specific book sub-folder, we can choose to directly define an **output folder** -via the `-output ` [CLI](../advanced/cli.md) argument. -(the modification is valid for this run only). -Still using the same processing example of ``Bach_Fugue.tif``, -this time with CLI option ``-output /path/to/fooBar``, we would get outputs like: - -``` - /path/to/fooBar - ├── Bach_Fugue.omr - ├── Bach_Fugue.mxl - ├── Bach_Fugue-samples.zip - ... -``` - -## Updated target policy - -The historical target policy is still the default policy, but additional possibilities -are now provided by Audiveris 5.3. - -Beside the CLI option ``-output ``, we now have two options selectable in -{{ site.tools_advanced}} pull-down menu. -See its [Target output folders](../advanced/topics.md#target-output-folders) section. -- **Input sibling** option, off by default, to locate outputs next to the input file -- **Separate folders** option, on by default, to gather outputs in a specific sub-folder - -With these three options in hand, here is the algorithm to determine the default output folder of a book: -- If the book has already been saved (read: there already exists a book ``.omr`` file, -for example because we have already saved it), then we use the same folder. -- Else if CLI option ``-output `` exists, we use the specified output-folder. -- Else if ``Input sibling`` option is on, we use the same folder as the input file. -- Else if ``Separate folders`` option is on, we create a book specific sub-folder in the base folder. -- Else we use the base folder. diff --git a/docs/_pages/guides/README.md b/docs/_pages/guides/README.md new file mode 100644 index 000000000..6e626d29f --- /dev/null +++ b/docs/_pages/guides/README.md @@ -0,0 +1,22 @@ +--- +layout: default +title: How-to guides +nav_order: 2 +has_toc: false +--- + +# How-to guides + +This `How-to` chapter guides the user around specific tasks, +presented in a progressive manner. + +--- +Table of contents +{: .text-epsilon } + +| Topic | Content | +| :--- | :--- | +| [Main features](./main/README.md) | Thorough description of the software main features | +| [User editing](./ui/README.md) | Main tools and typical examples to correct OMR outputs | +| [Specific features](./specific/README.md) | Features related to specific items | +| [Advanced features](./advanced/README.md) | Features only relevant for an advanced usage of Audiveris | diff --git a/docs/_pages/guides/advanced/README.md b/docs/_pages/guides/advanced/README.md new file mode 100644 index 000000000..21c91eb6c --- /dev/null +++ b/docs/_pages/guides/advanced/README.md @@ -0,0 +1,13 @@ +--- +layout: default +title: Advanced features +parent: How-to guides +nav_order: 4 +--- +# Advanced features {#advanced} + +Audiveris provides a few features that are mostly interesting only for the advanced user. +They are all gathered in this chapter. + +The `Samples` and the `Training` chapters are specifically intended for users who need +to modify the behavior of the neural network underlying the glyph classifier. diff --git a/docs/_pages/advanced/cli.md b/docs/_pages/guides/advanced/cli.md similarity index 88% rename from docs/_pages/advanced/cli.md rename to docs/_pages/guides/advanced/cli.md index 0d60e6f85..11e679863 100644 --- a/docs/_pages/advanced/cli.md +++ b/docs/_pages/guides/advanced/cli.md @@ -1,30 +1,29 @@ --- layout: default -title: Command Line Interface -parent: Advanced Features +title: Command line interface +parent: Advanced features nav_order: 1 --- -# Command Line Interface +# Command line interface {: .no_toc } --- Table of contents -{: .no_toc .text-delta } - -1. TOC +{: .no_toc .text-epsilon } +- TOC {:toc} --- ## Syntax -Note that any argument beginning with the `@` character is considered as the name of a text file +Any argument beginning with the `@` character is considered as the name of a text file to be immediately expended _in situ_ (the text file is assumed to contain one argument per line). CLI syntax is displayed as follows when the `-help` argument is present: ``` Audiveris Version: - 5.3-alpha + 5.4 Syntax: audiveris [OPTIONS] [--] [INPUT_FILES] @@ -38,16 +37,16 @@ Options: -sheets int[] : Select sheet numbers and ranges (1 4-5) -transcribe : Transcribe whole book -step [LOAD | BINARY | SCALE | GRID | HEADERS | : Define a specific target step - STEM_SEEDS | BEAMS | LEDGERS | HEADS | STEMS | - REDUCTION | CUE_BEAMS | TEXTS | MEASURES | - CHORDS | CURVES | SYMBOLS | LINKS | RHYTHMS | - PAGE] + STEM_SEEDS | BEAMS | LEDGERS | HEADS | STEMS | + REDUCTION | CUE_BEAMS | TEXTS | MEASURES | + CHORDS | CURVES | SYMBOLS | LINKS | RHYTHMS | + PAGE] -force : Force step/transcribe re-processing - -output : Define target output folder + -output : Define base output folder -playlist : Build a compound book from playlist -export : Export MusicXML -print : Print out book - -option key=value : Define an application constant + -constant key=value : Define an application constant -upgrade : Upgrade whole book file -save : In batch, save book on every successful step -swap : Swap out every sheet after its processing @@ -105,13 +104,13 @@ This option is effective only when a target step is specified Displays the arguments summary as printed above, then exits. -### -option KEY=VALUE +### -constant KEY=VALUE -Specifies the value of one application option, -KEY being the qualified name of the option, -VALUE being the value to assign. +Specifies the value of one application constant: [^option] +- KEY being the *fully qualified* name of the constant, +- VALUE being the value to assign. -This is the CLI equivalent of the GUI pull-down menu {{ site.tools_options }}. +This is the CLI equivalent of the GUI pull-down menu {{ site.tools_constants }}. ### -output DIRNAME @@ -119,7 +118,7 @@ Defines the path to the target output folder, that is the precise folder where a (``.omr``, ``.mxl``, etc) should be stored. if this option is not present, a default output folder is chosen according to the policy described -in [Standard folders](../folders/standard.md) section. +in [Standard folders](../../reference/folders/standard.md) section. ### -playlist FILE.XML @@ -129,7 +128,7 @@ If in batch mode, the loaded playlist is used to build a compound book according content. If in interactive mode, the loaded playlist is used only to populated and display a -`Split and Merge` dialog. +`Split and merge` dialog. The user can then review and/or edit the playlist and potentially launch the building of the compound book at a desired location. @@ -194,7 +193,7 @@ These arguments are made available for the advanced user. ### -annotate -For each book, populates a Zip archive with images and symbol annotations derived from book Inter +For each book, populates a Zip archive with images and symbol annotations derived from book `Inter` instances. These annotations are meant to populate a dataset for training future Audiveris 6.x new classifiers @@ -203,7 +202,7 @@ These annotations are meant to populate a dataset for training future Audiveris ### -sample -Populates each book sample repository with samples derived from the book Inter instances. +Populates each book sample repository with samples derived from the book `Inter` instances. A book-level repository can be later merged into the global Audiveris sample repository in order to prepare a training of Audiveris 5.x Glyph classifier. @@ -237,3 +236,5 @@ public abstract class RunClass public abstract void process (); } ``` + +[^option]: `-constant` is a better name than the old `-option`, but both names are supported. \ No newline at end of file diff --git a/docs/_pages/advanced/options.md b/docs/_pages/guides/advanced/constants.md similarity index 62% rename from docs/_pages/advanced/options.md rename to docs/_pages/guides/advanced/constants.md index 5f082a831..b6eee70b8 100644 --- a/docs/_pages/advanced/options.md +++ b/docs/_pages/guides/advanced/constants.md @@ -1,54 +1,53 @@ --- layout: default -title: Options -parent: Advanced Features +title: Constants +parent: Advanced features nav_order: 4 --- -# Options {#options} +# Constants {: .no_toc } There is (or should be) no hard-coded constant in Audiveris code. Instead, algorithms are backed by "_application constants_" (more than 800 of them today). This mechanism is a low level yet powerful way to handle nearly all application tuning data. -This data is presented as options to the end user, and is modifiable at run time: -* Through the CLI `-option KEY=VALUE` argument -* Through the pull-down menu {{ site.tools_options }} +This data is presented as constants to the end user, and is modifiable at run time: +* Through the CLI `-constant KEY=VALUE` argument +* Through the pull-down menu {{ site.tools_constants }} --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- ## Dialog The display below combines a tree of classes on the left side, and a table on the right side, -where details of the options from the containing classes are available for display and modification. +where details of the constants from the containing classes are available for display and modification. -![](../assets/images/options.png) +![](../../assets/images/constants.png) -The picture represents the top of the scrollable Options view: +The picture represents the top of the scrollable Constants view: We are located at the top of Audiveris software, with the root packages: `org`, `audiveris`, `omr`. -To ease the browsing of all options, there is a `Search` area, where the user can enter some text -to be searched for among the class names, option names and option descriptions. +To ease the browsing of all constants, there is a `Search` area, where the user can enter some text +to be searched for among the class names, constant names and constant descriptions. The search is not case-sensitive. Let's suppose we would like to somewhat relax the constraint on the horizontal distance between an accidental alteration sign (like a sharp) and the note head on its right side. We can enter `accid` in the search area and press the search button (perhaps several times) -until we get to several interesting options. +until we get to several interesting constants. Here is what we can read: -![](../assets/images/options_accid.png) +![](../../assets/images/constants_accid.png) 1. We are in the package named `relation`, (its full name is org.audiveris.omr.sig.relation) and the class named `AlterHeadRelation`, which governs a potential relation between an alteration and a head. -2. Among the various class options, we are interested by `xOutGapMax` and `xOutGapMaxManual` which +2. Among the various class constants, we are interested by `xOutGapMax` and `xOutGapMaxManual` which define the maximum horizontal gap between an accidental alteration and a note head. The former is meant for the OMR engine, the latter for manual assignment. Threshold for manual assignment is larger, because we can offer to be less strict when the user @@ -61,21 +60,22 @@ number of pixels using the sheet interline scale (42 and 63 on this picture). value there. The new value applies immediately. -## Options Lifecycle +## Constants Lifecycle The overriding mechanism is defined as follows, from lower to higher priority: 1. FACTORY: The default value as defined in the source code, -2. USER: The modified value, if any, persisted in a hidden specific `run.properties` file, -3. CLI: The value, if any, specified in the command line by a `-option key=value`. +2. USER: The modified value, if any, persisted in a specific `run.properties` file +located in the user [config folder](../../reference/folders/essential.md#config-folder), +3. CLI: The value, if any, specified in the command line by a `-constant key=value`. The CLI value is persisted in the USER file when running in interactive mode, and not persisted when running in batch. -4. UI: The value, if any, specified through the {{ site.tools_options }} user interface. +4. UI: The value, if any, specified through the {{ site.tools_constants }} user interface. These UI values are persisted in the USER file. If ever we want to discard the modification we have made and get back to the FACTORY value of an -option, we simply uncheck the box in the `Modif` column of this option in the Options window. +constant, we simply uncheck the box in the `Modif` column of this constant in the Constants window. -To restore the FACTORY value for **all** options, we use the `Reset` button located at the top of the -Options window. +To restore the FACTORY value for **all** constants, we use the `Reset` button located at the top of the +Constants window. Needless to say, we will be prompted for confirmation beforehand... diff --git a/docs/_pages/advanced/improve_input.md b/docs/_pages/guides/advanced/improved_input.md similarity index 85% rename from docs/_pages/advanced/improve_input.md rename to docs/_pages/guides/advanced/improved_input.md index 5c193e92f..693deca6e 100644 --- a/docs/_pages/advanced/improve_input.md +++ b/docs/_pages/guides/advanced/improved_input.md @@ -1,10 +1,10 @@ --- layout: default -title: Improve Input -parent: Advanced Features +title: Improved Input +parent: Advanced features nav_order: 3 --- -# Improve Input +# Improved Input {: .no_toc } Sometimes the base image is of rather bad quality. @@ -13,8 +13,7 @@ the components of a score correctly. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -33,36 +32,36 @@ improves the recognition. Have a look a the following part of a score: there are a lot of disturbances between the staff lines. -![](../assets/images/adjust_brightness_1.png) +![](../../assets/images/adjust_brightness_1.png) Now simply increase the brightness of the image by using the color curve tool. Keep the dark parts black, to get an image like this: -![](../assets/images/adjust_brightness_2.png) +![](../../assets/images/adjust_brightness_2.png) ### Improve Image using Filters Have a look at the following image: here we have a lot of noise in the lines and in the bars. The transcriptions will have problem to properly detect the bars in such a case. -![](../assets/images/adjust_filter_1.png) +![](../../assets/images/adjust_filter_1.png) Now use a gaussian blur filter with size 1.5 to 2.0, and you get the following: -![](../assets/images/adjust_filter_2.png) +![](../../assets/images/adjust_filter_2.png) Now use the color curve tool an remove about the top and bottom 10% of the input brightness range (look at the result, the optimal values depend on your input image): -![](../assets/images/adjust_filter_brightness.png) +![](../../assets/images/adjust_filter_brightness.png) and you get something like this (the stems should still be a close line): -![](../assets/images/adjust_filter_3.png) +![](../../assets/images/adjust_filter_3.png) Finally use an "unsharp mask" filter with standard deviation set to about 1.0 to regenerate a sharp image: -![](../assets/images/adjust_filter_4.png) +![](../../assets/images/adjust_filter_4.png) You see that now the noise is almost completely removed. @@ -74,14 +73,14 @@ This section describes how to pre-process low resolution sheet music scans befor When attempting to process low-resolution images with Audiveris, one may encounter warnings and/or identification errors. -![](../assets/images/enlarge_warning_interline_value.png) +![](../../assets/images/enlarge_warning_interline_value.png) -![](../assets/images/enlarge_failed_omr.png) +![](../../assets/images/enlarge_failed_omr.png) It is possible to improve or even entirely overcome such obstacles using super-resolution processing software and services to enlarge the image before processing with Audiveris. e.g. -![](../assets/images/enlarge_successful_omr.png) +![](../../assets/images/enlarge_successful_omr.png) This document will detail an example using free, open-source software that is commonly distributed in Linux distributions. Alternatives for Macintosh and Windows will be mentioned as well. @@ -91,7 +90,7 @@ This document will detail an example using free, open-source software that is co * Linux: [waifu2x-ncnn-vulkan](https://github.com/nihui/waifu2x-ncnn-vulkan). * Windows: [waifu2x_snowshell](https://github.com/YukihoAA/waifu2x_snowshell). -* Mac: [waifu2x-ncnn-vulkan-macos](https://github.com/moeoverflow/waifu2x-ncnn-vulkan-macos). +* Mac: [waifu2x-ncnn-vulkan-macOS](https://github.com/moeoverflow/waifu2x-ncnn-vulkan-macOS). 2. [ImageMagick](https://imagemagick.org). For git-2-png conversion. diff --git a/docs/_pages/advanced/plugins.md b/docs/_pages/guides/advanced/plugins.md similarity index 90% rename from docs/_pages/advanced/plugins.md rename to docs/_pages/guides/advanced/plugins.md index 36800d5af..f576b4f70 100644 --- a/docs/_pages/advanced/plugins.md +++ b/docs/_pages/guides/advanced/plugins.md @@ -1,7 +1,7 @@ --- layout: default title: Plugins -parent: Advanced Features +parent: Advanced features nav_order: 5 --- # Plugins {#plugins} @@ -20,8 +20,7 @@ This sequence can be automated via the use of one or several plugins. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -31,11 +30,11 @@ Table of contents Once plugins are correctly configured, we can call an external program by selecting the desired one in the pull-down `Plugins` menu: -![](../assets/images/plugins_menu_finale.png) +![](../../assets/images/plugins_menu_finale.png) Even simpler, the default plugin can be directly called by pressing the toolbar plugin icon: -![](../assets/images/plugin_icon.png) +![](../../assets/images/plugin_icon.png) In either case, Audiveris makes sure the book has been transcribed, that the MusicXML export file exists and is up-to-date with the latest score modifications performed manually by the user, @@ -45,7 +44,7 @@ providing the path to the exported file as an import argument. ## Plugins Configuration We can define one or more plugins, by creating a single XML file, named `plugins.xml`, -in [Audiveris configuration folder](../folders/essential.md#config-folder). +in the [Audiveris configuration folder](../../reference/folders/essential.md#config-folder). At Audiveris launch time, if a `plugins.xml` file is found in the configuration folder, then a proper pull-down `Plugins` menu and a plugin toolbar button are defined according to the file content. @@ -111,7 +110,9 @@ Here below is an example of such `plugins.xml` file. Although this `plugins.xml` example is obviously meant for a Windows environment, its content is rather self-explanatory: -* Each `` element defines a separate plugin. +* The first line is the mandatory signature for an XML file. +* Then a `plugins` element will contain one or several `plugin` children. +* Each `` child defines a separate plugin. * The first plugin found in file is taken as the `default` one. * The sequence of `` elements defines the precise syntax of a CLI command. * The `{}` arg is a placeholder where Audiveris will insert the path(s) to diff --git a/docs/_pages/advanced/samples.md b/docs/_pages/guides/advanced/samples.md similarity index 88% rename from docs/_pages/advanced/samples.md rename to docs/_pages/guides/advanced/samples.md index 5020ea8cd..c87718284 100644 --- a/docs/_pages/advanced/samples.md +++ b/docs/_pages/guides/advanced/samples.md @@ -1,7 +1,7 @@ --- layout: default title: Samples -parent: Advanced Features +parent: Advanced features nav_order: 6 --- # Samples @@ -19,15 +19,14 @@ glyph samples (a sample is basically a glyph with the related shape). --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- ## Initial samples There is an Audiveris Google drive located at -[https://drive.google.com/drive/u/1/folders/0B9_F5tULPk_oeEU0a2Z1U0gwLTg?resourcekey=0-W_yyQcPj9JL9Bc2bKTAtrg](https://drive.google.com/drive/u/1/folders/0B9_F5tULPk_oeEU0a2Z1U0gwLTg?resourcekey=0-W_yyQcPj9JL9Bc2bKTAtrg) +[this address](https://drive.google.com/drive/u/1/folders/0B9_F5tULPk_oeEU0a2Z1U0gwLTg?resourcekey=0-W_yyQcPj9JL9Bc2bKTAtrg). It contains training data, organized by folders. Let's inspect folder 5.3 which is the more recent folder as of this writing. @@ -55,9 +54,9 @@ help us see most samples within their sheet context. After perhaps some manual corrections, when we are really satisfied with all the glyphs recognized in a given sheet, we can save the sheet data as training samples. -This is done via the pull-down menu `Sheet → Sample sheet Symbols`. +This is done via the pull-down menu {{ site.sheet_sample }}. -We can also use the pull-down menu `Book → Sample book Symbols` if we are comfortable with all the +We can also use the pull-down menu {{ site.book_sample}} if we are comfortable with all the book sheets. Data is saved under two zip archives located in the book folder. @@ -80,7 +79,7 @@ repository or to assign it a correct shape. To work on the **GLOBAL** repository, we use the `Tools → Browse Global Repository...` pull-down menu. It will work on the `samples.zip` and `images.zip` files if any are found in our own `config/train` -folder (see [Train folder](../folders/essential.md#train-folder) section). +folder (see the [Train folder](../../reference/folders/essential.md#train-folder) section). To work on a **book** repository, we use the `Book → View Book Repository...` pull-down menu. We will be able to pick and merge book repositories into the GLOBAL repository later on, @@ -88,7 +87,7 @@ because the training process uses only the GLOBAL repository. Either way, the repository user interface is the same: -![](../assets/images/global_repository.png) +![](../../assets/images/global_repository.png) The repository interface is organized as follows: * Left column: diff --git a/docs/_pages/main/scanning.md b/docs/_pages/guides/advanced/scanning.md similarity index 93% rename from docs/_pages/main/scanning.md rename to docs/_pages/guides/advanced/scanning.md index 9f7785c8c..996aad999 100644 --- a/docs/_pages/main/scanning.md +++ b/docs/_pages/guides/advanced/scanning.md @@ -1,8 +1,8 @@ --- layout: default title: Scanning -parent: Main Features -nav_order: 4 +parent: Advanced features +nav_order: 2 --- # Scanning of paper scores @@ -39,4 +39,4 @@ Special settings like "Line Art", "Text", "Dithering" or "Halftone" should be di they often lead to unwanted image distortions. We should prefer a dedicated image processing software in order to carefully enhance low-quality images when needed. -See the [Improve Input](../advanced/improve_input.md) section. +See the [Improved Input](../advanced/improved_input.md) section. diff --git a/docs/_pages/advanced/training.md b/docs/_pages/guides/advanced/training.md similarity index 75% rename from docs/_pages/advanced/training.md rename to docs/_pages/guides/advanced/training.md index f5ea0a6e6..fc128e1f2 100644 --- a/docs/_pages/advanced/training.md +++ b/docs/_pages/guides/advanced/training.md @@ -1,7 +1,7 @@ --- layout: default title: Training -parent: Advanced Features +parent: Advanced features nav_order: 7 --- # Training {#training} @@ -26,8 +26,7 @@ dialog. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -38,34 +37,34 @@ This dialog is dedicated to the training of Audiveris basic classifier (a glyph It is launched via the pull-down menu {{ site.tools_train }} or, from the global repository, by its `Repository → Train classifier` menu. -![](../assets/images/classifier_training.png) +![](../../assets/images/classifier_training.png) Here we can launch and monitor the training of the classifier neural network. -`Select` button makes a new random selection among the samples of the global repository. +The `Select` button makes a new random selection among the samples of the global repository. -`Reset` button builds a new network from scratch (forgetting any previous training). +The `Reset` button builds a new network from scratch (forgetting any previous training). -`Train` button launches a training of the current network +The `Train` button launches a training of the current network (which is either the initially-trained one, or a brand new one if `Reset` was hit). Note that training hyper-parameters cannot be directly modified on this interface. -If really needed, we can use the {{ site.tools_options }} menu and search for `BasicClassifier`. +If really needed, we can use the {{ site.tools_constants }} menu and search for `BasicClassifier`. There we can set amplitude, learningRate, momentum and maxEpochs parameters. -`Stop` button allows to stop the training before the maxEpochs count has been reached. +The `Stop` button allows to stop the training before the maxEpochs count has been reached. ## Validation There are two data sets available for validation, the train set (of no major interest) and the test set. -`Test` button launches validation on the data set at hand. +The `Test` button launches validation on the data set at hand. Note that validation is disabled if any training is going on. -![](../assets/images/classifier_validation.png) +![](../../assets/images/classifier_validation.png) -In picture above, without further training, we have directly run validation on a random test set. +In the picture above, without further training, we have directly run validation on a random test set. Beside the accuracy measure value, 3 `View` buttons are of interest to launch a repository view with just the samples involved in: diff --git a/docs/_pages/guides/main/README.md b/docs/_pages/guides/main/README.md new file mode 100644 index 000000000..292187bce --- /dev/null +++ b/docs/_pages/guides/main/README.md @@ -0,0 +1,10 @@ +--- +layout: default +title: Main features +parent: How-to guides +nav_order: 1 +--- +# Main features + +This chapter presents the main features of the Audiveris application, especially the +pipeline of the OMR engine, from input to outputs. \ No newline at end of file diff --git a/docs/_pages/guides/main/book_parameters.md b/docs/_pages/guides/main/book_parameters.md new file mode 100644 index 000000000..d4fdefe4f --- /dev/null +++ b/docs/_pages/guides/main/book_parameters.md @@ -0,0 +1,165 @@ +--- +layout: default +title: Book parameters +parent: Main features +nav_order: 5 +--- +# Book parameters +{: .no_toc } + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Dialog + +The pull-down menu {{ site.book_parameters }} opens a dialog to review and modify +high-level processing parameters. + +The following example displays the parameters dialog for a book (`Dichterliebe01`) which contains +two sheets: + +![](../../assets/images/book_parameters.png) + +## Scopes + +The dialog is organized in several tabs to describe Default, Book and Sheet's scopes respectively. +In this example, the dialog provides 4 tabs, one for Default, one for Dichterliebe01 book, +and one for each sheet in the Dichterliebe01 book. + +The same parameters are defined for each scope, and each scope by default inherits from the upper +scopes in the hierarchy: +1. **Default** level: This is the information provided by default for all books. +Any such global value is read from source, unless we have overridden it at default level. +2. **Book** level: We can override any default value for this book only, and it will apply +transitively to all sheets in this book. +3. **Sheet** level: Finally, we can override any value for the specific sheet at hand. + +To override a value for a given scope: +1. We first select the proper scope tab, +2. We then put a checkmark on the left side to indicate that we want to override the selected parameter. +The line gets enabled, it changes from gray to black. +3. We define the new value, either by selecting in a list, or typing a number, +or checking a boolean box, etc. + +To cancel a value modification, we simply un-check the box on left side. +The line then gets disabled, changing from black to gray, and it now displays the inherited value +in lieu of the overriding value. + +## Lifecycle + +All modifications apply only when either the `OK` button or the `Apply` button is pressed, +which actually commits them. +The `OK` button completes the dialog, while the `Apply` button keeps the dialog open. + +* All the modified **default** values persist from one run of the application to the other +(until they are modified again or reset to their factory values). + +* All the modified **book/sheets** values persist in the book `.omr` project file. + +## Parameters + +### General + +* **Music font** +We can choose a specific music font between ``Bravura``, ``Finale Jazz`` or ``Jazz Perc``. +This decision is especially important for head recognition which is based on a font +template matching technique. +See the specific [Music Font](../specific/fonts.md#music-fonts) section. + +* **Text font** +The text font has no impact on recognition, but can provide a more faithful output. +We can adjust the text font between +``Sans Serif``, ``Serif`` and ``Finale Jazz Text``. + +* **Input quality** +This item allows adapting the OCR engine behavior to the expected quality of the input image between +``synthetic``, ``standard`` and ``poor``. + +### OCR languages + +Define the specification of dominant languages for OCR'd text +(note that we can select several languages) + +### Binarization + +(this topic does not appear unless the SPECIFIC_ITEMS advanced topic has been selected) + + +We can select the kind of filter (`global` or `adaptive`) which gives the best results for the sheet +image at hand. + +We can also adjust the related numbers. +Playing with the `global` threshold is easy, but modifying the parameters of the `adaptive` filter +is not recommended. +In fact, the default `adaptive` filter seems to give good results in all cases, therefore this +parameter is kept only for potential use on a specific case. + +### Scaling specifications + +* **Interline** specification (expressed in number of pixels). + This field appears when ***only*** 1-line staves are declared. + In this case, the engine has no way to measure an "interline value", + since there is simply *no* interline. +* **Barline height** specification (`four`, `twoThenFour`, `two`, `oneThenTwo`). + This field appears when 1-line staves are declared. + It defines the typical height for barlines in 1-line staves, + expressed in number of interlines (or note head heights). + - `four`: The height of every barline is 4 interlines + (this is the usual case, as for 5-line standard staves) + - `twoThenFour`: The height of the first barline (on the left side of the staff) is 2 interlines, + and the following ones are 4 interlines. + - `two`: The height of every barline is 2 interlines. + - `oneThenTwo`: The height of the first barline (on the left side of the staff) is 1 interline, + and the following ones are 2 interlines. +* **Beam thickness** specification (expressed in number of pixels). + This field is always present, it is useful when there are too few beams + for the engine to get a reliable measurement. + +The scaling specifications can depend on staves declarations are shown in the following picture. +Note in this example that: +- There are no multi-line staves, hence the need for interline specification +- There are 1-line staves, hence the need for barline height specification + +![](../../assets/images/scaling_staves.png) + +### Staves + +* Presence of 1-line percussion staves +* Presence of 4-line bass tablatures +* Presence of 5-line standard staves +* Presence of 5-line unpitched percussion staves +* Presence of 6-line guitar tablatures + +### Processing + +In some cases, supporting a rather rare feature may imply collateral damage, the small note heads +are an example of such a tricky feature. +So it is safer to use them only when we have to. + + * Keep loaded gray images + * Use of system indentation + * Potential presence of small note heads + * Potential presence of small beams + * Potential presence of cross note heads + * Potential presence of tremolos + * Potential presence of fingering digits + * Potential presence of frets roman digits (I, II, III, IV...) + * Potential presence of plucking (p, i, m, a) + * Potential presence of partial whole rests + * Potential presence of multi-whole head chords + * Potential presence of chord names + * Potential presence of lyrics + * Potential presence of lyrics even located above staff + * Potential presence of articulations + * Link augmentation dot to both shared heads + * Support for implicit tuplets + +{: .highlight } +A switch can disable a feature for the OMR automatic recognition, +but in most cases the feature remains available for manual user actions. + + diff --git a/docs/_pages/main/book_portions.md b/docs/_pages/guides/main/book_portions/README.md similarity index 92% rename from docs/_pages/main/book_portions.md rename to docs/_pages/guides/main/book_portions/README.md index 9dbb16d92..ee9b6d5dd 100644 --- a/docs/_pages/main/book_portions.md +++ b/docs/_pages/guides/main/book_portions/README.md @@ -1,11 +1,10 @@ --- layout: default -title: Book Portions -parent: Main Features -has_children: true +title: Book portions +parent: Main features nav_order: 7 --- -# Book Portions +# Book portions Handling a one-image score is just a matter of one book with one sheet in it. But handling cases of dozens or hundreds of score images may require more flexible approaches: diff --git a/docs/_pages/main/sheet_selection.md b/docs/_pages/guides/main/book_portions/sheet_selection.md similarity index 82% rename from docs/_pages/main/sheet_selection.md rename to docs/_pages/guides/main/book_portions/sheet_selection.md index 364f08a07..a955a1081 100644 --- a/docs/_pages/main/sheet_selection.md +++ b/docs/_pages/guides/main/book_portions/sheet_selection.md @@ -1,12 +1,11 @@ --- layout: default -title: Sheet Selection -grand_parent: Main Features -parent: Book Portions +title: Sheet selection +parent: Book portions nav_order: 2 --- -# Sheet Selection +# Sheet selection An action launched at the sheet level processes only that sheet. An action launched at the book level, processes by default all the (valid) sheets of the book. @@ -19,8 +18,8 @@ selection dialog based on sheet IDs as shown below: | Selection | Meaning | | ----------- | ------------ | -|![](../assets/images/specified_sheets_empty.png)| Blank specification: **All** sheets are selected| -|![](../assets/images/specified_sheets.png)| Specification says: 1, then 4 through 10| +|![](../../../assets/images/specified_sheets_empty.png)| Blank specification: **All** sheets are selected| +|![](../../../assets/images/specified_sheets.png)| Specification says: 1, then 4 through 10| Remarks: @@ -41,5 +40,5 @@ Remarks: [^empty_spec]: In Audiveris 5.2, a null specification used to mean _all sheets_ while an empty specification used to mean _no sheets_. - Starting with Audiveris 5.3, for the sake of consistency with the new "Split and Merge" feature, + Starting with Audiveris 5.3, for the sake of consistency with the new "Split and merge" feature, they now both mean the same thing: _**all sheets**_. diff --git a/docs/_pages/main/sheet_validity.md b/docs/_pages/guides/main/book_portions/sheet_validity.md similarity index 85% rename from docs/_pages/main/sheet_validity.md rename to docs/_pages/guides/main/book_portions/sheet_validity.md index d801edfa8..63c246011 100644 --- a/docs/_pages/main/sheet_validity.md +++ b/docs/_pages/guides/main/book_portions/sheet_validity.md @@ -1,11 +1,10 @@ --- layout: default -title: Sheet Validity -grand_parent: Main Features -parent: Book Portions +title: Sheet validity +parent: Book portions nav_order: 1 --- -# Sheet Validity +# Sheet validity {: .no_toc } All images in an input file may not be score images: we can find illustration pages, blank pages, etc. @@ -23,7 +22,7 @@ In the `Sheet` pull-down menu, we can look at the `Current status` item: | Valid sheet | Invalid sheet| | ----------- | ------------ | -|![](../assets/images/valid_sheet.png) |![](../assets/images/invalid_sheet.png) | +|![](../../../assets/images/valid_sheet.png) |![](../../../assets/images/invalid_sheet.png) | Also, the text on the sheet tab turns red for an invalid sheet. @@ -40,5 +39,5 @@ we should not use it to include or exclude this sheet for some processing. A side effect of modifying the validity status of a sheet is to nullify all its OMR data! Instead, we should use the sheet selection mechanism or the even more powerful -[Split and Merge](./split_merge.md) tool +[Split and merge](./split_merge.md) tool that can be accessed via the {{ site.book_split }} pull-down menu. diff --git a/docs/_pages/main/split_merge.md b/docs/_pages/guides/main/book_portions/split_merge.md similarity index 81% rename from docs/_pages/main/split_merge.md rename to docs/_pages/guides/main/book_portions/split_merge.md index b1698245d..a3df39e72 100644 --- a/docs/_pages/main/split_merge.md +++ b/docs/_pages/guides/main/book_portions/split_merge.md @@ -1,27 +1,25 @@ --- layout: default -title: Split and Merge -grand_parent: Main Features -parent: Book Portions +title: Split and merge +parent: Book portions nav_order: 3 --- -# Split and Merge +# Split and merge {: .no_toc } This feature is meant to be the Audiveris "Swiss Army Knife" to configure books, images and sheets. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- ## Concepts -The Split and Merge feature relies on the concept of *"PlayList"* that the user can define, modify, +The Split and merge feature relies on the concept of *"PlayList"* that the user can define, modify, save/reload, and finally use to build the resulting compound book. In terms of structure: @@ -29,7 +27,7 @@ In terms of structure: - An Excerpt represents, not surprisingly, a selection of sheets in a given Container. - A Container is a file, either a Book file or an image(s) Input file. -The PlayList can be defined conveniently via the interactive "Split and Merge" dialog. +The PlayList can be defined conveniently via the interactive "Split and merge" dialog. It can also be written from scratch via a plain text editor (see the paragraph about the [PlayList format](#playlist-format)). @@ -52,11 +50,11 @@ The provided input file for the case at hand is a 32-page pdf file, in which odd are marked as "Secondo" and even-numbered sheets as "Primo". The easiest way to "split" the single input file into two separate books is to open two -`Split and Merge` dialogs and to edit them as follows: +`Split and merge` dialogs and to edit them as follows: -![](../assets/images/DieToteninsel-primo.png) +![](../../../assets/images/DieToteninsel-primo.png) -![](../assets/images/DieToteninsel-secondo.png) +![](../../../assets/images/DieToteninsel-secondo.png) Then pressing the `Action` button in each dialog builds the corresponding compound books `DieToteninsel-primo.omr` and `DieToteninsel-secondo.omr` respectively. @@ -99,7 +97,7 @@ images of better quality: Then we could use a PlayList as defined below: -![](../assets/images/split_merge_populated.png) +![](../../../assets/images/split_merge_populated.png) In this example, we are using references to `.png` image files. We could as well prefer references to `.omr` book files, containing the same sheets perhaps @@ -119,7 +117,7 @@ The dialog large table, meant for the underlying PlayLists, is initially empty. - If we already have Books or Image files loaded in the Audiveris main window, we can immediately select and include a few of them into the PlayList. - ![](../assets/images/include_loaded.png) + ![](../../../assets/images/include_loaded.png) - Via a Drag 'n Drop from a file explorer, we can drop one or several Book or Image files onto the dialog, and each will lead to the addition of a corresponding excerpt at a precise location in the PlayList. @@ -151,20 +149,30 @@ The dialog large table, meant for the underlying PlayLists, is initially empty. When satisfied with the PlayList, we can save it for future reload or use it immediately as follows. -### Building the result +### Creating the compound book -The `Action!` button launches the building of the compound book according to the PlayList +The `Action!` button creates the compound book according to the PlayList current content. -The newly created Book is a full-fledged book that can be used from now on, -just like any other book: sheet transcription, interactive validation / correction, -export as MusicXml, etc. -It can even be used as a source for another PlayList. - -It is important to realize that this compound book is a brand new **stand-alone** book, -kept separate from its original "parts". -In other words, any further work made on this compound book will not impact the original "parts". -And similarly, any further work made on any of the original "parts" will not impact the compound book. +The newly created Book is a full-fledged book that exists on its own. +It can be used from now on, just like any other book: +- whole book transcription, +- individual sheet transcription, +- interactive validation / correction, +- export in MusicXml, etc. +- it can even be used as a source for another PlayList. + +The created book begins its life in some status, depending on the status of each of its sheets. +- it has simply been *created* by the `Action!` button, +- its full *transcription* will generally require some additional actions, +like pressing the `Transcribe` button at book level. + +{: .important } +> We must keep in mind that this compound book is a brand new **stand-alone** book, +> kept separate from its original "parts". +> In other words: +> - any further work made on this compound book will not impact the *original* "parts", +> - any further work made on any of the *original* "parts" will not impact the compound book. ## PlayList format @@ -212,5 +220,5 @@ format described above. Then, according to the current mode (batch or interactive), the actions differ slightly: - In *batch* mode, the PlayList is immediately used to build, next to the provided `foobar.xml` file, the resulting compound book `foobar.omr` file. -- In *interactive* mode, a `Split and Merge` dialog is populated with this PlayList and displayed +- In *interactive* mode, a `Split and merge` dialog is populated with this PlayList and displayed to the user for further action, such as review / edit / build compound. diff --git a/docs/_pages/guides/main/languages.md b/docs/_pages/guides/main/languages.md new file mode 100644 index 000000000..abc56af72 --- /dev/null +++ b/docs/_pages/guides/main/languages.md @@ -0,0 +1,118 @@ +--- +layout: default +title: OCR languages +nav_order: 4 +parent: Main features +--- +# OCR languages +{: .no_toc } +{: .d-inline-block } +new policy in 5.4 +{: .label .label-yellow } + +Audiveris delegates text recognition to the Tesseract OCR library. + +Tesseract OCR is potentially capable of processing text in over a hundred languages. +But, for a language to be effectively supported: +1. A specific data file (containing learning materials, a dictionary, etc. for that language) +must be installed locally. +2. This language must be specified as default, or for the book, or just for the sheet in question. + +For example, the processing of an input score using the English language (code: `eng`) +requires that: +1. the `eng.traineddata` file is installed beforehand; +2. the `eng` code is specified for the input score. + +--- +Table of Contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Pre-installed languages + +Starting from version 5.4, no languages ​​are installed by default. +(except for the Windows installer which only preinstalls the English language). + +At launch, Audiveris checks the installed language collection and issues a warning if this collection is empty. + +In interactive mode, the following warning dialog is displayed: + +![](../../assets/images/no_languages.png) + +We can then: +- proceed immediately with the installation of some languages; +- or simply postpone this action; +in the meantime, we can still process the input scores, but the TEXTS step will be ignored. + +## Installing languages + +Prior to the 5.4 release, the end user was left alone to manually download data +files from the Tesseract web site into a local folder. +This resulted in recurring errors.[^errors] + +Starting from the 5.4 release, Audiveris offers a convenient way to install OCR languages +*interactively* from within the application. + +The preferred method is to add languages via the {{ site.tools_languages }} pull-down menu. +Of course, *this feature requires Internet access*. +If OK, we get the dialog below: + +![](../../assets/images/ocr_languages.png) + +Here, we can browse through the 100+ languages available on the GitHub Tesseract site, +one line per language: +- The language 'code' (generally 3 letters) appears on the left +- The full name is on the right +- The checkbox in the middle indicates if the corresponding data file is installed locally +- A gray code, with no checkbox and no full name, can be ignored + +To actually download a language, we simply check the related box. +The corresponding data file is immediately downloaded to the local target folder +and the checkbox is updated once the download is complete. + +### The local `tessdata` folder + +At launch, Audiveris tries to initialize the Tesseract library with a `tessdata` folder: +1. It first checks if the `TESSDATA_PREFIX` environment variable is defined +and actually points to a directory. If so, this location is chosen. +Note that setting this environment variable is not mandatory, +it is meant merely to reuse an existing configuration. +2. Otherwise, Audiveris looks for a directory named `tessdata` under the OS-dependent Audiveris +[user config folder](../../reference/folders/essential.md#config-folder). +If this directory does not exist, it is created on-the-fly. + +NOTA: this target folder must be **writable** to actually install any language there. + +The `About` dialog, launched from the {{ site.help_about }} pull-down menu, +displays key information about the OCR engine version and the local OCR tessdata folder: + +![](../../assets/images/about_ocr.png) + +## Specifying runtime languages + +At runtime, we can specify which languages should be considered by the OCR software +for the input image at hand. + +This is done via a language specification string -- a plus-separated list of language codes, +like "fra+eng+ita": + +- The easiest way is to define this language specification interactively. +Using the {{ site.book_parameters }} menu, we can make specifications +at the global level, book level and even individual sheet level. + +- The default (global) specification is determined by the application constant +`org.audiveris.omr.text.Language.defaultSpecification`, whose initial value is `eng`. +So, we can also modify this default directly by changing the constant value: + - either interactively (using the {{ site.tools_constants }} menu) + - or in batch (using something like + `-constant org.audiveris.omr.text.Language.defaultSpecification=ita+eng`). + +{: .highlight } +NOTA: Specifying too many languages for a given book or sheet will slow down the recognition task +and may increase the number of false recognitions. +So, let us be as specific as possible. + +[Tesseract tessdata]: https://github.com/tesseract-ocr/tessdata +[^errors]: Most frequent confusion cases:
- Tesseract *program* vs. Tesseract *library* (linked by Audiveris)
- Tesseract `LSTM` model vs. `legacy` model (the one needed by Audiveris)
- Version of Tesseract language files to be downloaded (4.x)
- `TESSDATA_PREFIX` environment variable (pointing to the local tessdata folder) diff --git a/docs/_pages/main/pipeline.md b/docs/_pages/guides/main/pipeline.md similarity index 74% rename from docs/_pages/main/pipeline.md rename to docs/_pages/guides/main/pipeline.md index 4a350bc88..5f9d5f0a6 100644 --- a/docs/_pages/main/pipeline.md +++ b/docs/_pages/guides/main/pipeline.md @@ -1,26 +1,25 @@ --- layout: default title: Pipeline -parent: Main Features -nav_order: 3 -has_children: true +parent: Main features +nav_order: 1 --- # Pipeline {: .no_toc } --- -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- -## Global Book Workflow +## Global book workflow When working on a book, the Audiveris V5 OMR engine can process any sheet of the book independently of the others. Only the final gathering of sheets results, which comparatively is a very fast action, is performed at book level. -![](../assets/images/book_workflow.png) +![](../../assets/images/book_workflow.png) The diagram above presents the typical workflow for an example input file, named `foo.pdf`: 1. When opening the `foo.pdf` input file, Audiveris creates a Book instance. @@ -37,22 +36,23 @@ To save on memory, especially during long interactive sessions, we can ask Audiv transparently swap all book sheets to disk (except the current sheet). This is done via the pull-down menu {{ site.book_swap }}. -## Sheet Pipeline +## Sheet pipeline The processing of a given sheet by the OMR engine is done via a pipeline of some 20 steps applied, one after the other, on sheet OMR data. Here below is the sheet pipeline sequence, with the main inputs and outputs of every step: -![](../assets/images/pipeline.png) +![](../../assets/images/pipeline.png) {: .note } -Each of these 20 steps is further detailed in dedicated pages below. -There is no need to go through all of them in a first reading of this handbook. -Just keep in mind that the documentation is available and is likely to help -you understand how each of these steps works. +Each of these 20 steps is detailed in the dedicated +[explanation pages](../../explanation/steps/README.md). +There is no need to go through all of them in a first reading of this handbook. +We can just keep in mind that this information is available and is likely to help +us understand how each of these steps works. -## Driving the Pipeline +## Driving the pipeline A sheet step is like a mini-batch applied on the sheet data, and this is the smallest increment that the OMR engine can perform. @@ -61,16 +61,17 @@ In the selected sheet, we can decide to move the pipeline forward until a targe step. To do so, we select the target step in the pull-down `Step` menu: -![Steps](../assets/images/step_menu.png) +![Steps](../../assets/images/step_menu.png) Note that selecting the pull-down menu {{ site.sheet_transcribe }} is just another way of selecting the pull-down menu `Step → PAGE`. -Beware that we cannot directly move the pipeline backward. -There are two indirect workarounds: +Be careful, we cannot move the pipeline directly backward. +But there are two indirect workarounds: + * We can select a target step that has already been performed: 1. we are first prompted for confirmation, 2. the sheet data is then reset to its initial status -- the gray image if available, otherwise the binary image, - 3. and all necessary steps are performed up to the target step. -* We can also abandon the book and reload it from a previously saved version. + 3. and all necessary steps are re-performed up to the target step. +* We can also abandon the book and reload it from a previously saved status. diff --git a/docs/_pages/guides/main/preferences.md b/docs/_pages/guides/main/preferences.md new file mode 100644 index 000000000..4d920b992 --- /dev/null +++ b/docs/_pages/guides/main/preferences.md @@ -0,0 +1,74 @@ +--- +layout: default +title: Preferences +parent: Main features +nav_order: 2 +--- + +# Preferences +{: .no_toc } + +The {{ site.tools_preferences }} pull-down menu opens this dialog, +focused on on the handling of a few user preferences. +It operates at a much higher level than the direct handling of application constants. + +![](../../assets/images/preferences.png) + +Beside standard features, the dialog also presents a set of `Advanced Topics` +that impact the Audiveris user interface and thus require an application restart. + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Early steps + +This box allows to define which step is automatically trigerred on an input file. + +## Default plugin + +This allows to interactively choose a new default plugin among the declared ones, +since by default the first declared plugin is set as the default one +(See the [Plugins](./plugins.md) section). + +## Output folder + +These boxes govern where output files are located by default. + +- **Input sibling**: If set, all outputs are stored in the same folder as the input file +(unless the ``-output`` option is specified on the command line). +- **Browse**: Allows to define a default output folder. +- **Separate folders**: If set, all outputs related to a given input file are stored +in a *separate* folder, created according to the input file name without its extension. + +For further explanations, see the section on [Standard folders](../../reference/folders/standard.md). + +## Global font ratio + +The slider allows to select a larger font size used throughout the application views. + +## Locale + +We can pick up a different user language. +As of this writing, the available locales are: +- **en** (English), the default +- **fr** (French), not yet fully implemented...[^locales] + +## Advanced Topics + + Each of these topics can gather several related features. + +* `SAMPLES` deals with sample repositories and classifier training. +* `ANNOTATIONS` deals with the production of symbol annotations. +* `PLOTS` deals with the display of plots for scale, stem, staff or header projections. +* `SPECIFIC_VIEWS` deals with specific sheet tabs (staff free, staff-line glyphs). +* `SPECIFIC_ITEMS` deals with the display of specific items on views (attachments, glyph axis, ...) +* `DEBUG` deals with many debug features (notably browsing the book internal hierarchy). + + Note that an __application restart__ is needed to take any modified selection into account + for these advanced topics, because of the various impacts this implies on many UI elements. + + [^locales]: If you are willing to add another locale, please post a message on the [Audiveris discussion forum](https://github.com/Audiveris/audiveris/discussions). \ No newline at end of file diff --git a/docs/_pages/main/sheet_scale.md b/docs/_pages/guides/main/sheet_scale.md similarity index 88% rename from docs/_pages/main/sheet_scale.md rename to docs/_pages/guides/main/sheet_scale.md index 4d9d16f98..1d3b07613 100644 --- a/docs/_pages/main/sheet_scale.md +++ b/docs/_pages/guides/main/sheet_scale.md @@ -1,14 +1,15 @@ --- layout: default -title: Sheet Scale -parent: Main Features +title: Sheet scale +parent: Main features nav_order: 6 --- -# Sheet Scale +# Sheet scale {: .no_toc } +--- Table of contents -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -27,7 +28,7 @@ Here are two examples of such histograms: | Combo histogram | Black histogram | | :---: | :---: | -| ![](../assets/images/combo_plot.png) | ![](../assets/images/black_plot.png) | +| ![](../../assets/images/combo_plot.png) | ![](../../assets/images/black_plot.png) | - The combo histogram focuses on the combined length of a black run and its following white run. @@ -70,7 +71,7 @@ Initially, all rows appear in gray, and the data values, if any, are displayed o | Original scaling | Edited scaling | | :---: | :---: | -|![](../assets/images/beam_scale_before.png)|![](../assets/images/beam_scale_after.png)| +|![](../../assets/images/beam_scale_before.png)|![](../../assets/images/beam_scale_after.png)| - Pros: - We directly tell the engine which beam thickness to use in this sheet. @@ -86,7 +87,7 @@ A different approach is to provide upfront the OMR engine with a beam thickness #### Interactive mode We can do this using the {{ site.book_parameters }} pull-down menu: -![](../assets/images/beam_book_spec.png) +![](../../assets/images/beam_book_spec.png) Here, we have chosen the whole book tab, selected beam specification and entered a thickness value as a number of pixels. @@ -96,7 +97,7 @@ This is generally a good strategy, since often all sheets in a book share the sa and the same beam thickness. If ever we need a different value for a given sheet, we can simply select the related sheet tab -in the ``Book Parameters`` dialog, and enter a specific value for this particular sheet. +in the ``Book parameters`` dialog, and enter a specific value for this particular sheet. Specification value ``0`` has a special meaning, which is: ``no specification``. It can be used at book and/or sheet levels. @@ -114,7 +115,7 @@ It can be used at book and/or sheet levels. When running in batch on a brand new input, we can include this beam specification in the command line arguments, using an option like: -> -option org.audiveris.omr.sheet.Scale.defaultBeamSpecification=10 +> -constant org.audiveris.omr.sheet.Scale.defaultBeamSpecification=10 As opposed to the interactive mode, this batch specification is *not* stored within the book project file. @@ -122,5 +123,5 @@ And we must keep in mind the fact that, in batch, this beam thickness specificat *all* books processed by the current command entered on the command line interface. Similarly, we can notice that there is no beam specification available in the ``Default`` tab -of the ``Book Parameters`` dialog. +of the ``Book parameters`` dialog. Otherwise this hard-coded pixel specification would apply for all books processed from now on... diff --git a/docs/_pages/guides/specific/README.md b/docs/_pages/guides/specific/README.md new file mode 100644 index 000000000..8283eb384 --- /dev/null +++ b/docs/_pages/guides/specific/README.md @@ -0,0 +1,11 @@ +--- +layout: default +title: Specific features +parent: How-to guides +nav_order: 3 +--- +# Specific features + +Aimed at the end user, this chapter gathers features that deserve a specific description. + +These are generally new features and are therefore presented here in reverse chronological order. diff --git a/docs/_pages/specific/bar_repeat.md b/docs/_pages/guides/specific/bar_repeat.md similarity index 72% rename from docs/_pages/specific/bar_repeat.md rename to docs/_pages/guides/specific/bar_repeat.md index 9a691d3dd..bb0ba36c5 100644 --- a/docs/_pages/specific/bar_repeat.md +++ b/docs/_pages/guides/specific/bar_repeat.md @@ -1,34 +1,32 @@ --- layout: default title: Bar Repeat -parent: Specific Features +parent: Specific features nav_order: 5 -has_children: false --- # Bar Repeat {: .no_toc } {: .d-inline-block } -new in 5.3 -{: .label .label-yellow } +since 5.3 +{: .label } A "bar repeat" sign indicates that preceding written measures must be repeated exactly. --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- ## Example -![](../assets/images/bar_repeats.png) +![](../../assets/images/bar_repeats.png) In the example above, we have two systems, the first one with 4 measures #1, #2, #3 and #4 and the second one with 3 measures #5, #6 and #7: -- On first system, measures #2 and #3 contain both a one-bar repeat sign, to repeat measure #1 twice. -- On second system, a two-bar repeat sign appears right above the barline between measures #6 and #7, +- On the first system, the measures #2 and #3 contain both a one-bar repeat sign, to repeat the measure #1 twice. +- On the second system, a two-bar repeat sign appears right above the barline between the measures #6 and #7, to repeat the previous two measures (#4 and #5). We could also encounter a four-bar sign, to repeat the four previous measures. @@ -40,19 +38,19 @@ Since release 5.3, Audiveris OMR engine is able to recognize both: - An optional measure count that can appear above the sign. It should correspond to the count of slashes in the repeat sign. -![](../assets/images/bar_repeat_2.png) +![](../../assets/images/bar_repeat_2.png) ## Editing If needed, we can manually assign or drag these signs from the shape palette, -using the three symbols available in ``Barlines`` set. +using the three symbols available in the ``Barlines`` set. -![](../assets/images/bar_repeat_palette.png) +![](../../assets/images/bar_repeat_palette.png) The measure count is not mandatory, but can be manually assigned or dragged from the shape palette, -in ``Times`` set. +in the ``Times`` set. -![](../assets/images/time_palette.png) +![](../../assets/images/time_palette.png) We can choose a predefined item from the ``Parts`` numbers. diff --git a/docs/_pages/specific/drums.md b/docs/_pages/guides/specific/drums.md similarity index 91% rename from docs/_pages/specific/drums.md rename to docs/_pages/guides/specific/drums.md index b631b72e2..9e02bb5a5 100644 --- a/docs/_pages/specific/drums.md +++ b/docs/_pages/guides/specific/drums.md @@ -1,9 +1,8 @@ --- layout: default title: Drums -parent: Specific Features +parent: Specific features nav_order: 1 -has_children: false --- # Drums {: .no_toc } @@ -11,14 +10,15 @@ has_children: false updated for 5.4 {: .label .label-green} -We owe many thanks to Brian Boe for his decisive contribution to this long-awaited functionality. +We owe many thanks to [Brian Boe] for his decisive contribution to this long-awaited functionality. The first requests for drum notation go back to 2017, see Audiveris [issue #33](https://github.com/Audiveris/audiveris/issues/33). This delay certainly originated in my personal ignorance (Hervé speaking) about this kind of notation. +--- Table of contents -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -32,15 +32,16 @@ Since the 5.3 release, Audiveris supports unpitched precussion notation on both as shown in the excerpt below. {: .highlight } -Note this handbook contains a [User editing session](../ui_examples/eyes/README.md) dedicated to this precise score example. +Note this handbook contains a [User editing session](../ui/ui_examples/eyes/README.md) +dedicated to this precise score example. -![](../assets/images/drums_stave_sizes.png) +![](../../assets/images/drums_stave_sizes.png) 1. Each staff starts with a percussion clef, 2. Each individual instrument is defined by a given head motif at a given line position (drum set mapping). 3. Though not specific to drum notation, we can frequently observe -[multi-measure rests](./multi_rest.md) and [measure-repeat signs](./bar_repeat.md). +[multi-measure rests](./multi_rest.md) as well as [measure-repeat signs](./bar_repeat.md). ## Mandatory processing switches @@ -48,12 +49,12 @@ To be able to transcribe the example above, we have to set two specific processi available in the dialog {{ site.book_parameters }}, in the section named "Staves", one for 1-line and one for 5-line percussion stave sizes: -![](../assets/images/drums_params_2sizes.png) +![](../../assets/images/drums_params_2sizes.png) In batch mode, we can also set these switches at the command line interface level: -> -option org.audiveris.omr.sheet.ProcessingSwitches.oneLineStaves=true +> -constant org.audiveris.omr.sheet.ProcessingSwitches.oneLineStaves=true -> -option org.audiveris.omr.sheet.ProcessingSwitches.drumNotation=true +> -constant org.audiveris.omr.sheet.ProcessingSwitches.drumNotation=true ## Additional switches @@ -96,7 +97,7 @@ The mapping definition is a list of entries within the containing ``staff`` XML This protected resource is just the *default* mapping: - As an end-user, we can always incrementally override some or all of the default mapping entries, by writing our own entries in a similar but certainly smaller ``drum-set.xml`` file to be located -in theh user ``config`` folder. +in the user ``config`` folder. - To "nullify" an existing default entry, we simply specify a "``null``" value for its "``sound``" attribute. @@ -112,12 +113,12 @@ a simple one-page score. The beginning of the PDF file, downloaded from Redeye Percussion site, is as follows: -![](../assets/images/drums_ophelia.png) +![](../../assets/images/drums_ophelia.png) Before launching the OMR engine, we specify book parameters using the {{ site.book_parameters }} dialog: -![](../assets/images/drums_ophelia_params.png) +![](../../assets/images/drums_ophelia_params.png) Note the specific selections made: - **Music font**: We do need the "JazzPerc" music font family for best efficiency on this example. @@ -128,7 +129,7 @@ Note the specific selections made: And with no additional user action, the raw transcription gives: -![](../assets/images/drums_ophelia_result.png) +![](../../assets/images/drums_ophelia_result.png) There is one abnormal measure, shown in pink. It is due to a flag mistaken with a black head, something easy to fix. @@ -138,7 +139,7 @@ with the ``HeadsAndDot`` palette in the shape board. For the "``Jazz Perc``" font family and the selected processing switches, this palette provides the following symbols: -![](../assets/images/font_ophelia_heads.png) +![](../../assets/images/font_ophelia_heads.png) It is organized as follows: - First, the heads part: @@ -323,4 +324,6 @@ via a similar ``drum-set.xml`` file to be located in the user ``config`` folder. ``` -[^playing_signs]: These playing signs are not heads *per se*, they are plain symbols recognized via the glyph classifier during the SYMBOLS step. \ No newline at end of file +[^playing_signs]: These playing signs are not heads *per se*, they are plain symbols recognized via the glyph classifier during the SYMBOLS step. + +[Brian Boe]: https://github.com/brian-math diff --git a/docs/_pages/specific/fingering_plucking.md b/docs/_pages/guides/specific/fingering_plucking.md similarity index 63% rename from docs/_pages/specific/fingering_plucking.md rename to docs/_pages/guides/specific/fingering_plucking.md index 5c30bf35f..f3cc68ff1 100644 --- a/docs/_pages/specific/fingering_plucking.md +++ b/docs/_pages/guides/specific/fingering_plucking.md @@ -1,27 +1,25 @@ --- layout: default title: Fingering and Plucking -parent: Specific Features -nav_order: 8 -has_children: false +parent: Specific features +nav_order: 9 --- # Fingering and Plucking {: .no_toc } {: .d-inline-block } completed in 5.3 -{: .label .label-green } +{: .label } These are technical informations for guitar or similar instrument, to indicate how a note should be played. [Assuming a right-handed person]: - **Fingering** describes the left-hand finger, via a digit number (0, 1, 2, 3, 4) -- **Plucking** describes the right-hand finger, via a letter (``p``, ``i``, ``m``, ``a``) +- **Plucking** describes the right-hand finger, via a letter (`p`, `i`, `m`, `a`) --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- @@ -31,29 +29,29 @@ Table of contents Here is an example with fingering indications (in red squares) and plucking indications (in green circles): -![](../assets/images/fingering_plucking.png) +![](../../assets/images/fingering_plucking.png) ## Detection The OMR engine must be explicitly told to detect these indications. This can be done via the processing switches in the {{ site.book_parameters }} pull-down menu: -![](../assets/images/fingering_plucking_switches.png) +![](../../assets/images/fingering_plucking_switches.png) ## Insertion Regardless of the switches values, we can always manually assign or drag & drop these indications from the shape board: -![](../assets/images/fingering_plucking_sets.png) +![](../../assets/images/fingering_plucking_sets.png) | Shape Set | Palette | | :---: | :---: | -| Fingerings | ![](../assets/images/fingering_palette.png) | -| Pluckings | ![](../assets/images/plucking_palette.png) | +| Fingerings | ![](../../assets/images/fingering_palette.png) | +| Pluckings | ![](../../assets/images/plucking_palette.png) | ## Export These indications get exported to MusicXML and are thus visible from MuseScore for example: -![](../assets/images/fingering_plucking_musescore.png) \ No newline at end of file +![](../../assets/images/fingering_plucking_musescore.png) \ No newline at end of file diff --git a/docs/_pages/specific/fonts.md b/docs/_pages/guides/specific/fonts.md similarity index 64% rename from docs/_pages/specific/fonts.md rename to docs/_pages/guides/specific/fonts.md index 7156bb2f4..44dcac348 100644 --- a/docs/_pages/specific/fonts.md +++ b/docs/_pages/guides/specific/fonts.md @@ -1,20 +1,20 @@ --- layout: default title: Fonts -parent: Specific Features +parent: Specific features nav_order: 2 -has_children: false --- # Fonts {: .no_toc } {: .d-inline-block } -new in 5.3 -{: .label .label-yellow } +since 5.3 +{: .label } Audiveris uses specific fonts for music symbols and for text symbols. +--- Table of contents -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -34,24 +34,24 @@ detect them during the HEADS step. Here below are samples of just two significant head shapes -- black head and cross head -- for each of the available music font families -(**Bravura** (the default), **Finale Jazz** and **Jazz Perc**). +(**Bravura** (the default), **Leland**, **Finale Jazz** and **Jazz Perc**). Pictures are magnified 4 times for a better reading: -| Shape / Font Family | Bravura | Finale Jazz | Jazz Perc | -| :---:| :---:| :---:| :---:| -| **Black Head**
and
**Cross Head** | ![](../assets/images/heads_bravura.png)| ![](../assets/images/heads_finale_jazz.png)| ![](../assets/images/heads_jazz_perc.png)| +| Shape / Font Family | Bravura | Leland | Finale Jazz | Jazz Perc | +| :---:| :---:| :---:| :---:| :---:| +| **Black Head**
and
**Cross Head** | ![](../../assets/images/heads_bravura.png)| ![](../../assets/images/heads_leland.png)| ![](../../assets/images/heads_finale_jazz.png)| ![](../../assets/images/heads_jazz_perc.png)| -Head templates are built upon a specific font: +The head templates are built upon a specific font: - its family is the user-selected music font family, -- its precise size is derived from measured staff interline. +- its precise size is derived from the measured staff interline. {: .important } -Because of the way template matching works, it is critical to carefully check -adequacy between the score input image and the selected font family. -- The major difference is between standard font (Bravura) and jazz fonts (Finale Jazz and Jazz Perc), -especially for all the cross-like shapes. -- Within jazz fonts, Finale Jazz and Jazz Perc differ mainly by their width, and impact -on template matching is more visible on oval-like shapes. +Due to the way template matching works, it is essential to carefully check the match +between the input score image and the selected font family. +- The major difference is between _standard_ fonts (`Bravura` and `Leland`) and _jazz_ fonts +(`Finale Jazz` and `Jazz Perc`), especially for all the cross-like shapes. +- Within the jazz fonts, `Finale Jazz` and `Jazz Perc` differ mainly by their width, +and the impact on template matching is more visible on oval-like shapes. ### Other symbols @@ -62,7 +62,7 @@ With proper training on representative samples, the neural network is able to re regardless of the selected music font family. We can observe its top 5 results in the ``Glyph Classifier`` board. -At this point, you may wonder why this network is not also used for head recognition... +At this point, the reader may wonder why this neural network approach is not also used for head recognition... The reason is the current network needs a glyph to work upon, and there is yet no way to isolate a head glyph *reliably*. [^prototype] @@ -79,6 +79,7 @@ The current family hierarchy is as follows:[^musical_symbols] ``` Bravura + ├── Leland ├── Finale Jazz │   └── Jazz Perc └── Musical Symbols @@ -94,9 +95,9 @@ Since 5.3 release, we can tell Audiveris which text font family to use among the | Sample / Font Family | Sans Serif | Serif | Finale Jazz Text | | :---: | :---: | :---: | :---: | -| Ophelia |![](../assets/images/font_sans_serif.png)|![](../assets/images/font_serif.png)|![](../assets/images/font_finale_jazz_text.png)| +| Ophelia |![](../../assets/images/font_sans_serif.png)|![](../../assets/images/font_serif.png)|![](../../assets/images/font_finale_jazz_text.png)| -Proper choice of text font family will result in a better consistency between the input image +A proper choice of text font family will result in a better consistency between the input image and its displayed transcription. ## Selection of fonts families @@ -104,18 +105,18 @@ and its displayed transcription. In interactive mode, we can use the {{ site.book_parameters }} dialog in its ``Music font`` and ``Text font`` fields: -![](../assets/images/fonts_selection.png) +![](../../assets/images/fonts_selection.png) In batch mode, we can make choices on the command line interface. -- For **music**, choice is between *Bravura*, *FinaleJazz* and *JazzPerc*: +- For **music**, choice is between *Bravura*, *Leland*, *FinaleJazz* and *JazzPerc*: ``` --option org.audiveris.omr.ui.symbol.MusicFont.defaultMusicFamily=JazzPerc +-constant org.audiveris.omr.ui.symbol.MusicFont.defaultMusicFamily=JazzPerc ``` - For **text**, choice is between *SansSerif*, *Serif* and *FinaleJazzText*: ``` --option org.audiveris.omr.ui.symbol.TextFont.defaultTextFamily=FinaleJazzText +-constant org.audiveris.omr.ui.symbol.TextFont.defaultTextFamily=FinaleJazzText ``` [^musical_symbols]: The old "Musical Symbols" family has been totally replaced by "Bravura" family. It is kept only for samples generation from old ``.omr`` projects, something the end user can safely ignore. diff --git a/docs/_pages/specific/logical_parts.md b/docs/_pages/guides/specific/logical_parts.md similarity index 88% rename from docs/_pages/specific/logical_parts.md rename to docs/_pages/guides/specific/logical_parts.md index 92c6daf61..04f488cbb 100644 --- a/docs/_pages/specific/logical_parts.md +++ b/docs/_pages/guides/specific/logical_parts.md @@ -1,23 +1,21 @@ --- layout: default title: Logical Parts -parent: Specific Features +parent: Specific features nav_order: 3 -has_children: false --- # Logical Parts {: .no_toc } {: .d-inline-block } -new in 5.3 -{: .label .label-yellow } +since 5.3 +{: .label } Mapping the individual parts of every system in every page to logical parts defined at score level is a topic where we may have to help the OMR engine. --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- @@ -40,7 +38,7 @@ the same instrument all along the score. In some cases, from one system to the next, the system composition in terms of physical parts may vary as shown in the following example: -![](../assets/images/coffrets_parts.png) +![](../../assets/images/coffrets_parts.png) - System #1: A part made of 2 staves. This part is named "PIANO" in its left margin. - System #2: A part made of 2 staves. No name is indicated but we can easily assume it's still the piano instrument. @@ -58,12 +56,12 @@ Part collation is automatically triggered at the end of score transcription, and before any export to MusicXML. We can also manually trigger parts collation. This is done via a right-click in a score area, which opens a contextual menu as follows: -![](../assets/images/collate_parts.png) +![](../../assets/images/collate_parts.png) To visualize the current mapping, one easy way is to use the {{ site.view_parts }} pull-down menu. This results in: -![](../assets/images/view_parts.png) +![](../../assets/images/view_parts.png) Each physical part is prefixed with the name of its corresponding logical part. - System #1 @@ -77,11 +75,11 @@ Each physical part is prefixed with the name of its corresponding logical part. ## Editing of logical parts Still via a right-click in the score area, we can open an editor on logical parts: -![](../assets/images/edit_logicals.png) +![](../../assets/images/edit_logicals.png) In our example, this editor will open as follows: -![](../assets/images/logical_parts_editor.png) +![](../../assets/images/logical_parts_editor.png) On the left side, we have a sequence of rows, one per logical part: - **Staves**: The physical configuration of staves in part: @@ -108,13 +106,13 @@ to move them up or down, and to save the logicals configuration. For instance, we can decide to name the 1-staff part: "VOICE" to be consistent with the existing "PIANO" name. That's all we need to do, so we save it: -![](../assets/images/logical_parts_saved.png) +![](../../assets/images/logical_parts_saved.png) Notice that the lower-right button (which was "*Unlocked*" in gray) is now "*Locked*" in black. This means that the logicals just saved are now locked (but can be manually unlocked if so desired). Notice also that the main score window now displays the updated parts names: -![](../assets/images/coffrets_parts_final.png) +![](../../assets/images/coffrets_parts_final.png) ## Unlocked/Locked logicals configuration @@ -155,10 +153,10 @@ If the score gets too complex for the OMR engine, we can always fall back to the manual mapping of any "un-mappable" physical part. This is done via a right-click in the physical part to be manually mapped: -![](../assets/images/logical_part_manual.png) +![](../../assets/images/logical_part_manual.png) We simply have to pick up the corresponding logical among the presented sequence of logicals. -See a real-life example in [Can't Take My Eyes Off of You](../ui_examples/eyes/README.md#logical-parts) +See a real-life example in [Can't Take My Eyes Off of You](../ui/ui_examples/eyes/README.md#logical-parts) -[^name_offset]: Created part names are displayed slightly off of the expected vertical location, to avoid hiding any potential existing part name. \ No newline at end of file +[^name_offset]: The created part names are displayed slightly off of the expected vertical location, to avoid hiding any potential existing part name. \ No newline at end of file diff --git a/docs/_pages/guides/specific/metronome.md b/docs/_pages/guides/specific/metronome.md new file mode 100644 index 000000000..a40cf793b --- /dev/null +++ b/docs/_pages/guides/specific/metronome.md @@ -0,0 +1,144 @@ +--- +layout: default +title: Metronome +parent: Specific features +nav_order: -1 +--- +# Metronome +{: .no_toc } +{: .d-inline-block } +new in 5.4 +{: .label .label-yellow } + +The picture below displays a typical metronome mark : + +![](../../assets/images/metronome_carmen.png) + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Structure + +From left to right, a metronome mark can contain: [^swing] + +| Mandatory? | Item| +|:---:|:--- | +| - | a tempo textual indication, like "Allegretto quasi andantino" | +| - | an opening parenthesis `(` | +| YES | a beat unit symbol, like "♩"| +| YES | the equal (`=`) character | +| - | some text, like "ca." | +| YES | an integer value | +| - | a minus (`-`) character, followed by a second integer value | +| - | some text, like "env." | +| - | a closing parenthesis `)` | + + + +## Engine recognition + +The OCR can recognize text characters, words and sentences. + +The main problem comes from the *beat unit symbol*, like the quarter symbol in the example above, +because there is no way to make Tesseract OCR recognize this symbol as a known character. [^symbol] + +For the time being, the OMR engine uses a rather acrobatic approach: +1. It looks for an OCR'd sentence which matches a regular expression +crafted for the optional and mandatory items listed above, +2. It isolates the word located just before the `=` character[^colon] and grabs its underlying glyph, +3. It submits this glyph to the glyph classifier, looking for a beat unit symbol. + +If the test is positive, then the sentence is recognized as a metronome sentence. +As any sentence, the metronome mark is made of words, but one of them is special, +it's the beat unit word which contains just the beat unit symbol. + +## MusicXML export + +The various metronome items (textual tempo, beat unit, bpm values, ...) are exported in a MusicXML `direction` element including a `tempo` element. + +The tempo value is the number of *quarters* per minute, which is determined according to: +- The beat unit, +- The number of beats per minute (either the single value or the mean value if two values are found). + +## Manual editing + +In Audiveris, a standard sentence content cannot be edited directly. +The editing can be made at word level only. +But specially for the metronome sentence, editing can be made at both sentence and word levels. + +For instance, we can click on any word of the metronome sentence, it gets displayed in the `Inter` board. +There, we can click on the `To Ensemble` button to get to the containing sentence: the metronome mark. + +![](../../assets/images/metronome_field.png) + +There, we have a small pane where we can see and directly edit the metronome content. +The field accepts standard cut and paste actions on text and music characters. + +Text can be entered by typing on the keyboard, but music characters are different. +They are displayed in red to make them stand out. + +To enter a beat unit, we use a right-click in the pane. +This opens a popup menu with all the supported beat units: + +![](../../assets/images/metronome_insert.png) + +The selected beat unit is inserted at the current position -- +or replaces the selected characters if any were selected. + +As usual, the modifications get committed when we press the `ENTER` key. +And we can always undo/redo such actions. + +## Changing a sentence to metronome + +The OMR engine may have mis-recognized a metronome mark, and consider it as a **plain sentence**, +for example with a *direction* role. + +In that case, we can simply select this sentence and manually change its **role** to +the `Metronome` role. + +The `Inter` board will consequently display the metronome mark, based on the recognized items. +Typically, we'll have to manually correct or insert items like the beat unit, the `=` character, ... + +The OCR engine may also have totally **ignored the sentence**, for whatever reason. +In that case we can select the sentence (actually we select the underlying glyphs as a whole) +and assign it the Metronome **shape**. +And, here again, we manually correct the metronome mark. + +## Creating from scratch + +We can always create a metronome mark from scratch. + +To do so, we click on the `Texts` set in the shape board, which opens this set as: + +![](../../assets/images/Texts_palette.png) + +This set (new in 5.4) gathers just the text-oriented shapes: `lyric`, (plain) `text` and `metronome`. + +We now can make a drag n' drop from the metronome button to the sheet location of our choice. + +Notice, as we drag away from the `metronome` button and enter the sheet view, +that the "metronome" label is replaced by a metronome symbol: + +![](../../assets/images/metronome_dnd.png) + +We can drop the symbol, this creates a **minimum** metronome mark, using default elements, +at the drop location. + +The `Inter` board now displays this minimum metronome mark: + +![](../../assets/images/metronome_minimum.png) + +We finally have to modify/augment this basic version to get something more in line with what we want. +For example: + +![](../../assets/images/metronome_manual.png) + +[^swing]: The rhythm-oriented marks, like this one: ![](https://www.w3.org/2021/06/musicxml40/static/examples/metronome-note-element.png) are not supported yet. + +[^symbol]: If you know of a way to train Tesseract on beat units, please post a message on the [project discussions](https://github.com/Audiveris/audiveris/discussions). + +[^colon]: The equal character (`=`) is sometimes OCR'd as a colon character (`:`), so the regular expression has been adjusted to also accept the colon character. \ No newline at end of file diff --git a/docs/_pages/specific/multi_rest.md b/docs/_pages/guides/specific/multi_rest.md similarity index 69% rename from docs/_pages/specific/multi_rest.md rename to docs/_pages/guides/specific/multi_rest.md index 91d984b85..567e697a7 100644 --- a/docs/_pages/specific/multi_rest.md +++ b/docs/_pages/guides/specific/multi_rest.md @@ -1,23 +1,21 @@ --- layout: default title: Multi-Measure Rest -parent: Specific Features +parent: Specific features nav_order: 6 -has_children: false --- # Multi-Measure Rest {: .no_toc } {: .d-inline-block } -new in 5.3 -{: .label .label-yellow } +since 5.3 +{: .label } A multiple measure rest indicates a rest of more than one measure. --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- @@ -27,7 +25,7 @@ Table of contents It is drawn as a thick horizontal line centered on staff middle line with serifs at both ends, completed by a time-like number drawn above the staff. -![](../assets/images/multiple_rest_example.png) +![](../../assets/images/multiple_rest_example.png) In the example above, we have instances of multiple measure rests, on 5-line and 1-line staves. @@ -41,15 +39,15 @@ together with the related measure count number. If not detected, we can still assign or drag a multiple rest item from the shape palette in its ``Rests`` set: -![](../assets/images/multiple_rest_shape.png) +![](../../assets/images/multiple_rest_shape.png) A double-click on a multiple rest enters its fairly limited editing status: - Vertically, the item remains stuck to the staff mid-line, - Horizontally, the mid handle can translate the whole item, while a side handle can resize it. -![](../assets/images/multiple_rest_edited.png) +![](../../assets/images/multiple_rest_edited.png) -As for [bar repeats editing](bar_repeat.md#editing), the measure count item can be assigned -or dragged from the shape palette in its ``Time`` set. +And, as for [bar repeats editing](bar_repeat.md#editing), the measure count item can be assigned +or dragged from the shape palette in its `Times` set. diff --git a/docs/_pages/specific/octave_shift.md b/docs/_pages/guides/specific/octave_shift.md similarity index 82% rename from docs/_pages/specific/octave_shift.md rename to docs/_pages/guides/specific/octave_shift.md index af5254dd5..c72c19d95 100644 --- a/docs/_pages/specific/octave_shift.md +++ b/docs/_pages/guides/specific/octave_shift.md @@ -1,23 +1,21 @@ --- layout: default title: Octave Shift -parent: Specific Features +parent: Specific features nav_order: 4 -has_children: false --- # Octave Shift {: .no_toc } {: .d-inline-block } -new in 5.3 -{: .label .label-yellow } +since 5.3 +{: .label } An octave shift indicates that some notes of a staff should be played one or several octaves higher or lower than actually printed. --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- @@ -26,12 +24,12 @@ Table of contents Here is an example of a one-line shift: -![](../assets/images/octave_shift_simple.png) +![](../../assets/images/octave_shift_simple.png) And here is an example of a multi-line shift: We can consider we have one "logical" shift composed of three "physical" shifts. -![](../assets/images/octave_shift_multiple.png) +![](../../assets/images/octave_shift_multiple.png) ## Recognition @@ -39,16 +37,16 @@ Automatic recognition of octave shifts by the OMR engine is difficult for variou - The value is not always just a number to be found in {8, 17, 22} set. There can be a suffix, such as "va" or "vb", sometimes located slightly above or below the number. Sometimes but not always, "va" and "vb" stand respectively for "ottava alta" and "ottava bassa". -- The line is often composed of dots or short dashes, that may have been consumed by OCR TEXT step. +- The line is often composed of dots or short dashes, that may have been consumed by the OCR TEXT step. - Even if they survive OCR, these long sequences of dots are difficult to recognize in the SYMBOLS step by the current classifier, which requires identified glyphs. - The line itself is sometimes far from being a straight line, see the image below. -![](../assets/images/octave_shift_broken.png) +![](../../assets/images/octave_shift_broken.png) ## Model -In Audiveris, we have chosen to focus on a simplified model. +Audiveris has chosen to focus on a simplified model. An octave shift element is defined as a horizontal sequence of: 1. A number value (8, 15 or 22), @@ -57,7 +55,7 @@ An octave shift element is defined as a horizontal sequence of: The ending hook appears only at the end of the last (physical) shift of a perhaps longer logical shift. -![](../assets/images/OctaveShiftInter.png) +![](../../assets/images/OctaveShiftInter.png) The vertical location of this octave shift element with respect to the related staff indicates its kind (``ALTA`` if above the related staff, ``BASSA`` if below). @@ -78,24 +76,24 @@ The closest staff is by default the related staff. When the glyph is located between two systems, it can lead to two mutually exclusive Inters, one for the system above and one for the system below, as shown by the picture below (notice the two end hooks). -In that case we can manually discard the Inter we don't want to keep. +In that case we can manually discard the `Inter` we don't want to keep. -![](../assets/images/octave_shift_ambiguous.png) +![](../../assets/images/octave_shift_ambiguous.png) - The shift can also be dragged from the shape palette and dropped at proper location. -![](../assets/images/clefs_and_shifts.png) +![](../../assets/images/clefs_and_shifts.png) As we hover on staves, the shift related staff changes and so does its ending hook. At drop time, the last staff is kept as the related staff. -![](../assets/images/octave_shift_with_staff.png) +![](../../assets/images/octave_shift_with_staff.png) ### Single line editing -As usual, a double-click on the shift Inter opens a dedicated editor on it. +As usual, a double-click on the shift `Inter` opens a dedicated editor on it. -![](../assets/images/octave_shift_edited.png) +![](../../assets/images/octave_shift_edited.png) For a one-line shift, there are 3 handles: - Left handle can move horizontally and vertically @@ -116,7 +114,7 @@ And it can continue its evolution. ### Multiple line editing -![](../assets/images/octave_shift_multiple_edited.png) +![](../../assets/images/octave_shift_multiple_edited.png) The picture above represents the current status of a 3-line shift being edited: - The first line goes until the staff right side; diff --git a/docs/_pages/specific/snippets.md b/docs/_pages/guides/specific/snippets.md similarity index 79% rename from docs/_pages/specific/snippets.md rename to docs/_pages/guides/specific/snippets.md index 0b3fe61d1..1d2e7d2e7 100644 --- a/docs/_pages/specific/snippets.md +++ b/docs/_pages/guides/specific/snippets.md @@ -1,9 +1,8 @@ --- layout: default title: Snippets -parent: Specific Features +parent: Specific features nav_order: 0 -has_children: false --- # Snippets {: .no_toc } @@ -16,12 +15,13 @@ For example, this [Wikipedia page](https://en.wikipedia.org/wiki/Fandango) is ab It provides some explanation text, a picture of fandango dancers and a snippet of music score to describe the specific fandango rhythm: -![](../assets/images/fandango_wikipedia.png) +![](../../assets/images/fandango_wikipedia.png) For the Audiveris OMR engine, the processing of such a tiny score brings a few challenges. +--- Table of contents -{: .no_toc .text-delta } +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -30,13 +30,13 @@ Table of contents Let's have a closer look at this image (By Hyacinth, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=27409005): -![](../assets/images/Fandango_dance_pattern.png) +![](../../assets/images/Fandango_dance_pattern.png) ### Interline If we naively launch Audiveris on this input image, we almost immediately get this alert message: -![](../assets/images/fandango_scale_alert.png) +![](../../assets/images/fandango_scale_alert.png) The engine complains about a too low interline value of 9 pixels. This message is issued by the ``SCALE`` step, whose main task is to retrieve the sheet "interline value", @@ -50,7 +50,7 @@ populated with the vertical runs lengths of the image. The engine measures any vertical black run followed by a vertical white run. The total length is recorded in the combo histogram, which then exhibits a very visible peak at the interline value. -For further details, please refer to the [Sheet Scale chapter](../main/sheet_scale.md). +For further details, please refer to the [Sheet scale chapter](../main/sheet_scale.md). But in the case of our snippet, the image contains just one staff line. Therefore, there is no physical "interline" the engine could retrieve. @@ -59,8 +59,8 @@ For the sake of completion, here below are the black histogram and the combo his | Legend | Histogram| | :--- | :---:| -|The black histogram gives correct values for the typical staff line height (4 pixels) and the typical beam height (16 pixels) | ![](../assets/images/fandango_black_histogram.png) | -|The combo histogram should give the typical interline value, but provides only erratic values | ![](../assets/images/fandango_combo_histogram.png)| +|The black histogram gives correct values for the typical staff line height (4 pixels) and the typical beam height (16 pixels) | ![](../../assets/images/fandango_black_histogram.png) | +|The combo histogram should give the typical interline value, but provides only erratic values | ![](../../assets/images/fandango_combo_histogram.png)| ### Barline height @@ -69,7 +69,7 @@ barline height that the engine should expect. For a multi-line staff, any barline is expected to go from the top staff line to the bottom staff line. But what if the staff at hand is a 1-line staff? This is no upper line or lower line. -So, how far should a barline go above and below the single staff line? +So, how far should the OMR engine expect a barline to go above and below the single staff line? In our snippet example, we have two barlines, one at the center and one at the right side of the staff. They both go from roughly one head height above to one head height below the line. @@ -78,7 +78,7 @@ These barlines thus have a height of about 2 "interlines". But let's consider this other example, with a 5-line staff and a 1-line staff: -![](../assets/images/drums_stave_sizes.png) +![](../../assets/images/drums_stave_sizes.png) The typical barline height for the 1-line staff is here the same as for the 5-line staff, that is 4 interlines. @@ -86,15 +86,15 @@ The typical barline height for the 1-line staff is here the same as for the 5-li Since the engine has no way to guess by itself the needed values of interline and barline height, we have to tell the engine which values to use for the image at hand. -This can be performed via the ``Book | Set book parameters`` menu as follows: +This can be performed via the {{ site.book_parameters }} menu as follows: | Comment | Dialog | | :--- | :---: | -| 0/ Initial dialog,
by default the engine expects standard 5-line staves | ![](../assets/images/fandango_params_initial.png) | -| 1/ The 1-line switch has been selected,
the "Barline height" field appears | ![](../assets/images/fandango_params_1line.png) | -| 2/ Barline height set to "two" interlines | ![](../assets/images/fandango_params_barline_height.png) | -| 3/ No multi-line staff in image,
the "Interline" field appears | ![](../assets/images/fandango_params_interline.png) | -| 4/ Final dialog content | ![](../assets/images/fandango_params_final.png) | +| 0/ Initial dialog,
by default the engine expects standard 5-line staves | ![](../../assets/images/fandango_params_initial.png) | +| 1/ The 1-line switch has been selected,
the "Barline height" field appears | ![](../../assets/images/fandango_params_1line.png) | +| 2/ Barline height set to "two" interlines | ![](../../assets/images/fandango_params_barline_height.png) | +| 3/ No multi-line staff in image,
the "Interline" field appears | ![](../../assets/images/fandango_params_interline.png) | +| 4/ Final dialog content | ![](../../assets/images/fandango_params_final.png) | Regarding the "Barline height" field, the dialog prompts for a value among four possibilities: - ``four``: This is the default value of 4 interlines, as seen on typical standard staves. @@ -114,4 +114,4 @@ This gives about 31 pixels for our snippet example. Once the book parameters are correctly set, the snippet gets perfectly transcribed. Here is the final result using the MuseScore plugin: -![](../assets/images/fandango_musescore.png) +![](../../assets/images/fandango_musescore.png) diff --git a/docs/_pages/specific/tablature.md b/docs/_pages/guides/specific/tablature.md similarity index 86% rename from docs/_pages/specific/tablature.md rename to docs/_pages/guides/specific/tablature.md index 9be8c8aae..ead651079 100644 --- a/docs/_pages/specific/tablature.md +++ b/docs/_pages/guides/specific/tablature.md @@ -1,30 +1,28 @@ --- layout: default title: Tablature -parent: Specific Features -nav_order: 9 -has_children: false +parent: Specific features +nav_order: 8 --- # Tablature {: .no_toc } {: .d-inline-block } -new in 5.3 -{: .label .label-yellow } +since 5.3 +{: .label .label-white } A *tablature* is a special kind of staff that represents the physical locations of strings and frets to be pressed. --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- ## Example -![](../assets/images/tablature_example.png) +![](../../assets/images/tablature_example.png) This tablature example contains 6 lines, and corresponds to a 6-string guitar. There exist also tablatures for 4-string bass guitar, represented with 4 lines. @@ -38,7 +36,7 @@ By default, tablatures are not detected. To enable their detection, we have to explicitly set the processing switches (either or both the 4-line or 6-line tablatures as depicted below): -![](../assets/images/tablature_switches.png) +![](../../assets/images/tablature_switches.png) The GRID step of OMR engine detects clusters of regularly spaced horizontal lines. Typically a cluster of 5 lines is considered as a "standard" 5-line staff. diff --git a/docs/_pages/specific/tremolo.md b/docs/_pages/guides/specific/tremolo.md similarity index 74% rename from docs/_pages/specific/tremolo.md rename to docs/_pages/guides/specific/tremolo.md index f14deec5b..cc2676764 100644 --- a/docs/_pages/specific/tremolo.md +++ b/docs/_pages/guides/specific/tremolo.md @@ -1,19 +1,18 @@ --- layout: default title: Tremolo -parent: Specific Features +parent: Specific features nav_order: 7 -has_children: false --- # Tremolo {: .no_toc } {: .d-inline-block } -new in 5.3 -{: .label .label-yellow } +since 5.3 +{: .label } Since release 5.3, Audiveris can handle tremolos as depicted below: -![](../assets/images/tremolos.png) +![](../../assets/images/tremolos.png) A tremolo is composed of 1, 2 or 3 slanted segments. @@ -25,10 +24,10 @@ Audiveris does not yet address the case of tremolos located _**between**_ two ch as shown in the picture below, stolen from Wikipedia: ![](https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Tremolo_notation_two_notes.svg/324px-Tremolo_notation_two_notes.svg.png) -If the OMR engine has not recognized a tremolo, you can always assign or drag the desired +If the OMR engine has not recognized a tremolo, we can always assign or drag the desired tremolo from the shape palette, using the ``BeamsEtc`` shape set. -![](../assets/images/tremolo_shapes.png) +![](../../assets/images/tremolo_shapes.png) Tremolo editing is limited to translations of the item, which will snap on compatible chords nearby. diff --git a/docs/_pages/ui.md b/docs/_pages/guides/ui/README.md similarity index 65% rename from docs/_pages/ui.md rename to docs/_pages/guides/ui/README.md index 81ea53668..2ea13ec63 100644 --- a/docs/_pages/ui.md +++ b/docs/_pages/guides/ui/README.md @@ -1,16 +1,17 @@ --- layout: default -title: User Editing -nav_order: 4 -has_children: true +title: User editing +parent: How-to guides +nav_order: 2 has_toc: false --- -# User Editing +# User editing In the transcription process made by the OMR engine, some elements may not be recognized correctly for various reasons, such as poor image quality or over-crowded score, to name a few. -There is a continuous effort going on to improve the OMR engine but on many examples a completely error free transcription is just out of reach. +There is a continuous effort going on to improve the OMR engine but on many examples +a completely error free transcription is just out of reach. It is thus globally more efficient to complement the OMR engine with a convenient graphical editor so that the end-user can easily fix most of the OMR errors. @@ -26,27 +27,31 @@ score image to its symbolic representation. In particular, it tries to remain as close as possible to the original layout, including any image skew or warping. -## Tutorial Video +## Tutorial videos As an introduction, you can watch Audiveris 5.1 user editor in action -thanks to Baruch's -[tutorial video](https://www.youtube.com/watch?v=718iy10sKV4&feature=youtu.be). +thanks to [Baruch Hoffart] who recorded this +[tutorial video](https://www.youtube.com/watch?v=718iy10sKV4&feature=youtu.be). -{: .warning } -Keep in mind that this tutorial was based on the **5.1** version, and some topics may be -significantly different when using the current **{{ site.audiveris_version }}** version. +For those who understand French, we highly recommend the YouTube channel run by [Dominique Verriere]. +It is an impressive collection of detailed tutorials about Audiveris and MuseScore. +Here is a direct link to his [Audiveris videos]. ## Documentation content -1. [UI Foundations](./ui_foundations/README.md): Editable OMR data, +1. [UI foundations](./ui_foundations/README.md): Editable OMR data, how to select and inspect it. -2. [UI Tools](./ui_tools/README.md): How to modify OMR data, +2. [UI tools](./ui_tools/README.md): How to modify OMR data, beginning with the general tools to add/edit/remove both Inters and Relations. Then more ad-hoc tools are presented to address specific cases. -3. [UI Examples](./ui_examples/README.md): Complete editing sessions +3. [UI examples](./ui_examples/README.md): Complete editing sessions on representative input scores. The best way to learn an editor is certainly by practicing rather than studying a long documentation. So, you could start by reading **Foundations** and then discover **Examples**. Then, you could go back to the **Tools** of interest for you, at your own pace. + +[Baruch Hoffart]: https://github.com/Bacchushlg +[Dominique Verriere]: https://www.youtube.com/@DominiqueVerriere +[Audiveris videos]: https://www.youtube.com/playlist?list=PLZNad9Wu-U5FHwu02qGFA_18Ebsz6Ifm8 diff --git a/docs/_pages/ui_examples/README.md b/docs/_pages/guides/ui/ui_examples/README.md similarity index 60% rename from docs/_pages/ui_examples/README.md rename to docs/_pages/guides/ui/ui_examples/README.md index a3f231983..c05b72021 100644 --- a/docs/_pages/ui_examples/README.md +++ b/docs/_pages/guides/ui/ui_examples/README.md @@ -1,12 +1,15 @@ --- layout: default -title: UI Examples -parent: User Editing +title: UI examples +parent: User editing nav_order: 3 has_children: true --- -# UI Examples +# UI examples +{: .d-inline-block } +Augmented in 5.4 +{: .label .label-yellow } The purpose of this chapter is to present editing sessions on representative scores to be used as concrete examples for the Audiveris user. -We can expect this chapter to grow incrementally, as more and more example sessions get included here. +We can expect this chapter to grow incrementally, as more and more example sessions get included here. \ No newline at end of file diff --git a/docs/_pages/ui_examples/eyes/README.md b/docs/_pages/guides/ui/ui_examples/eyes/README.md similarity index 88% rename from docs/_pages/ui_examples/eyes/README.md rename to docs/_pages/guides/ui/ui_examples/eyes/README.md index 0ff3d5777..a3486416d 100644 --- a/docs/_pages/ui_examples/eyes/README.md +++ b/docs/_pages/guides/ui/ui_examples/eyes/README.md @@ -1,8 +1,7 @@ --- layout: default title: Can't Take My Eyes Off of You -grand_parent: User Editing -parent: UI Examples +parent: UI examples nav_order: 2 --- # Can't Take My Eyes Off of You @@ -11,7 +10,7 @@ nav_order: 2 This case is one of the examples discussed on [issue #33](https://github.com/Audiveris/audiveris/issues/33) posted on Audiveris forum, dedicated to the support of drum notation. -[PDF available here](https://github.com/Audiveris/audiveris/files/8421680/Can.t_Take_My_Eyes_Off_of_You-Drums%2BClap.pdf) +[Input file available here](https://github.com/Audiveris/audiveris/files/8421680/Can.t_Take_My_Eyes_Off_of_You-Drums%2BClap.pdf) {: .btn .text-center } Main score specificities: @@ -29,15 +28,14 @@ Main UI actions: --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- ## Input -{: .note } +{: .highlight } If you are reading this handbook via a web browser, you can ask the browser to display each of these sheet images in a separate tab. @@ -71,7 +69,7 @@ percussion staves. This "Cross note heads" feature is meant for cross heads on * Since we are dealing with drum notation, we check the default drum-set.xml specifications. It is available in the Audiveris ``res`` (resources) folder. -Its content is also displayed in [this handbook section](../../specific/drums.md#appendix). +Its content is also displayed in [this handbook section](../../../specific/drums.md#appendix). The default specifications should be OK for the 5-line staff (named Drumset in the input). @@ -100,10 +98,12 @@ So, we create a "personal" ``drum-set.xml`` that provides one overriding definit ``` And we put this file in the user Audiveris ``config`` folder. -On my PC, the path to this folder is precisely: +On my Windows PC, the path to this folder is precisely: > C:\Users\herve\AppData\Roaming\AudiverisLtd\audiveris\config And that's it. +Audiveris will pick up this personal `drum-set.xml` file and load it to complete +and/or replace the definitions provided by the default `drum-set.xml` file. ## Raw results @@ -132,18 +132,23 @@ At the very beginning of sheet #1, we can see some header text partly recognized We select the text with a lasso, then in the ``Physicals`` palette in the shape board we double-click on the ``text`` button. This manually calls the OCR on the selected text which is this time well recognized. - The Inter board now presents the sentence "Drums/Clap" and proposes ``CreatorLyricist`` + The `Inter` board now presents the sentence "Drums/Clap" and proposes ``CreatorLyricist`` as its role. We manually change this role to ``Number``. - "**Can't Take My Eyes Off of You**": The apostrophe is mistaken for a separate "v" sentence. We select both sentences with a lasso and press the ``Delete`` key to remove them. With the underlying glyphs still selected, we double-click on the ``text`` button. The text is correctly OCR'ed as a single sentence and its role correctly set as ``Title``. -- "**𝅘𝅥 = 120**": Recognized as "J: 120". +- ~~"**𝅘𝅥 = 120**": Recognized as "J: 120". This is due to the quarter character (**𝅘𝅥**) which the OCR does not handle correctly. - And there is currently no way to fix this. + And there is currently no way to fix this.~~ - "**Molto Moderato**": Correctly OCR'd and assigned the ``Direction`` role. - "**Bob Crewe and Bob Gaudio**": Correctly OCR'd and assigned the ``CreatorComposer`` role. +{: .highlight } +UPDATE: +With 5.4 release, the sentence "**𝅘𝅥 = 120**" is now correctly recognized as a metronome indication, meaning 120 quarters per minute. + + Regarding rhythm, we have 3 measures displayed with a pink background. Their (local) ids are measures 4 and 8 in the first system and measure 27 in the last system. @@ -268,7 +273,7 @@ That is, for the OMR engine we have 4 separate logical parts: - Hand Clap And indeed, if within Audiveris we open the -[logical parts editor](../../specific/logical_parts.md#editing-of-logical-parts), +[logical parts editor](../../../specific/logical_parts.md#editing-of-logical-parts), we get this dialog: ![](./logicals_editing.png) diff --git a/docs/_pages/guides/ui/ui_examples/eyes/book_parameters.png b/docs/_pages/guides/ui/ui_examples/eyes/book_parameters.png new file mode 100644 index 000000000..b0f721005 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/eyes/book_parameters.png differ diff --git a/docs/_pages/ui_examples/eyes/finale_export.png b/docs/_pages/guides/ui/ui_examples/eyes/finale_export.png similarity index 100% rename from docs/_pages/ui_examples/eyes/finale_export.png rename to docs/_pages/guides/ui/ui_examples/eyes/finale_export.png diff --git a/docs/_pages/ui_examples/eyes/logicals_edited.png b/docs/_pages/guides/ui/ui_examples/eyes/logicals_edited.png similarity index 100% rename from docs/_pages/ui_examples/eyes/logicals_edited.png rename to docs/_pages/guides/ui/ui_examples/eyes/logicals_edited.png diff --git a/docs/_pages/ui_examples/eyes/logicals_editing.png b/docs/_pages/guides/ui/ui_examples/eyes/logicals_editing.png similarity index 100% rename from docs/_pages/ui_examples/eyes/logicals_editing.png rename to docs/_pages/guides/ui/ui_examples/eyes/logicals_editing.png diff --git a/docs/_pages/ui_examples/eyes/musescore_4_parts.png b/docs/_pages/guides/ui/ui_examples/eyes/musescore_4_parts.png similarity index 100% rename from docs/_pages/ui_examples/eyes/musescore_4_parts.png rename to docs/_pages/guides/ui/ui_examples/eyes/musescore_4_parts.png diff --git a/docs/_pages/ui_examples/eyes/parts_collation.png b/docs/_pages/guides/ui/ui_examples/eyes/parts_collation.png similarity index 100% rename from docs/_pages/ui_examples/eyes/parts_collation.png rename to docs/_pages/guides/ui/ui_examples/eyes/parts_collation.png diff --git a/docs/_pages/ui_examples/eyes/sheet1.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_header.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_header.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_header.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_header.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_header_ok.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_header_ok.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_header_ok.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_header_ok.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_m25.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_m25.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_m25.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_m25.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_m27.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_m27.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_m27.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_m27.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_m27_ok.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_m27_ok.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_m27_ok.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_m27_ok.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_m31.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_m31.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_m31.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_m31.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_m31_ok.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_m31_ok.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_m31_ok.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_m31_ok.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_m3_4.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_m3_4.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_m3_4.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_m3_4.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_m3_4_ok.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_m3_4_ok.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_m3_4_ok.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_m3_4_ok.png diff --git a/docs/_pages/ui_examples/eyes/sheet1_raw.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet1_raw.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet1_raw.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet1_raw.png diff --git a/docs/_pages/ui_examples/eyes/sheet2.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet2.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet2.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet2.png diff --git a/docs/_pages/ui_examples/eyes/sheet2_m29.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet2_m29.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet2_m29.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet2_m29.png diff --git a/docs/_pages/ui_examples/eyes/sheet2_m29_ok.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet2_m29_ok.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet2_m29_ok.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet2_m29_ok.png diff --git a/docs/_pages/ui_examples/eyes/sheet2_m4.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet2_m4.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet2_m4.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet2_m4.png diff --git a/docs/_pages/ui_examples/eyes/sheet2_m4_ok.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet2_m4_ok.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet2_m4_ok.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet2_m4_ok.png diff --git a/docs/_pages/ui_examples/eyes/sheet2_raw.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet2_raw.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet2_raw.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet2_raw.png diff --git a/docs/_pages/ui_examples/eyes/sheet3.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet3.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet3.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet3.png diff --git a/docs/_pages/ui_examples/eyes/sheet3_m16.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet3_m16.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet3_m16.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet3_m16.png diff --git a/docs/_pages/ui_examples/eyes/sheet3_m16_ok.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet3_m16_ok.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet3_m16_ok.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet3_m16_ok.png diff --git a/docs/_pages/ui_examples/eyes/sheet3_m25.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet3_m25.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet3_m25.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet3_m25.png diff --git a/docs/_pages/ui_examples/eyes/sheet3_m25_ok.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet3_m25_ok.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet3_m25_ok.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet3_m25_ok.png diff --git a/docs/_pages/ui_examples/eyes/sheet3_m5.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet3_m5.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet3_m5.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet3_m5.png diff --git a/docs/_pages/ui_examples/eyes/sheet3_m5_ok.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet3_m5_ok.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet3_m5_ok.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet3_m5_ok.png diff --git a/docs/_pages/ui_examples/eyes/sheet3_raw.png b/docs/_pages/guides/ui/ui_examples/eyes/sheet3_raw.png similarity index 100% rename from docs/_pages/ui_examples/eyes/sheet3_raw.png rename to docs/_pages/guides/ui/ui_examples/eyes/sheet3_raw.png diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/README.md b/docs/_pages/guides/ui/ui_examples/moonlight/README.md new file mode 100644 index 000000000..c4b8f203a --- /dev/null +++ b/docs/_pages/guides/ui/ui_examples/moonlight/README.md @@ -0,0 +1,367 @@ +--- +layout: default +title: Moonlight sonata +parent: UI examples +nav_order: 3 +--- +# Moonlight sonata +{: .no_toc } +{: .d-inline-block } +new in 5.4 +{: .label .label-yellow } + +This famous *Sonata No. 14 "Moonlight"*, 1st movement, +is a typical example of a score with implicit tuplets. +The OMR engine is able to detect most of them but not all, so some user guiding actions are needed. + +[Input file available here](https://www.free-scores.com/download-sheet-music.php?pdf=282) +{: .btn .text-center } + +It is one of the numerous free scores (190 000+ as of this writing) +available on the [free-scores.com](https://www.free-scores.com/) site. + +Main score specificities: +- Book of 5 sheets +- Lots of implicit tuplets + +Main UI actions: +- Use of the `Chords` popup menu to fix voices, +notably `Next in voice`, `Separate voices` and `Preferred voice` actions +- Manual insertion of tuplets + +--- +Table of contents +{: .text-epsilon } +1. TOC +{:toc} +--- + +## Input + +Here is the first image of a total of 5: + +| Sheet ID | Input image | +| :---: | :---: | +| Sheet#1 | ![](./sheet1.png) | + +{: .note } +> Loading any image of this PDF file generates a dozen messages like: +> "*Unknown string command in glyph p of font QPTMAY+CMR10*" +> +> These messages can be safely ignored. They are emitted by the PDFBox library +> and would be fixed in the upcoming new version of the library. + +## Book parameters + +The input score has a "common cut" time signature (2/2), +while each measure is made up of a sequence of 4 linked triplets. +But none of these triplets is explicitly marked with a "3" tuplet sign. + +So we'll have to rely on the OMR engine to detect which groups of notes +should be considered *triplets*. + +Before launching the transcription, we have to set a few things in the book parameters: +- First, the settings should apply to the entire book, +and not only to the (current) first sheet. +So, we make sure to select the "Moonlight" book tab rather than the "S#1" sheet tab. +- The `Text font` is set to `Serif` rather than the default `Sans Serif` font. +This has no impact on the OCR efficiency, +the effect is mainly a more faithful display of texts. +- The `Input quality` is set to `Synthetic` rather than the default `Standard`. +This higher quality results in a more strict checking and thus less mistakes. +- Finally, setting the `Implicit tuplets` to ON is absolutely mandatory! + +![](./book_parameters.png) + +We can save the book right now, to save the book parameters with it. + +## Raw results + +We can launch transcription of the entire book, +for example via the {{ site.book_transcribe }} pull-down menu. + +With Audiveris 5.4, the transcription took exactly 2 minutes for 5 sheets +on a 14-year old laptop running Windows 10. + + +We use the {{ site.view_voices }} menu item to display voices with different colors, +and the {{ site.view_chords }} item to display the chord numeric IDs. + +| Sheet ID | Raw results | +| :---: | :---: | +| Sheet#1 | ![](./sheet1_raw.png) | +| Sheet#2 | ![](./sheet2_raw.png) | +| Sheet#3 | ![](./sheet3_raw.png) | +| Sheet#4 | ![](./sheet4_raw.png) | +| Sheet#5 | ![](./sheet5_raw.png) | + +## Sheet #1 + +No measures to fix. + +## Sheet #2 + +One measure in pink + +### Measure #12 + +![](./sheet2_m12.png) + +Here we have a mess on the lower left side: +- A non-recognized beam +- A false note head +- A tuplet sign + +We first delete the note head and the tuplet sign: + +![](./sheet2_m12_mess.png) + +We then assign the Beam shape to the underlying glyph. + +We enter the edit mode via a double click on the beam, to extend the beam to the left, +until it embraces the left-most stem +(at this point the beam shows 3 links to the embraced 3 stems). + +![](./sheet2_m12_beam.png) + +And the measure turns white. + +![](./sheet2_m12_rests.png) + +However, the upper staff exhibits 2 unrecognized quarter rests +and the lower staff a missing whole head. + +We assign each of the quarter rests for example by clicking on the underlying glyph, +which triggers the glyph classifier, and we simply click on the top 1 shape (quarter rest). + +For the non-recognized whole head, we have no correct underlying glyph. +So, we simply drag a whole head from the ShapeBoard and drop it on the proper location. + +![](./sheet2_m12_ok.png) + +We could stop at this point, because it's OK as far as the rhythm is concerned. + +We can also further refine the result with two actions: +- At the bottom of the lower staff, we could decide to merge the 3 whole heads into a single chord. +To do so, we select the 3 whole heads, then in the pop-up `Chords` menu, we select the `Merge` action. +![](./sheet2_m12_merge.png) + +- Between upper and lower staff, we can consider that the quarter note +(chord #5358 in voice 5 cyan) should rather belong to the voice 1 (blue). +To do so, we use the `Next in voice` action twice: + - Between the last quarter #5318 of previous measure and the chord #5358 + - Between chord #5358 and the first quarter rest #5955 in the upper staff. + +![](./sheet2_m12_niv.png) + +Here is the final status of this measure: + +![](./sheet2_m12_final.png) + + +### Measures #1, #2, #3 + +Let's have a look back at the top of this page, the system #1: + +![](./sheet2_s1.png) + +All measures in this system are displayed in white and would be correctly exported. + +However, we can notice that the "intermediate" voice varies between the three measures of the system: +- Green (voice #2) in measure #1 +- Cyan (voice #5) in measures #2 and #3 + +And similarly, the "lower" voice appears in cyan (voice #5) in measure #1 +and in orange (voice #6) in the following two measures. + +We may wish to further improve this system. + +The current policy of the rhythm algorithm is to assign the voice number +at the very beginnning of a measure according to: +- The containing staff (1-4 for staff #1, 5-8 for staff #2) +- The vertical rank within the staff. + +We can override this policy via two ways: +- Within the *same* system, we can use the `Next in voice` action between +the last note of a measure and the first note of the following measure, +- At the *beginning* of a system, we can use the `Preferred voice` action on the note +of a starting chord to assign an absolute voice number. + +![](./sheet2_s1_preferred.png) + +Doing so for the "intermediate" and for the "lower" voices, we get this final result: + +![](./sheet2_s1_ok.png) + +## Sheet #3 + +We have four measures to fix. + +### Measure #3 + +![](./sheet3_m3.png) + +We can observe that the 3 first chords in the upper staff should have a tuplet. + +We manually insert a tuplet-3, dragged from the Shape board (the `BeamsEtc` subset) +and dropped at proper location. + +{: .highlight } +While being dragged, a tuplet is displayed with its potential links with the embraced chords. +These links, shown as green dashed lines, +are a good visual aid to decide where to precisely drop the tuplet. + +![](./sheet3_m3_ok.png) + +We can notice that this manual fix at the start of the measure resulted +in the automatic insertion of the last implicit tuplet at the end of the measure. + +### Measure #4 + +![](./sheet3_m4.png) + +On the upper right, a stem has not been detected. + +We select the underlying glyph and in the Shape board (Physicals set) +we double-click on the stem button. + +We now have a note head with two stems, one linked on the head left side, +and the other (the new one) on the head right side, but not yet linked. + +To link head and stem, we press the mouse on the stem, drag to the head and release the mouse. + +![](./sheet3_m4_ok.png) + +The physical note head is now split into 2 logical half-heads, and the measure turns white. + +### Measure #5 + +![](./sheet3_m5.png) + +We have missing implicit tuplets on two locations. + +So, we manually insert a tuplet of the left location (at the beginning of the measure). +The second (implicit) tuplet is automatically inserted. + +![](./sheet3_m5_ok.png) + + +### Measure #11 + +![](./sheet3_m11.png) + +A false slur detected (to be manually deleted) +and a bass clef not detected (to be manually assigned). + +Regarding the tuplets, there is none, certainly due to the complexity at the end of the measure. + +So we insert them manually from left to right. + +When the 3rd one is inserted between the down eighth and the down quarter, +the measure turns white with the upper tuplets automatically inserted: + +![](./sheet3_m11_ok.png) + +## Sheet #4 + +Just one measure to fix. + +### Measure #9 + +![](./sheet4_m9.png) + +A small glyph has been mistaken for a dot, considered as an augmentation dot. + +This kind of error is not often easy to detect visually. +This is why we now have a view option, activated via the {{ site.view_jumbos}} menu +or the `F7` function key. +When set to ON, all the augmentation dots are highlighted as big red dots, +as in the following picture: + +![](./sheet4_m9_jumbo.png) + +All we have to do now is to delete this false augmentation dot. + +![](./sheet4_m9_ok.png) + +## Sheet #5 + +Two measures to fix. + +### Measure #4 + +![](./sheet5_m4.png) + +A dotted half-note is missing. +We can drag a half-note from the Shape board: + +![](./half_note_up.png) + +And assign the augmentation dot. + +![](./sheet5_m4_niv.png) + +The dotted half-note is now fixed, but we still have no implicit tuplets. + +We could manually insert them, but there is an easier way: by voice chaining +the beamed notes on the left of the lower staff with the beamed notes on the upper staff. + +![](./sheet5_m4_do_niv.png) + +And voila: + +![](./sheet5_m4_ok.png) + +### Measure #11 + +![](./sheet5_m11.png) + +No implicit tuplet has been detected. + +We have to insert them manually, from left to right. + +![](./sheet5_m11_tuplet_1.png) + +The first manual tuplet has been automatically followed by an implicit one. + +We finally insert the two missing tuplets on the second staff. + +![](./sheet5_m11_ok.png) + +## Conclusion + +A few remarks, to conclude this editing session. + +Regarding precise **tuplet location**: +- We cannot modify the location of an implicit tuplet sign. +We can put the sign in `Edit` mode and shift it, +but as soon as we leave the `Edit` mode, the containing measure is re-processed, +resulting in the removal of all implicit tuplets and the creation of new ones +at the same locations... +- To actually modify a tuplet location, we have to manually insert a tuplet +-- typically over the implicit one. +This results in a manual (non-implicit) tuplet at the desired location. +Moreover, this manual tuplet can be further edited if needed. + +Regarding **voice number**: +- We have seen how to generally guide the rhythm algorithm +-- see [this section](#measures-1-2-3) above in this chapter. +- The action `Next in voice` can work only within the same system, +but can cross measure boundaries. +- The link it establishes is dynamic, from the left partner to the right partner. +In other words, if we change the voice number in a measure, +it will impact the linked voice in the following measure. +- Between systems (and *a fortiori* between pages or sheets), +the action `Next in voice` cannot apply, +only the static action `Preferred voice` is available. + +Regarding the **implicit tuplets**: +- The raw transcription of this "Moonlight Sonata" resulted in: + - 68 measures processed (all requiring implicit tuplets), + - 3 measures in error because of mis-recognized symbols (we don't count them), + - 5 measures in error because of missing tuplets, + - 60 measures OK with implicit tuplets + which gives a success rate of 60/65, that is 92%. +- The "implicit tuplets" algorithm can still be improved, but it is usable right now. +It is recommended to reserve it for selected scores and to be prepared for manual corrections +as we did in this session. diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/book_parameters.png b/docs/_pages/guides/ui/ui_examples/moonlight/book_parameters.png new file mode 100644 index 000000000..58dddca32 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/book_parameters.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/half_note_up.png b/docs/_pages/guides/ui/ui_examples/moonlight/half_note_up.png new file mode 100644 index 000000000..5f786a3d0 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/half_note_up.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet1.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet1.png new file mode 100644 index 000000000..de863a70e Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet1.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet1_raw.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet1_raw.png new file mode 100644 index 000000000..d5b046706 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet1_raw.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12.png new file mode 100644 index 000000000..db97b97a7 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_beam.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_beam.png new file mode 100644 index 000000000..8c5d42961 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_beam.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_final.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_final.png new file mode 100644 index 000000000..5e1a48f35 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_final.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_merge.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_merge.png new file mode 100644 index 000000000..cd4657048 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_merge.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_mess.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_mess.png new file mode 100644 index 000000000..08d7a1b96 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_mess.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_niv.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_niv.png new file mode 100644 index 000000000..0dbe57fee Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_niv.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_ok.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_ok.png new file mode 100644 index 000000000..bf061c9aa Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_ok.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_rests.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_rests.png new file mode 100644 index 000000000..ef0a7f05c Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_m12_rests.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_raw.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_raw.png new file mode 100644 index 000000000..3b3bce95b Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_raw.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_s1.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_s1.png new file mode 100644 index 000000000..46de47595 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_s1.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_s1_ok.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_s1_ok.png new file mode 100644 index 000000000..a86174522 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_s1_ok.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_s1_preferred.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_s1_preferred.png new file mode 100644 index 000000000..dfb447fc3 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet2_s1_preferred.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11.png new file mode 100644 index 000000000..ce44bd973 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11_ok.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11_ok.png new file mode 100644 index 000000000..d36729a7e Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11_ok.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11_t6.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11_t6.png new file mode 100644 index 000000000..14a10ccb7 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11_t6.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11_voice.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11_voice.png new file mode 100644 index 000000000..3ac9d08a9 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m11_voice.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m3.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m3.png new file mode 100644 index 000000000..c2a445c15 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m3.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m3_ok.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m3_ok.png new file mode 100644 index 000000000..4de5d61fb Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m3_ok.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m4.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m4.png new file mode 100644 index 000000000..acd8388c5 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m4.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m4_ok.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m4_ok.png new file mode 100644 index 000000000..ec039a1cb Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m4_ok.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5.png new file mode 100644 index 000000000..5e1c9bf1d Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_ok.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_ok.png new file mode 100644 index 000000000..ae1fdefb9 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_ok.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_separate.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_separate.png new file mode 100644 index 000000000..d3a2e5c59 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_separate.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_separate2.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_separate2.png new file mode 100644 index 000000000..81934ed4b Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_separate2.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_separated.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_separated.png new file mode 100644 index 000000000..43e990ccb Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_m5_separated.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_raw.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_raw.png new file mode 100644 index 000000000..1514377ac Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet3_raw.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_m9.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_m9.png new file mode 100644 index 000000000..4d8b57434 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_m9.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_m9_jumbo.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_m9_jumbo.png new file mode 100644 index 000000000..98434bd3c Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_m9_jumbo.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_m9_ok.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_m9_ok.png new file mode 100644 index 000000000..dc2d852a8 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_m9_ok.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_raw.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_raw.png new file mode 100644 index 000000000..6fd84d1a4 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet4_raw.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m11.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m11.png new file mode 100644 index 000000000..2ae1452bd Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m11.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m11_ok.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m11_ok.png new file mode 100644 index 000000000..1bd3a22b6 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m11_ok.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m11_tuplet_1.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m11_tuplet_1.png new file mode 100644 index 000000000..530cfc6a3 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m11_tuplet_1.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4.png new file mode 100644 index 000000000..f043ca681 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4_do_niv.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4_do_niv.png new file mode 100644 index 000000000..4230dc275 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4_do_niv.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4_niv.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4_niv.png new file mode 100644 index 000000000..9042d283e Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4_niv.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4_ok.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4_ok.png new file mode 100644 index 000000000..ddcf47873 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_m4_ok.png differ diff --git a/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_raw.png b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_raw.png new file mode 100644 index 000000000..edb0afd09 Binary files /dev/null and b/docs/_pages/guides/ui/ui_examples/moonlight/sheet5_raw.png differ diff --git a/docs/_pages/ui_examples/trinitas/README.md b/docs/_pages/guides/ui/ui_examples/trinitas/README.md similarity index 93% rename from docs/_pages/ui_examples/trinitas/README.md rename to docs/_pages/guides/ui/ui_examples/trinitas/README.md index b342a8dbb..8fef48b51 100644 --- a/docs/_pages/ui_examples/trinitas/README.md +++ b/docs/_pages/guides/ui/ui_examples/trinitas/README.md @@ -1,8 +1,7 @@ --- layout: default title: O lux beata Trinitas -grand_parent: User Editing -parent: UI Examples +parent: UI examples nav_order: 1 --- # O lux beata Trinitas @@ -10,12 +9,12 @@ nav_order: 1 {: .note } You will notice that the description of user editing is very detailed in this example, perhaps too much. -This was done on purpose, so that the session content could be used as introductory material. +This was done on purpose, so that the session content could be used as an introductory material. The case at hand describes the processing of an old office hymn available on the IMSLP site. You can download it directly via the button below: -[O lux beata Trinitas](https://imslp.org/wiki/O_lux_beata_Trinitas_(Alberti%2C_Johann_Friedrich)) +[Input file available here](https://imslp.org/wiki/O_lux_beata_Trinitas_(Alberti%2C_Johann_Friedrich)) {: .btn .text-center } The case originated from [issue #481](https://github.com/Audiveris/audiveris/issues/481) @@ -37,8 +36,7 @@ The main UI actions: --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- @@ -51,7 +49,7 @@ If we haven't done so, we select [Audiveris releases on github](https://github.c Under Windows, we can simply run the installer (for example Audiveris_Setup-5.2.2-windows-x86_64.exe ). -Under Windows, Linux and MacOS, we can decide to clone the Audiveris project locally and then build it. +Under Windows, Linux and macOS, we can decide to clone the Audiveris project locally and then build it. In any case, we will have to make sure that a proper Java version is installed. Here are the first messages displayed, when pressing the Windows start icon, @@ -70,7 +68,7 @@ Classifier data loaded from default uri file:///D:/soft/audiveris-github/develop Versions. Poll frequency: Weekly, next poll on: 17-Jul-2021 ``` -Spme quick explanations about these early messages : +Some quick explanations about these early messages : 1. Program version (e.g. 5.2.2) 2. Logging: @@ -206,11 +204,11 @@ followed by a half note (chord #2837), for a total duration of 2 for voice #6. So, there is a conflict between the actual duration of this measure (and of almost all other measures in the same page) with the time signature: -2 for each measure vs 2/2=1 expected by the common-cut time signature. +2 for each measure vs. 2/2=1 expected by the common-cut time signature. What is the real "value" of a common-cut time signature? This [Wikipedia Alla breve article](https://en.wikipedia.org/wiki/Alla_breve) sheds an interesting -light, especially with the (1642-1710) indication on the score top right corner. +light, especially with the (1642-1710) date indication on the score top right corner. See also this [Ultimate music theory article](https://ultimatemusictheory.com/breve-note-and-breve-rest/). Instead of 2/2, it would be worth 4/2. @@ -218,14 +216,14 @@ Instead of 2/2, it would be worth 4/2. So let's replace all the common-cuts by explicit "4/2" time signatures. To delete: -- We select the common-cut Inter and press `DEL` key. -- Or we click on the `Deassign` button in the Inter board. +- We select the common-cut `Inter` and press `DEL` key. +- Or we click on the `Deassign` button in the `Inter` board. - Or we use the {{ site.popup_inters }} contextual menu. Inserting a 4/2 signature is more complex, since this is not one of the predefined time signatures: 1. From the Shape palette, we select the "Times" family (the family figured by a 4/4 sign) and from this shape family, we drag & drop the custom (0/0) time signature into the correct location. -2. Then in the Inter board, we replace the custom 0/0 value by 4/2 value and press `Enter`. +2. Then in the `Inter` board, we replace the custom 0/0 value by 4/2 value and press `Enter`. We do this for both common-cut signatures in the first measure of sheet #1. We'll do the same thing on sheet #4 later. @@ -247,7 +245,7 @@ in the lower staff, except the last one (measure #4) which exhibits 3 voices in ![](sheet1_m4.png) -Referring to voice legend ![](../../assets/images/voice_colors.png), +Referring to voice legend ![](../../../../assets/images/voice_colors.png), this upper staff contains: 1. Voice #1, chord #3382 made of a breve rest, horizontally located at the measure center, 2. Voice #2, chord #3381 made of a whole rest, located at the beginning of the measure, @@ -259,8 +257,8 @@ In fact, and there are other similar cases in this book, the whole rest is never but located as a plain chord in a time slot. We can visualize the content of the first slot, -using ![](../../assets/images/ModeCombined.png) combined mode and pressing the right mouse -button near the first slot. +using the combined mode (![](../../../../assets/images/ModeCombined.png)) +and pressing the right mouse button near the first slot. Chord #3381 is *not* part of this slot: ![](sheet1_m4_slot1.png) @@ -325,7 +323,7 @@ In fact, its whole rest of chord #3374 had been mistaken for a half rest: | :---: | :---: | |![](sheet1_m1_half_rest.png)|![](sheet1_m1_binary.png)| -If we click on this rest, the Inter board gives HALF_REST shape. +If we click on this rest, the `Inter` board gives HALF_REST shape. But the binary view clearly indicates it should be a WHOLE_REST shape. The measure strip confirms the fact that chord #3374 duration is only 1/2, @@ -692,7 +690,7 @@ V 7 |........|........|........|Ch#4341 ==================|2 V 8 |........|........|........|Ch#3805 ==================|2 ``` The measure strip shows that chord #4340 is considered as a whole rest. -Also clicking on this rest shows WHOLE_REST in the Inter board. +Also clicking on this rest shows WHOLE_REST in the `Inter` board. However, a look at the binary image gives a different result: ![](sheet4_m14_binary.png) @@ -883,9 +881,9 @@ We can see a mix of several languages the OCR had to deal with. Note, for visual check: - the original text is easier to read in the binary view in physical mode -![](../../assets/images/ModePhysical.png) +![](../../../../assets/images/ModePhysical.png) - while the OCR output is easier to read in logical mode -![](../../assets/images/ModeLogical.png) +![](../../../../assets/images/ModeLogical.png) Here are all the textual elements found in this book (we ignore text that represents a measure number) @@ -905,7 +903,7 @@ Here are all the textual elements found in this book If we except the book title "O lux beata Trinitas" which OCR totally failed to recognize, probably because of its exotic font, the raw Tesseract OCR results are pretty good. -We can manually correct the few mistakes, via the Inter board. +We can manually correct the few mistakes, via the `Inter` board. This must be done word by word, by selecting the word and modifying its content (typing new characters and validating by pressing the `Enter` key). @@ -920,7 +918,7 @@ whereas text **role** is modified at the _sentence_ level. In this book, nearly all sentences had their role correctly assigned by the OMR engine heuristics. An exception is "© Les Éditions Outremontaises - 2018" whose role appears to be "UnknownRole". -To fix this, we select one word of this sentence and, in the Inter board, +To fix this, we select one word of this sentence and, in the `Inter` board, click on the `To Ensemble` button (as you know, a sentence is modeled as an ensemble of words). We can then choose the proper sentence role ("Rights"): @@ -943,7 +941,7 @@ This book was exported as 3 separate .mxl files, one per detected movement. ### Plugin -If we have configured a few [plugins](../../advanced/plugins.md) +If we have configured a few [plugins](../../../advanced/plugins.md) to external programs such as MuseScore or Finale, clicking on the desired plugin would: 1. Export an updated version of the 3 movements files, if needed, diff --git a/docs/_pages/ui_examples/trinitas/initial_swapped.png b/docs/_pages/guides/ui/ui_examples/trinitas/initial_swapped.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/initial_swapped.png rename to docs/_pages/guides/ui/ui_examples/trinitas/initial_swapped.png diff --git a/docs/_pages/ui_examples/trinitas/initial_title.png b/docs/_pages/guides/ui/ui_examples/trinitas/initial_title.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/initial_title.png rename to docs/_pages/guides/ui/ui_examples/trinitas/initial_title.png diff --git a/docs/_pages/ui_examples/trinitas/initial_trinitas.png b/docs/_pages/guides/ui/ui_examples/trinitas/initial_trinitas.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/initial_trinitas.png rename to docs/_pages/guides/ui/ui_examples/trinitas/initial_trinitas.png diff --git a/docs/_pages/ui_examples/trinitas/musescore.png b/docs/_pages/guides/ui/ui_examples/trinitas/musescore.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/musescore.png rename to docs/_pages/guides/ui/ui_examples/trinitas/musescore.png diff --git a/docs/_pages/ui_examples/trinitas/partial_whole_rests_book.png b/docs/_pages/guides/ui/ui_examples/trinitas/partial_whole_rests_book.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/partial_whole_rests_book.png rename to docs/_pages/guides/ui/ui_examples/trinitas/partial_whole_rests_book.png diff --git a/docs/_pages/ui_examples/trinitas/partial_whole_rests_sheet.png b/docs/_pages/guides/ui/ui_examples/trinitas/partial_whole_rests_sheet.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/partial_whole_rests_sheet.png rename to docs/_pages/guides/ui/ui_examples/trinitas/partial_whole_rests_sheet.png diff --git a/docs/_pages/ui_examples/trinitas/sentence_role.png b/docs/_pages/guides/ui/ui_examples/trinitas/sentence_role.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sentence_role.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sentence_role.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_init.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_init.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_init.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_init.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m1.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m1.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m1.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m1.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m11.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m11.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m11.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m11.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m11_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m11_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m11_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m11_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m11_sequence.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m11_sequence.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m11_sequence.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m11_sequence.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m12.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m12.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m12.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m12.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m14.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m14.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m14.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m14.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m1_binary.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m1_binary.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m1_binary.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m1_binary.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m1_half_rest.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m1_half_rest.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m1_half_rest.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m1_half_rest.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m4.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m4.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m4.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m4.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m4_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m4_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m4_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m4_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m4_slot1.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m4_slot1.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m4_slot1.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m4_slot1.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m4_slot1_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m4_slot1_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m4_slot1_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m4_slot1_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m5.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m5.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m5.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m5.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m5_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m5_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m5_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m5_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m7.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m7.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m7.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m7.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m7_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m7_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m7_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m7_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m7_separate_relation.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m7_separate_relation.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m7_separate_relation.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m7_separate_relation.png diff --git a/docs/_pages/ui_examples/trinitas/sheet1_m7_separate_voices.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m7_separate_voices.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet1_m7_separate_voices.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet1_m7_separate_voices.png diff --git a/docs/_pages/ui_examples/trinitas/sheet2_init.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet2_init.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet2_init.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet2_init.png diff --git a/docs/_pages/ui_examples/trinitas/sheet2_m17.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m17.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet2_m17.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m17.png diff --git a/docs/_pages/ui_examples/trinitas/sheet2_m17_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m17_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet2_m17_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m17_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet2_m2.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m2.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet2_m2.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m2.png diff --git a/docs/_pages/ui_examples/trinitas/sheet2_m2_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m2_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet2_m2_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m2_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet2_m6.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m6.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet2_m6.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m6.png diff --git a/docs/_pages/ui_examples/trinitas/sheet2_m6_long.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m6_long.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet2_m6_long.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m6_long.png diff --git a/docs/_pages/ui_examples/trinitas/sheet2_m9.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m9.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet2_m9.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet2_m9.png diff --git a/docs/_pages/ui_examples/trinitas/sheet3_init.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet3_init.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet3_init.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet3_init.png diff --git a/docs/_pages/ui_examples/trinitas/sheet3_m11.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet3_m11.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet3_m11.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet3_m11.png diff --git a/docs/_pages/ui_examples/trinitas/sheet3_m11_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet3_m11_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet3_m11_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet3_m11_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet3_m14.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet3_m14.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet3_m14.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet3_m14.png diff --git a/docs/_pages/ui_examples/trinitas/sheet3_m14_classifier.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet3_m14_classifier.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet3_m14_classifier.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet3_m14_classifier.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_init.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_init.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_init.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_init.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m11.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m11.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m11.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m11.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m12.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m12.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m12.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m12.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m13.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m13.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m13.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m13.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m14.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m14.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m14.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m14.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m14_binary.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m14_binary.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m14_binary.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m14_binary.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m15.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m15.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m15.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m15.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m16.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m16.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m16.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m16.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m16_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m16_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m16_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m16_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m17.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m17.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m17.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m17.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m18.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m18.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m18.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m18.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m19.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m19.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m19.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m19.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m1_2.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m1_2.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m1_2.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m1_2.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m1_2_3.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m1_2_3.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m1_2_3.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m1_2_3.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m1_2_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m1_2_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m1_2_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m1_2_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m1_voice_assign.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m1_voice_assign.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m1_voice_assign.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m1_voice_assign.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m7.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m7.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m7.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m7.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m8.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m8.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m8.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m8.png diff --git a/docs/_pages/ui_examples/trinitas/sheet4_m9.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m9.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet4_m9.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet4_m9.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_init.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_init.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_init.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_init.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m10.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m10.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m10.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m10.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m17.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m17.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m17.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m17.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m17_1.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m17_1.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m17_1.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m17_1.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m17_2.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m17_2.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m17_2.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m17_2.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m2.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m2.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m2.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m2.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m20.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m20.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m20.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m20.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m2_ok.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m2_ok.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m2_ok.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m2_ok.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m4.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m4.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m4.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m4.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m6.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m6.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m6.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m6.png diff --git a/docs/_pages/ui_examples/trinitas/sheet5_m8.png b/docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m8.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/sheet5_m8.png rename to docs/_pages/guides/ui/ui_examples/trinitas/sheet5_m8.png diff --git a/docs/_pages/ui_examples/trinitas/trinitas_word.png b/docs/_pages/guides/ui/ui_examples/trinitas/trinitas_word.png similarity index 100% rename from docs/_pages/ui_examples/trinitas/trinitas_word.png rename to docs/_pages/guides/ui/ui_examples/trinitas/trinitas_word.png diff --git a/docs/_pages/ui_foundations/README.md b/docs/_pages/guides/ui/ui_foundations/README.md similarity index 82% rename from docs/_pages/ui_foundations/README.md rename to docs/_pages/guides/ui/ui_foundations/README.md index 013a5ad17..6e2ce594d 100644 --- a/docs/_pages/ui_foundations/README.md +++ b/docs/_pages/guides/ui/ui_foundations/README.md @@ -1,12 +1,12 @@ --- layout: default -title: UI Foundations -parent: User Editing +title: UI foundations +parent: User editing nav_order: 1 has_children: true --- -# UI Foundations +# UI foundations This chapter introduces the key components the end user can interact with, be they simple entities like glyphs, inters or relations or more complex containers diff --git a/docs/_pages/ui_foundations/inspection.md b/docs/_pages/guides/ui/ui_foundations/inspection.md similarity index 81% rename from docs/_pages/ui_foundations/inspection.md rename to docs/_pages/guides/ui/ui_foundations/inspection.md index 303c2c4d1..580e028ee 100644 --- a/docs/_pages/ui_foundations/inspection.md +++ b/docs/_pages/guides/ui/ui_foundations/inspection.md @@ -1,8 +1,7 @@ --- layout: default title: Inspection -grand_parent: User Editing -parent: UI Foundations +parent: UI foundations nav_order: 3 --- @@ -13,19 +12,19 @@ In a perfectly transcribed score, all the items would be correctly recognized and every chord in every voice in every measure would start at the right time and span the right duration. -This beautiful mechanism can seize up for various reasons, large or small, and result in +This beautiful mechanism can seize up for various reasons, large or small, and lead to abnormal results. The purpose of this inspection chapter is to present various means for detecting such abnormal results and for discovering their root cause(s). +--- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} - --- + ## Measure background A pink measure background is the most obvious sign, meant to call user attention to a measure, @@ -34,11 +33,11 @@ background and the others with standard white background: [Unless we have disabled this feature via the menu item {{ site.view_errors }} or the `F9` function key or the related toolbar icon] -![](../assets/images/pink_measures.png) +![](../../../assets/images/pink_measures.png) -Even though the rhythm is defined at _measure stack_ level +Even though the rhythm is defined at the _measure stack_ level (denoted by the system-high red rectangle in the picture above), -abnormal rhythm is displayed down to _measure_ level +abnormal rhythm is displayed down to the _measure_ level (the part-high rectangle with pink background). The measure background is defined: @@ -47,8 +46,8 @@ The measure background is defined: A measure is detected as _abnormal_ -- and thus displayed in pink -- if, for at least one of its voices: -- Voice **starting time cannot be determined**, or -- Voice **ending time exceeds measure expected duration** +- The voice **starting time cannot be determined**, or +- The voice **ending time exceeds the measure expected duration** -- as defined by the current time signature Note that, conversely, a measure not detected as abnormal @@ -58,15 +57,19 @@ We'll see examples of these cases that today only the human reader can detect an ## Colorized voices -![](../assets/images/voice_color_check.png) +![](../../../assets/images/voice_color_check.png) The interest in choosing to colorize voices -(see [Voice colors](../main/voice_colors.md#voice-colors)) +(see [Voice colors](../../../tutorials/main_window/voice_colors.md#voice-colors)) is to visually check the content of every voice. In the example above, voice 6 which appears in the bottom right corner of the measure is really suspicious (although the measure is not flagged as _abnormal_). +## Jumbo mode + + + ## Chords IDs By default, chord IDs are not displayed in sheet view because they look too invasive. @@ -75,7 +78,7 @@ To set them on, we use the pull-down menu {{ site.view_chords }}. This gives the new picture below, where it is clear that we could merge chord 3963 and chord 3964 into a single chord: -![](../assets/images/voice_color_check_ids.png) +![](../../../assets/images/voice_color_check_ids.png) ## Measure strip @@ -84,7 +87,7 @@ all voices for the measure at hand. For example, let's focus on the measure below: -![](../assets/images/chord_id_check.png) +![](../../../assets/images/chord_id_check.png) `≡ Measure #N | Dump stack voices` prints a strip for the whole system-high measure stack. `≡ Measure #N | Dump measure voices` prints a strip for just the part-high measure. @@ -94,7 +97,7 @@ system, to allow to focus on one part at a time. Here is a measure strip at stack level (with part P1 and part P2): -![](../assets/images/strip_check.png) +![](../../../assets/images/strip_check.png) Strip legend: - The strip top line displays the time offset of each slot within the measure. @@ -117,9 +120,9 @@ Here again there is nothing, from the OMR engine point of view, to flag this mea ## Time slots -Time slots are not visible in ![](../assets/images/ModePhysical.png) physical mode. -They are displayed in ![](../assets/images/ModeCombined.png) combined and -![](../assets/images/ModeLogical.png) logical modes +Time slots are not visible in ![](../../../assets/images/ModePhysical.png) physical mode. +They are displayed in ![](../../../assets/images/ModeCombined.png) combined and +![](../../../assets/images/ModeLogical.png) logical modes -- provided that the {{ site.view_annotations }} flag is on. A time slot is displayed as a thin vertical gray line, with its time offset value at the top. @@ -129,7 +132,7 @@ Here below, we can see 4 slots with respective offsets: | ---: | :---: | :---: | :---: | :---: | | Time Offset: | 0 | 1/4 | 1/2 | 3/4 | -![](../assets/images/slot_check.png) +![](../../../assets/images/slot_check.png) In this picture, we can notice that slot #3 at offset 1/2 looks strange, with no chord aligned with it. @@ -148,7 +151,7 @@ slot#3 start= 1/2 [V1 Ch#3979 s:7 Dur= 1/4, V5 Ch#4010 s:9 Dur= 1/2] These outputs are not very readable, but they say that this slot contains chords 3979 and 4010. Which looks strange. -A more readable output is available, but only in ![](../assets/images/ModeCombined.png) +A more readable output is available, but only in ![](../../../assets/images/ModeCombined.png) combined mode. We simply press the right mouse button and move it near a time slot, while staying vertically within part stave(s). @@ -156,7 +159,7 @@ This highlights both the designated slot and the slot-related chords as in the p | Correct slot #1 at offset 0 | | Abnormal slot #3 at offset 1/2 | | :---: | --- | :---: | -|![](../assets/images/slot_content_check.png)| |![](../assets/images/slot_content_error.png)| +|![](../../../assets/images/slot_content_check.png)| |![](../../../assets/images/slot_content_error.png)| We can immediately see that slot at offset 1/2 wrongly contains chords 4010 and 3979. diff --git a/docs/_pages/ui_foundations/principles.md b/docs/_pages/guides/ui/ui_foundations/principles.md similarity index 71% rename from docs/_pages/ui_foundations/principles.md rename to docs/_pages/guides/ui/ui_foundations/principles.md index 08327d10f..1613ae9d6 100644 --- a/docs/_pages/ui_foundations/principles.md +++ b/docs/_pages/guides/ui/ui_foundations/principles.md @@ -1,8 +1,7 @@ --- layout: default title: Principles -grand_parent: User Editing -parent: UI Foundations +parent: UI foundations nav_order: 1 --- @@ -19,11 +18,11 @@ interactive user. Some pixels may have been gathered into **Glyph** instances by the OMR engine, but this "_segmentation_", as it is called, is not always relevant, especially on poor quality images. -The entities that really matter for the final music content are the **Inter** (interpretation) -instances and the **Relation** instances that formalize a relationship between two Inter instances, +The entities that really matter for the final music content are the **`Inter`** (interpretation) +instances and the **Relation** instances that formalize a relationship between two `Inter` instances, resulting in the **SIG** (Symbol Interpretation Graph) of each system. If you are still unfamiliar with these notions of pixel / glyph / inter / relation / sig, please -have a look at the dedicated [Main Entities](../main/entities.md) section. +have a look at the dedicated [Main concepts](../../../tutorials/main_concepts/README.md) section. We can think of Audiveris OMR as a process that takes an image as input and produces as output a structured collection of music symbols. @@ -31,7 +30,7 @@ as output a structured collection of music symbols. * The OMR _engine_ is one actor, which moves forward from step to step, creating a bunch of entities. * The OMR _user_ is another actor, who can interactively modify some entities, -and decide how to move the engine. +and decide how to drive the engine. The resulting objects are divided into two categories: @@ -48,20 +47,20 @@ sheet musical content, organized in a hierarchical structure of containers: Since the 5.2 release, the user can partly modify this hierarchy, by splitting and merging systems, parts and measures. 2. **Inters**. -They represent candidate interpretations, formalized by `Inter` instances, handled -within each system by a graph (`SIG`) of Inter vertices linked by Relation edges. +They represent candidate interpretations, formalized by ``Inter`` instances, handled +within each system by a graph (`SIG`) of `Inter` vertices linked by `Relation` edges. Within each system SIG, it's the struggle for life, since only the strongest inters survive in the end. -There is no structure within the Inter instances of a SIG, just `Relation` instances possibly set -between a pair of Inter instances. -Since the 5.2 release, all these Inter and Relation instances can be modified interactively. +There is no structure within the `Inter` instances of a SIG, just `Relation` instances possibly set +between a pair of `Inter` instances. +Since the 5.2 release, all these `Inter` and `Relation` instances can be modified interactively. - Inter objects are everything except the static containers mentioned above: + `Inter` objects are everything except the static containers mentioned above: - Barline, ledger, clef, key signature, time signature, chord, head, alteration, - augmentation dot, stem, beam, rest, flag, slur, sentence, word, etc... are examples of Inters. - - An _InterEnsemble_ is an Inter composed of other Inter instances. + augmentation dot, stem, beam, rest, flag, slur, sentence, word, etc... all are examples of `Inter` 's. + - An _InterEnsemble_ is an `Inter` composed of other `Inter` instances. This composition is formalized by a `Containment` relation between the ensemble inter and - each of the contained Inter instances. + each of the contained `Inter` instances. These ensembles can be: - A Chord which contains one or several note heads or one rest. - A Sentence which contains words. @@ -73,9 +72,9 @@ Since the 5.2 release, all these Inter and Relation instances can be modified in Measures are hybrid, since they are not Inters but depend on barlines which are Inters. -Beside Inter and Relation entities, glyphs, which are just sets of foreground pixels, can be used +Beside `Inter` and `Relation` entities, the glyphs, which are just sets of foreground pixels, can be used to create new Inters. -Hence, Glyph instances are also entities that the user can select and transcribe to Inter entities. +Hence, Glyph instances are also entities that the user can select and transcribe to `Inter` entities. The Audiveris editor has been designed to work on the SIG data model, -that is essentially to play directly with Inter and Relation instances. +that is essentially to play directly with `Inter` and `Relation` instances. diff --git a/docs/_pages/ui_foundations/selection.md b/docs/_pages/guides/ui/ui_foundations/selection.md similarity index 68% rename from docs/_pages/ui_foundations/selection.md rename to docs/_pages/guides/ui/ui_foundations/selection.md index b680e9016..1bde94afa 100644 --- a/docs/_pages/ui_foundations/selection.md +++ b/docs/_pages/guides/ui/ui_foundations/selection.md @@ -1,17 +1,16 @@ --- layout: default title: Selection -grand_parent: User Editing -parent: UI Foundations +parent: UI foundations nav_order: 2 --- # Selection {: .no_toc } +--- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -25,7 +24,7 @@ The length of each segment does not vary with the zoom ratio, but the segment th | Zoom: 1 | Zoom: 8| | --- | --- | -|![](../assets/images/current_location.png)|![](../assets/images/current_location_z8.png)| +|![](../../../assets/images/current_location.png)|![](../../../assets/images/current_location_z8.png)| To define the current **point**, we either: * Press down the left or the right mouse button at the desired location. @@ -38,7 +37,7 @@ and keep the `SHIFT` key pressed while dragging the mouse. * Or, if the Pixel-Board is displayed, type numeric values in the X, Y, Width and Height fields. To precisely **shift** the current location: -* While keeping the `ALT` key pressed (`OPTION` key on MacOS), we use one of the 4 arrow keys +* While keeping the `ALT` key pressed (`OPTION` key on macOS), we use one of the 4 arrow keys to move the location (point or rectangle) one pixel at a time. ## Entity selection @@ -46,9 +45,9 @@ to move the location (point or rectangle) one pixel at a time. ### Selection modes There are 3 selections modes available: -1. ![](../assets/images/font_bitmap.png) _glyph+inter_ based (the default) -2. ![](../assets/images/font_type.png) _inter_-only based -3. ![](../assets/images/kjumpingcube.png) _section_-only based. +1. ![](../../../assets/images/font_bitmap.png) _glyph+inter_ based (the default) +2. ![](../../../assets/images/font_type.png) _inter_-only based +3. ![](../../../assets/images/kjumpingcube.png) _section_-only based. To switch from one mode to another, we use the toggle menu item {{ site.view_selections }}, click on the related toolbar icon or press the `F11` function key. @@ -59,28 +58,28 @@ The mouse-based selection works as expected, pointing to glyph entities, inter e section entities, according to the current selection mode. * **Pointing to an entity**: - A _left_-button mouse click grabs the entities that contain the + - A _left_-button mouse click grabs the entities that contain the location point. If several entities are grabbed, only one is chosen to start the new selection. - For glyphs, it's the smallest one. - For inters, it's the member before the ensemble. - A _right_-button mouse click opens the pop-up menu: - - with just the pointed entity if the previous selection was empty, - - with the previous selection if the previous selection was not empty. + - For glyphs, it's the smallest one. + - For inters, it's the member before the ensemble. + - A _right_-button mouse click opens the pop-up menu: + - with just the pointed entity if the previous selection was empty, + - with the previous selection if the previous selection was not empty. * **Using a lasso**: Pressing the `SHIFT` key while dragging with the mouse left-button defines a rectangular area. - All entities fully contained in this area start a new selection. + All entities *fully contained* in this area start a new selection. -* **Adding an entity**: A left click on an entity while pressing the `Ctrl` key (`Command` key for MacOS) +* **Adding an entity**: A left click on an entity while pressing the `Ctrl` key (`Command` key for macOS) adds this entity to the current selection, whether the selection was done via point or lasso. * **Naming an entity**: Entering the integer ID of a glyph in the Glyph-Board spinner or the ID - of an Inter in the Inter-Board spinner selects this entity. + of an `Inter` in the `Inter`-Board spinner selects this entity. - **Pointing outside of any entity**: -A left click clears both glyphs and inters selections. -A right click opens the pop-up menu (with the entities selected so far). + - A left click clears both glyphs and inters selections. + - A right click opens the pop-up menu (with the entities selected so far). * **Choosing an entity in the selection list**: The contextual pop-up menu, when entities have been selected, offers in the `Glyphs` and `Inters` sub-menus the list of selected entities. @@ -90,27 +89,27 @@ A right click opens the pop-up menu (with the entities selected so far). selected inter displays a sub-menu with all the relations the inter is part of. Selecting a relation offers to dump or delete this relation. -* **Double-click**: A double-click with the left mouse button on an Inter (not a Glyph) selects that - Inter and puts it in `Editing mode` (see [Inter editing](../ui_tools/edit_inter.md)). +* **Double-click**: A double-click with the left mouse button on an `Inter` (not a Glyph) selects that + `Inter` and puts it in `Editing mode` (see [`Inter` editing](../ui_tools/edit_inter.md)). A selected inter may display links to its related inter entities. The links appear as short straight lines in light green color --- together with the relation name if the zoom is high enough --. -The images below depict: +-- together with the relation name if the zoom is high enough. +The images below depict: 1. A tuplet glyph linked to its 3 embraced chords -2. A note head connected to a stem and a slur +2. A note head connected to a stem and to a slur 3. Lyrics text with links to the related chords | Tuplet | Head | Lyrics | | --- | --- | --- | -| ![](../assets/images/link_tuplet.png) | ![](../assets/images/link_stem_slur.png) | ![](../assets/images/link_lyrics.png) | +| ![](../../../assets/images/link_tuplet.png) | ![](../../../assets/images/link_stem_slur.png) | ![](../../../assets/images/link_lyrics.png) | ### Multi-selection A left-click in an entity area selects this entity (and deselects the entity previously selected if any). -![](../assets/images/multi_select.png) +![](../../../assets/images/multi_select.png) To select several entities: @@ -124,36 +123,36 @@ This can especially be useful when having selected several items using the "lass de-select items that are not wanted. A red rectangle always shows our selection frame. -When in ![](../assets/images/font_bitmap.png) _glyph+inter_ mode, an additional black rectangle -shows the bounding box of a compound glyph built from all selected glyphs. +When in ![](../../../assets/images/font_bitmap.png) _glyph+inter_ mode, an additional black rectangle +shows the bounding box of a compound glyph built from all the selected glyphs. Moreover, an entity changes color when it gets selected (a glyph turns red, an inter turns to nearly-reverse color, a section turns white). -### Member vs Ensemble +### Member vs. ensemble Selecting an entity by pointing at it can be ambiguous. This can be the case when two or more **Glyphs** overlap each other. When we point at an overlapping region, the software will pick up only the smallest glyph. -This is by definition always the case when pointing at an **Inter** which is a member of an -**Inter ensemble**, for example a note and its containing chord. -In this case, the software will choose the member over the ensemble, knowing that you can later -switch from selected member to selected ensemble in the Inter-board +This is by definition always the case when pointing at an **`Inter`** which is a member of an +**`Inter` ensemble**, for example a note and its containing chord. +In this case, the software will choose the member over the ensemble, knowing that we can later +switch from selected member to selected ensemble in the `Inter`-board (and in the Inters pop-up menu). For example: -![](../assets/images/member_selected.png) +![](../../../assets/images/member_selected.png) Here, we have pointed on a note head which is part of a head chord. We can note the (member) head inter is selected over the (ensemble) chord inter, the involved "_HeadStem_" -relation is visible between head and stem, the Inter-board focuses on the head inter, +relation is visible between head and stem, the `Inter`-board focuses on the head inter, with the `To Ensemble` button enabled. -![](../assets/images/ensemble_selected.png) +![](../../../assets/images/ensemble_selected.png) -Here, we have pressed `To Ensemble` button, and the focus is now on the head chord, +Here, we have pressed the `To Ensemble` button, and the focus is now on the head chord, with the "_ChordSyllable_" relation to the lyric item "Ver" below. ## Container selection @@ -165,7 +164,7 @@ This pop-up displays contextual information -- such as the selected glyphs, inters, etc, if any -- together with the containers being pointed at. -![](../assets/images/containers_popup.png) +![](../../../assets/images/containers_popup.png) For example, the pop-up above allows to access -- beside chords, inters and glyphs -- the containers related to current mouse location: diff --git a/docs/_pages/ui_tools/README.md b/docs/_pages/guides/ui/ui_tools/README.md similarity index 85% rename from docs/_pages/ui_tools/README.md rename to docs/_pages/guides/ui/ui_tools/README.md index 3b842cb81..057c59c56 100644 --- a/docs/_pages/ui_tools/README.md +++ b/docs/_pages/guides/ui/ui_tools/README.md @@ -1,11 +1,19 @@ --- layout: default -title: UI Tools -parent: User Editing +title: UI tools +parent: User editing nav_order: 2 has_children: true --- -# UI Tools +# UI tools +{: .no_toc } + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- ## Interaction with the OMR engine @@ -49,15 +57,15 @@ task history. The ``Undo`` command cancels the last task sequence (whether it was a do or a redo) with all its consequences. -* We press the **Undo** button ![](../assets/images/undo.png) on the tool bar, -* Or type `Ctrl+Z` (`Command+Z` for MacOS) +* We press the **Undo** button ![](../../../assets/images/undo.png) on the tool bar, +* Or type `Ctrl+Z` (`Command+Z` for macOS) ### Redo The ``Redo`` command re-performs the last un-done task sequence. -* We press the **Redo** button ![](../assets/images/redo.png) on the tool bar, -* Or type `Ctrl+Shift+Z` (`Command+Shift+Z` for MacOS). +* We press the **Redo** button ![](../../../assets/images/redo.png) on the tool bar, +* Or type `Ctrl+Shift+Z` (`Command+Shift+Z` for macOS). ## When to interact? @@ -73,11 +81,11 @@ we must be careful! This tells us that beam-related data could not reach the quorum needed to infer a reliable thickness value. So, let's measure the actual beam thickness on our own (using the Pixel Board) and modify -the beam scale if needed (see the [Sheet scale](../main/sheet_scale.md) section). +the beam scale if needed (see the [Sheet scale](../../main/sheet_scale.md) section). * **GRID** step is where staff lines, then staves and systems are detected. Hence, this is the most convenient point to interact if we need to manually modify lines -and staves (see the [Staff editing](./staff_editor.md) section). +and staves (see the [Staff editing](./staff_editing.md) section). * **REDUCTION** step is where all candidate note heads are combined with candidate stems and beams and then reduced to come up with reliable notes @@ -86,8 +94,6 @@ It is a key moment in the engine pipeline, because these "reliable" notes will n question by the following steps. So much so that their underlying pixels will not be presented to the glyph classifier during the `SYMBOLS` step. -This includes a "dilation" margin ring around each note head, something that the user cannot select -as a glyph in any subsequent selection. So, if some of these notes are false positives, then it's much more efficient to correct them immediately, at the end of the REDUCTION step. diff --git a/docs/_pages/ui_tools/add_inter.md b/docs/_pages/guides/ui/ui_tools/add_inter.md similarity index 68% rename from docs/_pages/ui_tools/add_inter.md rename to docs/_pages/guides/ui/ui_tools/add_inter.md index f781b72b8..9c7766b7a 100644 --- a/docs/_pages/ui_tools/add_inter.md +++ b/docs/_pages/guides/ui/ui_tools/add_inter.md @@ -1,22 +1,21 @@ --- layout: default -title: Inter Addition -grand_parent: User Editing -parent: UI Tools +title: Inter addition +parent: UI tools nav_order: 1 --- -# Inter Addition +# `Inter` addition {: .no_toc } -In the Audiveris data model, an Inter instance represents an interpretation, that is a candidate +In the Audiveris data model, an `Inter` instance represents an interpretation, that is a candidate likely to become a musical symbol in the end. -A manually created Inter is flagged as `MANUAL` and cannot be called into question by the +A manually created `Inter` is flagged as `MANUAL` and cannot be called into question by the OMR engine, it is considered as certain. -We can manually create an Inter instance from a selected glyph, by "assigning" this glyph the +We can manually create an `Inter` instance from a selected glyph, by "assigning" this glyph the desired shape. -If we have no suitable glyph available, we can still create an Inter from nothing, via a simple +If we have no suitable glyph available, we can still create an `Inter` from nothing, via a simple drag & drop from the shape palette. In both cases, we may have to specify the target staff for the created inter if the context is not @@ -24,46 +23,48 @@ clear enough for the engine. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- -## Inter from underlying Glyph +## `Inter` from the underlying glyph -Inter creation from a glyph is the only case where a glyph is used in Audiveris manual editing. +`Inter` creation from a glyph is the only case where a glyph is used in Audiveris manual editing. The set of black pixels of one or several selected glyphs can be transcribed as one inter, by specifying the target inter shape. The precise location and bounds of the new inter are defined by the underlying set of pixels. {: .note } -This method of selecting a glyph to "assign" an Inter to it, requires of course that a **suitable +This method of selecting a glyph to "assign" an `Inter` to it, requires of course that a **suitable glyph** be available. In we can't find any such glyph, we'll have to drag & drop the desired shape from the shape palette instead. -Also, knowing the target location is not always sufficient to detect the Inter **target staff**. +Also, knowing the target location is not always sufficient to detect the `Inter` **target staff**. Several heuristics are used by the software, but if they fail we will be prompted for the target staff: -![](../assets/images/staff_selection.png) +![](../../../assets/images/staff_selection.png) The target shape can be specified via different means, as follows. ### Via the glyph classifier -![](../assets/images/glyph_classifier.png) +![](../../../assets/images/glyph_classifier.png) This classifier automatically operates on the current glyph, be it the single selected glyph or a transient glyph built on-the-fly from a multi-glyph selection. -Chances are we'll find our desired shape in this top 5. If so, we just press the shape button. +Chances are we'll find our desired shape in this "top 5". +If so: +- We can just press the shape *button* with the mouse left button +- Or, on the keyboard, we can type the *number* (generally in 1..5 range) +corresponding to the rank of our desired shape within the top 5. {: .note } -In order to use this method, the target shape must be handled by the glyph classifier -(based on a neural-network). +In order to use this classifier method, the target shape must be handled by the glyph classifier. This is **NOT** the case for the following shapes: - **Lines** (staff lines, ledgers, barlines, stems, slurs, endings) use ad-hoc methods, - **Beams** use image morphological closing, @@ -75,8 +76,9 @@ The top 5 is just a raw output of the glyph classifier, which runs on the glyph that is ***without taking the neighborhood into account***. This means that: - a dot (augmentation, staccato, ...) will be at best recognized as `DOT_set`, - - and a half or whole rest as `HW_REST_set`. -For these two cases -- and only for them -- the glyph classifier is not precise enough. + - a half or whole rest as `HW_REST_set`, + - a grace note or an 8th beat unit as `EIGHTH_set` . +For these three cases -- and only for them -- the glyph classifier is not precise enough. We'll have to explicitly select a more specific target shape, via the glyph pop-up menu or via the shape palette. @@ -85,7 +87,7 @@ or via the shape palette. Once a glyph has been selected, we use a mouse right click to access the {{ site.popup_glyphs }} sheet contextual menu. -![](../assets/images/context_glyph.png) +![](../../../assets/images/context_glyph.png) Then we navigate through shape sets to our precise target shape. @@ -94,11 +96,11 @@ Then we navigate through shape sets to our precise target shape. The shape palette (see next section) allows to assign a shape to the selected glyph. This is done by a double-click on the desired shape in the palette. -## The Shape Palette +## The shape palette The palette offers the ability to choose the desired shape for a selected glyph. -And even if no precise glyph can be selected, we can directly drag a "ghost" Inter +And even if no precise glyph can be selected, we can directly drag a "ghost" `Inter` from the shape palette, located on the right side of the sheet view, and drop this ghost at the desired target location. @@ -106,36 +108,36 @@ The starting aspect of the shape palette is a catalog of all shape sets. It exhibits a dark-gray background, with one representative button for each shape set. Nothing can be dragged from this catalog, we must first select a shape set: -![](../assets/images/shape_board.png) +![](../../../assets/images/shape_board.png) ### Entering a shape set Pressing a shape set button replaces the catalog view by a specific palette dedicated to the selected shape set. For example, pressing on the ``ClefsAndShifts`` set button gives: -![](../assets/images/shapes_sub.png) +![](../../../assets/images/ClefsAndShifts_shapes.png) Within a set, a shape can be: * Assigned (by a left double-click) if a glyph has been selected, * Or dragged and dropped to a target location. -![](../assets/images/drag-n-drop.png) +![](../../../assets/images/drag-n-drop.png) -### Selecting target staff -While we are dragging a shape, we have the freedom to hover where we like. -The last staff we have been hovering over is selected as our current target staff. +### Selecting the target staff +While we are dragging a shape, we have the freedom to move it wherever we want. +The last staff we hovered over is selected as the current target staff. Before we "select" a staff, the dragged shape "ghost" is displayed isolated in dark-gray. Once a staff has been "selected", a thin vertical red segment goes from the shape center to -the target staff middle line, the shape turns into the Inter selected color, additional objects +the target staff middle line, the shape turns into the `Inter` selected color, additional objects can appear -- such as intermediate ledgers or potential relations with nearby inters --, it may get snapped according to staff lines, etc. | before staff selection | after staff selection | | --- | --- | -| ![](../assets/images/without_staff.png) | ![](../assets/images/with_staff.png) | +| ![](../../../assets/images/without_staff.png) | ![](../../../assets/images/with_staff.png) | We can drop the shape only when a staff target has been selected. If not, the drag & drop action is abandoned. @@ -144,7 +146,7 @@ If not, the drag & drop action is abandoned. Note the ``HeadsAndDot`` set now contains four new shapes located at the end. -![](../assets/images/compound_notes.png) +![](../../../assets/images/compound_notes.png) These are quarter notes and half notes, with stem either up or down. There are called "compound" because they combine two shapes: a head shape and a stem shape. @@ -154,7 +156,7 @@ or ledger and the stem can still be automatically linked to beams nearby. {: .note } Once dropped, such a compound shape is replaced by two separate Inters -(head Inter and stem Inter) linked by a HeadStemRelation. +(head `Inter` and stem `Inter`) linked by a HeadStemRelation. We can then later edit each "part" separately, for example to modify the stem length. And we can add flags to the stem. @@ -163,7 +165,7 @@ To leave the specific set palette and go back to the catalog view, we can: * Click on the "triangle-up" sign located on the left side of the set palette, - ![](../assets/images/family_exit.png) + ![](../../../assets/images/family_exit.png) * Or press the `ESC` key on the keyboard. ## Shape cache @@ -171,7 +173,7 @@ To leave the specific set palette and go back to the catalog view, we can: We can notice, appearing on a line above the shape palette, the list of the most recent shape buttons we have used so far. -![](../assets/images/shape_cache.png) +![](../../../assets/images/shape_cache.png) These _cached_ buttons are meant for further direct access, avoiding the navigation to their containing sets. @@ -187,33 +189,33 @@ temporarily to the "_Repetitive Input_" mode. We click on the toolbar icon or select the menu item {{ site.sheet_repetitive }} or use the shortcut `Ctrl+Shift+N` and this mode is now set on. -![](../assets/images/repetitive_input.png) +![](../../../assets/images/repetitive_input.png) -From that point on, pressing with the left-button anywhere on the sheet will add a new Inter +From that point on, pressing with the left-button anywhere on the sheet will add a new `Inter` (with the latest shape used) at the designated location. -We can shift the Inter location precisely, then release the mouse when we are satisfied. +We can shift the `Inter` location precisely, then release the mouse when we are satisfied. If we press the left-button again, yet another instance will be created, and so on. That's the rule, so let's mind our mouse press actions! -The latest Inter inserted is left in "Inter editing mode" with its editing handle(s) displayed. -We can press the `Enter` key to finish this edit, -or click somewhere else to create another Inter. +The latest ``Inter`` inserted is left in "`Inter` editing mode" with its editing handle(s) displayed. +We can press the `ENTER` key to finish this edit, +or click somewhere else to create another ``Inter``. This repetitive mode is meant for simple shapes -- like a head, a rest, an accidental, etc. -- that don't require any further resizing. -But what if we really need to resize the inserted Inter? +But what if we really need to resize the inserted `Inter`? We simply set the repetitive mode off, so that we can press and drag the inter editing handles. -Then we set the repetitive mode on again if so desired. +Then, we can set the repetitive mode on again if so desired. To exit this rather specific mode, we toggle the mode (via the toolbar icon, the menu item or the shortcut). -## Relations with other inters +## Relations with other ``Inter``'s -Key relation(s) with the nearby Inter(s), if any, will be updated automatically as we create --- or later edit -- the Inter, but only as long as the required geometrical relationships can apply +Key relation(s) with the nearby `Inter`(s), if any, will be updated automatically as we create +-- or later edit -- the `Inter`, but only as long as the required geometrical relationships can apply (for example, as long as an accidental is sufficiently close to a note head on its right side). If the relation constraints are not met, we will have to set the relation manually afterwards. @@ -232,13 +234,12 @@ They all work with a sequence of 2 strokes: Example: Let's press `h` (heads) then `b` (black) and we get the `HeadsAndDot` set content displayed and the black head shape in the cache. -![](../assets/images/short-cut-head-black.png) +![](../../../assets/images/short-cut-head-black.png) If we had a glyph selected beforehand, this glyph is assigned the selected shape. If not, no glyph gets assigned, but the shape cache now presents our selected shape in first position, ready for further use (via double-click, drag & drop or repetitive input). -*** ### Shortcuts table @@ -251,5 +252,6 @@ Only sets and shapes that are used rather often are supported. |**d** |dynamics | **p** (piano), **m** (mezzoforte), **f** (forte) |**f** |flags | **u** (up), **d** (down) |**h** |heads | **w** (whole), **v** (void), **b** (black), **d** (augmentation dot), **h** (half-note), **q** (quarter-note) +|**p** |physicals | **a** (slur above), **b** (slur below), **s** (stem) |**r** |rests | **1**, **2**, **4**, **8** (full, half, quarter, eighth) -|**p** |physicals | **l** (lyrics), **t** (text), **a** (slur above), **b** (slur below), **s** (stem) +|**t** |texts | **l** (lyrics), **t** (text), **m** (metronome) diff --git a/docs/_pages/ui_tools/add_relation.md b/docs/_pages/guides/ui/ui_tools/add_relation.md similarity index 75% rename from docs/_pages/ui_tools/add_relation.md rename to docs/_pages/guides/ui/ui_tools/add_relation.md index 8f8716fae..bbea5d7f8 100644 --- a/docs/_pages/ui_tools/add_relation.md +++ b/docs/_pages/guides/ui/ui_tools/add_relation.md @@ -1,39 +1,37 @@ --- layout: default -title: Relation Addition -grand_parent: User Editing -parent: UI Tools +title: Relation addition +parent: UI tools nav_order: 4 --- -# Relation Addition +# Relation addition {: .no_toc } --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- -Most Inter instances have relations with other Inter instances. +Most `Inter` instances have relations with other `Inter` instances. For example the note head below exhibits 2 relations: - a _SlurHead_ relation between slur and note head, - a _HeadStem_ relation between note head and stem. -![](../assets/images/note_with_relations.png) +![](../../../assets/images/note_with_relations.png) -We can visually check the relations when we select an Inter. +We can visually check the relations when we select an `Inter`. The name of each relation is also displayed, provided that the current zoom is high enough (>=2). -## Mandatory vs non-mandatory relations +## Mandatory vs. non-mandatory relations -Depending on the Inter class, an Inter instance may need a relation with another Inter instance. +Depending on the `Inter` class, an `Inter` instance may need a relation with another `Inter` instance. -If an Inter instance lacks a mandatory relation, it should somehow be removed before the end of +If an `Inter` instance lacks a mandatory relation, it should somehow be removed before the end of the transcription process. -This is the case when created as a candidate by the OMR engine but, if the Inter at hand was +This is the case when created as a candidate by the OMR engine but, if the `Inter` at hand was manually added, it can't be automatically removed by the engine. It is simply flagged as "_abnormal_" and shown in red to call the user's attention on it. @@ -42,7 +40,7 @@ In the example below, a _SlurHead_ relation between slur and note head is mandat | non-linked slur | linked slur | | --- | --- | -| ![](../assets/images/non_linked_slur.png) | ![](../assets/images/linked_slur.png) | +| ![](../../../assets/images/non_linked_slur.png) | ![](../../../assets/images/linked_slur.png) | A missing relation can happen when the geometry rules are not matched, perhaps because the gap is a bit too wide between the slur and any note head. @@ -71,9 +69,9 @@ Assuming the slur is not linked to the note head, we need to insert the relation To do so, we can point and drag from the slur to the note head (a thin black vector will appear as we move the mouse, see picture below) -![](../assets/images/linking_slur.png) +![](../../../assets/images/linking_slur.png) -Then we release the mouse when reaching the targeted head. +Then, we release the mouse when reaching the targeted head. Audiveris will search among all the inters grabbed at the first and last locations, find the missing relation if any between those two collections of inters and set the proper relation. diff --git a/docs/_pages/ui_tools/chords.md b/docs/_pages/guides/ui/ui_tools/chords.md similarity index 79% rename from docs/_pages/ui_tools/chords.md rename to docs/_pages/guides/ui/ui_tools/chords.md index a7a13415e..73c7b3158 100644 --- a/docs/_pages/ui_tools/chords.md +++ b/docs/_pages/guides/ui/ui_tools/chords.md @@ -1,8 +1,7 @@ --- layout: default title: Chords -grand_parent: User Editing -parent: UI Tools +parent: UI tools nav_order: 12 --- # Chords @@ -17,13 +16,12 @@ rather than its containing chord (this is the rule known as "_member over ensemb However, by selecting one or several notes, we can indirectly select and act on these chords. -This is made possible via the usual pop-up menu which can provides a specific `Chords...` +This is made possible via the usual pop-up menu which can provide a specific `Chords...` sub-menu, whose content tightly depends on the chords configuration. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -33,7 +31,7 @@ Table of contents Below, we have selected two notes as indicated by the arrows: one note head and one rest, before opening the {{ site.popup_chords }} contextual menu: -![](../assets/images/chords_selection.png) +![](../../../assets/images/chords_selection.png) Notice that the global bounding box (gray rectangle) encompasses the bounds of both chords. @@ -44,12 +42,12 @@ This is meant to allow a visual check of the selected chords: | all chords | first chord | second chord | | --- | --- | --- | -| ![](../assets/images/chords_both.png) | ![](../assets/images/chords_one.png) | ![](../assets/images/chords_two.png) | +| ![](../../../assets/images/chords_both.png) | ![](../../../assets/images/chords_one.png) | ![](../../../assets/images/chords_two.png) | To ease manual dealing with chords, we can make each chord ID visible as in the picture below (via the pull-down menu {{ site.view_chords }}): -![](../assets/images/chord_ids.png) +![](../../../assets/images/chord_ids.png) {: .note} The example Chords menu above shows only a partial list of possible chords actions, @@ -65,13 +63,13 @@ The gathering of note heads into chords may need some user correction. | One chord? | Two chords? | | --- | --- | -| ![](../assets/images/chord_split_1.png) | ![](../assets/images/chord_split_2.png) | +| ![](../../../assets/images/chord_split_1.png) | ![](../../../assets/images/chord_split_2.png) | The OMR engine may have considered this as just one chord with a long stem, whereas we find these are in fact two separate chords, one above the other. In that case, select this chord and use the ``Split`` command. -![](../assets/images/chord_split.png) +![](../../../assets/images/chord_split.png) ### Merge @@ -82,7 +80,7 @@ In the specific case of whole notes, the ``Merge`` command is often needed. Because there is no stem involved, the engine has no clear heuristic [^whole_chord] to gather whole heads into one chord. -![](../assets/images/chord_merge.png) +![](../../../assets/images/chord_merge.png) ## Voice @@ -97,7 +95,7 @@ The purpose of these voice actions is to guide the engine in voice building. ### Next in Voice -![](../assets/images/next_in_voice.png) +![](../../../assets/images/next_in_voice.png) The `Next in Voice` command operates on a horizontal sequence of 2 chords, say chord A and chord B, by establishing a relation from A to B, @@ -108,11 +106,11 @@ stating two things: In other words, chord B time slot should **immediately** follow chord A time slot. So we have a double dynamic propagation rule: on voice and on time. -This is the reason why ``Next in Voice`` should be preferred whenever possible over `Same Voice` command. +This is the reason why ``Next in Voice`` is now preferred to the old `Same Voice` command. Here is the result: -![](../assets/images/next_in_voice_after.png) +![](../../../assets/images/next_in_voice_after.png) We can always **undo** such an action, as any other UI action described here, via the `Sheet → Undo` or `Ctrl+Z` standard commands. @@ -123,16 +121,8 @@ Cancelling this action removes the relation (and thus the related guidance). ### Same Voice -`Same Voice` command is weaker than `Next in Voice` command. - -It states only that the two selected chords should belong to the same voice. - -It provides no information about related time values. -This is the reason why the `Next in Voice` relation should be preferred whenever possible. - -Note that `Same Voice` (or `Next in Voice`) can be used in the context of rest chords interleaved -between beam head chords, to "push" these rests into the beam area. -And conversely, `Separate Voice` can be used to "pull" these rests out of the beam area. +Since 5.4 release, the old `Same Voice` command has been deprecated in favor of +the more efficient `Next in Voice` command. ### Separate Voices @@ -145,16 +135,16 @@ Note this is not exactly the reverse of the `Next in Voice` command ### Preferred Voice -Whereas the `Next in Voice`/`Same Voice" and "Separate Voices" commands operate on 2 chords, +Whereas the `Next in Voice`/`Same Voice` and `Separate Voices` commands operate on 2 chords, by establishing a **dynamic** computing rule from chord A to chord B, -the `Preferred Voice` command operates on the single chord at hand, by assigning this chord a **fixed** voice -numeric value. +the `Preferred Voice` command operates on the single chord at hand, +by assigning this chord a **fixed** voice numeric value. This feature is effective only on the _first chord_ in each measure voice. It can be useful only for the very first chord of a voice in a system: -- Because the A-B relations can take place only within the same system (SIG), there is no way to -establish a voice computing rule across systems. +- Because the A-B relations can take place only within the same system (SIG), +there is no way to establish a voice computing rule across systems. - Specifically, we may need a way to set the voice number of a chord at the start of the very first measure of a movement. @@ -173,7 +163,7 @@ time slot? ### Same Time Slot -![](../assets/images/same_slot.png) +![](../../../assets/images/same_slot.png) Here, we can see that time slots on the second staff of the part are not correctly assigned. This is because the whole note on the upper staff and the 8th note on the lower staff are too far apart diff --git a/docs/_pages/ui_tools/edit_inter.md b/docs/_pages/guides/ui/ui_tools/edit_inter.md similarity index 55% rename from docs/_pages/ui_tools/edit_inter.md rename to docs/_pages/guides/ui/ui_tools/edit_inter.md index 0ed28bec7..80840d651 100644 --- a/docs/_pages/ui_tools/edit_inter.md +++ b/docs/_pages/guides/ui/ui_tools/edit_inter.md @@ -1,46 +1,44 @@ --- layout: default -title: Inter Editing -grand_parent: User Editing -parent: UI Tools +title: Inter editing +parent: UI tools nav_order: 2 --- -# Inter Editing +# `Inter` editing {: .no_toc } -Since 5.2 release, any Inter -- whether it has been created by the OMR engine, +Since 5.2 release, any `Inter` -- whether it has been created by the OMR engine, manually created from a glyph or dragged & dropped from the shape palette -- can be edited in terms of precise location and size. -This is now the default general behavior, knowing that, depending on the Inter class at hand, +This is now the default general behavior, knowing that, depending on the `Inter` class at hand, our mileage may vary. -And an Inter being edited has a behavior identical to one being dragged & dropped, +And an `Inter` being edited has a behavior identical to one being dragged & dropped, in terms of dynamic relations evaluation and in terms of potential snapping to items nearby. --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- ## Entering editing mode -To start editing an Inter, we must first set it into `editing mode`: -- This is most conveniently done by a left double-click on the Inter. -- If the Inter is already selected, the InterBoard on the right displays information about it. - In this board, the `Edit` checkbox can be used to set the Inter into editing mode. +To start editing an `Inter`, we must first set it into `editing mode`: +- This is most conveniently done by a left double-click on the `Inter`. +- If the `Inter` is already selected, the InterBoard on the right displays information about it. + In this board, the `Edit` checkbox can be used to set the `Inter` into editing mode. - ![](../assets/images/interboard_edit.png) + ![](../../../assets/images/interboard_edit.png) -## Inter handles +## `Inter` handles -The Inter being edited now displays a set of one or several handles, depending on the -Inter class. +The `Inter` being edited now displays a set of one or several handles, depending on the +`Inter` class. -![](../assets/images/handles.png) +![](../../../assets/images/handles.png) Handles are displayed as small squares with rounded corners, filled in black for the current handle, in white for the others. Clicking on another handle makes it the new current handle. @@ -49,18 +47,18 @@ A handle is meant to be moved: - either by mouse dragging, - or by pressing the keyboard `ALT+ ←/↑/↓/→` keys in the desired direction. -Clicking on any location other than Inter handles makes the Inter exit its editing mode and +Clicking on any location other than `Inter` handles makes the `Inter` exit its editing mode and commits the editing. -![](../assets/images/rest_edited.png) +![](../../../assets/images/rest_edited.png) By default, just one handle is displayed as in the case of the 16th rest shown above, allowing the inter to be shifted in any direction. Since this inter exhibits only one handle, it offers no resizing capability -- not surprisingly, we cannot resize a 16th rest symbol. -![](../assets/images/beam_edited.png) +![](../../../assets/images/beam_edited.png) In the case of a beam, 3 handles are displayed. -The center handle shifts the beam in any direction. +The center handle shifts the whole beam in any direction. The left or the right handle moves just this beam edge in any direction, leaving the other edge in place. @@ -69,12 +67,12 @@ the related stems can come and go according to the possible geometric connection being moved or resized and the (static) stems. These are just two typical examples. -See the [Inter Editors](../ui_tools/inter_editors.md) reference section for a description -of all available Inter editors. +See the [`Inter` Editors](../../../reference/editors.md) reference section for a description +of all available `Inter` editors. ## Exiting editing mode Finally, to complete the on-going editing, we simply press the `Enter` key or -click on any location other than the Inter handles. +click on any location other than the `Inter` handles. It is always possible to undo (and redo) any manual editing. diff --git a/docs/_pages/ui_tools/key.md b/docs/_pages/guides/ui/ui_tools/key.md similarity index 75% rename from docs/_pages/ui_tools/key.md rename to docs/_pages/guides/ui/ui_tools/key.md index 76485e152..30ee1b1f2 100644 --- a/docs/_pages/ui_tools/key.md +++ b/docs/_pages/guides/ui/ui_tools/key.md @@ -1,8 +1,7 @@ --- layout: default -title: Key Signature -grand_parent: User Editing -parent: UI Tools +title: Key signature +parent: UI tools nav_order: 10 --- # Key Signature @@ -16,8 +15,7 @@ It must be built or modified **globally**: --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -25,15 +23,16 @@ Table of contents ## Flats and Sharps When dragging a "ghost" key from the shape palette, the ghost turns from dark-gray to green -when we enter a staff and, as usual, a thin red segment is drawn from the ghost center to the staff mid line. +when we enter a staff and, as usual, a thin red segment is drawn from the ghost center +to the staff mid line. -Moreover, the dragged key snaps immediately to the proper vertical position, according to the -effective clef at the point of insertion. +Moreover, the dragged key snaps immediately to the proper vertical position, +according to the effective clef at the point of insertion. For example, let's insert a 2-sharp key, into the measure that follows the measure with a 3-sharp key: -![](../assets/images/key_drop.png) +![](../../../assets/images/key_drop.png) Note the two sharp signs are located on F and C steps respectively, and they can move only horizontally until we release the mouse. @@ -50,9 +49,9 @@ However, we have the ability to manually insert a _cancel key_ -- i.e. an all-na To do so, we drag the 1-natural key from the shape palette and move it to the desired insertion point. -![](../assets/images/key_natural.png) +![](../../../assets/images/key_natural.png) -When we enter the target staff, the 1-natural ghost key with turn as usual from dark-gray to +When we enter the target staff, the 1-natural ghost key will turn as usual from dark-gray to green, but its configuration and position will be dynamically updated, to fit both: * The effective **clef**, * The effective **key** to be cancelled. @@ -62,10 +61,10 @@ with each natural sign located according to the corresponding sharp sign to canc | Staff-relative location| Cancel Key appearance| | --- | --- | -| Outside: | ![](../assets/images/key_natural_outside.png) | -| Inside: | ![](../assets/images/key_natural_inside.png) | +| Outside: | ![](../../../assets/images/key_natural_outside.png) | +| Inside: | ![](../../../assets/images/key_natural_inside.png) | -We notice that this works only when the ghost is located in a staff measure _different_ from +We can notice that this works only when the ghost is located in a staff measure _different_ from the staff measure that contains the key to be cancelled. This is so because there can't exist two keys in the same staff measure. diff --git a/docs/_pages/ui_tools/measure.md b/docs/_pages/guides/ui/ui_tools/measure.md similarity index 82% rename from docs/_pages/ui_tools/measure.md rename to docs/_pages/guides/ui/ui_tools/measure.md index 2a24301d4..3e32f6764 100644 --- a/docs/_pages/ui_tools/measure.md +++ b/docs/_pages/guides/ui/ui_tools/measure.md @@ -1,11 +1,10 @@ --- layout: default -title: Measure Merge -grand_parent: User Editing -parent: UI Tools +title: Measure merge +parent: UI tools nav_order: 9 --- -# Measure Merge +# Measure merge {: .no_toc } A right-click in any measure stack allows us to merge this measure with the following one diff --git a/docs/_pages/ui_tools/octave_shift.md b/docs/_pages/guides/ui/ui_tools/octave_shift.md similarity index 90% rename from docs/_pages/ui_tools/octave_shift.md rename to docs/_pages/guides/ui/ui_tools/octave_shift.md index 8d2051023..9e0d1ae39 100644 --- a/docs/_pages/ui_tools/octave_shift.md +++ b/docs/_pages/guides/ui/ui_tools/octave_shift.md @@ -1,11 +1,10 @@ --- layout: default -title: Octave Shift -grand_parent: User Editing -parent: UI Tools +title: Octave shift +parent: UI tools nav_order: 15 --- -# Octave Shift +# Octave shift {: .no_toc } {: .d-inline-block } New in 5.3 @@ -13,8 +12,7 @@ New in 5.3 --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -22,7 +20,7 @@ Table of contents ## Definition An octave shift looks like this: -![](../assets/images/octave_shift.png) +![](../../../assets/images/octave_shift.png) Its purpose is to tell a reader that there is a local shift in height between the notes as they are written and as they must be performed. @@ -50,7 +48,7 @@ The example at the beginning of this page presented a rather short octave shift, limited in range to a portion of the physical staff just below it. The following example is different: -![](../assets/images/octave_shift_multi.png) +![](../../../assets/images/octave_shift_multi.png) We can see an octave shift starting on the upper staff in the first system and stopping at the end of the upper staff in the second system. @@ -61,7 +59,7 @@ beyond the containing system. Notice also the other shift located on the lower staff of the second system, or the next example below, and how the notion of "straight horizontal line" should be taken with a grain of salt... -![](../assets/images/octave_shift_stairs.png) +![](../../../assets/images/octave_shift_stairs.png) ## Current status @@ -87,7 +85,7 @@ above for `alta`, below for `bassa`. The easiest way to create an octave shift is a drag & drop from the `ClefsAndShifts` family in the Shape board: -![](../assets/images/clefs_and_shifts.png) +![](../../../assets/images/clefs_and_shifts.png) 1. We drag the desired shift symbol 2. We pay attention to hover over the target staff. @@ -99,7 +97,7 @@ Shape board: | Above staff | Below staff | | :---: | :---: | | an `alta` downside hook appears | a `bassa` upside hook appears | - | ![](../assets/images/octave_shift_above.png) | ![](../assets/images/octave_shift_below.png)| + | ![](../../../assets/images/octave_shift_above.png) | ![](../../../assets/images/octave_shift_below.png)| 3. We drop the symbol at the desired location (typically the center of the number box) by releasing the mouse. Another way is to select a suitable glyph, which must be limited to the number part @@ -121,7 +119,7 @@ The octave shift editor provides up to 3 handles: left, middle and right: - Only the left and right handles, when present, can resize the shift line horizontally within current staff limits. -![](../assets/images/octave_shift_edited.png) +![](../../../assets/images/octave_shift_edited.png) What is specific to this editor is the ability to drag the user location (shown as a red cross), way beyond the limits of the current system, until the corresponding staff in some previous or @@ -129,11 +127,11 @@ succeeding system. In the example below, the user has selected the right handle as shown and will drag the mouse from staff #1 down to a location in staff #3: -![](../assets/images/octave_shift_before_drag.png) +![](../../../assets/images/octave_shift_before_drag.png) When reaching this staff #3 (which is the succeeding staff for staff #1), the editor configuration changes on-the-fly: -![](../assets/images/octave_shift_after_drag.png) +![](../../../assets/images/octave_shift_after_drag.png) Instead of the initial simple octave shift with 3 handles, we now have 2 physical shifts in a logical shift: diff --git a/docs/_pages/ui_tools/part.md b/docs/_pages/guides/ui/ui_tools/part.md similarity index 83% rename from docs/_pages/ui_tools/part.md rename to docs/_pages/guides/ui/ui_tools/part.md index ce8a9c083..0a9af85d8 100644 --- a/docs/_pages/ui_tools/part.md +++ b/docs/_pages/guides/ui/ui_tools/part.md @@ -1,11 +1,10 @@ --- layout: default -title: Part Merge -grand_parent: User Editing -parent: UI Tools +title: Part merge +parent: UI tools nav_order: 8 --- -# Part Merge +# Part merge {: .no_toc } During the ``GRID`` step, the OMR engine detects staves and assigns exactly one part per staff, @@ -23,18 +22,18 @@ This is the case in the following example, where a poorly done scan has cropped portion on the image left side (the faint red cross is just the current location as given by the user): -![](../assets/images/brace_missing.png) +![](../../../assets/images/brace_missing.png) So, this leads the OMR engine to detect a system with 3 parts. -To fix this, we manually drag & drop a brace Inter from the shape palette to where there should be +To fix this, we manually drag & drop a brace `Inter` from the shape palette to where there should be a brace. Let's pay attention to hover over a staff of the target system. The brace ghost will turn from dark-gray to green, with a red segment going from brace center to staff middle line: -![](../assets/images/brace_dropped.png) +![](../../../assets/images/brace_dropped.png) We can now drop the brace. The drop will commit the merge of the two embraced staves into a single part. diff --git a/docs/_pages/guides/ui/ui_tools/remove_inter.md b/docs/_pages/guides/ui/ui_tools/remove_inter.md new file mode 100644 index 000000000..02b995770 --- /dev/null +++ b/docs/_pages/guides/ui/ui_tools/remove_inter.md @@ -0,0 +1,28 @@ +--- +layout: default +title: Inter removal +parent: UI tools +nav_order: 3 +--- +# `Inter` removal +{: .no_toc } + +When one or several `Inter` instances have been selected, we can remove them as follows: + +* The `Inter`-board has a `Deassign` button which removes the selected inter displayed in the + board. + This applies only for the displayed `Inter`. + ![](../../../assets/images/deassign_button.png) + +* The {{ site.popup_inters }} contextual menu provides an item to + remove the selected `Inter` entities according to their containing system. + ![](../../../assets/images/remove_inters.png) + +* Pressing `DELETE` key or `BACKSPACE` key on the keyboard removes all the selected inters. + +If more than one `Inter` is selected, we will be prompted for confirmation beforehand. + +Removing a selected `Inter` (or a set of selected Inters) automatically removes the relations these +Inters were involved in. + +Removing the last member of an ensemble also removes that ensemble. diff --git a/docs/_pages/ui_tools/remove_relation.md b/docs/_pages/guides/ui/ui_tools/remove_relation.md similarity index 75% rename from docs/_pages/ui_tools/remove_relation.md rename to docs/_pages/guides/ui/ui_tools/remove_relation.md index e60d32a07..fb0b6d55b 100644 --- a/docs/_pages/ui_tools/remove_relation.md +++ b/docs/_pages/guides/ui/ui_tools/remove_relation.md @@ -1,17 +1,15 @@ --- layout: default -title: Relation Removal -grand_parent: User Editing -parent: UI Tools +title: Relation removal +parent: UI tools nav_order: 5 --- -# Relation Removal +# Relation removal {: .no_toc } --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -19,23 +17,23 @@ Table of contents ## Removing a wrong relation There is no direct way to select Relation instances. -They can be selected only indirectly, via the selection of one of the Inter instances they link. +They can be selected only indirectly, via the selection of one of the `Inter` instances they link. In the following example, a sharp sign has been linked to the wrong note head: -![](../assets/images/wrong_relation.png) +![](../../../assets/images/wrong_relation.png) -To select this relation, we first select the involved sharp sign. +To select this relation, we can first select the involved sharp sign. This will result in the picture above. Then we use a right-click to display the contextual menu {{ site.popup_inters }}, hover on the `Inters...` submenu, -then on the sharp item to see the `Relations:` list of relations this Inter is involved in. +then on the sharp item to see the `Relations:` list of relations this `Inter` is involved in. By clicking on the _AlterHead_ relation, we will be prompted to confirm the removal of this relation. -![](../assets/images/select_relation_for_remove.png) +![](../../../assets/images/select_relation_for_remove.png) Without this relation, the sharp sign is now no longer linked to any head, it thus appears in red abnormal status. @@ -44,7 +42,7 @@ Finally, the correct relation should be manually added (see the [Add Relation](../ui_tools/add_relation.md) previous section) to result in the configuration below: -![](../assets/images/correct_relation_after_delete.png) +![](../../../assets/images/correct_relation_after_delete.png) ## Implicit relation removal @@ -53,7 +51,7 @@ relation was not necessary, provided the correct relation is inserted manually. This is so, because an accidental can reference only one note head (if we except the special case of a -[note head shared by two voices](../ui_cases/shared_head.md)). +[note head shared by two voices](./shared_head.md)). So the wrong _AlterHead_ relation would be removed automatically when inserting a new one. diff --git a/docs/_pages/ui_tools/shared_head.md b/docs/_pages/guides/ui/ui_tools/shared_head.md similarity index 73% rename from docs/_pages/ui_tools/shared_head.md rename to docs/_pages/guides/ui/ui_tools/shared_head.md index f5b2d80dd..25d36bd45 100644 --- a/docs/_pages/ui_tools/shared_head.md +++ b/docs/_pages/guides/ui/ui_tools/shared_head.md @@ -1,8 +1,7 @@ --- layout: default -title: Shared Head -grand_parent: User Editing -parent: UI Tools +title: Shared head +parent: UI tools nav_order: 14 --- # Shared Head @@ -10,8 +9,7 @@ nav_order: 14 --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -23,11 +21,11 @@ Generally a note head (filled or void -- except whole and breve notes) is connec If head and stem are connected (via a `HeadStemRelation`), both appear with their own standard color. If not, one or both appear in red and to fix this, we can simply drag a link from one to the other. -![](../assets/images/shared_head_1.png) +![](../../../assets/images/shared_head_1.png) Then, if needed, we can insert a stem on the other side of the head, in the opposite direction. -![](../assets/images/shared_head_2.png) +![](../../../assets/images/shared_head_2.png) It appears in red because it can't get automatically connected to the head (because this head is already connected on the other side). @@ -43,17 +41,17 @@ This is the standard behavior. * But if the check succeeds, both connections are kept and the _'shared'_ head gets logically duplicated into two heads, one _'half'_ for the left and one _'half'_ for the right: -![](../assets/images/shared_head_3.png) +![](../../../assets/images/shared_head_3.png) By selecting all components, we can see the various links (_HeadStemRelation_ between each head half and "its" stem, and _MirrorRelation_ between the two half heads): -![](../assets/images/shared_head_4.png) +![](../../../assets/images/shared_head_4.png) And if voices are colorized, the separation between head 'halves' becomes even more visible: -![](../assets/images/shared_head_5.png) +![](../../../assets/images/shared_head_5.png) ## Impact on relations @@ -63,5 +61,5 @@ Simply, we have to pay attention to point precisely to the desired _'half'_ head | Example | Explanation | | :---: | :--- | -| ![](../assets/images/shared_alter.png) | Here, the alteration sign is _'shared'_ and thus also split, each sign _'half'_ colorized with the same color as its related head half.| -| ![](../assets/images/non_shared_dot.png) | Here, the augmentation dot is related only to one head _'half'_ (otherwise the dot would exhibit both colors as the alteration sign in the previous example) | +| ![](../../../assets/images/shared_alter.png) | Here, the alteration sign is _'shared'_ and thus also split, each sign _'half'_ colorized with the same color as its related head half.| +| ![](../../../assets/images/non_shared_dot.png) | Here, the augmentation dot is related only to one head _'half'_ (otherwise the dot would exhibit both colors as the alteration sign in the previous example) | diff --git a/docs/_pages/ui_tools/staff_editor.md b/docs/_pages/guides/ui/ui_tools/staff_editing.md similarity index 83% rename from docs/_pages/ui_tools/staff_editor.md rename to docs/_pages/guides/ui/ui_tools/staff_editing.md index 2799d184f..942058a62 100644 --- a/docs/_pages/ui_tools/staff_editor.md +++ b/docs/_pages/guides/ui/ui_tools/staff_editing.md @@ -1,11 +1,10 @@ --- layout: default -title: Staff Editing -grand_parent: User Editing -parent: UI Tools +title: Staff editing +parent: UI tools nav_order: 6 --- -# Staff Editing +# Staff editing {: .no_toc } During the `GRID` step, the OMR engine strives to detect sequences of equally spaced, @@ -29,8 +28,7 @@ contextual menu we select: --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- @@ -41,7 +39,7 @@ In this mode, we can modify the different lines of the staff individually. | Input view | Output view | | :---: | :---: | -| ![](../assets/images/staff_lines_wrong.png) | ![](../assets/images/staff_lines_uneven.png) | +| ![](../../../assets/images/staff_lines_wrong.png) | ![](../../../assets/images/staff_lines_uneven.png) | In the example above, on the left-side picture, we can see that pixels at the beginning of the staff have been left over (these are the horizontal sections displayed in pink color). @@ -54,7 +52,7 @@ right-side picture. The staff lines, as detected, are not evenly spaced near the To fix this, preferably right after the `GRID` step, we enter the staff editing in `lines` mode (Right-click in staff > ``Staff#n`` > ``Edit lines``). -![](../assets/images/staff_lines_handles.png) +![](../../../assets/images/staff_lines_handles.png) Each line of the staff now exhibits its own sequence of handles, which we can press and drag to modify the staff line locally. @@ -63,7 +61,7 @@ In this `Lines` mode, the handles can move only vertically. In the case at hand, we could slightly drag some left handles up or down. We notice that the pink sections disappear when they get crossed by a staff line. -![](../assets/images/staff_lines_ok.png) +![](../../../assets/images/staff_lines_ok.png) Clicking outside of any handle completes the editing. We can always undo/redo the operation. @@ -83,7 +81,7 @@ all staff lines as a whole. | Input view | Output view | | :---: | :---: | -| ![](../assets/images/staff_wrong.png) | ![](../assets/images/staff_too_short.png) | +| ![](../../../assets/images/staff_wrong.png) | ![](../../../assets/images/staff_too_short.png) | In the example above, the upper staff is so crowded with heads, stems and beams that the engine could not detect enough line portions. @@ -94,7 +92,7 @@ has even been truncated on its right side. To fix this, we enter the staff editing in `global` mode (Right-click in staff > ``Staff#n`` > ``Edit staff``). -![](../assets/images/staff_handles.png) +![](../../../assets/images/staff_handles.png) As opposed to the `lines` mode, we get handles only along the staff middle line. This is enough to move the whole staff: @@ -105,19 +103,19 @@ So, we press the right-most handle and drag it horizontally to the right until i the right barline and vertically so that most if not all pink sections disappear. We then release the mouse. -![](../assets/images/staff_handles_ok.png) +![](../../../assets/images/staff_handles_ok.png) We still have a couple of pink sections to fix on lines 2 and 3 (counted top down). This is a job for the `lines` mode. We simply right-click in the staff area, and select the `lines` mode. -![](../assets/images/staff_handles_nearly.png) +![](../../../assets/images/staff_handles_nearly.png) -We slightly drag down two handles, and voilà!: +We slightly drag down two handles, and voila!: -![](../assets/images/staff_handles_perfect.png) +![](../../../assets/images/staff_handles_perfect.png) {: .highlight } -A final remark: Since moving a handle is often a matter of very few pixels, we may find it more +TIP: Since moving a handle is often a matter of very few pixels, we may find it more convenient to move a handle via the **keyboard**: While keeping the `Alt` key pressed, we can use the 4 arrow keys to move the selected handle one pixel at a time in the desired direction. diff --git a/docs/_pages/ui_tools/system.md b/docs/_pages/guides/ui/ui_tools/system.md similarity index 72% rename from docs/_pages/ui_tools/system.md rename to docs/_pages/guides/ui/ui_tools/system.md index 45855013b..cee1621ea 100644 --- a/docs/_pages/ui_tools/system.md +++ b/docs/_pages/guides/ui/ui_tools/system.md @@ -1,11 +1,10 @@ --- layout: default -title: System Merge -grand_parent: User Editing -parent: UI Tools +title: System merge +parent: UI tools nav_order: 7 --- -# System Merge +# System merge {: .no_toc } In the Audiveris ``GRID`` step, detected staves are gathered into systems, based on barlines found on @@ -19,18 +18,18 @@ detection of systems by the OMR engine. | Left barline broken | Resulting grid before fix | Resulting grid after fix | | ---| --- | --- | -| ![](../assets/images/system_broken.png) | ![](../assets/images/system_broken_before.png) | ![](../assets/images/system_broken_after.png) | +| ![](../../../assets/images/system_broken.png) | ![](../../../assets/images/system_broken_before.png) | ![](../../../assets/images/system_broken_after.png) | Since the 5.2 release, we can manually fix this problem. We point at the upper system portion, and via the right-click {{ site.popup_system }} menu we select "_Merge with system below_". -![](../assets/images/system_merge.png) +![](../../../assets/images/system_merge.png) This is a key operation, so we need to confirm the detailed prompt: -![](../assets/images/system_merge_prompt.png) +![](../../../assets/images/system_merge_prompt.png) And it's done: a connector was created between the two barline portions and the two system portions merged. diff --git a/docs/_pages/ui_tools/text.md b/docs/_pages/guides/ui/ui_tools/text.md similarity index 87% rename from docs/_pages/ui_tools/text.md rename to docs/_pages/guides/ui/ui_tools/text.md index debfee568..bed10af8a 100644 --- a/docs/_pages/ui_tools/text.md +++ b/docs/_pages/guides/ui/ui_tools/text.md @@ -1,14 +1,13 @@ --- layout: default title: Text -grand_parent: User Editing -parent: UI Tools +parent: UI tools nav_order: 13 --- # Text {: .no_toc } -Recognition of textual elements is delegated to the Tesseract OCR library. +The recognition of textual elements is delegated to the Tesseract OCR library. This recognition is performed by the OMR engine (this is the `TEXTS` step). It can also be performed manually on a provided glyph. @@ -16,11 +15,11 @@ The resulting hierarchy of sentences and words can also be manually modified by --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- + ## Recognition of text items It is very difficult to automatically derive the meaning from the textual items in a musical score. @@ -31,14 +30,14 @@ nor is it always clear which voice is concerned. For **plain text**, Audiveris tries to detect the text role, such as directions or typical header elements like: title, composer and lyricist. -If it fails, the role can be easily corrected manually. +If it fails, the role can easily be corrected manually. ## TEXTS step The `TEXTS` step runs the Tesseract OCR on the whole image and tries to assign to each textual item its probable content, type and role. -This engine step is influenced by three options available in the `Book parameters` menu: +This engine step is influenced by three options available in the {{site.book_parameters }} menu: - [x] Support for chord names - [ ] Support for lyrics (assumed to be located below the related staff) - [x] Support for lyrics even located above staff @@ -53,22 +52,22 @@ buttons provided in the `Physicals` family of the Shape palette: * The `lyric` button, * The `text` button. -![](../assets/images/lyric_text_buttons.png) +![](../../../assets/images/lyric_text_buttons.png) There are two separate buttons because lyric items have a behavior significantly different from plain text items, especially the gap between words can be much wider. By choosing one button or the other, the user clearly specifies the desired result type of the OCR operation. -## Sentence vs Words +## Sentence vs. Words -A Sentence Inter is an ensemble of one or several Word Inter(s): +A Sentence `Inter` is an ensemble of one or several Word `Inter`(s): * A **Word** handles its textual value and location. Word sub-classes (ChordName and LyricItem) handle additional data. The word _value_ is modifiable by the user: - ![](../assets/images/word_text_edited.png) + ![](../../../assets/images/word_text_edited.png) * A **Sentence** is a sequence of words. (We can easily navigate from a selected word to its containing sentence via the `ToEnsemble` button). @@ -76,7 +75,7 @@ A Sentence Inter is an ensemble of one or several Word Inter(s): This content is not modifiable directly, but rather via its word members. The sentence _role_ is modifiable by the user. - ![](../assets/images/sentence_role_edited.png) + ![](../../../assets/images/sentence_role_edited.png) A sentence role can be set to any value among: UnknownRole, @@ -141,12 +140,12 @@ displayed as "B♭". A lyric line is a sentence composed of lyric items. -When selected, the Inter board displays additional data: +When selected, the `Inter` board displays additional data: * Voice number, * Verse number, * Location with respect to staff. -![](../assets/images/lyrics_data.png) +![](../../../assets/images/lyrics_data.png) Each syllable (lyric item) is usually linked to a related chord. diff --git a/docs/_pages/ui_tools/time.md b/docs/_pages/guides/ui/ui_tools/time.md similarity index 90% rename from docs/_pages/ui_tools/time.md rename to docs/_pages/guides/ui/ui_tools/time.md index e2451627c..083e767e6 100644 --- a/docs/_pages/ui_tools/time.md +++ b/docs/_pages/guides/ui/ui_tools/time.md @@ -1,21 +1,20 @@ --- layout: default -title: Time Signature -grand_parent: User Editing -parent: UI Tools +title: Time signature +parent: UI tools nav_order: 11 --- -# Time Signature +# Time signature {: .no_toc } --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- -## Whole vs Pair + +## Whole vs. pair Audiveris OMR is able to handle both whole- and pair- time signatures: @@ -58,11 +57,11 @@ This is a fully-customizable combo signature. To define a precise time signature, the most convenient way is often to drag the `custom` combo (0/0) from the shape palette to a target location: -![](../assets/images/time_palette.png) +![](../../../assets/images/time_palette.png) Once dropped, the custom combo displays its initial value (`0/0`): -![](../assets/images/time_custom_dropped.png) +![](../../../assets/images/time_custom_dropped.png) We can then use the inter board to enter the desired values for our custom combo, formatted as "numerator / denominator". @@ -73,7 +72,7 @@ The only constraint is that each numerator or denominator value must stay within (0 being just a temporary value, of course). -![](../assets/images/time_custom_filled.png) +![](../../../assets/images/time_custom_filled.png) ## Location diff --git a/docs/_pages/ui_tools/tips.md b/docs/_pages/guides/ui/ui_tools/tips.md similarity index 89% rename from docs/_pages/ui_tools/tips.md rename to docs/_pages/guides/ui/ui_tools/tips.md index 33e590c5b..6a7d65822 100644 --- a/docs/_pages/ui_tools/tips.md +++ b/docs/_pages/guides/ui/ui_tools/tips.md @@ -1,11 +1,10 @@ --- layout: default -title: Tips and Tricks -grand_parent: User Editing -parent: UI Tools +title: Tips and tricks +parent: UI tools nav_order: 16 --- -# Tips and Tricks +# Tips and tricks {: .no_toc } This section gathers a few things based on concrete user experience. @@ -13,8 +12,7 @@ These little tricks should save us time and efforts in our editing sessions. --- Table of contents -{: .text-delta } - +{: .text-epsilon } 1. TOC {:toc} --- @@ -27,7 +25,7 @@ In bad scans, often elements are detected as two or more separate glyphs In such a case, we use a selection frame and try to catch all parts of a suitable glyph before we define an inter for it: -![](../assets/images/selection_frame.png) +![](../../../assets/images/selection_frame.png) We have to make sure not to select parts of other elements (e.g. augmentation dots)! @@ -57,7 +55,7 @@ Sometimes grace notes are considered as standard notes with just a rather small And while all standard notes are involved in rhythm building, true grace notes are not, because they are considered as mere ornaments. -![](../assets/images/wrong_grace_note.png) +![](../../../assets/images/wrong_grace_note.png) In such a case we just delete the note and re-define with the correct interpretation (from the `Ornaments` palette in Shape board) @@ -71,13 +69,13 @@ In such a case we can add the missing triplet element by drag & drop to the 2nd | Lower triplet missing | | Lower triplet added | | :---: |:---:| :---: | -|![](../assets/images/triplet_with_missing_3.png) | ===> |![](../assets/images/added_triplet.png)| +|![](../../../assets/images/triplet_with_missing_3.png) | ===> |![](../../../assets/images/added_triplet.png)| ## Perfectly opposite notes Sometimes there are two notes of two voices with opposite stems in the same horizontal position. -![](../assets/images/two_stems_in_line.png) +![](../../../assets/images/two_stems_in_line.png) In such a case Audiveris often does not detect the two stems as separate elements, but as one long stem (on which the heads candidates will appear in abnormal positions, diff --git a/docs/_pages/handbook.md b/docs/_pages/handbook.md index c16f59d40..4459a5a51 100644 --- a/docs/_pages/handbook.md +++ b/docs/_pages/handbook.md @@ -2,7 +2,7 @@ layout: default title: Audiveris Handbook nav_order: 0 -has_children: true +has_children: false has_toc: false --- # Audiveris Handbook @@ -11,9 +11,8 @@ has_toc: false This documentation applies to release {{ site.audiveris_version }} and later. --- -Table of contents -{: .no_toc .text-delta } - +Table of Contents +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -26,9 +25,9 @@ as a progressive sequence of chapters. It is just a user manual; a true developer documentation is still to be written. Some material is already made available, through the -Audiveris [Wiki](https://github.com/Audiveris/audiveris/wiki) -and through the description of [.omr file format](./outputs/omr.md), to ease the software -learning curve for any potential developer. +Audiveris [Wiki] and through the description of the +[`.omr` file format](./reference/outputs/omr.md), +to ease the software learning curve for any potential developer. ## Overview @@ -38,12 +37,11 @@ When questioned about Audiveris in December 2023, ChatGPT answered: > The software is developed in Java and is available for various operating systems, including Windows, macOS, and Linux. It can be used to digitize printed sheet music, making it easier to edit, share, and playback on digital devices. -> If you're interested in using Audiveris, you can find more information, documentation, and download links on the official website or through open-source software repositories. Keep in mind that the information provided here is accurate as of my last knowledge update in January 2022, and there may have been updates or changes since then. Not that bad at all! But let's try to describe it on our own... Audiveris is an open source software, published under the -[AGPL](https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License) V3 license. +[AGPL] V3 license. It is an **O**ptical **M**usic **R**ecognition (OMR) application, featuring an OMR engine coupled with an interactive editor. @@ -55,9 +53,8 @@ notably: digital playback, transposition and arrangement. Audiveris provides outputs in two main digital formats: its own OMR format and the standard MusicXML format. -* [OMR](https://github.com/Audiveris/audiveris/wiki/Project-Structure) is the -Audiveris specific format, a documented open source format based on XML. -* [MusicXML](http://usermanuals.musicxml.com/MusicXML/MusicXML.htm) is a *de facto* standard. +* [OMR] is the Audiveris specific format, a documented open source format based on XML. +* [MusicXML] is a *de facto* standard. It has been designed for score interchange and is today supported as input/output by almost every music notation program. @@ -72,32 +69,39 @@ the Audiveris application provides a graphical user interface specifically focus on quick verification and manual correction of the OMR outputs. External sophisticated music editors, such as MuseScore or Finale, can be used on -Audiveris MusicXML output. -They can even be directly connected via simple [plugins](./advanced/plugins.md) -to ease data transfer from Audiveris to these external editors. - -## Handbook content - -1. [Installation](./install/README.md): -How to install or build the program. - -1. [Quick tour](./quick/README.md): -A very brief tour, just to introduce a minimal usage of the software. - -1. [Main features](./main/README.md): -Thorough description of software main features. - -1. [UI](./ui.md): -Main tools and typical examples to correct OMR outputs. - -1. [Specific features](./specific/README.md): -Specific features recently added to Audiveris. - -1. [Advanced features](./advanced/README.md): -Features only relevant for an advanced usage of Audiveris. - -1. [References](./references.md): -Not meant to be read from A to Z, but when a specific item needs to be checked. - -1. [Updates](./updates.md): -History of major software updates. +the Audiveris MusicXML output. +They can even be directly connected via simple [plugins](./guides/advanced/plugins.md) +to ease the information handover from Audiveris to these external editors. + +## Handbook structure + +This documentation has been restructured for the 5.4 release, according to the principles +of the [DIVIO] Documentation System, around four different functions: + +- [Tutorials](./tutorials/README.md) -- To get started + - Installation of Audiveris application + - Quick tour from a score capture image to its playback by a music sequencer + - Introduction to the main concepts covered by the OMR process + - Presentation of the graphical user interface + +- [How-to guides](./guides/README.md) -- For precise tasks + - Frequent tasks like setting book parameters and driving the OMR pipeline + - Operating in batch through the command line interface + - Using the graphical interface to edit the OMR results + - Processing of specific musical items + - Advanced tasks like sampling symbols and training the neural glyph classifier + +- [Reference](./reference/README.md) -- Comprehensive technical descriptions + - Menus, boards, folders, outputs, editors + - Known limitations, history of updates + +- [Explanation](./explanation/README.md) -- How it works + - Steps internals + + +[AGPL]: https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License +[DIVIO]: https://docs.divio.com/documentation-system/ +[MusicXML]: http://usermanuals.musicxml.com/MusicXML/MusicXML.htm +[OMR]: https://github.com/Audiveris/audiveris/wiki/Project-Structure +[.omr]: ./reference/outputs/omr.md +[Wiki]: https://github.com/Audiveris/audiveris/wiki diff --git a/docs/_pages/install/README.md b/docs/_pages/install/README.md deleted file mode 100644 index 3510a8e1c..000000000 --- a/docs/_pages/install/README.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: default -title: Installation -nav_order: 1 -has_children: true ---- -# Installation - -For **Windows** only, there is an **installer** available in 64-bit version, -which takes care of installing all Audiveris binaries. -The installer makes installation simple but has the main drawback of being limited to -the last official release, which can be several months old. - -For all three major operating systems, that is **Windows**, **Linux** and **MacOS**, -you have the ability to **download and build** from source material. -The main advantage is to benefit from all the bug fixes and improvements that are -continuously published on the Audiveris project site in its "development" branch. - -{: .warning } -In both cases, whether you decide to use the installer or to build Audiveris from source, -there are two points to take care of: - -{: .highlight } -Point #1: Proper **Java** version must be installed. -Audiveris version {{ site.audiveris_version }} requires Java version {{ site.java_version }} or up. - -{: .highlight } -Point #2: Suitable Tesseract **OCR language** files must be locally available. -Audiveris uses Tesseract OCR in legacy mode, which requires the standard (best) tessdata files. - diff --git a/docs/_pages/install/binaries.md b/docs/_pages/install/binaries.md deleted file mode 100644 index af61efb2a..000000000 --- a/docs/_pages/install/binaries.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: default -title: Installing binaries -nav_order: 3 -parent: Installation ---- -# Installing binaries -{: .no_toc } - -Table of contents -{: .no_toc .text-delta } -1. TOC -{:toc} ---- - -## Windows - -### Installation - -The Audiveris installer for Windows is hosted on -[https://github.com/Audiveris/audiveris/releases](https://github.com/Audiveris/audiveris/releases). - -Installer versions are named "Audiveris_Setup-X.Y.Z-windows-x86_64.exe" where X.Y.Z values -refer to the related release. - -During installation, you will be prompted to associate the `.omr` file extension -(which represents an Audiveris Book) with Audiveris software. - -After installation, the Windows start menu should contain a sub-menu named `Audiveris`: - -![](../assets/images/windows_start_menu.png) - -#### Additional actions - -{: .warning } -Do not forget two additional actions: - - [Java environment](./java.md) - - [OCR languages](./languages.md) - -#### 64-bit architecture - -The installer is built for a 64-bit architecture. - -If a 32-bit version is really needed for whatever reason (perhaps because your equipment is too old), -you have to fall back using old Audiveris 5.1 installers which were available for both 32 and 64-bit -architectures. - -### Uninstallation - -To uninstall the program, you can simply select `Uninstall` in the Audiveris start menu. - -The uninstaller will optionally keep the configuration files of the program. -So, if you re-install this program or a new version later, you will find the same settings -that were used before uninstallation. - -{: .note } -You may not always see the `Uninstall` item under Audiveris in the Windows start menu. -This is reportedly a new Windows behavior, which now recommends to open `Windows Settings` -(keyboard shortcut is `Windows + I`), then look in `Apps & features` section for the Audiveris item -and there press the `Uninstall` button. - -## Linux -No installer yet. - -## MacOS -No installer yet. diff --git a/docs/_pages/install/java.md b/docs/_pages/install/java.md deleted file mode 100644 index 99f3f2c08..000000000 --- a/docs/_pages/install/java.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: default -title: Java -nav_order: 1 -parent: Installation ---- -# Java -{: .no_toc } - -## Java runtime environment - -To check the installed Java environment, you can use the `java -version` command from a terminal window, to provide Java information like: -``` -$ java -version -java version "17.0.6" 2023-01-17 LTS -Java(TM) SE Runtime Environment (build 17.0.6+9-LTS-190) -Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing) -``` -If you don't have a suitable Java Runtime Environment (JRE) yet, you must install one. -If a JRE is not available for download, you can pick up a JDK (Java Development Kit) -which is a superset of a JRE. - -Make sure to install **Java version {{ site.java_version }}** -(which is today the latest LTS - Long Term Support - version) for instance from -[https://www.oracle.com/java/technologies/downloads/](https://www.oracle.com/java/technologies/downloads/) - -Audiveris {{ site.audiveris_version}} will not work with older Java versions. -It may work with newer versions. This section will be updated as new results become available. - -### 64-bit architecture - -The latest Audiveris version ({{ site.audiveris_version}}) -uses Java {{ site.java_version }}. -Starting with Java 10, Oracle now provides Java environments only for 64-bit architecture. - -So a 64-bit architecture is now required. diff --git a/docs/_pages/install/languages.md b/docs/_pages/install/languages.md deleted file mode 100644 index 68dee05a5..000000000 --- a/docs/_pages/install/languages.md +++ /dev/null @@ -1,99 +0,0 @@ ---- -layout: default -title: OCR languages -nav_order: 2 -parent: Installation ---- -# OCR languages -{: .no_toc } - -Audiveris delegates text recognition to Tesseract OCR library. - -Whether you install Audiveris via its Windows installer or download the project and build it locally -from source, you will need to have a local copy of some Tesseract language files: -- `eng` (English) is mandatory, -- `deu` (German), `fra` (French), `ita` (Italian) are often useful. - -Note that you can always download additional languages later from the dedicated -[Tesseract tessdata] site which contains data files for 100+ languages. - ---- -Table of contents -{: .no_toc .text-delta } -1. TOC -{:toc} ---- - -## Tesseract as a linked library - -Audiveris calls Tesseract software as a linked binary _library_, -not as a separate executable _program_. -- Tesseract library is automatically provided via Audiveris installation or building. - As of this writing, Audiveris uses version {{ site.tesseract_version }} of Tesseract library. -- There is thus no need to _install_ any Tesseract program. - You may already have a Tesseract program of whatever version installed on our machine, - Audiveris will not interfere with that program. -- However, Tesseract library will need data (language files) which must be provided separately. - -## Data version - -Tesseract OCR engine can operate in two different OCR modes --- the ``legacy`` mode and the new ``LSTM`` mode -- each with its own model. - -To process text scattered among musical symbols, Audiveris must use the ``legacy`` mode. - -The language files downloadable from [Tesseract tessdata] page are meant for Tesseract -version 4.x and up, each language file containing both ``legacy`` and ``LSTM`` models. -So, these are the language data files that Audiveris requires. - -## Data location - -At starting time, Audiveris tries to initialize the Tesseract library with a `tessdata` folder: - 1. It first checks the location defined by the `TESSDATA_PREFIX` environment variable. - 2. If not found there, it tries the Tesseract tessdata default location according to the OS, - which for Windows can be for example `"C:\Program Files\tesseract-ocr\tessdata"`. - -If in doubt, we recommend the following actions: -1. Choose or create a specific folder, named ``tessdata`` for clarity. -2. Download a few language files (at least ``eng.traineddata`` file) from [Tesseract tessdata] page -to your specific folder. -3. Define the `TESSDATA_PREFIX` environment variable to point to your specific folder. - -For illustration purpose, here is a personal configuration: -- I have created a ``"tessdata"`` sub-folder in Audiveris user ``config`` folder. -```bash -$ echo $TESSDATA_PREFIX -C:\Users\herve\AppData\Roaming\AudiverisLtd\audiveris\config\tessdata -``` -- And downloaded just four files from [Tesseract tessdata] web page into it. -```bash -$ ls -lgh $TESSDATA_PREFIX -total 66M --rw-r--r-- 1 herve 15M Jun 22 14:15 deu.traineddata --rw-r--r-- 1 herve 23M Jun 22 12:18 eng.traineddata --rw-r--r-- 1 herve 14M Jun 22 14:16 fra.traineddata --rw-r--r-- 1 herve 16M Jun 22 14:16 ita.traineddata -``` - -The About dialog, launched from the {{ site.help_about }} pull-down menu, displays key information -about the OCR engine version and OCR tessdata folder: - -![](../assets/images/about_ocr.png) - -## Languages selection - -At runtime, you can specify which languages should be tried by the OCR software. -This is done via a language specification string, a plus-separated list of language names: -- The easiest way is to define this language specification interactively. -Using the {{ site.book_parameters }} menu, you can make specifications -at the global level, book level and even individual sheet level. -Depending upon the language files present in your local ``tessdata`` folder, -you will be presented with the list of languages available for selection. -- The default (global) specification is determined by the application constant -`org.audiveris.omr.text.Language.defaultSpecification`, whose initial value is `deu+eng+fra`. -Thus, you can also modify this default directly by changing the constant value: - - either interactively (using {{ site.tools_options }} menu) - - or in batch (using something like - `-option org.audiveris.omr.text.Language.defaultSpecification=ita+eng`). - -[Tesseract tessdata]: https://github.com/tesseract-ocr/tessdata diff --git a/docs/_pages/install/sources.md b/docs/_pages/install/sources.md deleted file mode 100644 index 6f3ffbbe4..000000000 --- a/docs/_pages/install/sources.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: default -title: Building from sources -nav_order: 4 -parent: Installation ---- -# Building from sources (Windows, MacOS, Linux, ArchLinux) -{: .no_toc } - -{: .note } -For GitHub users: -- Audiveris "*master*" branch is updated only when a new release is published. -- Instead, Audiveris development happens continuously in "*development*" branch, so checkout and pull -this *development* branch to get and build the latest version. -- See workflow details in this dedicated [Wiki article][workflow]. - -Table of contents -{: .no_toc .text-delta } -1. TOC -{:toc} ---- - -## Dependencies - -* [Git][git]: version control system. - -* [Gradle][gradle]: build tool. - -* [Java Development Kit (JDK)][jdk]: version {{ site.java_version }} - (higher numbers may work, to be confirmed). - Audiveris {{ site.audiveris_version }} runs only on 64-bit architectures. - -* Tesseract OCR: The Tesseract *libraries* are automatically pulled as Gradle dependencies, -but you will need the Tesseract *language files* for this OCR to work properly. -Please check [OCR languages](./languages.md) section. - -* [FreeType library][freetype]: Unix-like platforms (including MacOS) need FreeType in your $PATH -to handle those specific PDFs that contain vector graphics. -Fortunately, every known Unix-like OS distribution already contains a package for FreeType. - -## Download, build and run -To download the Audiveris project, use the following command in a directory of your choice: - -```sh -git clone https://github.com/Audiveris/audiveris.git -``` - -This will create a sub-directory named "audiveris" in your current directory and populate it with -project material (notably source code and build procedure). - -Now move to this "audiveris" project directory: - -```sh -cd audiveris -``` - -Once in this `audiveris` project directory, you can select the branch you want. -By default, you are on `master`branch. -To use the `development`branch with its latest features, use: -```sh -git checkout development - -# To make sure you grab even the latest updates: -git pull --all -``` -You can build the software via the command: -```sh -# (Linux & Mac, or Cygwin terminal under Windows) -./gradlew build -``` -```sh -# (Windows terminal) -gradlew.bat build -``` - -You can run the software, as GUI tool, via the command: - -```sh -# (Linux & Mac, or Cygwin terminal under Windows) -./gradlew run -``` -```sh -# (Windows terminal) -gradlew.bat run -``` - -Please note that all these commands use **gradle wrapper** (`gradlew`) which, behind the scenes, -takes care of getting and launching the proper gradle version. - -## Alternative run - -The gradle-based run, as described above, makes sure that all your potential modifications are -compiled before the application is launched. -This is the preferred approach for a developer. - -However, if you don't modify the code and merely want to launch the (un-modified) -application you don't need to go through gradle for each and every run. - -Because, once you have built the software with the gradle `build` command as stated above, -you now have a `build/distributions` folder in the repository root with tarred/zipped libraries -(`Audiveris.tar` and `Audiveris.zip`). - -Simply extract either one of the archives: - -```sh -# Either extract the .tar archive -tar -xf build/distributions/Audiveris.tar -``` - -```sh -# Or extract the .zip archive -unzip build/distributions/Audiveris.zip -``` - -Then, you can repeatedly run audiveris from those files: -```sh -# Run audiveris (append arguments if so needed): -java -cp "Audiveris/lib/*" Audiveris -``` - -[freetype]: https://www.freetype.org -[git]: https://git-scm.com -[gradle]: https://gradle.org -[jdk]: http://www.oracle.com/technetwork/java/javase/downloads/index.html -[workflow]: https://github.com/Audiveris/audiveris/wiki/Git-Workflow diff --git a/docs/_pages/main/README.md b/docs/_pages/main/README.md deleted file mode 100644 index 228a7484f..000000000 --- a/docs/_pages/main/README.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: default -title: Main Features -nav_order: 3 -has_children: true ---- -# Main Features - -This chapter presents the main features of the Audiveris application, especially the user GUI and the -pipeline of the OMR engine, from input to outputs. - -The manual correction of OMR results is such an important topic that it deserves the separate -[UI Tools](../ui_tools/README.md) and [UI Examples](../ui_examples/README.md) chapters. - -A few specific features are gathered in the [Specific Features](../specific/README.md) chapter. - -And more advanced features can be found in the [Advanced Features](../advanced/README.md) chapter. diff --git a/docs/_pages/main/book_parameters.md b/docs/_pages/main/book_parameters.md deleted file mode 100644 index 0c8302bab..000000000 --- a/docs/_pages/main/book_parameters.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: default -title: Book Parameters -parent: Main Features -nav_order: 5 ---- -# Book Parameters -{: .no_toc } - -Table of contents -{: .no_toc .text-delta } - -1. TOC -{:toc} - ---- - -## Dialog - -The pull-down menu {{ site.book_parameters }} opens a dialog to review and modify -high-level processing parameters. - -The following example displays the parameters dialog for a book (`Dichterliebe01`) which contains -two sheets: - -![](../assets/images/book_parameters.png) - -## Scopes - -The dialog is organized in several tabs to describe Default, Book and Sheet's scopes respectively. -In this example, the dialog provides 4 tabs, one for Default, one for Dichterliebe01 book, -and one for each sheet in the Dichterliebe01 book. - -The same parameters are defined for each scope, and each scope by default inherits from the upper -scopes in the hierarchy: -1. **Default** level: This is the information provided by default for all books. -Any such global value is read from source, unless we have overridden it at default level. -2. **Book** level: We can override any default value for this book only, and it will apply -transitively to all sheets in this book. -3. **Sheet** level: Finally, we can override any value for the specific sheet at hand. - -To override a value for a given scope: -1. We first select the proper scope tab, -2. We then put a checkmark on the left side to indicate that we want to override the selected parameter. -The line gets enabled, it changes from gray to black. -3. We define the new value, either by selecting in a list, or typing a number, -or checking a boolean box, etc. - -To cancel a value modification, we simply un-check the box on left side. -The line then gets disabled, changing from black to gray, and it now displays the inherited value -in lieu of the overriding value. - -## Lifecycle - -All modifications apply only when either the `OK` button or the `Apply` button is pressed, -which actually commits them. -The `OK` button completes the dialog, while the `Apply` button keeps the dialog open. - -* All the modified **default** values persist from one run of the application to the other -(until they are modified again or reset to their factory values). - -* All the modified **book/sheets** values persist in the book `.omr` project file. - -## Parameters - -* **Binarization** (needs SPECIFIC_ITEMS advanced topic) - We select the kind of filter (_global_ or _adaptive_) which gives the best results for the sheet - image at hand. - We can also adjust the related numbers. - Playing with the _global_ threshold is easy, but modifying the parameters of the _adaptive_ filter - is not recommended. - In fact, the default adaptive filter seems to give good results in all cases, therefore this - parameter is kept only for potential use on a specific case. - It does not appear unless the SPECIFIC_ITEMS advanced topic has been selected. - -* **Music font** -We can choose a specific music font between ``Bravura``, ``Finale Jazz`` or ``Jazz Perc``. -This decision is especially important for head recognition which is based on a font -template matching technique. -See the specific [Music Font](../specific/fonts.md#music-fonts) section. - -* **Text font** -The text font has no impact on recognition, but can provide a more faithful output. -We can adjust the text font between -``Sans Serif``, ``Serif`` and ``Finale Jazz Text``. - -* **Input quality** -This item allows adapting the OCR engine behavior to the expected quality of the input image between -``synthetic``, ``standard`` and ``poor``. - -* **OCR Languages** - Define the specification of dominant languages for OCR'd text - (note that we can select several languages) - -* **Switches** for a list of binary features. - In some cases, supporting a rather rare feature may imply collateral damage, the small note heads - are an example of such a tricky feature. - So it is safer to use them only when we have to. - * Keep loaded gray images - * Use of system indentation - * Link augmentation dot to both shared heads - * Support for percussion staves (1 line) - * Support for bass tablatures (4 lines) - * Support for unpitched percussion staves (5 lines) - * Support for guitar tablatures (6 lines) - * Support for small note heads - * Support for small beams - * Support for cross note heads - * Support for tremolos - * Support for fingering digits - * Support for frets roman digits (I, II, III, IV...) - * Support for plucking (p, i, m, a) - * Support for partial whole rests - * Support for multi-whole head chords - * Support for chord names - * Support for lyrics - * Support for lyrics even located above staff - * Support for articulations - * Support for implicit tuplets - -{: .highlight } -A switch can disable a feature for the OMR automatic recognition, -but in most cases the feature remains available for manual user actions. - - diff --git a/docs/_pages/main/book_sheet.md b/docs/_pages/main/book_sheet.md deleted file mode 100644 index 4af1677f0..000000000 --- a/docs/_pages/main/book_sheet.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: default -title: Book of Sheets -grand_parent: Main Features -parent: Main Entities -nav_order: 1 ---- -# Book of Sheets - -An image file fed into OMR software contains one or several images. -Typically PDF and TIFF formats support the notion of multi-image files while, for example, -JPEG or PNG formats can deal only with single-image files. - -For Audiveris, using the metaphor of a physical book made of several sheets of paper, -this physical containment is modeled as one **Book** instance (corresponding to the input file) -and a sequence of one or several **Sheet** instances (one sheet corresponding to one image). - -Note that a sheet image may contain no music. -This happens for example for a title or illustration or simply a blank sheet. -In that case, the sheet will later be recognized as "_invalid_" (from the OMR point of view) -and flagged as such. - -With Audiveris 5.3, we can now split a book into smaller ones or, conversely, -merge small books into a larger one. -This feature is documented in the [Split and Merge](./split_merge.md) section. diff --git a/docs/_pages/main/entities.md b/docs/_pages/main/entities.md deleted file mode 100644 index 3ae82f49d..000000000 --- a/docs/_pages/main/entities.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Main Entities -parent: Main Features -nav_order: 2 -has_children: true ---- -# Main Entities - -The purpose is not to describe the full data model of Audiveris, but simply to introduce some -key notions that are used throughout the whole application and that the end-user needs to -understand correctly. - -We will thus speak of: -* Physical containment: Book of Sheets, -* Logical containment: Score of Pages, -* Pixels assemblies: Runs, Sections and Lags, -* Interpretations: Glyphs vs Inters, -* Relations between Inters: the Symbol Interpretation Graph (SIG). diff --git a/docs/_pages/main/glyph_inter.md b/docs/_pages/main/glyph_inter.md deleted file mode 100644 index eca9f4af3..000000000 --- a/docs/_pages/main/glyph_inter.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: default -title: Glyph vs Inter -grand_parent: Main Features -parent: Main Entities -nav_order: 4 ---- -# Glyph vs Inter - -## Glyph - -A **Glyph** is nothing more than a set of foreground (black) pixels -in a sheet binary image. - -It carries no shape. - -It is not related to a staff. -It does not even belong to a system. -The reason is there is no reliable way to assign a glyph located in the "gutter" between two systems -or two staves: does it belong to the upper or the lower system/staff? - -These restrictions on Glyph don't apply to glyph interpretations (Inter). - -## Inter - -An interpretation, or **Inter** for short, is precisely meant to formalize any reasonable -interpretation of a glyph. - -There may be several reasonable interpretations for a given glyph and, in many cases, -the OMR engine cannot immediately decide on the right interpretation among these mutually -exclusive interpretations. -This decision will then be postponed until later down in the OMR process, -when additional information (such as other Inter instances located nearby) becomes available -and helps clarify the configuration. - -As opposed to a Glyph, an Inter belongs to a system and is often related to a staff. - -It carries a shape and a grade in [0..1] range, which can be considered as the probability for the -interpretation to be a true positive. -This grade is an interpretation _intrinsic_ grade, only based on the glyph at hand in isolation -(this grade is often provided by the glyph classifier). - -Later, the Inter will generally be assigned a _contextual_ grade, based on the Inter grade -and the supporting relations with other Inter instances nearby. - -## Typical display example - - -| View | Inter over Glyph | -| --- | --- | -|![](../assets/images/glyph_inter.png) | A Treble Clef **inter** appears in dark blue
Its related **glyph** is mostly hidden behind| diff --git a/docs/_pages/main/main_window.md b/docs/_pages/main/main_window.md deleted file mode 100644 index 1166f968d..000000000 --- a/docs/_pages/main/main_window.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: default -title: Main Window -parent: Main Features -nav_order: 1 -has_children: true ---- -# Main Window - -![](../assets/images/chula_transcribed.png) - -The Audiveris main window is composed of 3 panels: - -## Sheet - -This is the large panel on the left side. -- The **Gray** tab, when available, presents the original image using gray values. -- The **Binary** tab presents the input image binarized into black and white colors. -- The **Data** tab presents the objects -([sections](), [glyphs](./glyph_inter.md#glyph) and -[inters](./glyph_inter.md#inter)) extracted from the image. -In this Data tab, the staff lines are drawn as thin lines. - -All tabs, except the Data tab, can be manually closed. -Most can be re-opened via the `Sheet` pull-down menu. - -## Boards - -The right panel is a vertical set of boards. -They provide information and editing functions. - -Only basic boards are displayed by default, others are hidden. -A right click in this column allows hiding or displaying any available board. - -## Events - -The lower left panel is a log of the main events that occurred so far. - -More details are available in the Audiveris log file -(the precise path to the log file is displayed at the top of this events panel) diff --git a/docs/_pages/main/output_formats.md b/docs/_pages/main/output_formats.md deleted file mode 100644 index 6f94758b7..000000000 --- a/docs/_pages/main/output_formats.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: default -title: Output Formats -parent: Main Features -nav_order: 8 ---- -# Output Formats - -There are 3 possibilities for output of a transcribed score: - -* Output as **OMR** file for saving and later reloading of OMR data for additional processing, -manual correction or production of other outputs. -See the [.omr format](../outputs/omr.md) section. - -* Output as **PDF** file for direct use by a musician. -It writes the resulting image into a PDF file, which is basically the content of the Picture/Binary -tab in logical mode. -See the [.pdf format](../outputs/pdf.md) section. - -* Output as **MusicXML** file for use in a score notation program. -It writes a MusicXML file with the exported score entities. -See the [.mxl format](../outputs/mxl.md) section. diff --git a/docs/_pages/main/run_section.md b/docs/_pages/main/run_section.md deleted file mode 100644 index f8850ada1..000000000 --- a/docs/_pages/main/run_section.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: default -title: Pixels assemblies -grand_parent: Main Features -parent: Main Entities -nav_order: 3 ---- -# Pixels assemblies - -The ``BINARY`` step transforms the input image into a black and white image. -From this step on, the image will contain only black (foreground) pixels on a white background. - -A (black) pixel is just a black square, of dimension 1 x 1, located at some point (x,y). - -Depending on what the engine has to process (staff lines, stems, beams, etc), -the same pixels can be viewed through one structure or another. - -## Run and RunTable - -A horizontal (or vertical) contiguous sequence of pixels of the same color is called a -horizontal (or vertical) ``Run``. -In the same alignment, such run is followed by a run of the opposite color, and so on, -until the image border is reached. - -A ``RunTable`` is a rectangular area, made of sequences of runs, all of the same orientation. -Typically, the whole binarized image can be considered, at the same time, as: -- a table of horizontal runs -- a table of vertical runs - -## Section and LAG - -It can be interesting to transitively join adjacent (black) runs of the same orientation, -according to some compatibility rules. - -Each such resulting assembly is called a ``Section``. - -Typical compatibility rules are: -- Maximum difference in run lengths -- Maximum ratio of difference in run lengths -- Maximum shift on each run end -- Void rule (no check, except adjacency) - -Sections are gathered into ``LAG``s (**L**inear **A**djacency **G**raphs). - -Just like a ``RunTable`` gathers ``Run``s of the same orientation, -a ``LAG`` gathers ``Section``s of the same orientation. - -## Sections example - -![](../assets/images/sections.png) - -The picture above is displayed, once the `GRID` step has been performed. -We select the "section" view ![](../assets/images/kjumpingcube.png) -via the {{ site.view_selections }} pull-down menu or the `F11` function key. - -Based on the maximum staff line thickness (previously determined by the `SCALE` step), -this picture combines sections from two different LAG's: -1. From the vertical LAG, all the (vertical) sections -with length greater than the maximum line thickness are displayed in pale blue. -2. From the horizontal LAG, the remaining pixels are organized in (horizontal) sections -and displayed in pale red. - -## Filament - -A ``Filament`` is a dynamic assembly of sections, long and thin, likely to represent lines. - -The engine uses: -- horizontal filaments to detect staff lines and ledgers alignments, -- vertical filaments to detect stems and legs of endings. - diff --git a/docs/_pages/menus/help.md b/docs/_pages/menus/help.md deleted file mode 100644 index ea803e9f9..000000000 --- a/docs/_pages/menus/help.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: default -title: Help menu -grand_parent: References -parent: Pull-down menus -nav_order: 9 ---- -# Help menu -{: .no_toc } - -![](../assets/images/help_menu.png) - ---- -Table of contents -{: .no_toc .text-delta } - -1. TOC -{:toc} ---- - -## Handbook - -Open this documentation (user-oriented handbook) from Audiveris program. - -## Wiki - -Open Audiveris Wiki. - -## Web Site - -Open Audiveris organization and contained repositories. - -## About - -Open an "à propos" dialog with information about Audiveris program and main external components -it depends upon (Tesseract OCR, Java, OS, machine architecture). - -![](../assets/images/about_dialog.png) diff --git a/docs/_pages/menus/plugins.md b/docs/_pages/menus/plugins.md deleted file mode 100644 index 497837c4c..000000000 --- a/docs/_pages/menus/plugins.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default -title: Plugins menu -grand_parent: References -parent: Pull-down menus -nav_order: 7 ---- -# Plugins menu - -![](../assets/images/plugins_menu.png) - -Display the registered plugins to external programs. - -See the [Plugins](../advanced/plugins.md) section. diff --git a/docs/_pages/menus/tools.md b/docs/_pages/menus/tools.md deleted file mode 100644 index 57981a3f4..000000000 --- a/docs/_pages/menus/tools.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: default -title: Tools menu -grand_parent: References -parent: Pull-down menus -nav_order: 6 ---- -# Tools menu -{: .no_toc } - -![](../assets/images/tools_menu.png) - ---- -Table of contents -{: .no_toc .text-delta } - -1. TOC -{:toc} ---- - -## Browse Global repository - -Open a dialog to verify and edit the content of the Global sample repository -(this is _the_ only repository which is used for classifier training). - -(needs `SAMPLES` topic) - -## Save Global repository - -Saves the Global sample repository to disk. - -(needs `SAMPLES` topic) - -## Browse a local repository - -Open a dialog to verify and edit a local (book) sample repository -(generally before merging it into the Global repository). - -(needs `SAMPLES` topic) - -## Train Classifier - -Open a dialog to launch, monitor and evaluate the training of the glyph classifier. - -See [Training](../advanced/training.md) section. - -(needs `SAMPLES` topic) - -## Memory - -Displays the used memory in the output window - -## Options - -Opens the options window. - -All available options are listed. -Most of them concern development options only. - -A search window allows to search for a string part in the option name or its description. - -![](../assets/images/dialog_options.png) - -For more details, refer to [Options](../advanced/options.md) section. - -## Advanced Topics - -Opens a dialog with a couple of options concerning the program development only. - -See [Advanced Topics](../advanced/topics.md) section. diff --git a/docs/_pages/outputs/README.md b/docs/_pages/outputs/README.md deleted file mode 100644 index fec2c21ad..000000000 --- a/docs/_pages/outputs/README.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default -title: Outputs -parent: References -nav_order: 7 -has_children: true ---- -# Outputs - -Output files are generally located in the dedicated subfolder of the related book. -See the [Folders](../folders/README.md) chapter. - -This chapter presents the various output formats designated by their file extension. - -A special emphasis is put on the `.omr` format, since this format governs the internal -structuring of any Audiveris project file. -Such file is also named a Book file, because there is one `.omr` project file per Book, and the -file merely represents the marshalling of Book internal data from memory to disk. diff --git a/docs/_pages/pages-tree.txt b/docs/_pages/pages-tree.txt deleted file mode 100644 index c6bf12c6a..000000000 --- a/docs/_pages/pages-tree.txt +++ /dev/null @@ -1,151 +0,0 @@ -. -├── advanced -│   ├── README.md -│   ├── cli.md -│   ├── improve_input.md -│   ├── options.md -│   ├── plugins.md -│   ├── samples.md -│   ├── topics.md -│   └── training.md -├── assets -│   └── images -├── boards -│   ├── README.md -│   ├── binarization.md -│   ├── classifier.md -│   ├── glyph.md -│   ├── inter.md -│   ├── pixel.md -│   ├── section.md -│   └── shape.md -├── folders -│   ├── README.md -│   ├── cached.md -│   ├── essential.md -│   └── standard.md -├── handbook.md -├── install -│   ├── README.md -│   ├── binaries.md -│   ├── java.md -│   ├── languages.md -│   └── sources.md -├── main -│   ├── README.md -│   ├── book_parameters.md -│   ├── book_portions.md -│   ├── book_sheet.md -│   ├── display_modes.md -│   ├── entities.md -│   ├── entity_colors.md -│   ├── glyph_inter.md -│   ├── limitations.md -│   ├── main_window.md -│   ├── output_formats.md -│   ├── pan_zoom.md -│   ├── pipeline.md -│   ├── run_section.md -│   ├── scanning.md -│   ├── score_page.md -│   ├── sheet_scale.md -│   ├── sheet_selection.md -│   ├── sheet_validity.md -│   ├── sig.md -│   ├── split_merge.md -│   └── voice_colors.md -├── menus -│   ├── README.md -│   ├── book.md -│   ├── debug.md -│   ├── file.md -│   ├── help.md -│   ├── plugins.md -│   ├── popup.md -│   ├── sheet.md -│   ├── step.md -│   ├── tools.md -│   └── view.md -├── outputs -│   ├── README.md -│   ├── log.md -│   ├── mxl.md -│   ├── omr.md -│   ├── pdf.md -│   └── zip.md -├── pages-tree.txt -├── quick -│   ├── README.md -│   ├── export.md -│   ├── launch.md -│   ├── load.md -│   ├── play.md -│   └── transcribe.md -├── references.md -├── specific -│   ├── README.md -│   ├── bar_repeat.md -│   ├── drums.md -│   ├── fingering_plucking.md -│   ├── fonts.md -│   ├── logical_parts.md -│   ├── multi_rest.md -│   ├── octave_shift.md -│   ├── snippets.md -│   ├── tablature.md -│   └── tremolo.md -├── steps -│   ├── beams.md -│   ├── binary.md -│   ├── chords.md -│   ├── cue_beams.md -│   ├── curves.md -│   ├── grid.md -│   ├── headers.md -│   ├── heads.md -│   ├── ledgers.md -│   ├── links.md -│   ├── load.md -│   ├── measures.md -│   ├── page.md -│   ├── reduction.md -│   ├── rhythms.md -│   ├── scale.md -│   ├── stem_seeds.md -│   ├── stems.md -│   ├── symbols.md -│   └── texts.md -├── ui.md -├── ui_examples -│   ├── README.md -│   ├── eyes -│   │   ├── README.md -│   └── trinitas -│   ├── README.md -├── ui_foundations -│   ├── README.md -│   ├── inspection.md -│   ├── principles.md -│   └── selection.md -├── ui_tools -│   ├── README.md -│   ├── add_inter.md -│   ├── add_relation.md -│   ├── chords.md -│   ├── edit_inter.md -│   ├── inter_editor.md -│   ├── key.md -│   ├── measure.md -│   ├── octave_shift.md -│   ├── part.md -│   ├── remove_inter.md -│   ├── remove_relation.md -│   ├── shared_head.md -│   ├── staff_editor.md -│   ├── system.md -│   ├── text.md -│   ├── time.md -│   └── tips.md -└── updates.md - -17 directories, 553 files diff --git a/docs/_pages/quick/export.md b/docs/_pages/quick/export.md deleted file mode 100644 index 2b5db454a..000000000 --- a/docs/_pages/quick/export.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: default -title: Export -nav_order: 4 -parent: Quick Tour ---- -# Export - -From the input image, Audiveris OMR engine has gradually built specific information that we -collectively refer to as "_OMR data_". - -In the advanced chapter, we describe more thoroughly how this OMR data is organized, can be -persisted on disk (in a `.omr` file) and directly reused by Audiveris or other external programs. - -Right now, we are focused only on how to feed a music sequencer with music data it can easily import. -And as of this writing, this is achieved by going through MusicXML-formatted data. - -We thus have to export OMR data as MusicXML data. -This can be done via the pull-down menu {{ site.book_export }}: - -![](../assets/images/book_export.png) - -From our "chula" example, this command produces a file named `chula.mxl` -(the `.mxl` extension indicates a compressed MusicXML format). - -The default policy is to put all output files related to a given input file into one specific sub-folder -(the "book folder"), named according to the input file name. -In our concrete example, the book folder ("chula") will contain the export file ("chula.mxl"). - -The default base folder location of all "book folders" depends on the operating system. -For Windows OS, the default base folder is the "Audiveris" sub-folder of the user's Documents folder. - -More details about available output policies and the default base folder are available in the -[Standard folders](../folders/standard.md) chapter. - -Note that this export, from OMR to MusicXML, is _lossy_, since a large amount of OMR -information can't go into MusicXML. -A `.omr` file can always be used to regenerate the `.mxl` export, but the reverse is not true. - -{: .note} -A good advice is to keep these `.omr` files --- unless we are running out of disk space! :-) -- -because they represent a valuable source of OMR information, -suitable for training newer versions of Audiveris (more on this later). diff --git a/docs/_pages/quick/launch.md b/docs/_pages/quick/launch.md deleted file mode 100644 index 447e772ef..000000000 --- a/docs/_pages/quick/launch.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: default -title: Launch -nav_order: 1 -parent: Quick Tour ---- -# Launch - -For the sake of simplicity, let's assume we are using Windows OS and have installed Audiveris via -the provided Windows Installer available in the Audiveris -[Releases area](https://github.com/Audiveris/audiveris/releases). -More details are available in [Installing binaries](../install/binaries.md). - -In this case, we get into the Windows Start Menu, by pressing the Windows logo key on our keyboard -or by clicking on the Start icon (left end of the taskbar). -In this menu, we move down to Audiveris folder and select the Audiveris executable. - -If we don't use binary installation, we should refer to [Building from sources](../install/sources.md) -to build and then launch the software. diff --git a/docs/_pages/reference/README.md b/docs/_pages/reference/README.md new file mode 100644 index 000000000..dc46a9dd7 --- /dev/null +++ b/docs/_pages/reference/README.md @@ -0,0 +1,28 @@ +--- +layout: default +title: Reference +nav_order: 3 +has_toc: false +--- + +# Reference + +This ``Reference`` chapter presents a few key topics that are not mandatory for a first reading. + +Each topic is meant to be exhaustive and often provides pointers back to +more specific and detailed sections in the handbook presentation. + +--- +Table of contents +{: .text-epsilon } + +| Topic | Content | +| :--- | :--- | +| [Limitations](./limitations.md) | The known limitations of Audiveris | +| [Editors](./editors.md) | All interactive editors per entity kind | +| [Pull-down menus](./menus/README.md) | All the pull-down menus | +| [Pop-up menu](./menus/popup.md) | The contextual pop-up menu | +| [Boards](./boards/README.md) | All the UI boards available in right column | +| [Folders](./folders/README.md) | The role and content of each folder,
Its location according to the operating system | +| [Outputs](./outputs/README.md) | All kinds of output files and formats | +| [Updates](./updates.md) | The history of major software updates | diff --git a/docs/_pages/boards/README.md b/docs/_pages/reference/boards/README.md similarity index 92% rename from docs/_pages/boards/README.md rename to docs/_pages/reference/boards/README.md index 6f242e3bf..968e64b2c 100644 --- a/docs/_pages/boards/README.md +++ b/docs/_pages/reference/boards/README.md @@ -1,9 +1,8 @@ --- layout: default title: Boards -parent: References +parent: Reference nav_order: 5 -has_children: true --- # Boards diff --git a/docs/_pages/reference/boards/binarization.md b/docs/_pages/reference/boards/binarization.md new file mode 100644 index 000000000..587927ac3 --- /dev/null +++ b/docs/_pages/reference/boards/binarization.md @@ -0,0 +1,86 @@ +--- +layout: default +title: Binarization board +parent: Boards +nav_order: 2 +--- +# Binarization board +{: .no_toc :} + +In release 5.4, the new binarization board provides the tools to manually +select the binarization filter (either global or adaptive), adjust its settings +and immediately see their impact on the sheet image. + +This new board is available only in the Binary tab, and is selected by default. + +--- +Table of contents +{: .text-epsilon } +1. TOC +{:toc} +--- + +## Board in action + +Let us take a gray image as input, here seen from the Gray tab: + +![](../../assets/images/binarization_gray.png) + + +### Default adaptive filter + +In the Binary tab on the same image, we can see both the Binarization board and the Binary board. + +The sheet view displays the result of applying the default binarization filter. +In this specific example, we can observe that many lines portions are missing: + +![](../../assets/images/binarization_adaptive.png) + +In the Binarization board, we can: +1. Select the filtering mode -- either adaptive (the default) or global +2. Modify the settings of the filter + - The threshold value for the global filter + - The coefficients for mean and standard deviation values for the adaptive filter, + from which the local threshold values will be computed + +For the vast majority of input images, the adaptive filter gives the best results. + +But for the image used in this example, we can try to modify the settings of the adaptive filter, +the results will never be OK. +The reason is the staff lines in this particular image use a pale gray color. +A global filter might better work. + +### Default global filter + +Here, we have switched to the global filter, using its default threshold value (140). + +The results are even worse, all the staff lines have disappeared: + +![](../../assets/images/binarization_global_nok.png) + +### Tuned global filter + +Here, we have raised the threshold of the global filter from 140 to 225. + +The binarized image is now OK for the next processing steps: + +![](../../assets/images/binarization_global_ok.png) + +## Case of a multi-sheet book + +As we adjust the binarization filter and settings, we can observe the results on the current sheet. + +If the sheet is part of a book containing several sheets, we have the ability to extend the +binarization parameters to the entire book. + +In such multi-sheet book, the binarization board displays an additional line, +meant for the book level: + +![](../../assets/images/binarization_multisheet.png) + +The button `Apply to whole book` extends the scope of the binarization parameters to the whole book. +- By default, this applies to all sheets is the book, +**except** for the sheets which have specific binarization parameters. +- However, if the option `Overwrite sheets?` is ticked, this extension will remove +any specific binarization parameter defined at a sheet level, +thus making **all** sheets inherit from the same (book) parameters. diff --git a/docs/_pages/reference/boards/binary.md b/docs/_pages/reference/boards/binary.md new file mode 100644 index 000000000..91b568e7d --- /dev/null +++ b/docs/_pages/reference/boards/binary.md @@ -0,0 +1,44 @@ +--- +layout: default +title: Binary board +parent: Boards +nav_order: 3 +--- +# Binary board +{: .no_toc :} + +This board, together with the [Pixel board](./pixel.md), is meant to visualize the results +of the binarization algorithm documented in the [BINARY step](../../explanation/steps/binary.md). + +The board is displayed by default in the Gray tab and in the Binary tab. + +- The *pixel* board displays the selected _location_ (x, y). +It can also display the _gray level_ at this location when this information is available. +- The *binary pixel* board always displays the _threshold_ value and the resulting _binary color_. + +## Threshold +This field displays the threshold value to be compared with the gray level at the selected location. + +## Color +This field displays the resulting color of binarization at the selected location: +- *Black* if the pixel value is less than, or equal to, the threshold value, +- *White* otherwise. + +## Board for the Global filter + +![](../../assets/images/binary_global.png) + +For the global filter, the threshold value is constant for all pixels in the image. +Nota: this example uses a global value (225) much higher than the default global value (140). + +## Board for the Adaptive filter +![](../../assets/images/binary_adaptive.png) + +For the adaptive filter, the threshold value is computed for each location, +based on the mean and the standard deviation of all gray values read around the selected location. + +### Observed mean +This field displays the average value observed in location vicinity. + +### Observed std dev +This field displays the standard deviation value observed in location vicinity. \ No newline at end of file diff --git a/docs/_pages/reference/boards/classifier.md b/docs/_pages/reference/boards/classifier.md new file mode 100644 index 000000000..3baf73e6c --- /dev/null +++ b/docs/_pages/reference/boards/classifier.md @@ -0,0 +1,19 @@ +--- +layout: default +title: Classifier board +parent: Boards +nav_order: 8 +--- +# Basic Classifier board + +![](../../assets/images/basic_classifier_board.png) + +In current Audiveris version, the basic classifier is a Glyph classifier. + +If a glyph is selected by whatever means, it is automatically submitted to the classifier +and the top 5 shapes are displayed as active buttons, ordered by decreasing grade value. + +Notice that the sum of grade values may exceed 1.0 (because no SoftMax filter is applied). + +A simple click on a shape button assigns the related shape to the glyph at hand. +(To be strictly correct, an `Inter` instance is created with proper shape and glyph). diff --git a/docs/_pages/boards/glyph.md b/docs/_pages/reference/boards/glyph.md similarity index 85% rename from docs/_pages/boards/glyph.md rename to docs/_pages/reference/boards/glyph.md index 8b58ab7f8..9336ef5d0 100644 --- a/docs/_pages/boards/glyph.md +++ b/docs/_pages/reference/boards/glyph.md @@ -1,19 +1,17 @@ --- layout: default title: Glyph board -grand_parent: References parent: Boards -nav_order: 4 +nav_order: 5 --- # Glyph board {: .no_toc :} -![](../assets/images/glyph_board.png) +![](../../assets/images/glyph_board.png) --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- diff --git a/docs/_pages/boards/inter.md b/docs/_pages/reference/boards/inter.md similarity index 74% rename from docs/_pages/boards/inter.md rename to docs/_pages/reference/boards/inter.md index e3154a5b6..93454a82c 100644 --- a/docs/_pages/boards/inter.md +++ b/docs/_pages/reference/boards/inter.md @@ -1,19 +1,17 @@ --- layout: default title: Inter board -grand_parent: References parent: Boards nav_order: 5 --- -# Inter board +# `Inter` board {: .no_toc :} -![](../assets/images/inter_board.png) +![](../../assets/images/inter_board.png) --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -33,7 +31,7 @@ Integer ID of entity. ## Grade (output) -The intrinsic grade value assigned to the Inter instance. +The intrinsic grade value assigned to the `Inter` instance. Followed by the computed contextual grade, if any. ## Deassign @@ -42,7 +40,7 @@ Button available to manually delete this interpretation. ## (shape icon) (output) -If available, the icon related to the Inter shape. +If available, the icon related to the `Inter` shape. ## Edit (input/output) @@ -53,7 +51,7 @@ Button to navigate to the ensemble if any this entity is part of. ## (shape name) (output) -Name of the shape assigned to the Inter instance. +Name of the shape assigned to the `Inter` instance. ## (word) (input/output) @@ -68,13 +66,13 @@ Modifications can be performed at word level only. (input/output) Role of the sentence (such as Direction, PartName, Rights, Lyrics, ...). -![](../assets/images/role_board.png) +![](../../assets/images/role_board.png) -Nota: `Lyrics` is such a specific sentence role that it cannot be changed in an existing Inter. +Nota: `Lyrics` is such a specific sentence role that it cannot be changed in an existing `Inter`. Instead, a new (lyrics) inter is created automatically. ## (lyrics) -![](../assets/images/lyrics_data.png) +![](../../assets/images/lyrics_data.png) For a lyrics sentence, the inter board displays additional data: * Voice number, diff --git a/docs/_pages/boards/pixel.md b/docs/_pages/reference/boards/pixel.md similarity index 85% rename from docs/_pages/boards/pixel.md rename to docs/_pages/reference/boards/pixel.md index 41599d7e4..57dab7ed9 100644 --- a/docs/_pages/boards/pixel.md +++ b/docs/_pages/reference/boards/pixel.md @@ -1,22 +1,20 @@ --- layout: default title: Pixel board -grand_parent: References parent: Boards nav_order: 1 --- # Pixel board {: .no_toc } -![](../assets/images/pixel_board.png) +![](../../assets/images/pixel_board.png) The pixel board handles the location within the sheet image, as well as the pixel gray value at the (x,y) location. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- diff --git a/docs/_pages/boards/section.md b/docs/_pages/reference/boards/section.md similarity index 84% rename from docs/_pages/boards/section.md rename to docs/_pages/reference/boards/section.md index c9659e3e6..ccc01d14c 100644 --- a/docs/_pages/boards/section.md +++ b/docs/_pages/reference/boards/section.md @@ -1,22 +1,20 @@ --- layout: default title: Section board -grand_parent: References parent: Boards -nav_order: 3 +nav_order: 4 --- # Section board {: .no_toc :} -![](../assets/images/section_board.png) +![](../../assets/images/section_board.png) There are two different section boards, one for sections with horizontal runs, one for sections with vertical runs. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- diff --git a/docs/_pages/reference/boards/shape.md b/docs/_pages/reference/boards/shape.md new file mode 100644 index 000000000..8dfb46c03 --- /dev/null +++ b/docs/_pages/reference/boards/shape.md @@ -0,0 +1,90 @@ +--- +layout: default +title: Shape board +parent: Boards +nav_order: 7 +--- +# Shape board +{: .no_toc :} + +This board allows to handle about 200 different shapes. +To this end, the shapes are organized into some 20 shape-sets, +and each shape-set is presented in a dedicated palette. + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Catalog of all shape-sets + +![](../../assets/images/shape_board.png) + +The shape board initially displays the catalog of all shape-sets. + +In the picture above, we can see: +- Accidentals, Articulations, Attributes, Barlines, BeamsAndTuplets, + Clefs, Dynamics, Flags, Holds, +- Keys, HeadsAndDot, Markers, Ornaments, Rests, Times, Digits, + Pluckings, Romans, +- Texts, Physicals. + +From this catalog, displayed with a dark background, no action like a drag n' drop can be launched. +The purpose of the catalog is only to choose a shape-set. + +## One shape-set palette + +Clicking on a shape-set button replaces the global catalog by the selected shape-set, +presented in a dedicated palette. +For example, clicking on the ``HeadsAndDot`` button will display the ``HeadsAndDot`` palette, +whose content adapts to the book at hand: + +Here is a simple configuration + +![](../../assets/images/HeadsAndDot_palette.png) + +And here is a more complex configuration for drums notation. +See the [Drums](../../guides/specific/drums.md) chapter for further details. + +![](../../assets/images/font_ophelia_heads.png) + +From any shape palette we can: +* Assign a shape to the current glyph, via a double-click on the proper shape button; +* Initiate a drag & drop action, by pressing the proper shape button and dragging it +to the desired location in sheet. + +To leave the current palette and return to the global shape-set catalog, +we press the `ESCAPE` key or click on the ``up`` (▲) button. + +## Recently used shapes +The shapes most recently used (by whatever means) always appear at the top of the shape board, +making them easily available for a direct reuse. + +![](../../assets/images/shape_cache.png) + +## Palettes contents + +| Palette name | Palette content | +| :--- | :--- | +| Accidentals | ![](../../assets/images/Accidentals_palette.png) | +| Articulations | ![](../../assets/images/Articulations_palette.png) | +| Attributes | ![](../../assets/images/Attributes_palette.png) | +| Barlines | ![](../../assets/images/Barlines_palette.png) | +| BeamsEtc | ![](../../assets/images/BeamsEtc_palette.png) | +| ClefsAndShifts | ![](../../assets/images/ClefsAndShifts_palette.png) | +| Dynamics | ![](../../assets/images/Dynamics_palette.png) | +| Flags | ![](../../assets/images/Flags_palette.png) | +| Holds | ![](../../assets/images/Holds_palette.png) | +| Keys | ![](../../assets/images/Keys_palette.png) | +| HeadsAndDot | ![](../../assets/images/HeadsAndDot_palette.png) | +| Markers | ![](../../assets/images/Markers_palette.png) | +| GraceAndOrnaments | ![](../../assets/images/GraceAndOrnaments_palette.png) | +| Rests | ![](../../assets/images/Rests_palette.png) | +| Times | ![](../../assets/images/Times_palette.png) | +| Digits | ![](../../assets/images/Digits_palette.png) | +| Pluckings | ![](../../assets/images/Pluckings_palette.png) | +| Romans | ![](../../assets/images/Romans_palette.png) | +| Texts | ![](../../assets/images/Texts_palette.png) | +| Physicals | ![](../../assets/images/Physicals_palette.png) | diff --git a/docs/_pages/ui_tools/inter_editors.md b/docs/_pages/reference/editors.md similarity index 80% rename from docs/_pages/ui_tools/inter_editors.md rename to docs/_pages/reference/editors.md index 3e15216eb..03cc62f8b 100644 --- a/docs/_pages/ui_tools/inter_editors.md +++ b/docs/_pages/reference/editors.md @@ -1,38 +1,37 @@ --- layout: default -title: Inter Editors -parent: References +title: Editors +parent: Reference nav_order: 2 --- -# Inter Editors +# Editors {: .no_toc } -This reference chapter gathers the description of all Inter editors variants, -especially regarding the role and potential move of its handles. -It also presents the two variants (Lines and Global) of Staff editor, -even though -- strictly speaking -- a Staff is not an Inter. +This reference chapter gathers the description of all *`Inter`* editors variants, +especially regarding the role and potential move of its handles. ---- -Table of contents (editors are presented in alphabetical order) -{: .no_toc .text-delta } +It also presents the two variants (Lines and Global) of the *Staff* editor. +--- +Table of contents (in alphabetical order) +{: .no_toc .text-epsilon } 1. TOC {:toc} --- -## Default editor +## Default `Inter` editor -The default editor applies to every Inter class, for example the augmentation dot class here below, -unless a more specific editor is defined for the Inter class at hand. +The default editor applies to every `Inter` class, for example the augmentation dot class here below, +unless a more specific editor is defined for the `Inter` class at hand. ![](../assets/images/aug_dot_edited.png) -The default editor provides only one handle located at Inter center. -This very basic editor allows to move the Inter in any direction, but provides no way to resize it. +The default editor provides only one handle located at `Inter` center. +This very basic editor allows to move the `Inter` in any direction, but provides no way to resize it. The involved relations if any -- like the "_Augmentation_" relation between the note head and the -augmentation dot in this example -- are dynamically updated while the Inter is being moved. +augmentation dot in this example -- are dynamically updated while the `Inter` is being moved. ![](../assets/images/aug_dot_edited_2.png) Here, we have moved the augmentation dot one line below and the relation is @@ -67,7 +66,7 @@ Shifting or resizing a brace is meant for small adjustments only. If you want to extend or reduce the number of staves embraced by a Brace instance (which is a rather heavy operation that impacts the definition of parts within a system), this must be done **explicitly** by adding or removing a manual Brace. -Please refer to [Part merge](./part.md) section for such Brace usage. +Please refer to [Part merge](../guides/ui/ui_tools/part.md) section for such Brace usage. ## Beam editor @@ -121,7 +120,7 @@ then the editor can shift the **whole key** horizontally. ![](../assets/images/multiple_rest_edited.png) -See details in [Multi-measure rest section](../specific/multi_rest.md#editing) +See details in [Multi-measure rest section](../guides/specific/multi_rest.md#editing) ## Octave shift editor @@ -133,7 +132,7 @@ Multiple-line editor: ![](../assets/images/octave_shift_multiple_edited.png) -See details in [Octave Shift section](../specific/octave_shift.md#editing) +See details in [Octave Shift section](../guides/specific/octave_shift.md#editing) ## Slur editor ![](../assets/images/slur_edited.png) @@ -151,7 +150,7 @@ This is the most complex editor: All the various lines handles in staff are available for individual vertical dragging. -See Staff Editing [Lines mode](staff_editor.md#lines-mode). +See Staff Editing [Lines mode](../guides/ui/ui_tools/staff_editing.md#lines-mode). ## Staff global editor @@ -164,7 +163,7 @@ Handles are located on the staff middle line but they work for all lines as a wh * Non-side handles can be dragged only vertically. -See Staff Editing [Global mode](staff_editor.md#global-mode). +See Staff Editing [Global mode](../guides/ui/ui_tools/staff_editing.md#global-mode). ## Stem/Arpeggiato/Connector editor diff --git a/docs/_pages/folders/README.md b/docs/_pages/reference/folders/README.md similarity index 94% rename from docs/_pages/folders/README.md rename to docs/_pages/reference/folders/README.md index 0a86a889f..25512e0cb 100644 --- a/docs/_pages/folders/README.md +++ b/docs/_pages/reference/folders/README.md @@ -1,9 +1,8 @@ --- layout: default title: Folders -parent: References +parent: Reference nav_order: 6 -has_children: true --- # Folders diff --git a/docs/_pages/folders/cached.md b/docs/_pages/reference/folders/cached.md similarity index 70% rename from docs/_pages/folders/cached.md rename to docs/_pages/reference/folders/cached.md index 9e695bd44..e3cae3be3 100644 --- a/docs/_pages/folders/cached.md +++ b/docs/_pages/reference/folders/cached.md @@ -1,7 +1,6 @@ --- layout: default title: Cached folders -grand_parent: References parent: Folders nav_order: 3 --- @@ -10,8 +9,7 @@ nav_order: 3 --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -25,16 +23,17 @@ These files are **not** meant to be edited, period! ## GUI folder These are opaque files used for GUI lifecycle (notably last position and size of each window) -- mainFrame.session.xml -- optionsFrame.session.xml -- aboutDialog.session.xml +- AudiverisMainFrame.session.xml +- LanguagesFrame.session.xml +- LogicalPartsEditor.session.xml - etc... -| OS | GUI folder | +| OS | `GUI folder` | | --- | --- | | **Windows** | %APPDATA%\\AudiverisLtd\\audiveris | -| **Linux** | ~/audiveris | -| **MacOS** | TODO: !!! **I DON'T KNOW** !!!| +| **Linux** | $HOME/.audiveris | +| **Flatpak** | $HOME/.audiveris | +| **macOS** | TODO: !!! **I DON'T KNOW** !!!| ## Log folder @@ -46,7 +45,8 @@ that covers all log events of the session. | **Windows** | %APPDATA%\\AudiverisLtd\\audiveris\\log | | **Linux** (choice #1)| $XDG_CACHE_HOME/AudiverisLtd/audiveris/log | | **Linux** (choice #2)| $HOME/.cache/AudiverisLtd/audiveris/log | -| **MacOS** | $HOME/Library/AudiverisLtd/audiveris/log | +| **Flatpak** | $HOME/.var/app/org.audiveris.audiveris/cache/log | +| **macOS** | $HOME/Library/AudiverisLtd/audiveris/log | ## Temp folder diff --git a/docs/_pages/folders/essential.md b/docs/_pages/reference/folders/essential.md similarity index 55% rename from docs/_pages/folders/essential.md rename to docs/_pages/reference/folders/essential.md index 36bf9b793..23b49d7fc 100644 --- a/docs/_pages/folders/essential.md +++ b/docs/_pages/reference/folders/essential.md @@ -1,48 +1,52 @@ --- layout: default title: Essential folders -grand_parent: References parent: Folders nav_order: 2 --- # Essential folders {: .no_toc :} +This is where Audiveris stores user-specific essential parameters: + +You can create or modify these files, provided you are an advanced user and +know what you are doing. + --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- -## Purpose - -This is where Audiveris stores user-specific essential parameters: - -Under Windows notably, these are _hidden locations_ by default. -Please do not create or modify these files, unless you are an advanced user and -know what you are doing. - ## Config folder Audiveris defines a `CONFIG_FOLDER` for configuration files: | File name | Description | | :--- | :--- | -| **run.properties** | User-modified application options | +| **run.properties** | User-modified application constants | | **logback.xml** | Logging configuration | -| **plugins.xml** | Definition of plugins to external programs | +| **plugins.xml** | Definition of plugins to external programs
See the [Plugins](../../guides/advanced/plugins.md) section. | | **user-actions.xml** | Additional GUI actions | -Precise location of `CONFIG_FOLDER` depends on OS environment: +The precise location of `CONFIG_FOLDER` depends on OS environment: | OS | `CONFIG_FOLDER` | | :--- | :--- | | **Windows** | %APPDATA%\\AudiverisLtd\\audiveris\\config | | **Linux** (choice #1)| $XDG_CONFIG_HOME/AudiverisLtd/audiveris | | **Linux** (choice #2)| $HOME/.config/AudiverisLtd/audiveris | -| **MacOS** | $HOME/Library/Application Support/AudiverisLtd/audiveris | +| **Flatpak** | $HOME/.var/app/org.audiveris.audiveris/config | +| **macOS** | $HOME/Library/Application Support/AudiverisLtd/audiveris | + +## Tessdata folder + +Starting with 5.4 release, the language files needed by Tesseract OCR software, +are hosted in the `tessdata` sub-folder of `CONFIG_FOLDER`. + +To populate this `tessdata` folder, the interactive user can simply use the +{{ site.tools_languages}} pull-down menu. ## Train folder @@ -51,7 +55,7 @@ material and trained model to override default Audiveris model: | File name | Description | | :--- | :--- | -| **basic-classifier.zip** | Trained model and norms for glyph classifier | +| **basic-classifier.zip** | Trained model and norms for the glyph classifier | | **samples.zip** | Global repository of training samples | | **images.zip** | Background sheet images of training samples | diff --git a/docs/_pages/reference/folders/standard.md b/docs/_pages/reference/folders/standard.md new file mode 100644 index 000000000..605c74206 --- /dev/null +++ b/docs/_pages/reference/folders/standard.md @@ -0,0 +1,82 @@ +--- +layout: default +title: Standard folders +parent: Folders +nav_order: 1 +--- + +# Standard folders +{: .no_toc } +{: .d-inline-block } +changed in 5.4 +{: .label .label-green} + +This is where Audiveris stores all score outputs, such as the `.omr` project +files, the `.pdf` printouts, the `.mxl` MusicXML files, etc. + +Of course, we always have the ability to interactively store output +by using the commands that prompt for a target location, like: +- {{ site.book_print_as}} +- {{ site.book_export_as}} +- {{ site.book_save_as}} + +Also, if we load an existing `.omr` file, perhaps to further modify it, +it will be saved by default to the same location it was loaded from. + +Now, if we are processing some input file, say `foo.pdf`, the question is: +where will its output files (`foo.omr`, `foo-print.pdf`, `foo.mxl`, ...) be stored *by default*? + +The target locations are presented in the following sections, by decreasing priority. + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Command line option + +The CLI option `-output `, if present, defines the target folder for every output. + +For instance, the transcription of our `foo.pdf` input will be stored by default as `/foo.mxl` + +This specific CLI option overrides the general `Preferences` described in the sections below. + +## Preferences dialog + +The [Preferences](../../guides/main/preferences.md) dialog is accessible via {{ site.tools_preferences }}. + +### Input sibling + +The `Preferences` dialog offers an option named `Input sibling`. + +When this option is set, any output is stored next to its input. + +For instance, the transcription of `/some/path/to/foo.pdf` will be stored as `/some/path/to/foo.mxl` +(assuming the folder `/some/path/to/` is writable). + +### Browse + +If the `Input sibling` option is OFF, the `Browse` button allows to select an output folder. + +For instance, if we have selected the output folder `/my/folder/`, +the transcription of `/some/path/to/foo.pdf` will be stored as `/my/folder/foo.mxl`. + +### Separate folders + +If the `Input sibling` option is OFF, the `Separate folders` option allows to gather all the +outputs of an input file into a separate folder named according to the input radix. + +For instance, still using the `/some/path/to/foo.pdf` input, the various outputs will be gathered +into the specific folder `/my/folder/foo/`, thus resulting in something like: + +``` + my/folder/ + ├── foo/ + │   ├── foo.omr + │   ├── foo.mxl + │   └── foo-samples.zip + ├── ... + ... +``` \ No newline at end of file diff --git a/docs/_pages/main/limitations.md b/docs/_pages/reference/limitations.md similarity index 90% rename from docs/_pages/main/limitations.md rename to docs/_pages/reference/limitations.md index a47bd80b4..7424d5544 100644 --- a/docs/_pages/main/limitations.md +++ b/docs/_pages/reference/limitations.md @@ -1,8 +1,8 @@ --- layout: default title: Limitations -parent: Main Features -nav_order: 9 +parent: Reference +nav_order: 8 --- # Limitations {: .no_toc } @@ -16,13 +16,10 @@ Apart from these cases, you can file a bug report or a request for enhancement o [https://github.com/Audiveris/audiveris/issues](https://github.com/Audiveris/audiveris/issues). --- - Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} - --- ## Natural signs in key signature @@ -39,7 +36,7 @@ the simple presence of natural signs will likely impede correct key recognition. In this case, we will have to manually enter the correct key (without the naturals). Since 5.3, we can manually insert a natural-only key signature, a kind of "cancel key". -See this possibility detailed in the [Naturals section](../ui_tools/key.md#naturals). +See this capability detailed in the [Naturals section](../guides/ui/ui_tools/key.md#naturals). ## Key signature change @@ -85,7 +82,7 @@ As a workaround, we can manually replace them by number (``#``) and lowercase `` But the real solution should come from the training of Tesseract OCR on these embedded alteration signs. -See further description in the [Text Chord Name](../ui_tools/text.md#chord-name) section. +See further description in the [Text Chord Name](../guides/ui//ui_tools/text.md#chord-name) section. ## Tuplets diff --git a/docs/_pages/menus/README.md b/docs/_pages/reference/menus/README.md similarity index 54% rename from docs/_pages/menus/README.md rename to docs/_pages/reference/menus/README.md index d796cf67e..343bf1fea 100644 --- a/docs/_pages/menus/README.md +++ b/docs/_pages/reference/menus/README.md @@ -1,15 +1,14 @@ --- layout: default -title: Pull-down menus -parent: References +title: Menus +parent: Reference nav_order: 3 -has_children: true --- -# Pull-down menus +# Menus -This chapter simply describes all Audiveris pull-down menus. +This chapter simply describes all Audiveris pull-down and popup menus. Since this chapter if meant for reference, each menu is described in its full extent, thus including advanced topics if any. To be visible and callable, advanced topics must be explicitly selected via the -[Advanced Topics](../advanced/topics.md) dialog. +[Advanced Topics](../../guides/advanced/preferences.md#advanced-topics) dialog. diff --git a/docs/_pages/menus/book.md b/docs/_pages/reference/menus/book.md similarity index 64% rename from docs/_pages/menus/book.md rename to docs/_pages/reference/menus/book.md index 52cb14cde..f522c19a9 100644 --- a/docs/_pages/menus/book.md +++ b/docs/_pages/reference/menus/book.md @@ -1,65 +1,63 @@ --- layout: default title: Book menu -grand_parent: References -parent: Pull-down menus +parent: Menus nav_order: 2 --- # Book menu {: .no_toc } -![](../assets/images/book_menu.png) +![](../../assets/images/book_menu.png) A book is a collection of one or more sheets, each with its current state of transcription. It can be saved and reloaded at any time during a processing session. -As opposed to [Loading an image ](../quick/load.md) which restarts from the initial image, +As opposed to [Loading an image ](../../tutorials/quick/load.md) which restarts from the initial image, loading a saved book allows to resume processing from the last step saved. This is especially useful for processing books with many sheets. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- -## Recent Books +## Recent books Open a list of recently saved books. After selection, the book is opened in the state it was saved. -## Most recent Book +## Most recent book Open the book most recently closed. -## Open Books +## Open books Open a dialog box allowing to select a book that has been saved before. -## Split and Merge +## Split and merge Open a dialog to select and combine inputs from different sources (books, image files). -See [Split and Merge](../main/split_merge.md) section. +See [Split and merge](../../guides/main/book_portions/split_merge.md) section. -## Set Book Parameters +## Set book parameters Modify parameters for transcription, at global level, book level and sheets level. -See [Book parameters](../main/book_parameters.md). +See [Book parameters](../../guides/main/book_parameters.md). -## Reset Book to Gray +## Reset book to gray Reset all sheets of a book to the initial state, as if it were just loaded as a plain image. -## Reset Book to Binary +## Reset book to binary -Same as `Reset Book to Gray` above, except that the initial processing of the images +Same as `Reset book to bray` above, except that the initial processing of the images from gray-scale to B&W image is kept. -## Transcribe Book +## Transcribe book Start the transcription of all sheets of the book. @@ -73,11 +71,11 @@ Stop the current book transcription at the next step end. Stop is achieved in a civilized manner, no data is corrupted. If desired, the processing can be relaunched manually. -## Rebuild Scores +## Rebuild scores Force the rebuilding of scores, out of the processed sheets. -## Swap Book Sheets +## Swap book sheets Swap to disk all the sheets of current book (except the current sheet). @@ -88,71 +86,64 @@ When needed, a swapped sheet is transparently reloaded. Select some sheets out of the current book, and limit processing to these sheets. -See [Sheets Selection](../main/sheet_selection.md) section. +See [Sheets Selection](../../guides/main/book_portions/sheet_selection.md) section. -## Print Book +## Print book Save the transcribed book in PDF format, so that it can be printed or saved for further purposes. -The name of the output file is derived from the book name. -By default, the file is saved into book folder, a (newly created) subdirectory of the base output directory. -But we can modify this policy. +The name of the output file is derived from the book name. +For instance, the printing of a `foo.pdf` input file will result in a `foo-print.pdf` file. -## Print Book as +## Print book as Same as above, except that we can define the file name and the directory where the file is saved. -## Export Book +## Export book Export the transcribed score as a MusicXML `.mxl` file for exchange with a notation program. -See [Outputs Formats](../main/output_formats.md). +See [Outputs Formats](../../reference/outputs/README.md#output-formats). -By default, the file is saved into book folder, a (newly created) subdirectory of the base output directory. -But we can modify this policy. - -## Export Book as +## Export book as Same as above except that we can define the file name and the directory where the file is saved. -## Sample Book Symbols +## Sample book symbols Populate the book sample repository with samples derived from relevant inters of all book sheets. -(needs `SAMPLES` topic, see [Samples section](../advanced/samples.md)) +(needs the `SAMPLES` topic, see [Samples section](../../guides/advanced/samples.md)) -## Browse Book Repository +## Browse book repository Open a window to browse, check and filter the samples of book repository. -(needs `SAMPLES` topic, see [Samples section](../advanced/samples.md)) +(needs the `SAMPLES` topic, see [Samples section](../../guides/advanced/samples.md)) -## Save Book Repository +## Save book repository -Save book sample repository to disk into book folder. +Save book sample repository to disk. -(needs `SAMPLES` topic, see [Samples section](../advanced/samples.md)) +(needs the `SAMPLES` topic, see [Samples section](../../guides/advanced/samples.md)) -## Annotate Book Symbols +## Annotate book symbols -Populate a Zip archive with images and symbol annotations derived from book Inter instances. +Populate a Zip archive with images and symbol annotations derived from book `Inter` instances. These annotations are meant to populate a dataset for training the coming Audiveris 6.x new classifiers (Page and/or Patch). (needs `ANNOTATIONS` topic) -## Save Book +## Save book Save the collection of all book sheets with the current state of transcription. -By default, the file is saved into book folder, a (newly created) subdirectory of the base output directory. -But we can modify this policy. - -## Save Book as +## Save book as Same as above except that we can define the file name and the directory where the file is saved. -## Close Book +## Close book Close the current book and releases all its resources. diff --git a/docs/_pages/menus/debug.md b/docs/_pages/reference/menus/debug.md similarity index 75% rename from docs/_pages/menus/debug.md rename to docs/_pages/reference/menus/debug.md index fd37059f7..0a02730b1 100644 --- a/docs/_pages/menus/debug.md +++ b/docs/_pages/reference/menus/debug.md @@ -1,33 +1,31 @@ --- layout: default title: Debug menu -grand_parent: References -parent: Pull-down menus +parent: Menus nav_order: 8 --- # Debug menu {: .no_toc } -![](../assets/images/debug_menu.png) +![](../../assets/images/debug_menu.png) This menu makes a few debug actions conveniently available. {: .highlight } The casual user can safely ignore this menu. To make it visible, you must have beforehand selected the `DEBUG` topic in the -[Advanced Topics](../advanced/topics.md) dialog. +[Advanced Topics](../../guides/advanced/preferences.md#advanced-topics) preferences dialog. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- -## Browse Book... +## Browse book -![](../assets/images/book_browser.png) +![](../../assets/images/book_browser.png) This dialog allows the user to browse the whole hierarchical content of the current book. @@ -37,14 +35,31 @@ measures, chords, glyphs, inters, etc. * The right part displays the name and value of each data member of the entity currently selected in the tree. -## Clear Log +## Clear log This action clears the events panel (located at bottom of main window). This is meant for an easier focus on the coming events. Note this does not impact the output, nor the log file. -## Dump Event Services +## Launch symbol ripper + +![](../../assets/images/symbol_ripper.png) + +This action launches the "Symbol Ripper" dialog which is meant to study symbols in different fonts. +- The "Font" field allows to select a font among the installed ones on your machine. +- The symbol code can be entered in the "Code" field (decimal value) +or in the "Hexa" field (hexadecimal value) +- The "Base" field can define an offset to be added to the entered code/hexa value. +- The "Size" field defines the point size for the selected font. + +The other fields display the symbol physical dimensions (advance, x, y, width, height) +in the selected size. + +In the example above, we are on the "Bravura" font, +where the hexadecimal code "E0A0" refers to the BREVE symbol. + +## Dump event services Dump all UI services connected to the current sheet. @@ -105,7 +120,7 @@ interIndexService subscribers: EntityListEvent: 3 EntityListEvent{ src:interIndexService PRESSING []} @1ae6e8ef interIndexService size:771 @22241722 SymbolsEditor-MyView - @220219b7 {InterBoard Inter} + @220219b7 {InterBoard `Inter`} IdEvent: 1 @1ae6e8ef interIndexService size:771 ``` diff --git a/docs/_pages/menus/file.md b/docs/_pages/reference/menus/file.md similarity index 80% rename from docs/_pages/menus/file.md rename to docs/_pages/reference/menus/file.md index 01c9e43ae..0395bf199 100644 --- a/docs/_pages/menus/file.md +++ b/docs/_pages/reference/menus/file.md @@ -1,24 +1,22 @@ --- layout: default title: File menu -grand_parent: References -parent: Pull-down menus +parent: Menus nav_order: 1 --- # File menu {: .no_toc } -![](../assets/images/file_menu.png) +![](../../assets/images/file_menu.png) --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- -## Recent Inputs +## Recent inputs Gives a list of the most recent image input files. A click on the file name opens the file as source image. @@ -28,7 +26,7 @@ A click on the file name opens the file as source image. Opens a dialog box allowing to select the image or pdf-file that shall be transcribed. The dialog pre-selects the folder from where the last input image file was loaded. -![](../assets/images/dialog_file_open.png) +![](../../assets/images/dialog_file_open.png) ## Exit diff --git a/docs/_pages/reference/menus/help.md b/docs/_pages/reference/menus/help.md new file mode 100644 index 000000000..a8e8b890e --- /dev/null +++ b/docs/_pages/reference/menus/help.md @@ -0,0 +1,63 @@ +--- +layout: default +title: Help menu +parent: Menus +nav_order: 9 +--- +# Help menu +{: .no_toc } + +![](../../assets/images/help_menu.png) + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Handbook + +Launch a browser of this handbook documentation. + +## Wiki + +Launch a browser on the Audiveris Wiki. + +## Web site + +Launch a browser on the GitHub Audiveris organization and its contained repositories. + +## Check for update + +Check the GitHub site for a newer release of Audiveris. + +## About + +Open an "a propos" dialog with information about Audiveris program and +the main external components it depends upon (Tesseract OCR, Java, OS, machine architecture). + +![](../../assets/images/about_dialog.png) + +Since 5.4, there is a `Copy` button. +It copies the textual content of this dialog to the clipboard, to ease the sharing +of this information on Audiveris forums (issues or discussions). + +This gives, for example: +``` +Audiveris +Role: Optical Music Recognition +Version: 5.4-alpha:af6b6cc29 +Container: file:/D:/soft/audiveris-github/languages/app/build/classes/java/main/ +Home page: http://www.audiveris.org +Dev. project: https://github.com/Audiveris/audiveris +Software license: GNU Affero GPL v3 +OCR engine: Tesseract OCR, version 5.3.1 +OCR folder: C:\Users\herve\AppData\Roaming\AudiverisLtd\audiveris\config\tessdata +Java vendor: Oracle Corporation +Java version: 21.0.5 +Java runtime: Java(TM) SE Runtime Environment (build 21.0.5+9-LTS-239) +Java VM: Java HotSpot(TM) 64-Bit Server VM (build 21.0.5+9-LTS-239, mixed mode, sharing) +Operating System: Windows 10 10.0 +Architecture: amd64 +``` \ No newline at end of file diff --git a/docs/_pages/reference/menus/plugins.md b/docs/_pages/reference/menus/plugins.md new file mode 100644 index 000000000..ed24a038c --- /dev/null +++ b/docs/_pages/reference/menus/plugins.md @@ -0,0 +1,13 @@ +--- +layout: default +title: Plugins menu +parent: Menus +nav_order: 7 +--- +# Plugins menu + +![](../../assets/images/plugins_menu.png) + +Display the registered plugins to external programs. + +See the [Plugins](../../guides/advanced/plugins.md) section. diff --git a/docs/_pages/menus/popup.md b/docs/_pages/reference/menus/popup.md similarity index 77% rename from docs/_pages/menus/popup.md rename to docs/_pages/reference/menus/popup.md index bf6ec1f56..15ce2c2ff 100644 --- a/docs/_pages/menus/popup.md +++ b/docs/_pages/reference/menus/popup.md @@ -1,13 +1,13 @@ --- layout: default title: Pop-up menu -parent: References -nav_order: 4 +parent: Menus +nav_order: 10 --- # Pop-up menu {: .no_toc } -![](../assets/images/popup_menu.png) +![](../../assets/images/popup_menu.png) This pop-up menu appears via a mouse right-click in a sheet view, and is represented by the ``≡`` symbol in this handbook. @@ -15,12 +15,12 @@ and is represented by the ``≡`` symbol in this handbook. It displays _contextual_ information and actions that depend on the sheet latest processing step, the current location in sheet view and the selected items if any. -Some of its content also depends on user-selected [Advanced Topics](../advanced/topics.md). +Some of its content also depends on user-selected +[Advanced Topics](../../guides/advanced/preferences.md#advanced-topics) in the preference dialog.. --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -29,19 +29,19 @@ Table of contents Depending on the chord(s) currently selected, this sub-menu allows to modify their configuration regarding time slot and voice. -See the chapter on [Chords editing](../ui_tools/chords.md). +See the chapter on [Chords editing](../../guides/ui/ui_tools/chords.md). ## Inters -If at least one Inter instance has been selected, this sub-menu lists the selected Inters, +If at least one `Inter` instance has been selected, this sub-menu lists the selected Inters, ordered by decreasing grade. -It also allows to delete Inter instance(s) or relation(s). +It also allows to delete `Inter` instance(s) or relation(s). ## Glyphs If at least one Glyph instance has been selected, the _compound_ glyph (dynamically built by merging all selected glyphs) appears in this sub-menu. -It allows to assign a specific shape (via a created Inter) to the selected glyph. +It allows to assign a specific shape (via a created `Inter`) to the selected glyph. ## Slot #n @offset If the `RHYTHMS` step has been reached, this sub-menu relates to the closest time-slot @@ -77,7 +77,7 @@ V 5 |Ch#2347 |Ch#2348 |Ch#2349 |Ch#2350 |Ch#2351 =========|1/2 This sub-menu appears if the current location is within a staff height (even beyond staff horizontal limits). -We can edit the whole staff or one of its lines (see [Staff Editing](../ui_tools/staff_editor.md)): +We can edit the whole staff or one of its lines (see [Staff Editing](../../guides/ui/ui_tools/staff_editing.md)): - **Edit staff**: Manual editing of all staff lines as a whole - **Edit lines**: Manual editing of one staff line in isolation @@ -86,7 +86,7 @@ provided that the ``PLOTS`` advanced topic has been selected. ## Part #n Allows to manually assign a logical part to this physical part. -See the section on part [Manual mapping](../specific/logical_parts.md#manual-mapping). +See the section on part [Manual mapping](../../guides/specific/logical_parts.md#manual-mapping). ## System #n If the current system is not the last one in sheet, this allows to **Merge with system below**. @@ -96,7 +96,7 @@ Allows to **Reprocess rhythm**, that is to force re-computation of rhythm data f ## Score #n Allows to manage all the logical parts in the containing score. -See the chapter on [logical part management](../specific/logical_parts.md) +See the chapter on [logical part management](../../guides/specific/logical_parts.md) ## Extraction Extracts a rectangular portion (or whole) of the underlying binary image and save it to disk. diff --git a/docs/_pages/menus/sheet.md b/docs/_pages/reference/menus/sheet.md similarity index 74% rename from docs/_pages/menus/sheet.md rename to docs/_pages/reference/menus/sheet.md index d87bb0391..62ae58b72 100644 --- a/docs/_pages/menus/sheet.md +++ b/docs/_pages/reference/menus/sheet.md @@ -1,21 +1,19 @@ --- layout: default title: Sheet menu -grand_parent: References -parent: Pull-down menus +parent: Menus nav_order: 3 --- # Sheet menu {: .no_toc } -![](../assets/images/sheet_menu.png) +![](../../assets/images/sheet_menu.png) This menu operates on the current sheet (of the current book). --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- @@ -28,12 +26,12 @@ Undo last manual edit step, one at a time. Redo last undone manual edit step, one at a time. -## Toggle Repetitive Input +## Toggle repetitive input Switch on/off a mode where a simple click replicates the last inserted shape at the new mouse location. This mode is convenient to insert a series of identical symbols, such as heads, at different locations. -## Transcribe Sheet +## Transcribe sheet Start the transcription of just the active sheet. @@ -45,11 +43,11 @@ This validity status should not be confused with sheet selection made at book le - An **invalid** sheet contains no music and thus will always be ignored even if selected at book level. - A sheet can be dynamically **selected** or not, according to user's desire. -## Set Scaling Data +## Set scaling data -Display and potentially modify scaling data of current sheet. +Display and potentially modify the scaling data of current sheet. -## Display Scale plots +## Display scale plots Display plots of two histograms used for sheet scale retrieval: * The "black" plot deals with vertical black runs, leading to staff line thickness @@ -57,44 +55,44 @@ and possibly beam thickness. * The "combo" plot deals with combined length of vertical black run followed by vertical white run, leading to staff interline(s). -![](../assets/images/black_plot.png) +![](../../assets/images/black_plot.png) -![](../assets/images/combo_plot.png) +![](../../assets/images/combo_plot.png) (needs ``PLOTS`` advanced topic) -## Display Stem plot +## Display stem plot Display plot of histogram of stem thickness. -![](../assets/images/stem_plot.png) +![](../../assets/images/stem_plot.png) (needs ``PLOTS`` advanced topic) -## Display Staves plots +## Display staves plots -![](../assets/images/staff_plot.png) +![](../../assets/images/staff_plot.png) Display the projection to x-axis of black pixels contained between staff first and last lines, leading to barlines extraction. (needs ``PLOTS`` advanced topic) -## Display Gray +## Display gray If still available, display the (initial) gray view tab. -## Display Binary +## Display binary Open if needed, then select the binary view tab. -## Display Data +## Display data Select the data view tab. This central sheet view exists from GRID step onwards and is the only one which cannot be manually closed. -## Display NoStaff +## Display noStaff Open if needed, then select the "NoStaff" view tab that shows the transcribed score with "logically erased" staff lines. @@ -102,29 +100,31 @@ Open if needed, then select the "NoStaff" view tab that shows the transcribed sc It's helpful to see the quality of the image that is used for the internal score processing, because staff line removal can lead to collateral damages in some cases. -## Display line Glyphs +## Display line glyphs Open the "StaffLineGlyphs" view tab that shows just the "removed" pixels of staff lines. -## Print Sheet as +## Print sheet as Write the transcribed sheet in PDF format, so that it can be printed or saved for further purposes. The name of the output file is derived from the book name, followed by "\#" and the sheet number if the book contains more than one sheet. -## Export Sheet as +## Export sheet as + +Export the content of just the current sheet, using MusicXML format. -Same as above except that we can define the file name and the folder where the file is saved. +As for print, the name of the output file is derived from the book name and the sheet number. -## Sample sheet Symbols +## Sample sheet symbols Populate the book sample repository with samples derived from relevant inters of this sheet only. -(needs ``SAMPLES`` advanced topic, see [Samples section](../advanced/samples.md)) +(needs the ``SAMPLES`` advanced topic, see [Samples section](../../guides/advanced/samples.md)) -## Annotate sheet Symbols +## Annotate sheet symbols Populate a Zip archive with images and symbol annotations derived from inters of this sheet only. -(needs ``ANNOTATIONS`` advanced topic) +(needs the ``ANNOTATIONS`` advanced topic) diff --git a/docs/_pages/menus/step.md b/docs/_pages/reference/menus/step.md similarity index 70% rename from docs/_pages/menus/step.md rename to docs/_pages/reference/menus/step.md index e06828328..29c5a0d70 100644 --- a/docs/_pages/menus/step.md +++ b/docs/_pages/reference/menus/step.md @@ -1,13 +1,12 @@ --- layout: default title: Step menu -grand_parent: References -parent: Pull-down menus +parent: Menus nav_order: 4 --- # Step menu -![](../assets/images/step_menu.png) +![](../../assets/images/step_menu.png) The step menu allows to transcribe the selected sheet step by step. diff --git a/docs/_pages/reference/menus/tools.md b/docs/_pages/reference/menus/tools.md new file mode 100644 index 000000000..8c93a3608 --- /dev/null +++ b/docs/_pages/reference/menus/tools.md @@ -0,0 +1,82 @@ +--- +layout: default +title: Tools menu +parent: Menus +nav_order: 6 +--- +# Tools menu +{: .no_toc } + +![](../../assets/images/tools_menu.png) + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Install languages +{: .d-inline-block } +new in 5.4 +{: .label .label-yellow } + +Open a dialog to select and download additional OCR languages. +See [OCR languages](../../guides/main/languages.md#getting-additional-languages). + +## Browse global repository + +Open a dialog to verify and edit the content of the Global sample repository +(this is _the_ only repository which is used for classifier training). + +(needs the `SAMPLES` topic) + +## Save global repository + +Saves the Global sample repository to disk. + +(needs the `SAMPLES` topic) + +## Browse a local repository + +Open a dialog to verify and edit a local (book) sample repository +(generally before merging it into the Global repository). + +(needs the `SAMPLES` topic) + +## Train classifier + +Open a dialog to launch, monitor and evaluate the training of the glyph classifier. + +See the [Training](../../guides/advanced/training.md) section. + +(needs the `SAMPLES` topic) + +## Memory + +Displays the used memory in the output window + +## Constants + +Opens the constants management window. + +All available constants are listed. +Most of them concern development constants only. + +A search field allows to search for a string portion in the constant name or its description. + +![](../../assets/images/constants.png) + +See the [Constants](../../guides/advanced/constants.md) section. + +## Preferences + +Opens a dialog where the users can make their own choices regarding: +the default processing of input images, +the default plugin, +the policy for outputs location, +the font size in application items, +the chosen locale, +and additional items in pull-down menus. + +See the [Preferences](../../guides/main/preferences.md) section. diff --git a/docs/_pages/menus/view.md b/docs/_pages/reference/menus/view.md similarity index 69% rename from docs/_pages/menus/view.md rename to docs/_pages/reference/menus/view.md index d797981c9..807eceedc 100644 --- a/docs/_pages/menus/view.md +++ b/docs/_pages/reference/menus/view.md @@ -1,103 +1,101 @@ --- layout: default title: View menu -grand_parent: References -parent: Pull-down menus +parent: Menus nav_order: 5 --- View menu {: .no_toc } -![](../assets/images/view_menu.png) +![](../../assets/images/view_menu.png) --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- -# Width fit +## Width fit Zoom image to window width. -# Height fit +## Height fit Zoom image to window height. -# Display invalid sheets +## Display invalid sheets Toggle the display all sheets, even invalid ones. -# Use transparency +## Use transparency Display interpretations in transparency according to the computed probability value. -# Show jumbo inters (F7) +## Show jumbo inters (F7) Toggle the display of certain shapes (dots by default) with a double size to ease their visual checking. -# Show score voices (F8) +## Show score voices (F8) Toggle the display of notes and lyrics in colors according to the computed voices (only in output and mixed layer view). -# Show score errors (F9) +## Show score errors (F9) Toggle the display of erroneous measures in pink background color. -# Switch selections (F11) +## Switch selections (F11) Toggles the selection modes between glyph, inter and section. -(needs ``SPECIFIC_VIEWS`` advanced topic) +(needs the ``SPECIFIC_VIEWS`` advanced topic) -# Switch layers (F12) +## Switch layers (F12) -Toggle between the 3 different layer views (see [Sheet display modes](../main/display_modes.md)). +Toggle between the 3 different layer views (see [Sheet display modes](../../tutorials/main_window/display_modes.md)). -# Show score slots +## Show score slots Display the detected rhythm analysis (only in output and mixed view). -# Show annotations +## Show annotations Toggle the display of all system, part, measure and rhythm related annotations (system ID, part name, measure ID, time slot offset). -# Show chord IDs +## Show chord IDs Toggle the display of every chord ID. This is convenient to visually map chords between [measure strips](./popup.md#measure-n) and sheet view. -# Show part names +## Show part names Toggle the display of logical part name for every physical part. -# Show staff Lines +## Show staff lines Toggle the display of staff lines. -(needs ``SPECIFIC_ITEMS`` advanced topic) +(needs the ``SPECIFIC_ITEMS`` advanced topic) -# Show staff Points +## Show staff points Toggle the display of staff lines defining points, the ones that can be manually edited. -(needs ``SPECIFIC_ITEMS`` advanced topic) +(needs the ``SPECIFIC_ITEMS`` advanced topic) -# Show stick Lines +## Show stick lines Toggle the display of the average line of the selected glyph. -(needs ``SPECIFIC_ITEMS`` advanced topic) +(needs the ``SPECIFIC_ITEMS`` advanced topic) -# Show attachments +## Show attachments Toggle the display of specific attachments. @@ -105,4 +103,4 @@ These attachments are drawings related to the processing of some entities (such as arc lookup areas to connect candidate slur portions). They are helpful only for visual checking of specific steps and thus are not persisted on disk. -(needs ``SPECIFIC_ITEMS`` advanced topic) +(needs the ``SPECIFIC_ITEMS`` advanced topic) diff --git a/docs/_pages/reference/outputs/README.md b/docs/_pages/reference/outputs/README.md new file mode 100644 index 000000000..45bc77101 --- /dev/null +++ b/docs/_pages/reference/outputs/README.md @@ -0,0 +1,34 @@ +--- +layout: default +title: Outputs +parent: Reference +nav_order: 7 +--- +# Outputs + +Output files are generally located in the dedicated subfolder of the related book. +See the [Folders](../folders/README.md) chapter. + +This chapter presents the various output formats designated by their file extension. + +A special emphasis is put on the `.omr` format, since this format governs the internal +structuring of any Audiveris project file. +Such file is also named a Book file, because there is one `.omr` project file per Book, and the +file merely represents the marshalling of Book internal data from memory to disk. + +# Output Formats + +There are 3 possibilities for the output of a transcribed score: + +* Output as **OMR** file for saving and later reloading of OMR data for additional processing, +manual correction or production of other outputs. +See the [.omr format](../outputs/omr.md) section. + +* Output as **PDF** file for direct use by a musician. +It writes the resulting image into a PDF file, which is basically the content of the Picture/Binary +tab in logical mode. +See the [.pdf format](../outputs/pdf.md) section. + +* Output as **MusicXML** file for use in a score notation program. +It writes a MusicXML file with the exported score entities. +See the [.mxl format](../outputs/mxl.md) section. diff --git a/docs/_pages/outputs/log.md b/docs/_pages/reference/outputs/log.md similarity index 96% rename from docs/_pages/outputs/log.md rename to docs/_pages/reference/outputs/log.md index c9f4ec181..746606bce 100644 --- a/docs/_pages/outputs/log.md +++ b/docs/_pages/reference/outputs/log.md @@ -1,7 +1,6 @@ --- layout: default title: .log -grand_parent: References parent: Outputs nav_order: 1 --- @@ -10,8 +9,7 @@ nav_order: 1 --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- diff --git a/docs/_pages/outputs/mxl.md b/docs/_pages/reference/outputs/mxl.md similarity index 93% rename from docs/_pages/outputs/mxl.md rename to docs/_pages/reference/outputs/mxl.md index a5f79cac0..b94992d85 100644 --- a/docs/_pages/outputs/mxl.md +++ b/docs/_pages/reference/outputs/mxl.md @@ -1,7 +1,6 @@ --- layout: default title: .mxl -grand_parent: References parent: Outputs nav_order: 2 --- @@ -10,8 +9,7 @@ nav_order: 2 --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- diff --git a/docs/_pages/outputs/omr.md b/docs/_pages/reference/outputs/omr.md similarity index 76% rename from docs/_pages/outputs/omr.md rename to docs/_pages/reference/outputs/omr.md index 24df042ff..f37fff69a 100644 --- a/docs/_pages/outputs/omr.md +++ b/docs/_pages/reference/outputs/omr.md @@ -1,15 +1,15 @@ --- layout: default title: .omr -grand_parent: References parent: Outputs nav_order: 3 --- # .omr files -A `.omr` file is Audiveris project file for a given image(s) input file (book). +A `.omr` file is the Audiveris *project* file for a given input file containing one or several images. -It gathers all OMR information related to a given *Book*, including its contained *Sheet* instances. +The project gathers all OMR information related to a given *Book* (one book for an input file), +including its contained *Sheet* instances (one sheet for each image). The project file is merely the result of the XML marshalling of a book and its sheets, so there is no logical difference in the project structure in memory and on disk. @@ -22,14 +22,13 @@ All other Audiveris outputs derive from this project data. ## File structure -The internal project structure is specific to Audiveris software but, as opposed to commercial -software, it is not opaque and is meant for public access, either via Audiveris API or by direct -access to project XML fragments. +The internal project structure is specific to Audiveris software but it is not opaque and is meant +for public access, either via the Audiveris API or by the direct extraction of XML fragments. The file is a collection of XML files gathered into a **Zip** archive, whose content can be easily browsed (and even modified -- *at your own risk!...*) via any Zip reader or editor. -![](../assets/images/book_izarc.png) +![](../../assets/images/book_izarc.png) The picture above is a Zip view on a 2-sheet book (Dichterliebe01.omr example). Here below is the same example, presented as a tree: @@ -72,11 +71,12 @@ namely `GRAY.png` and `HEAD_SPOTS.png`: One case where the `GRAY.png` image would still be useful is when the user would want to modify the image geometry, typically by rotating or de-warping -- features not yet provided as of this writing. - In that case, quality would be better preserved when operating on gray rather than binary image. -- `HEAD_SPOTS.png` image is a temporary information carried over from `BEAMS` step to `HEADS` step. + In that case, the quality would be better preserved when operating on gray rather than binary image. + +- `HEAD_SPOTS.png` image is a temporary information carried over from the `BEAMS` step to the `HEADS` step. It takes advantage of the image processing performed during the `BEAMS` step to provide the image areas (spots) where black heads are likely to be recognized. -This image is discarded at the end of `HEADS` step. +This image is discarded at the end of the `HEADS` step. ## Memory constraint @@ -96,23 +96,24 @@ instances. In the following class diagram, physical entities are displayed in blue, and logical entities in yellow. -![](../assets/images/Book-vs-Sheet.png) +![](../../assets/images/Book-vs-Sheet.png) On the left side, the `book.xml` artifact represents the content of the *book.xml* part within an Audiveris project file, and is kept in memory. -Note that the `Score` and `PageRef` instances can exist only when `GRID` step has been reached on -(some sheets of) the book. +Note that the `Score` and `PageRef` instances can exist only when the `GRID` step has been +reached on (some sheets of) the book. -On the right side, the `sheet#N.xml` artifact represents one sheet (perhaps among others), pointed -to from *book.xml*, and is not necessarily in memory. +On the right side, the `sheet#N.xml` artifact represents one sheet (perhaps among others), +pointed to from *book.xml*, and is not necessarily in memory. -[NOTA: Just to avoid endless clashes with Java predefined `System` class, we have chosen `SystemInfo` -as the class name to represent a music **system**] +{: .note } +Just to avoid endless clashes with the Java predefined `System` class, +we have chosen `SystemInfo` as the class name to represent a music *system*. ## Schemas documentation We wanted to make `.omr` file as open as possible to let end-users and developers use directly -this file for any purpose compliant with Audiveris AGPL license. +this file for any purpose compliant with the Audiveris AGPL license. To this end, we have developed a specific documentation set. For each of the two kinds of XML files (`book.xml` and `sheet#N.xml`) we provide: @@ -137,15 +138,14 @@ Please tell us if we are wrong, but we could not use GitHub Pages for two reason - GitHub Pages would serve these `.html` files with incorrect mime type. They would be served as plain text files, preventing suitable rendering by any web browser. -So, for the time being, Audiveris schemas documentation is packed as a ZIP archive and simply -published side by side with most recent releases available on -[Audiveris Releases](https://github.com/Audiveris/audiveris/releases) section -at GitHub site. -Typical file name is `Audiveris_Schemas_Doc-X.Y.Z.zip`, where X.Y.Z is the precise release version. +So, for the time being, the Audiveris schemas documentation is packed as a ZIP archive and simply +published side by side with the most recent releases available on the [Audiveris Releases] +section at GitHub site. +The typical file name is `Audiveris_Schemas_Doc-X.Y.Z.zip`, where X.Y.Z is the precise release version. For example, here is the content of a recent version: -![](../assets/images/schemas_doc_zip.png) +![](../../assets/images/schemas_doc_zip.png) You can simply download and expand this ZIP archive locally, to get an easy access to its content. @@ -157,6 +157,9 @@ You can simply download and expand this ZIP archive locally, to get an easy acce ### Documentation generation -If, as a developer, you want to (re-)generate this documentation set on your own, please refer to -[Building Schemas Documentation](https://github.com/Audiveris/audiveris/wiki/Schemas-Documentation) -article in Audiveris Wiki. +If, as a developer, you want to (re-)generate this documentation set on your own, please refer to the +[Building Schemas Documentation] article in Audiveris Wiki. + +--- +[Audiveris Releases]: https://github.com/Audiveris/audiveris/releases +[Building Schemas Documentation]: https://github.com/Audiveris/audiveris/wiki/Schemas-Documentation \ No newline at end of file diff --git a/docs/_pages/outputs/pdf.md b/docs/_pages/reference/outputs/pdf.md similarity index 91% rename from docs/_pages/outputs/pdf.md rename to docs/_pages/reference/outputs/pdf.md index 4908b4150..ca80335e8 100644 --- a/docs/_pages/outputs/pdf.md +++ b/docs/_pages/reference/outputs/pdf.md @@ -1,7 +1,6 @@ --- layout: default title: .pdf -grand_parent: References parent: Outputs nav_order: 4 --- diff --git a/docs/_pages/outputs/zip.md b/docs/_pages/reference/outputs/zip.md similarity index 93% rename from docs/_pages/outputs/zip.md rename to docs/_pages/reference/outputs/zip.md index f91f410c0..a366cce3a 100644 --- a/docs/_pages/outputs/zip.md +++ b/docs/_pages/reference/outputs/zip.md @@ -1,7 +1,6 @@ --- layout: default title: .zip -grand_parent: References parent: Outputs nav_order: 5 --- @@ -10,8 +9,7 @@ nav_order: 5 --- Table of contents -{: .no_toc .text-delta } - +{: .no_toc .text-epsilon } 1. TOC {:toc} --- diff --git a/docs/_pages/reference/updates.md b/docs/_pages/reference/updates.md new file mode 100644 index 000000000..8a0237cc9 --- /dev/null +++ b/docs/_pages/reference/updates.md @@ -0,0 +1,238 @@ +--- +layout: default +title: Updates +parent: Reference +nav_order: 9 +--- +# Software updates +{: .no_toc } + +As detailed in the [Git Workflow](https://github.com/Audiveris/audiveris/wiki/Git-Workflow) article +on Audiveris Wiki: +- Audiveris development is performed on the specific GitHub "**development**" branch. + It is thus continuously available for anyone that pulls and builds the software from source. +- The default "**master**" branch is updated only for software releases. + At this time only, a new release is created and uploaded to the [Releases section](https://github.com/Audiveris/audiveris/releases) on GitHub site. + +--- +Table of contents +{: .text-epsilon } +- TOC +{:toc} +--- + +## 5.4 +(Feb 2025) + +- User Interface + - New feature to handle the local collection of OCR languages and download additional ones + on demand from the GitHub Tesseract site. + - Creation of the Binarization adjustment board to dynamically adjust the binarization + filters and settings. Contributed by [Michael Porter]. + - Past the SYMBOLS step, the manual removal of any `Inter` now triggers a dynamic rebuilding of glyphs, + as if the removed `Inter` had never existed. + - Improvement and extension of default/book/sheet parameters (interline, barline) + - Ability to display some inters in jumbo mode to ease a visual inspection + -- by default this applies to augmentation dots. + - Ability to gracefully stop the current book processing at the next step end. + - Ability to clear the log window -- the log file remains intact. + - Waiting message for long loading of book or sheet. + - New `Preferences` dialog with new policy for the selection of output folder. +- Engine + - Improved handling of implicit tuplets. + - Support for metronome mark. + - The recognition of fermata no longer requires separate recognitions of fermata-arc and fermata-dot. + - The processing of an input image with no white margin around the staves is now possible. + - Staff lines are now less impacted by isolated chunks. +- Project + - A Linux Flatpak installer, gathering the needed libraries including proper Java environment, + is provided on FlatHub. Contributed by [Martin Wilck] and [Jan-Willem Harmannij]. + - The Windows installer pre-populates the user `config`/`tessdata` folder + with the `eng` Tesseract language. + - For licence reasons, JPodRenderer had to be replaced by Apache PDFBox to load PDF images. +- Documentation + - Global handbook restructuring. + - Support for a PDF version of handbook. + - Re-reading of the whole documentation. Contributed by [Brian Boe], native American-English speaker! +- Java + - In `Audiveris.bat` (used by the Windows installer) and `Audiveris` start scripts, + the Java version is checked before the application is launched. + - Support of Java 21. + - Upgrade to Gradle 8.5 to support Java 21. + - Removal of all deprecated features such as JGoodies PanelBuilder, Observer/Observable, + class.newInstance(), etc. + +## 5.3 +(Jun 28, 2023) + +- User Interface + - Editing of staff geometry, at individual line and global staff levels + - User management of score logical parts, and their mapping to sheet physical parts + - User editing of newly supported features (multi-measure rests, octave shifts, etc) +- Engine + - Support for drums unpitched notation. Contributed by [Brian Boe]. + - Support of several musical font families for better template matching + - Support of several text font families + - Support for multi-measure rests + - Support for measure repeats for 1, 2 and 4 measures + - Support for octave shifts (single and multi-line shifts) + - Support for endings with no left leg, with default number generation + - Support for two populations of beam height and head size + - Support for beam thickness specification + - Support for fingering and plucking +- Project + - Use of Tesseract 5.x in legacy mode + - Support of MusicXML 4.0 + - Generation of Schemas documentation +- Java + - Support of Java 17 + +## 5.2 +(Jan 18, 2022) + +- User Interface + - Ability to move and resize symbols + - Snapping note heads to staff line/ledgers and stems + - Repetitive input + - Ability to merge/split books + - Ability to merge/split parts via brace handling + - Ability to merge systems + - Ability to merge/split chords + - Ability to modify voice or time slot for chords + - Support for compound notes (head + stem) + - Support for key signature cancel (key made of natural signs) + - Improved support for chord names + - Chords popup menu offers "Next In Voice" relation to better guide voice/slot assignments + - Better handling of sentences, chord names, lyrics + - Ability to correct beam thickness scale + - Ability to limit book processing on selected sheets + - Support for high DPI devices + - Internationalization of all menus +- Engine + - Better handling of poor-quality scores + - Support for 1-line percussion staves + - Detection of 4-line and 6-line tablatures + - New algorithm for time slots and voices + - Support for rest chords interleaved within beam head chords + - Support for non measure-long whole rests + - Support for implicit tuplets + - Support for merged grand staff configuration + - Support for cross heads + - Improved tie slurs detection on staff, across systems and across pages + - Plugin mechanism upgraded for multi-movement exports +- Project + - Automated checks for update on GitHub + - Documentation handled on GitHub Pages + - How to use Gimp to improve input. Contributed by [Baruch Hoffart]. + - How to enlarge low resolution scans. Contributed by [Ram Kromberg]. +- Java + - Support of Java 11 + - Refined dependencies on Java EE, JAXB, etc away from Java 8 + +## 5.1 +(Dec 13, 2018) + +- User Interface + - Visual separation of shared heads + - User assignment of fixed-shape symbols + - Ability to modify scale parameters +- Engine + - Augmentation dots apply to shared heads +- Project + - Windows binary installers (32 and 64). Contributed by [Baruch Hoffart]. +- Java + - Support of Java 8 + +## 5.0 + +- Engine + - Creation of `.omr` project files +- Project + - Migration to GitHub & Gradle. Contributed by [Maxim Poliakovski]. + +## 4.2 + +- Distribution Changes: + - Installation: Major OSes Windows and Linux and machine architectures x86 and x64 are supported via dedicated installers. The installers take care of all Audiveris dependencies (Java runtime, C++ runtime, musical font, etc). + - Nota: Support for macOS has been dropped from the scope of this release to avoid further delays. + - OCR: A few selected languages are pre-installed with Audiveris distribution (deu, eng, fra, ita). Additional languages can be supported by downloading the related trained data from the dedicated Tesseract web page. + - NetBeans: A pre-populated nbproject folder provides NetBeans support out-of-the-box. +- New Features: + - OCR: Tesseract V3.02 has been integrated in place of oldish V2.04 version. This much more powerful engine has led to a global redesign of text handling within Audiveris. There is now a dedicated TEXTS step which performs a layout analysis on each whole system image and transcribes the identified textual items. Note also that several languages can be selected at the same time. + - Binarization: Extracting foreground pixels from the background has long been performed using a global threshold on pixel gray value. Even images with non-uniform illumination can now be processed with an adaptive filter which takes into account the neighborhood of the current pixel. + - Glyph recognition: The major part of neural network input consists in moments which capture glyph key characteristics. Former Hu geometric moments have been replaced by ART moments (Angular Radial Transform, as used by MPEG-7) which are less sensible to noise. + - Plugins: Audiveris MusicXML output can be "piped" to external softwares such as score editors or MIDI sequencers, through a flexible plugin mechanism. Consequently, these features have been removed from Audiveris application. +- Bug Fixes: + - PDF input: Several free Java libraries have been tested (PDFRenderer for a long time, then JPedal and PDFBox) but none was really satisfactory. Hence support for PDF input is now delegated to a Ghostscript sub-process, a fully functional and perennial solution. +- Other Changes: + - Doc: A comprehensive Handbook is now available from Audiveris web page, as well as the API JavaDoc of the current release. The former installation tab is now merged with the first chapter of the handbook. + - Wiki: The online Audiveris Wiki contains detailed documentation about how to process each score of the set of examples available on MakeMusic/Recordare site. It is also used to gather information about evolutions being considered for Audiveris software. + +## 4.1 + +- Distribution Changes: + - Several installation files have been published, all using the 4.1beta core name. This reflects the status of continuous development rather than stable release of the software. +- New Features: + - Filaments: They are long glyphs representing the core of either horizontal or vertical lines (staff lines candidates and barlines candidates respectively). These filaments are formalized in natural splines, which are sequences of Bézier curves with continuity up to the second derivative. + - Grid: The staff lines and barlines are connected into a grid of sometimes rather wavy lines. The grid itself is taken as the referential for all the other glyphs, whatever the potential skew or other distortion of the image, and thus saving the need for any pre-processing. Moreover, one can on demand easily build and save a "dewarped" version of the initial image. + - Scale: Additional key informations are derived from run length histograms (jitter on staff line thickness and spacing, typical beam height, whether the image is music or not). + - Systems: The boundary between two consecutive systems is now a broken line, resulting from the incremental inclusion of glyphs into their nearest system. + - Training: Besides full sheets taken as training samples, the user can select a mode that takes every manual assignment as a new training sample. + - Symbols: The HEAD_AND_FLAG family of compound symbols no longer exists, thanks to an aggressive strategy in glyph split pattern. +- Known Issues: + - OCR: We are still stuck to the old Tesseract version (2.04). The new Tesseract generation (3.x) has been out for more than one year now but still lacks a Java connection under Windows. +- Other Changes: + - Time: All time values, such as offsets within a measure, are computed using rational values, which makes them independent of the score divisions value. + +## 4.0 + +- New Features: + - Display: The main application window has been simplified. Only two views are now shown for each sheet: Picture (focused on input image) and Data (focused on items detected). We no longer have separate windows for sheet and score. The score elements are displayed in a translucid manner on top of the sheet glyphs they represent, in order to visually catch any discrepency. Separate voices can be displayed each in a specific color + - Every other window (Log, Errors, Boards) can be displayed or hidden, and each individual board can be selected at will + - Font: Former symbol bitmaps have been dropped for the use of a TrueType music font (Stoccata.ttf then MusicalSymbols.ttf). This allows endless zooming of displays and printouts with no loss of quality + - The font is even used to build artificial symbols used for initial training of the neural network + - Print: Ability to print the resulting score into a PDF file + - Multi-page: Multi-page images (using PDF or TIFF format) can be transcribed to multi-page scores in memory + - A disk-based prototype version, using a map/reduce approach, allows to combine existing MusicXML pages into a single score + +## 3.4 +(Dec 14, 2012) + +- Distribution Changes: + - Libraries: All the external jars (23 as of this writing) needed to rebuild and/or run Audiveris are now provided in a dedicated /lib folder available in the download area. A developer can still pick up a newer jar version from the Internet. + - Player: The XenoPlay MusicXML player has been replaced by a better player, named Zong! +- New Features: + - Bench data: To allow the analysis of multiple batch runs, and compare the recognition efficiency, each sheet processing can log key data in a dedicated file. For the same purpose, time-out values can be defined for script or step processing. + - Bar Lines: The user can now interactively assign / deassign a bar line that defines parts, thus recreating the systems from scratch. + - Constants: All application constants can now be set from the CLI with the -option keyword. This complements the ability to set them from the Tools - Options UI menu. + - Dots: Support for double dots, ability to assign the role of any dot (augmentation, repeat bar line, staccato) + - Horizontals: Horizontal entities (ledgers, endings) can now be forced or deassigned manually. + - MIDI Player: The MIDI playback is now driven from a separate console window, borrowed from Zong! player. + - OCR: Tesseract OCR is now available under both Windows and Linux. + - Score: From a dedicated Shape palette, the user can Drag n' Drop a (virtual) glyph to either the score view or the sheet view, thus injecting entities directly into the score structure. + - ScoreView: The zoom of the score view can now be adjusted at will, thanks to a slider and better symbol bitmap definitions. A next version will replace them with the use of Stocatta true-type font. + - Time Signature: The user can now enter any custom time signature, defining numerator and denominator values explicitly. + - Time Slots: Within a measure, the time slots are meant to gather notes that begin at the same moment in time. The user can now choose at the score level the policy for determining the time slots, either through stem alignment or through note head alignment. + - Tuplets: 6-tuplets are now supported, as well as tuplets mixing beamed notes with other notes (flagged notes, rests, ...). + - UI: A new board (Shape palette) is available. It allows drag n' drop for entity injection, easier navigation through shape ranges, and shape assignment by double-click. + - UI: All boards now have an expand / collapse mechanism, thus allowing to save room in the column of boards. +- Bug Fixes: + - Player: The Zong! Player is now more tolerant with respect to measure defects. It no longer throws an exception whenever the notes durations within a measure are not consistent with the measure expected duration. + - Player Data: The data part of Zong player is now provided as a resource in a dedicated jar file, thus allowing the launching of Audiveris from any location of your computer. + - Exception handler have been removed from all unitary tests, so that the results are clearly seen as successes or failures +- Known Issues: + - Virtual Glyphs: For the time being, the (virtual) glyphs created by direct injection cannot be moved or resized once they have been dropped from the Shape palette to their target view. However, they can be deleted and re-injected (this workaround addresses a move but not a resize). +- Other Changes: + - Images: Support for most pixel sizes. + - Lyrics: Much better handling of lyric text pieces, with the ability for the user to enter extension sign or to split words with a space. The OCR can process several text lines as a whole, which often leads to better results. + - Symbols: The symbols bitmap definitions (in the /symbol folder) have been refined with at least a 16-pixel interline definition, resulting in better display notably in score view. + - Tiff: Images are forwarded to Tesseract OCR by memory, avoiding temporary files + + +[Baruch Hoffart]: https://github.com/Bacchushlg +[Brian Boe]: https://github.com/brian-math +[Jan-Willem Harmannij]: https://github.com/jwharm +[Martin Wilck]: https://github.com/mwilck +[Maxim Poliakovski]: maximumspatium@googlemail.com +[Michael Porter]: https://github.com/mgporter +[Ram Kromberg]: https://github.com/RamKromberg \ No newline at end of file diff --git a/docs/_pages/references.md b/docs/_pages/references.md deleted file mode 100644 index d87870b8e..000000000 --- a/docs/_pages/references.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default -title: References -nav_order: 7 -has_children: true -has_toc: false ---- -# References - -This ``References`` chapter presents a few key topics that are not mandatory for a first reading. - -In each topic, it is meant to be exhaustive and often provides pointers back to -more specific and detailed sections in the handbook presentation. - -Table of contents -{: .text-delta } - -| Topic | Content | -| :--- | :--- | -| [Steps internals](./steps/README.md) | Internals of each engine processing step | -| [Inter editors](./ui_tools/inter_editors.md) | All different editors per Inter kind | -| [Pull-down menus](./menus/README.md) | All the pull-down menus | -| [Pop-up menu](./menus/popup.md) | The contextual pop-up menu | -| [Boards](./boards/README.md) | All the UI boards in right column | -| [Folders](./folders/README.md) | All the folders used according to the host operating system | -| [Outputs](./outputs/README.md) | All kinds of output files | diff --git a/docs/_pages/specific/README.md b/docs/_pages/specific/README.md deleted file mode 100644 index db55596b0..000000000 --- a/docs/_pages/specific/README.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: default -title: Specific Features -nav_order: 5 -has_children: true ---- -# Specific Features - -Meant for the end-user, this chapter gathers features that deserve a specific description. diff --git a/docs/_pages/steps/heads.md b/docs/_pages/steps/heads.md deleted file mode 100644 index ee33acc62..000000000 --- a/docs/_pages/steps/heads.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: default -title: HEADS step -parent: Steps internals -grand_parent: References -nav_order: 9 ---- -# HEADS step diff --git a/docs/_pages/steps/ledgers.md b/docs/_pages/steps/ledgers.md deleted file mode 100644 index 1ee12bcb5..000000000 --- a/docs/_pages/steps/ledgers.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: default -title: LEDGERS step -parent: Steps internals -grand_parent: References -nav_order: 8 ---- -# LEDGERS step diff --git a/docs/_pages/tutorials/README.md b/docs/_pages/tutorials/README.md new file mode 100644 index 000000000..100157466 --- /dev/null +++ b/docs/_pages/tutorials/README.md @@ -0,0 +1,14 @@ +--- +layout: default +title: Tutorials +nav_order: 1 +--- + +# Tutorials + +This part of the handbook is essential for the new comer. + +It is focused on how to make Audiveris up and running, +and to lead the user by the hand in discovering the application +-- a quick tour, the main concepts, the main window. + diff --git a/docs/_pages/tutorials/install/README.md b/docs/_pages/tutorials/install/README.md new file mode 100644 index 000000000..5cb16cefd --- /dev/null +++ b/docs/_pages/tutorials/install/README.md @@ -0,0 +1,24 @@ +--- +layout: default +title: Installation +parent: Tutorials +nav_order: 1 +--- + +# Installation + +## Installers + +For **Windows** and for **Linux**, Audiveris provides installers available in 64-bit version. + +An installer makes the installation simple but has the main drawback of being limited to +the last official release, which can be several months old. + +## Building from sources + +For the major operating systems (**Windows**, **macOS**, **Linux** and **ArchLinux**), +we have the ability to **clone and build** from the source material. + +The main advantage is to benefit from all the bug fixes and improvements that are +continuously published on the Audiveris project site in its "development" branch. + diff --git a/docs/_pages/tutorials/install/binaries.md b/docs/_pages/tutorials/install/binaries.md new file mode 100644 index 000000000..9f5544680 --- /dev/null +++ b/docs/_pages/tutorials/install/binaries.md @@ -0,0 +1,115 @@ +--- +layout: default +title: Installing binaries +nav_order: 2 +parent: Installation +--- +# Installing binaries +{: .no_toc } + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Windows + +### Installation + +The Audiveris installer for Windows is hosted on +[https://github.com/Audiveris/audiveris/releases](https://github.com/Audiveris/audiveris/releases). + +Installer versions are named `Audiveris_Setup-X.Y.Z-windows-x86_64.exe` where X.Y.Z values +refer to the related release. + +During installation, we will be prompted to associate the `.omr` file extension +(which represents an Audiveris Book) with Audiveris software. + +After installation, the Windows start menu should contain a sub-menu named `Audiveris`: + +![](../../assets/images/windows_start_menu.png) + +### Java environment + +The Windows installer ***does not install*** the needed Java environment. + +To check our installed Java environment, we can use the `java -version` command +from a terminal window, to provide Java information like: +``` +$ java -version +java version "21.0.5" 2024-10-15 LTS +Java(TM) SE Runtime Environment (build 21.0.5+9-LTS-239) +Java HotSpot(TM) 64-Bit Server VM (build 21.0.5+9-LTS-239, mixed mode, sharing) +``` + +We have to make sure to use at least **Java version {{ site.java_version }}**. +It can be installed for instance from +[https://www.oracle.com/java/technologies/downloads/#jdk{{ site.java_version }}-windows](https://www.oracle.com/java/technologies/downloads/#jdk{{ site.java_version }}-windows) + +{: .new } +> Starting with the release 5.4 of the Windows installer, +the Audiveris application pre-checks the compatibility with the installed Java version. +> If the check fails, a warning message is displayed and remains open until it is explicitly closed: +> +> ![](../../assets/images/java_mismatch_message.png) + +### OCR languages + +The Windows installer comes with the `eng` OCR language pre-installed. + +Should we need additional languages, we can now download them directly from the Audiveris application. +See the [OCR languages](../../guides/main/languages.md) section. + +### Uninstallation + +To uninstall the program, we can simply select `Uninstall` in the Audiveris start menu. + +The uninstaller will optionally keep the configuration files of the program. +So, if we re-install this program or a new version later, we will find the same settings +that were used before uninstallation. + +{: .note } +You may not always see the `Uninstall` item under Audiveris in the Windows start menu. +This is reportedly a new Windows behavior, which now recommends to open `Windows Settings` +(keyboard shortcut is `Windows + I`), then look in `Apps & features` section for the Audiveris item +and there press the `Uninstall` button. + +## Linux + +### Installation + +The Audiveris installer for Linux uses the Flatpak utility and is hosted on the standard Flathub repository. + +On the [Flathub site](https://flathub.org/), we can enter "audiveris" in the search field. +Or we can go directly to the [https://flathub.org/apps/org.audiveris.audiveris](https://flathub.org/apps/org.audiveris.audiveris) page. + +For a manual install, we can use: +```sh +$ flatpak install flathub org.audiveris.audiveris +``` + +And to launch the application: +```sh +$ flatpak run org.audiveris.audiveris +``` + +### Java environment + +The application runs in a sandbox where the appropriate Java environment is already included +so, unlike the Windows installer, there is no Java environment to install manually. + +### OCR languages + +The Linux installer comes with ***no OCR language*** pre-installed. + +At every launch, we will be prompted for the installation of OCR languages if none is present. +See the [OCR languages](../../guides/main/languages.md) section. + +### Architecture + +The installer is built for the **x86_64** architecture. + +## macOS +No installer yet. diff --git a/docs/_pages/tutorials/install/sources.md b/docs/_pages/tutorials/install/sources.md new file mode 100644 index 000000000..0278a05b6 --- /dev/null +++ b/docs/_pages/tutorials/install/sources.md @@ -0,0 +1,130 @@ +--- +layout: default +title: Building from sources +nav_order: 3 +parent: Installation +--- +# Building from sources (Windows, macOS, Linux, ArchLinux) +{: .no_toc } + +{: .note } +> For GitHub users: +> - Audiveris "***master***" branch is updated only when a new release is published. +> - Instead, Audiveris development happens continuously in the "***development***" branch, +> so pull and checkout this *development* branch to get and build the latest version. +> - See workflow details in the dedicated [Wiki article][workflow]. + +--- +Table of contents +{: .no_toc .text-epsilon } +1. TOC +{:toc} +--- + +## Tools needed + +* [Git][git]: version control system. + +* [Gradle][gradle]: build tool. + +* [Java Development Kit (JDK)][jdk]: version {{ site.java_version }} + (higher numbers may work, to be confirmed). + This is the Java version needed for the *master* branch. + The *development* branch may require a higher version, please + check on the Audiveris [project site](https://github.com/Audiveris/audiveris/tree/development?tab=readme-ov-file#development-versions). + Audiveris {{ site.audiveris_version }} runs only on 64-bit architectures. + +* [FreeType library][freetype]: Unix-like platforms (including macOS) need FreeType in our $PATH +to handle those specific PDFs that contain vector graphics. +Fortunately, every known Unix-like OS distribution already contains a package for FreeType. + +* Tesseract OCR: The Tesseract *libraries* are automatically pulled as Gradle dependencies, +but we will need some Tesseract *language files* for this OCR to work properly. +Please check the [OCR languages](../../guides/main/languages.md) section. + +## Clone, build and run +To clone the Audiveris project, we can use the following command in a directory of our choice: + +```sh +git clone https://github.com/Audiveris/audiveris.git +``` + +This will create a sub-directory named "audiveris" in our current directory and populate it with +project material (notably source code and build procedure). + +Now we move to this "audiveris" project directory: + +```sh +cd audiveris +``` + +Once in this `audiveris` project directory, we can select the branch we want. +By default, we are on `master` branch. +To use the `development` branch with its latest features, we can use: + +```sh +git checkout development + +# And to make sure we grab even the latest updates: +git pull --all +``` +We can build the software via the command: +```sh +# (Linux & Mac, or Cygwin terminal under Windows) +./gradlew build +``` +```sh +# (Windows terminal) +gradlew.bat build +``` + +We can run the software, with its graphical interface, via the command: + +```sh +# (Linux & Mac, or Cygwin terminal under Windows) +./gradlew run +``` +```sh +# (Windows terminal) +gradlew.bat run +``` + +Please note that all these commands use the **gradle wrapper** (`gradlew`) which, +behind the scenes, takes care of getting and launching the proper gradle version. + +## Alternative run + +The gradle-based run, as described above, makes sure that all our potential modifications are +compiled before the application is launched. +This is the preferred approach for a developer. + +However, if we don't modify the code and merely want to launch the +application we don't need to go through gradle for each and every run. + +Because, once we have built the software with the gradle `build` command as stated above, +we now have a `build/distributions` folder in the repository root with tarred/zipped libraries +(`Audiveris.tar` and `Audiveris.zip`). + +We can simply extract either one of the archives: + +```sh +# Either extract the .tar archive +tar -xf build/distributions/Audiveris.tar +``` + +```sh +# Or extract the .zip archive +unzip build/distributions/Audiveris.zip +``` + +Then, we can repeatedly run audiveris from those files: +```sh +# Run audiveris (append arguments if so needed): +java -cp "Audiveris/lib/*" Audiveris +``` + +[freetype]: https://www.freetype.org +[git]: https://git-scm.com +[gradle]: https://gradle.org +[jdk]: http://www.oracle.com/technetwork/java/javase/downloads/index.html +[workflow]: https://github.com/Audiveris/audiveris/wiki/Git-Workflow diff --git a/docs/_pages/tutorials/main_concepts/README.md b/docs/_pages/tutorials/main_concepts/README.md new file mode 100644 index 000000000..d66714cf6 --- /dev/null +++ b/docs/_pages/tutorials/main_concepts/README.md @@ -0,0 +1,16 @@ +--- +layout: default +title: Main concepts +parent: Tutorials +nav_order: 3 +--- +# Main concepts + +The purpose of this chapter is to introduce some key notions that are used throughout +the whole application and that the end-user needs to understand Audiveris correctly. + +We will thus speak of: +* Physical and logical containment: Book of Sheets vs. Score of Pages, +* Pixels assemblies: Runs, Sections and Lags, +* Interpretations: Glyphs vs. Inters, +* Relations between interpretations: the Symbol Interpretation Graph (SIG). diff --git a/docs/_pages/main/score_page.md b/docs/_pages/tutorials/main_concepts/book_score.md similarity index 64% rename from docs/_pages/main/score_page.md rename to docs/_pages/tutorials/main_concepts/book_score.md index ae46baba0..9b57fc449 100644 --- a/docs/_pages/main/score_page.md +++ b/docs/_pages/tutorials/main_concepts/book_score.md @@ -1,11 +1,31 @@ --- layout: default -title: Score of Pages -grand_parent: Main Features -parent: Main Entities -nav_order: 2 +title: Book vs. Score +parent: Main concepts +nav_order: 1 --- -# Score of Pages +# Book vs. Score + +## Book of Sheets + +An image file fed into the OMR software contains one or several images. +Typically `PDF` and `TIFF` formats support the notion of multi-image files while, for example, +`JPEG` or `PNG` formats can deal only with single-image files. + +For Audiveris, using the metaphor of a physical book made of several sheets of paper, +this physical containment is modeled as one **Book** instance (corresponding to the input file) +and a sequence of one or several **Sheet** instances (one sheet corresponding to one image). + +Note that a sheet image may contain no music. +This happens for example for a title or illustration or simply a blank sheet. +In that case, the sheet will later be recognized as "_invalid_" (from the OMR point of view) +and flagged as such. + +Since Audiveris 5.3, we can split a book into smaller ones or, conversely, +merge small books into a larger one. +This feature is documented in the [Split and merge](../../guides/main/book_portions/split_merge.md) section. + +## Score of Pages Looking at the musical content of a given sheet image, we can observe that staves are often gathered into systems (in which staves are played in sync), and that a given sheet image generally contains @@ -23,10 +43,10 @@ In Audiveris, this logical containment is modeled as one instance of **Score** p ## Example To make these concepts more concrete, let's look at the following diagram of a hypothetical book: -![Book vs Score](../assets/images/Book-vs-Score.png) +![Book vs. Score](../../assets/images/Book-vs-Score.png) In this diagram, we can see a book containing 3 sheets -(certainly because the input PDF or TIFF file contained 3 images): +(certainly because the input `PDF` or `TIFF` file contained 3 images): 1. `Sheet` #1 begins with an indented system, which indicates the start of a movement (`Score` in MusicXML parlance). There is no other indented system, so this `Sheet` contains a single @@ -60,3 +80,4 @@ The exceptions are as follows: - It ends the last score in the previous valid sheet, if any. - The next valid sheet, if any, will start another score, even if it does not start with an indented system. + diff --git a/docs/_pages/tutorials/main_concepts/glyph_inter.md b/docs/_pages/tutorials/main_concepts/glyph_inter.md new file mode 100644 index 000000000..ea2b4c97e --- /dev/null +++ b/docs/_pages/tutorials/main_concepts/glyph_inter.md @@ -0,0 +1,50 @@ +--- +layout: default +title: Glyph vs. Inter +parent: Main concepts +nav_order: 3 +--- +# `Glyph` vs. `Inter` + +## `Glyph` + +A `Glyph` is nothing more than a set of foreground (black) pixels +in a sheet binary image. + +It carries no shape. + +It is not related to a staff. +It does not even belong to a system. +The reason is there is no reliable way to assign a glyph located in the "gutter" between two systems +or two staves: does it belong to the upper or the lower system/staff? + +These restrictions on `Glyph` don't apply to glyph interpretations (a.k.a. `Inter`). + +## `Inter` + +An interpretation, or **`Inter`** for short, is meant to formalize one reasonable +interpretation of a `Glyph`. + +There may be several reasonable interpretations for a given glyph and, in many cases, +the OMR engine cannot immediately decide on the right interpretation among these mutually +exclusive interpretations. +This decision will then be postponed until later down in the OMR process, +when additional information (such as the discovery of other `Inter` instances located nearby) +becomes available and helps clarify the configuration. + +As opposed to a `Glyph`, an `Inter` belongs to a system and is often related to a staff. + +It carries a _shape_ and a _grade_ in [0..1] range, which can be considered as +the probability for the interpretation to be a true positive. +This grade is an interpretation _intrinsic_ grade, only based on the glyph at hand in isolation +(this grade is often provided by the glyph classifier). + +Later, the `Inter` will generally be assigned a _contextual_ grade, based on the `Inter` intrinsic grade +and the supporting relations with other `Inter` instances nearby. + +## Typical display example + + +| View | `Inter` over `Glyph` | +| --- | --- | +|![](../../assets/images/glyph_inter.png) | Here we have a Treble Clef `Inter` displayed in dark blue.
Its related `Glyph`, using pale blue and pink colors, is mostly hidden behind. | diff --git a/docs/_pages/tutorials/main_concepts/run_section.md b/docs/_pages/tutorials/main_concepts/run_section.md new file mode 100644 index 000000000..ac4da5808 --- /dev/null +++ b/docs/_pages/tutorials/main_concepts/run_section.md @@ -0,0 +1,69 @@ +--- +layout: default +title: Pixels assemblies +parent: Main concepts +nav_order: 2 +--- +# Pixels assemblies + +The `BINARY` step transforms the input image into a black and white image. +From this step on, the image will contain only black (foreground) pixels on a white background. + +A (black) pixel is just a black square, of dimension 1 x 1, located at some point (x,y). + +Depending on what the engine has to process (staff lines, stems, beams, etc), +the same pixels can be viewed through one structure or another. + +## `Run` and `RunTable` + +A horizontal (or vertical) contiguous sequence of pixels of the same color is called a +horizontal (or vertical) `Run`. +In the same alignment, such `run` is followed by a `run` of the opposite color, and so on, +until the image border is reached. + +A `RunTable` is a rectangular area, made of sequences of `run`'s, all of the same orientation. +Typically, the whole binarized image can be considered, at the same time, as: +- a table of horizontal `run`'s +- a table of vertical `run`'s + +## `Section` and `LAG` + +It can be interesting to transitively join adjacent (black) `run`'s of the same orientation, +according to some compatibility rules. + +Each such resulting assembly is called a `Section`. + +Typical compatibility rules are: +- Maximum difference in `run` lengths +- Maximum ratio of difference in `run` lengths +- Maximum shift on each `run` end +- Void rule (no check, except adjacency) + +Sections are gathered into `LAG`'s (**L**inear **A**djacency **G**raphs). + +Just like a `RunTable` gathers `Run`'s of the same orientation, +a `LAG` gathers `Section`'s of the same orientation. + +## Sections example + +![](../../assets/images/sections.png) + +The picture above can be displayed once the `GRID` step has been performed. +We select the "section" view ![](../../assets/images/kjumpingcube.png) +via the {{ site.view_selections }} pull-down menu or the `F11` function key. + +Based on the maximum staff line thickness (previously determined by the `SCALE` step), +this picture combines sections from two different `LAG`'s: +1. From the vertical `LAG`, all the (vertical) sections +with length greater than the maximum line thickness are displayed in pale blue. +2. From the horizontal `LAG`, the remaining pixels are organized in (horizontal) sections +and displayed in pale pink. + +## Filament + +A `Filament` is a dynamic assembly of sections, long and thin, likely to represent lines. + +The engine uses: +- horizontal filaments to detect staff lines and ledgers alignments, +- vertical filaments to detect stems and legs of endings. + diff --git a/docs/_pages/main/sig.md b/docs/_pages/tutorials/main_concepts/sig.md similarity index 77% rename from docs/_pages/main/sig.md rename to docs/_pages/tutorials/main_concepts/sig.md index 1fad4387f..9c7cc1ebc 100644 --- a/docs/_pages/main/sig.md +++ b/docs/_pages/tutorials/main_concepts/sig.md @@ -1,43 +1,42 @@ --- layout: default title: SIG -grand_parent: Main Features -parent: Main Entities -nav_order: 5 +parent: Main concepts +nav_order: 4 --- -# Symbol Interpretation Graph +# Symbol Interpretation Graph (SIG) ## Relation -A Relation instance formalizes a relationship between a source Inter instance and a (separate) -target Inter instance. +A _Relation_ instance formalizes a relationship between a source `Inter` instance and a (separate) +target `Inter` instance. There are 3 kinds of relation: -* A _positive_ relation represents a **mutual support** between two Inter instances. -![](../assets/images/head_stem.png) +* A _positive_ relation represents a **mutual support** between two `Inter` instances. +![](../../assets/images/head_stem.png) Here we have a typical example: a filled head interpretation and a stem interpretation nearby with a suitable _HeadStemRelation_ between them, shown as a "_HeadStem_"-labelled green segment (the "_Relation_" suffix is always omitted in relation name display). -Support relations _increase_ the contextual grade of their linked Inter instances. +Support relations _increase_ the contextual grade of their linked `Inter` instances. In this way, even rather low-quality interpretations, when well combined through supporting relations, may end up with acceptable contextual grade. -* A _negative_ relation represents a **mutual exclusion** between two Inter instances. +* A _negative_ relation represents a **mutual exclusion** between two `Inter` instances. Typically, two different interpretations for the same underlying glyph will compete with one another and will thus be linked by an _Exclusion_ relation. -An exclusion tells the engine that the two Inter instances cannot coexist in the final configuration, +An exclusion tells the engine that the two `Inter` instances cannot coexist in the final configuration, so at least one of them will be discarded at some point in the transcription process. * A _neutral_ relation is neither positive nor negative, it just conveys information between two -Inter instances. +`Inter` instances. For example a head-chord is an ensemble composed of one or several heads and often one stem. There is one _Containment_ relation between the chord ensemble and each of its heads members. If the chord has a stem, there is a _ChordStemRelation_ between chord and stem (along with a supporting _HeadStemRelation_ between each head and the stem). The image below shows a higher level of relation: -* We can see two Inter instances (a treble clef followed by a 2-flat key) linked by a supporting +* We can see two `Inter` instances (a treble clef followed by a 2-flat key) linked by a supporting _ClefKeyRelation_ instance. * This _ClefKeyRelation_ exists because the vertical positions (pitches) of the flat signs configuration in this key (B then E) are compatible with a treble clef. @@ -45,11 +44,11 @@ configuration in this key (B then E) are compatible with a treble clef. between the two competing clef candidates, plus another _Exclusion_ between the bass clef and this key (because the vertical positions of this key are not compatible with a bass clef). -![](../assets/images/clef_key.png) +![](../../assets/images/clef_key.png) ## SIG -A **S**ymbol **I**nterpretation **G**raph (SIG), is simply a graph with Inter instances as vertices +A **S**ymbol **I**nterpretation **G**raph (SIG), is simply a graph with `Inter` instances as vertices and Relation instances as edges. The SIG plays a central role in Audiveris V5. @@ -57,5 +56,5 @@ Its main purpose is to host all candidate Interpretations and to formalize and m (mutual exclusions, supporting relations) within the population of candidate interpretations. There is one SIG per system, and at precise points in the OMR engine pipeline (the REDUCTION step and -the LINKS step), each SIG is _reduced_ so that all exclusions are resolved and no Inter with weak +the LINKS step), each SIG is _reduced_ so that all exclusions are resolved and no `Inter` with weak contextual grade remains in its graph. diff --git a/docs/_pages/tutorials/main_window/README.md b/docs/_pages/tutorials/main_window/README.md new file mode 100644 index 000000000..3adb8979d --- /dev/null +++ b/docs/_pages/tutorials/main_window/README.md @@ -0,0 +1,45 @@ +--- +layout: default +title: Main window +parent: Tutorials +nav_order: 4 +--- +# Main window + +This is the window that appears when Audiveris is run in the interactive mode +(which is the standard mode, unless the `-batch` option is specified on the command line). + +From this central window, we can drive the transcription process and edit the results. + +![](../../assets/images/chula_transcribed.png) + +This main window is composed of 3 panels: sheet, boards and events. + +## Sheet + +This is the large panel on the left side. +- The **Gray** tab, when available, presents the original image using gray values. +- The **Binary** tab presents the input image binarized into black and white colors. +- The **Data** tab presents the objects +([sections](../main_concepts/run_section.md#section-and-lag), [glyphs](../main_concepts/glyph_inter.md#glyph) and +[inters](../main_concepts/glyph_inter.md#inter)) extracted from the image. +In this `Data` tab, the staff lines are logically removed and drawn as thin lines. + +All tabs, except the `Data` tab, can be manually closed. +Most can be re-opened via the `Sheet` pull-down menu. + +## Boards + +The right panel is a vertical set of boards. +They provide information and editing functions. + +Only basic boards are displayed by default, the others are hidden. +A right click in this column allows to hide or display any board +available for the current sheet tab. + +## Events + +The lower panel is a log of the main events that occurred so far. + +More details are available in the Audiveris log file +(the precise path to the log file is displayed at the top of this events panel). diff --git a/docs/_pages/main/display_modes.md b/docs/_pages/tutorials/main_window/display_modes.md similarity index 60% rename from docs/_pages/main/display_modes.md rename to docs/_pages/tutorials/main_window/display_modes.md index 8ca3666b8..ca19516dd 100644 --- a/docs/_pages/main/display_modes.md +++ b/docs/_pages/tutorials/main_window/display_modes.md @@ -1,36 +1,35 @@ --- layout: default -title: Display Modes -grand_parent: Main Features -parent: Main Window +title: Display modes +parent: Main window nav_order: 1 --- # Data display modes In the sheet panel we can choose between 3 display modes, that are effective in the **Data** tab: -* ![](../assets/images/ModePhysical.png) The **_physical_** mode displays in the background the sheet +* ![](../../assets/images/ModePhysical.png) The **_physical_** mode displays in the background the sheet sections of pixels (pale blue for vertical sections, pale pink for horizontal sections) and in the foreground the current detected inters colorized according to their recognized shape and quality grade. -* ![](../assets/images/ModeCombined.png) The **_combined_** mode is a combination of the physical +* ![](../../assets/images/ModeCombined.png) The **_combined_** mode is a combination of the physical and logical layers. It displays the logical interpretations in a translucent manner on top of the physical pixels, to ease the visual detection of any discrepancies. -* ![](../assets/images/ModeLogical.png) The **_logical_** mode displays only the logical +* ![](../../assets/images/ModeLogical.png) The **_logical_** mode displays only the logical score entities (inters). It represents the current transcription of the original image, annotated by informations such as system number, measure number, time slot offset, etc. Using the menu {{ site.view_layers }} or the **F12** function key or the dedicated toolbar icon -(![](../assets/images/ModePhysical.png)/![](../assets/images/ModeCombined.png)/![](../assets/images/ModeLogical.png)), +(![](../../assets/images/ModePhysical.png)/![](../../assets/images/ModeCombined.png)/![](../../assets/images/ModeLogical.png)), we can cycle through these 3 different modes: Physical / Combined / Logical. | Mode | Data tab | | --- | --- | -| ![](../assets/images/ModePhysical.png) Physical mode | ![](../assets/images/physical2.png) | -| ![](../assets/images/ModeCombined.png) Combined mode | ![](../assets/images/combined2.png) | -| ![](../assets/images/ModeLogical.png) Logical mode | ![](../assets/images/logical2.png) | +| ![](../../assets/images/ModePhysical.png) Physical mode | ![](../../assets/images/physical2.png) | +| ![](../../assets/images/ModeCombined.png) Combined mode | ![](../../assets/images/combined2.png) | +| ![](../../assets/images/ModeLogical.png) Logical mode | ![](../../assets/images/logical2.png) | The other tabs are not impacted by the display mode. Notably, the **Binary** tab (which was mode-sensitive in previous Audiveris versions) @@ -39,4 +38,4 @@ so that it can instantly be used as a reference via a simple click on its tab: | No mode impact | Binary tab | | --- | --- | -| | ![](../assets/images/physical1.png) | +| | ![](../../assets/images/physical1.png) | diff --git a/docs/_pages/main/entity_colors.md b/docs/_pages/tutorials/main_window/entity_colors.md similarity index 83% rename from docs/_pages/main/entity_colors.md rename to docs/_pages/tutorials/main_window/entity_colors.md index c99a46ffa..ace3e7357 100644 --- a/docs/_pages/main/entity_colors.md +++ b/docs/_pages/tutorials/main_window/entity_colors.md @@ -1,16 +1,15 @@ --- layout: default -title: Entity Colors -grand_parent: Main Features -parent: Main Window +title: Entity colors +parent: Main window nav_order: 3 --- -# Entity Colors +# Entity colors The sheet window uses different colors to display the entities and the kind of entity that was recognized: -![](../assets/images/entity_colors.png) +![](../../assets/images/entity_colors.png) In this example the _background_ of the third measure stack is colored in pink because the rhythm check has failed for this measure (the first note of the upper voice was mistaken for a quarter @@ -20,7 +19,7 @@ The following _foreground_ colors are used for interpretation items in this wind * blue: bars, clefs, times, lyrics * purple: accidentals, articulations -* pale blue / pale rose: non recognized elements (vertical sections / horizontal sections) +* pale blue / pale pink: non recognized elements (vertical sections / horizontal sections) * brown: stems, slurs, normal text (not lyrics) * green: note heads (also small heads and augmentation points), flags, rests * red: elements in some abnormal status; typically some needed connection is missing diff --git a/docs/_pages/main/pan_zoom.md b/docs/_pages/tutorials/main_window/pan_zoom.md similarity index 84% rename from docs/_pages/main/pan_zoom.md rename to docs/_pages/tutorials/main_window/pan_zoom.md index 5c8f56945..3e9768d71 100644 --- a/docs/_pages/main/pan_zoom.md +++ b/docs/_pages/tutorials/main_window/pan_zoom.md @@ -1,13 +1,12 @@ --- layout: default -title: Pan and Zoom -grand_parent: Main Features -parent: Main Window +title: Pan and zoom +parent: Main window nav_order: 2 --- -# Pan and Zoom {#pan-and-zoom} +# Pan and zoom -## Moving {#moving} +## Moving The sheet image is usually larger than the window where the sheet is displayed. We can move the display over the sheet using different means: @@ -21,7 +20,7 @@ We can move the display over the sheet using different means: * By pressing on one of the 4 arrow keys to move the display in related direction, * By pressing on one of the 4 arrow keys, while `Shift` is held down, to move pixel by pixel. -## Zoom {#zoom} +## Zoom It can be adjusted in the range [1:8 to 32:1] by several means: @@ -37,7 +36,7 @@ It can be adjusted in the range [1:8 to 32:1] by several means: - Key `Ctrl+ 0` (as well as `Ctrl+Shift 0`) to reset zoom. * By using a rectangular "lasso" while holding both keys `Ctrl+Shift` pressed. When releasing the mouse, the zoom will be adjusted so that both rectangle sides become fully visible. -* By using the predefined buttons ![](../assets/images/zoom1.png)and ![](../assets/images/zoom2.png), +* By using the predefined buttons ![](../../assets/images/zoom1.png)and ![](../../assets/images/zoom2.png), we can fit to the sheet's width or height, respectively. When zooming in or out, the display remains focused on its current selection, if any. diff --git a/docs/_pages/main/voice_colors.md b/docs/_pages/tutorials/main_window/voice_colors.md similarity index 53% rename from docs/_pages/main/voice_colors.md rename to docs/_pages/tutorials/main_window/voice_colors.md index d47faef9a..f2a482bc7 100644 --- a/docs/_pages/main/voice_colors.md +++ b/docs/_pages/tutorials/main_window/voice_colors.md @@ -1,45 +1,45 @@ --- layout: default -title: Voice Colors -grand_parent: Main Features -parent: Main Window +title: Voice colors +parent: Main window nav_order: 4 --- -# Voice Colors +# Voice colors By default, as described in the previous section, each score entity is displayed using a color determined according to the entity kind: -![](../assets/images/dich_no_voice.png) +![](../../assets/images/dich_no_voice.png) -But we can decide to focus on **voices**, rather than entity **kinds**, and thus choose to display -each entity according to its voice, if any. +But we can decide to focus on **voices**, rather than entity **kinds**, +and thus choose to display each entity according to its voice, if applicable. This feature is reported to ease the detection of wrong voice assignment. -To do this, we can use the pull-down menu {{ site.view_voices }} -(or directly the related toolbar button): +To do this, we use the pull-down menu {{ site.view_voices }} +or the related toolbar button ![](../../assets/images/voices_colored.png): -![](../assets/images/view_voices.png) +![](../../assets/images/view_voices.png) This results in the following display: -![](../assets/images/dich_voices.png) +![](../../assets/images/dich_voices.png) Within any given part, voice numbers (and thus colors) are assigned as follows: -![](../assets/images/voice_colors.png) -* Voices starting on the first staff use numbers 1 through 4, -* Voices starting on the second staff use numbers 5 through 8. +![](../../assets/images/voice_colors.png) +* The voices *starting* on the upper staff use numbers 1 through 4, +* The voices *starting* on the lower staff use numbers 5 through 8. -## Shared Heads +## Shared heads Note that some note heads can be _shared_ between two chords. -In the example above, this is the case in the last staff, for the starting head of each measure +In the example above, this is the case in the last staff, for the starting head of each measure, except the first one. -In such canonical case, the chords involved are the chord below on the left and the chord above on the right. +In such canonical case, the chords involved are the chord below on the left +and the chord above on the right. To indicate the **_shared_** aspect of such head, a small diagonal red segment is drawn across the head, to indicate a logical split of the shared head. -![](../assets/images/shared_head_voices.png) +![](../../assets/images/shared_head_voices.png) Here, voices are colorized, thus each head _'half'_ appears with its own voice color. diff --git a/docs/_pages/quick/README.md b/docs/_pages/tutorials/quick/README.md similarity index 55% rename from docs/_pages/quick/README.md rename to docs/_pages/tutorials/quick/README.md index 630a20774..64dd09685 100644 --- a/docs/_pages/quick/README.md +++ b/docs/_pages/tutorials/quick/README.md @@ -1,15 +1,15 @@ --- layout: default -title: Quick Tour +title: Quick tour +parent: Tutorials nav_order: 2 -has_children: true --- -# Quick Tour +# Quick tour This chapter describes a very early tour of Audiveris, featuring the basic workflow that goes from -the _image_ of some sheet of music to the _sound_ of contained music. +the _image_ of some sheet of music to the _sound_ of the music it represents. -The other chapters will cover in more details each step of perhaps more complex workflows, +Other chapters will cover in more details each step of perhaps more complex workflows, but for the sake of simplicity, let's assume that we already have: * Audiveris installed, @@ -23,10 +23,10 @@ All we have to do is, in sequence: 4. Export the score in MusicXML, 5. Play the exported MusicXML file with MuseScore. -For the impatient, note that if we have defined a [plugin](../advanced/plugins.md) to a sequencer -like MuseScore, the sub-sequence of bullets \#3, \#4 and \#5 could conveniently be replaced by just -pressing the plugin button. -This would give: +For the impatient, note that if we have defined a [plugin](../../guides/advanced/plugins.md) +to a sequencer like MuseScore, the sub-sequence of bullets \#3, \#4 and \#5 above could +conveniently be replaced by just pressing the plugin button. +This would now give: 1. Launch Audiveris, 2. Load the input image, 3. Press the Plugin button. diff --git a/docs/_pages/tutorials/quick/export.md b/docs/_pages/tutorials/quick/export.md new file mode 100644 index 000000000..86874486e --- /dev/null +++ b/docs/_pages/tutorials/quick/export.md @@ -0,0 +1,66 @@ +--- +layout: default +title: Export +nav_order: 4 +parent: Quick tour +--- +# Export + +## Saving to `.omr` file + +From the input image, the Audiveris OMR engine has gradually built specific information +that we collectively refer to as "_OMR data_". + +The reference chapter on [`.omr` files](../../reference/outputs/omr.md) +describes thoroughly how this OMR data is organized. +For now, it is enough to know that we can save (and reload) this OMR information to/from disk +(into a `.omr` file). + +Saving can be done via the pull-down menu {{ site.book_save }} +or via the `Ctrl+S` shortcut (`Command+S` for macOS): + +![](../../assets/images/book_save.png) + +In our "chula" example, this will result in a `chula.omr` file. + +Saving the OMR job is not strictly necessary for our very small example. + +It is important to know that Audiveris can always restart from a saved `.omr` file, +even from very old files, which allows to resume processing and user editing +where they were stopped. + +For sizable OMR jobs, this capability is essential. + +## Exporting to `.mxl` file + +Right now, we are focused only on how to feed a music sequencer with music data it can easily import. +And as of this writing, this is achieved by going through the *de facto* standard of **MusicXML**-formatted data. + +This can be done via the pull-down menu {{ site.book_export }}: + +![](../../assets/images/book_export.png) + +From our "chula" example, this command produces a file named `chula.mxl` +(the `.mxl` extension indicates a compressed MusicXML format). + +## Output location + +Starting with the 5.4 release, the default policy is to put any output file next to the input file. + +This default policy can be changed via the [Preferences](../../guides/advanced/preferences.md) dialog. + +We can also use the "`Save book as`" or the "`Export book as`" menu items to choose a specific output location and name. + +## `.omr` files vs. `.mxl` files + +These files are not equivalent. + +The export from OMR to MusicXML is _lossy_, since a large amount of OMR information +can't go into MusicXML. +A `.omr` file can always be used to regenerate the `.mxl` export, but the reverse is not true. + +{: .note} +A good advice is to keep these `.omr` files +-- unless we are running out of disk space! :-) -- +because they represent a valuable source of OMR information, +suitable for training newer versions of Audiveris (more on this later). diff --git a/docs/_pages/tutorials/quick/launch.md b/docs/_pages/tutorials/quick/launch.md new file mode 100644 index 000000000..7d6ddc7ee --- /dev/null +++ b/docs/_pages/tutorials/quick/launch.md @@ -0,0 +1,33 @@ +--- +layout: default +title: Launch +nav_order: 1 +parent: Quick tour +--- +# Launch + +For the sake of simplicity, let's assume that: +1. We are using Windows OS +2. We have installed Audiveris via the provided Windows Installer. +(This installer can be downloaded from the Audiveris +[Releases area](https://github.com/Audiveris/audiveris/releases). +See [Installing binaries](../install/binaries.md)). + +We get into the Windows Start Menu, by pressing the Windows logo key on our keyboard +or by clicking on the Start icon (left end of the taskbar). +In this menu organized by alphabetical order, we move down to the Audiveris folder, +open it, and finally click on the Audiveris executable. + +![](../../assets/images/windows_start_menu_wide.png) + +This opens a small terminal window which automatically: +1. Checks our installed Java environment. +If the check fails, Audiveris is not launched. +Instead, a message appears, warning about our [Java environment](../install/binaries.md#java-environment). +2. Launches Java on the Audiveris software. + +This results in the display of the Audiveris [main window](../main_window/README.md), from which we will be able to operate. + +If we don't use binary installation (either the Windows installer or the Linux flatpak), +we should refer to [Building from sources](../install/sources.md) +to build and then launch the software. diff --git a/docs/_pages/quick/load.md b/docs/_pages/tutorials/quick/load.md similarity index 77% rename from docs/_pages/quick/load.md rename to docs/_pages/tutorials/quick/load.md index 7ddd9ae46..7379fdacf 100644 --- a/docs/_pages/quick/load.md +++ b/docs/_pages/tutorials/quick/load.md @@ -2,18 +2,18 @@ layout: default title: Load nav_order: 2 -parent: Quick Tour +parent: Quick tour --- # Load To load an image from disk, we can use the pull-down menu {{ site.file_input }}: -![](../assets/images/file_input.png) +![](../../assets/images/file_input.png) An `Open` dialog will show up, allowing us to navigate between folders and finally select an image input file: -![](../assets/images/open_dialog.png) +![](../../assets/images/open_dialog.png) Another way to load an input file is to drag this file from the File Explorer and to drop it onto the Audiveris application window. @@ -24,4 +24,4 @@ Here, we have selected the file `chula.png`, and the application window now disp contained image. Actually, it's a *binarized* version of the image: -![Binarized image](../assets/images/chula_binarized.png) +![Binarized image](../../assets/images/chula_binarized.png) diff --git a/docs/_pages/quick/play.md b/docs/_pages/tutorials/quick/play.md similarity index 73% rename from docs/_pages/quick/play.md rename to docs/_pages/tutorials/quick/play.md index 603e1c146..7a9517133 100644 --- a/docs/_pages/quick/play.md +++ b/docs/_pages/tutorials/quick/play.md @@ -2,7 +2,7 @@ layout: default title: Play nav_order: 5 -parent: Quick Tour +parent: Quick tour --- # Play @@ -11,16 +11,15 @@ external program (a simple music sequencer or some high-level editor). Many external programs can work on Audiveris MusicXML export, thanks to the _de facto_ standard MusicXML exchange format. -![](../assets/images/play_musescore.png) +![](../../assets/images/play_musescore.png) Here, we have simply imported the `chula.mxl` MusicXML file into MuseScore. Note that this music editor displays the imported music correctly. -We just have to press the play button to hear the music. +We just have to press the play button to listen to the music.
This is the end of our quick tour. -For a more thorough understanding of Audiveris, we can visit the [Main Features](../main/README.md) -chapter. +For a more thorough understanding of Audiveris, we can visit the next chapter: [Main concepts](../main_concepts/README.md). diff --git a/docs/_pages/quick/transcribe.md b/docs/_pages/tutorials/quick/transcribe.md similarity index 50% rename from docs/_pages/quick/transcribe.md rename to docs/_pages/tutorials/quick/transcribe.md index 5be22d3ca..a2e1bf22b 100644 --- a/docs/_pages/quick/transcribe.md +++ b/docs/_pages/tutorials/quick/transcribe.md @@ -2,7 +2,7 @@ layout: default title: Transcribe nav_order: 3 -parent: Quick Tour +parent: Quick tour --- # Transcribe @@ -11,13 +11,13 @@ from low-level graphical data. This process can be launched directly from the toolbar icon: -![](../assets/images/transcribe_button.png) +![](../../assets/images/transcribe_button.png) It can also be launched via the pull-down menu {{ site.book_transcribe }}: -![](../assets/images/transcribe.png) +![](../../assets/images/transcribe.png) -Note this command applies to all images (sheets) in the input file (book). +This command applies to all images (sheets) in the input file (book). There is also the pull-down menu {{ site.sheet_transcribe }} which applies only to the current sheet. In the simple case at hand, since we have just one image in the input file, the book-level and @@ -25,11 +25,16 @@ sheet-level commands are equivalent. After some time, we get the following image of transcribed music: -![](../assets/images/chula_transcribed.png) +![](../../assets/images/chula_transcribed.png) -Looking carefully at this result, we might detect a couple of mistakes near the bottom of the image: -a flat sign not recognized, and an 8th note mistaken for a quarter because of overlapping flag -and 8th-rest chunks. +Looking carefully at this result, we might detect a couple of mistakes: +- On the upper left, the word "Flûte" was OCR'd as "Flfite" [^flute] +- On the lower left, a flat sign was not recognized [^flat] +- On the lower right, a quarter rest was not recognized[^quarter] -This could easily be corrected by manual actions, but let us simply ignore them to keep this -example short. +This could easily be corrected by manual actions, but let us simply ignore them +for now to keep this example short. + +[^flute]: This is a French word, while the OCR language is English by default. See {{ site.tools_languages }} +[^flat]: The underlying glyph collides with a ledger, resulting in poor grade. +[^quarter]: This is due to an overlap with a flag item. \ No newline at end of file diff --git a/docs/_pages/ui_examples/eyes/book_parameters.png b/docs/_pages/ui_examples/eyes/book_parameters.png deleted file mode 100644 index 0d8ec992d..000000000 Binary files a/docs/_pages/ui_examples/eyes/book_parameters.png and /dev/null differ diff --git a/docs/_pages/ui_tools/remove_inter.md b/docs/_pages/ui_tools/remove_inter.md deleted file mode 100644 index 7c12447e0..000000000 --- a/docs/_pages/ui_tools/remove_inter.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: default -title: Inter Removal -grand_parent: User Editing -parent: UI Tools -nav_order: 3 ---- -# Inter Removal -{: .no_toc } - -When one or several Inter instances have been selected, we can remove them as follows: - -* The Inter-board has a `Deassign` button which removes the selected inter displayed in the - board. - This applies only for the displayed Inter. - ![](../assets/images/deassign_button.png) - -* The {{ site.popup_inters }} contextual menu provides an item to - remove the selected Inter entities according to their containing system. - ![](../assets/images/remove_inters.png) - -* Pressing `DELETE` key or `BACKSPACE` key on the keyboard removes all the selected inters. - -If more than one Inter is selected, we will be prompted for confirmation beforehand. - -Removing a selected Inter (or a set of selected Inters) automatically removes the relations these -Inters were involved in. - -Removing the last member of an ensemble also removes that ensemble. diff --git a/docs/_pages/updates.md b/docs/_pages/updates.md deleted file mode 100644 index 2ac8ff874..000000000 --- a/docs/_pages/updates.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -layout: default -title: Updates -nav_order: 8 -has_children: false ---- -# Software updates -{: .no_toc } - -As detailed in the [Git Workflow](https://github.com/Audiveris/audiveris/wiki/Git-Workflow) article -on Audiveris Wiki: -- Audiveris development is performed on the specific GitHub "**development**" branch. - It is thus continuously available for anyone that pulls and builds the software from source. -- The default "**master**" branch is updated only for software releases. - At this time only, a new release is created and uploaded to the [Releases section](https://github.com/Audiveris/audiveris/releases) on GitHub site. - ---- -Table of contents -{: .text-delta } - -1. TOC -{:toc} ---- - -## 5.4 (on-going) - -- User Interface - - Past the SYMBOLS step, the manual removal of any Inter now triggers a dynamic rebuilding of glyphs, - as if the removed Inter had never existed. - - Improvement and extension of default/book/sheet parameters (interline, barline) - - Ability to display some inters in jumbo mode to ease a visual inspection - -- by default this can apply to augmentation dots. - - Ability to gracefully stop the current book processing at the next step end. - - Ability to clear the log window -- the log file remains intact. -- Engine - - The recognition of fermata no longer requires separate recognitions of fermata-arc and fermata-dot. - - The processing of an input image with no white margin around the staves is now possible. -- Project - - A Linux Flatpak package, gathering the needed libraries, proper Java environment - and the main Tesseract language files, is now provided on FlatHub. - - The Windows installer pre-populates the user `config`/`tessdata` folder with the main Tesseract - languages. -- Documentation - - Support for a PDF version of the Audiveris Handbook. -- Java - - In `Audiveris.bat` (used by the Windows installer) and `Audiveris` start scripts, - the Java version is checked before the application is launched. - - Support of Java 21. - - Upgrade to Gradle 8.5 to support Java 21. - - Removal of all deprecated features such as JGoodies PanelBuilder, Observer/Observable, - class.newInstance(), etc. - -## 5.3 - -- User Interface - - Editing of staff geometry, at individual line and global staff levels - - User management of score logical parts, and their mapping to sheet physical parts - - User editing of newly supported features (multi-measure rests, octave shifts, etc) -- Engine - - Support for drums unpitched notation - - Support of several musical font families for better template matching - - Support of several text font families - - Support for multi-measure rests - - Support for measure repeats for 1, 2 and 4 measures - - Support for octave shifts (single and multi-line shifts) - - Support for endings with no left leg, with default number generation - - Support for two populations of beam height and head size - - Support for beam thickness specification - - Support for fingering and plucking -- Project - - Use of Tesseract 5.x in legacy mode - - Support of MusicXML 4.0 - - Generation of Schemas documentation -- Java - - Support of Java 17 - -## 5.2 - -- User Interface - - Ability to move and resize symbols - - Snapping note heads to staff line/ledgers and stems - - Repetitive input - - Ability to merge/split books - - Ability to merge/split parts via brace handling - - Ability to merge systems - - Ability to merge/split chords - - Ability to modify voice or time slot for chords - - Support for compound notes (head + stem) - - Support for key signature cancel (key made of natural signs) - - Improved support for chord names - - Better handling of sentences, chord names, lyrics - - Ability to correct beam thickness scale - - Ability to limit book processing on selected sheets - - Support for high DPI devices - - Internationalization of all menus -- Engine - - Better handling of poor-quality scores - - Support for 1-line percussion staves - - Detection of 4-line and 6-line tablatures - - New algorithm for time slots and voices - - Support for non measure-long whole rests - - Support for implicit tuplets - - Support for merged grand staff configuration - - Support for cross heads - - Plugin mechanism upgraded for multi-movement exports -- Project - - Automated checks for update on GitHub - - Documentation handled on GitHub Pages -- Java - - Support of Java 11 - - Refined dependencies on Java EE, JAXB, etc away from Java 8 - -## 5.1 - -- User Interface - - Visual separation of shared heads - - User assignment of fixed-shape symbols - - Ability to modify scale parameters -- Engine - - Augmentation dots apply to shared heads -- Project - - Windows binary installers (32 and 64) -- Java - - Support of Java 8 - -## 5.0 - -- Engine - - Creation of `.omr` project files diff --git a/docs/_sass/custom/custom.scss b/docs/_sass/custom/custom.scss index d1512d9c9..83f1c52d6 100644 --- a/docs/_sass/custom/custom.scss +++ b/docs/_sass/custom/custom.scss @@ -1,7 +1,7 @@ h1, .text-alpha { - @include fs-8; - font-weight: 600; + @include fs-9; + font-weight: 300; } h2, @@ -23,6 +23,13 @@ h4, text-transform: none; } +h5, +.text-epsilon { + @include fs-4; + font-weight: 400; + text-transform: uppercase; +} + /* Reference to a footnote */ .footnote::before { content: "["; diff --git a/docs/index.md b/docs/index.md index 7ae39b34c..b495260a3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,10 +6,10 @@ nav_exclude: true ## For the end user -- [HandBook](_pages/handbook) +- [HandBook] This is the general documentation, meant for the end user. It is now available in two versions: - - A web version (what you are reading) + - A web version (the pages you are reading) - A PDF version (downloadable via the button below) {: .d-inline-block } @@ -20,7 +20,22 @@ new {: .btn .text-center } ## For the developer -- [Format of ".omr" files](_pages/outputs/omr) +- [Format of ".omr" files] This is the description of the internals of any ``.omr`` Audiveris book file -- [Audiveris Wiki](https://github.com/Audiveris/audiveris/wiki) +- [Audiveris Wiki] This Wiki gathers various articles about the development and potential evolutions of the Audiveris project. + +## All contributors + +
    +{% for contributor in site.github.contributors %} +
  • + {{ contributor.login }} +
  • +{% endfor %} +
+ + +[Audiveris Wiki]: https://github.com/Audiveris/audiveris/wiki +[Format of ".omr" files]: ./_pages/reference/outputs/omr +[HandBook]: ./_pages/handbook diff --git a/docs/pages-tree.txt b/docs/pages-tree.txt new file mode 100644 index 000000000..a31d1faf6 --- /dev/null +++ b/docs/pages-tree.txt @@ -0,0 +1,165 @@ +. +├── assets +│   └── images +│   └── ....png +├── explanation +│   ├── README.md +│   └── steps +│   ├── README.md +│   ├── beams.md +│   ├── binary.md +│   ├── chords.md +│   ├── cue_beams.md +│   ├── curves.md +│   ├── grid.md +│   ├── headers.md +│   ├── heads.md +│   ├── ledgers.md +│   ├── links.md +│   ├── load.md +│   ├── measures.md +│   ├── page.md +│   ├── reduction.md +│   ├── rhythms.md +│   ├── scale.md +│   ├── stem_seeds.md +│   ├── stems.md +│   ├── symbols.md +│   └── texts.md +├── guides +│   ├── README.md +│   ├── advanced +│   │   ├── README.md +│   │   ├── constants.md +│   │   ├── improve_input.md +│   │   ├── plugins.md +│   │   ├── preferences.md +│   │   ├── samples.md +│   │   └── training.md +│   ├── main +│   │   ├── README.md +│   │   ├── book_parameters.md +│   │   ├── book_portions +│   │   │   ├── README.md +│   │   │   ├── sheet_selection.md +│   │   │   ├── sheet_validity.md +│   │   │   └── split_merge.md +│   │   ├── cli.md +│   │   ├── languages.md +│   │   ├── pipeline.md +│   │   ├── scanning.md +│   │   └── sheet_scale.md +│   ├── specific +│   │   ├── README.md +│   │   ├── bar_repeat.md +│   │   ├── drums.md +│   │   ├── fingering_plucking.md +│   │   ├── fonts.md +│   │   ├── logical_parts.md +│   │   ├── metronome.md +│   │   ├── multi_rest.md +│   │   ├── octave_shift.md +│   │   ├── snippets.md +│   │   ├── tablature.md +│   │   └── tremolo.md +│   └── ui +│   ├── README.md +│   ├── ui_examples +│   │   ├── README.md +│   │   ├── eyes +│   │   │   ├── README.md +│   │   │   └── ....png +│   │   └── trinitas +│   │   ├── README.md +│   │   └── ....png +│   ├── ui_foundations +│   │   ├── README.md +│   │   ├── inspection.md +│   │   ├── principles.md +│   │   └── selection.md +│   └── ui_tools +│   ├── README.md +│   ├── add_inter.md +│   ├── add_relation.md +│   ├── chords.md +│   ├── edit_inter.md +│   ├── key.md +│   ├── measure.md +│   ├── octave_shift.md +│   ├── part.md +│   ├── remove_inter.md +│   ├── remove_relation.md +│   ├── shared_head.md +│   ├── staff_editing.md +│   ├── system.md +│   ├── text.md +│   ├── time.md +│   └── tips.md +├── handbook.md +├── reference +│   ├── README.md +│   ├── boards +│   │   ├── README.md +│   │   ├── binarization.md +│   │   ├── binary.md +│   │   ├── classifier.md +│   │   ├── glyph.md +│   │   ├── inter.md +│   │   ├── pixel.md +│   │   ├── section.md +│   │   └── shape.md +│   ├── editors.md +│   ├── folders +│   │   ├── README.md +│   │   ├── cached.md +│   │   ├── essential.md +│   │   └── standard.md +│   ├── limitations.md +│   ├── menus +│   │   ├── README.md +│   │   ├── book.md +│   │   ├── debug.md +│   │   ├── file.md +│   │   ├── help.md +│   │   ├── plugins.md +│   │   ├── popup.md +│   │   ├── sheet.md +│   │   ├── step.md +│   │   ├── tools.md +│   │   └── view.md +│   ├── outputs +│   │   ├── README.md +│   │   ├── log.md +│   │   ├── mxl.md +│   │   ├── omr.md +│   │   ├── pdf.md +│   │   └── zip.md +│   └── updates.md +└── tutorials + ├── README.md + ├── install + │   ├── README.md + │   ├── binaries.md + │   ├── java.md + │   └── sources.md + ├── main_concepts + │   ├── README.md + │   ├── book_score.md + │   ├── glyph_inter.md + │   ├── run_section.md + │   └── sig.md + ├── main_window + │   ├── README.md + │   ├── display_modes.md + │   ├── entity_colors.md + │   ├── pan_zoom.md + │   └── voice_colors.md + └── quick + ├── README.md + ├── export.md + ├── launch.md + ├── load.md + ├── play.md + └── transcribe.md + +25 directories, 605 files diff --git a/docs/pdf/pdf-build.sh b/docs/pdf/pdf-build.sh index 99ad23456..bb411051d 100644 --- a/docs/pdf/pdf-build.sh +++ b/docs/pdf/pdf-build.sh @@ -9,7 +9,7 @@ # found at https://gist.github.com/hamoid #--------------------------------------------------------------------------------------------------- # -# This bash file has been tested on Windows/Cygwin. It should also run on Linux and MacOS. +# This bash file has been tested on Windows/Cygwin. It should also run on Linux and macOS. # It uses standard utilities: curl, grep, head, perl, sed, tail, echo, cat # # It also uses the "prince" software which is assumed to be found on PATH.