Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
528 commits
Select commit Hold shift + click to select a range
eaec0e9
use new EntryInfoPtr getter
rpatters1 Nov 26, 2025
1b28b8e
update test files
rpatters1 Nov 27, 2025
a39ccd0
allow for beams over multiple bars plus test file
rpatters1 Nov 27, 2025
04c9ab3
Fix code review issues.
rpatters1 Nov 27, 2025
80f6152
working except for pre-existing grace after bug
rpatters1 Nov 28, 2025
33d7dc1
fix grace notes after order
rpatters1 Nov 28, 2025
4dbd36a
rever to main branch of musx
rpatters1 Nov 28, 2025
e4ad3d3
remove unused beamedEntries map
rpatters1 Nov 28, 2025
21f1684
bring up to latest musx
rpatters1 Nov 28, 2025
7994566
Fix repeat dot barline distance
XiaoMigros Dec 3, 2025
64dadeb
Detect straight flags from actual flag char and not just the document…
rpatters1 Nov 30, 2025
2843efb
Add comment
rpatters1 Nov 30, 2025
0fe2d55
detect beamed rest workaround and handle appropriately
rpatters1 Nov 30, 2025
a7140ba
use latest musxdom APIs to simplfy workaround detection
rpatters1 Dec 1, 2025
b7df407
build with latest musx. beam workaround not great with v1v2.
rpatters1 Dec 1, 2025
52cbb77
more adjustments
rpatters1 Dec 1, 2025
abba640
Used `currentEntry` where possible, to avoid locking the pointer again.
rpatters1 Dec 2, 2025
0dc084a
eliminate client-side beamover detection code. (still not working cor…
rpatters1 Dec 3, 2025
eeadf87
working
rpatters1 Dec 3, 2025
07c28fd
add detailed comment about the need for the alternative mode of Inter…
rpatters1 Dec 3, 2025
ac7dd5c
add comment
rpatters1 Dec 3, 2025
dc3c5ad
final updates this round (we hope)
rpatters1 Dec 3, 2025
91fdc8a
Fix page text bad positions
XiaoMigros Dec 5, 2025
0a1bb0d
A first attempt at system scaling
XiaoMigros Dec 7, 2025
9b433e2
Fix system left margins
XiaoMigros Dec 7, 2025
10e5c2f
Attempt to fix coda systems
XiaoMigros Dec 7, 2025
9805cdf
Import system start/end space
XiaoMigros Dec 7, 2025
f717234
style imported. still need to work on position
rpatters1 Dec 5, 2025
bac8bc1
cleanup bugs and minor issues
rpatters1 Dec 6, 2025
175b414
a little more cleanup
rpatters1 Dec 6, 2025
34a25d5
kind of working, but the metrics -> spatium computation is pure guess…
rpatters1 Dec 6, 2025
1e72168
this works decently well.
rpatters1 Dec 7, 2025
c9ffb34
more comments
rpatters1 Dec 7, 2025
9b5bc09
simplify page layout
XiaoMigros Dec 7, 2025
a0810ef
Fix coda systems?
XiaoMigros Dec 7, 2025
ae14cdd
Fix crash
XiaoMigros Dec 7, 2025
34aa417
import first system left margin correctly
XiaoMigros Dec 8, 2025
4b4b080
Add fallback values for vertical text pos
XiaoMigros Dec 8, 2025
6b5e31a
use more toFontMetrics
XiaoMigros Dec 8, 2025
1854c8c
Finally fix text positioning?
XiaoMigros Dec 8, 2025
4dd849a
frames are working. font sizes are wrong still
rpatters1 Dec 9, 2025
1f572d9
fix font size and positioning (when frame is present)
rpatters1 Dec 9, 2025
23b983e
test MeasureTextAssign
rpatters1 Dec 9, 2025
d0d803c
correctly align measure-attached text
rpatters1 Dec 9, 2025
cf53ec2
Fix system scaling?
XiaoMigros Dec 10, 2025
728f1f3
Avoid crash on invalid percussion grace note
XiaoMigros Dec 10, 2025
2a9ef23
attempt 3 at text pos
XiaoMigros Dec 10, 2025
eb29f89
Fretboard fix attempt
XiaoMigros Dec 10, 2025
b34441d
scaling attempt
XiaoMigros Dec 10, 2025
175ba37
Fix assert
XiaoMigros Dec 10, 2025
d16ee5d
Improved XML text parsing
XiaoMigros Dec 10, 2025
517ee32
Correct transposition
XiaoMigros Dec 10, 2025
f3fe063
this version of the measure number positioning below at least has the…
rpatters1 Dec 9, 2025
bd8fc7f
add more accurate below-staff measure number positioning based on staff.
rpatters1 Dec 9, 2025
31dd3c8
fonts are guaranteed non-null by musxdom
rpatters1 Dec 9, 2025
3d9a1be
move default argument to correct spot
rpatters1 Dec 10, 2025
807c18e
Import articulation pedal markings
XiaoMigros Dec 10, 2025
32d8fc7
Fix end hook types?
XiaoMigros Dec 10, 2025
9ddc1b4
simplify hook heights
XiaoMigros Dec 10, 2025
174bb88
inst change now includes transposition changes
rpatters1 Dec 11, 2025
4cfd589
handle instrument name changes correctly
rpatters1 Dec 11, 2025
55f1baf
fix string parsing
rpatters1 Dec 11, 2025
f6b5dfe
don't show inst names if Finale doesn't.
rpatters1 Dec 11, 2025
bb6b116
fix typos
rpatters1 Dec 11, 2025
1177296
use spatium literals
XiaoMigros Dec 12, 2025
7f99941
fix text placement?
XiaoMigros Dec 12, 2025
86f2c96
Fix some compiler warnings
XiaoMigros Dec 12, 2025
cec1074
Allow ties between layers
XiaoMigros Dec 13, 2025
baab196
preserve visibility for always visible staves/parts
rpatters1 Dec 12, 2025
12aa588
Fix clef and key issues with transposing instruments that also use di…
rpatters1 Dec 12, 2025
b340585
more surgical fix for transposed clef creation.
rpatters1 Dec 13, 2025
8bd90e1
Attempt to fix smartshape detection
XiaoMigros Dec 15, 2025
30b6ce3
A first attempt at lyrics
XiaoMigros Dec 14, 2025
053736f
Import jumps/markers placement
XiaoMigros Dec 15, 2025
7fd6b56
Repeat text uses frame setter
XiaoMigros Dec 15, 2025
d8e0e14
linked jumps placement
XiaoMigros Dec 16, 2025
1620373
Custom lines: no 0 font size
XiaoMigros Dec 16, 2025
211ccaa
Fix a few warnings
rpatters1 Dec 17, 2025
8121fcf
push different musx branch for CI build test
rpatters1 Dec 18, 2025
fbb1a95
rename NoteInfo to DurationInfo (to match change in musx)
rpatters1 Dec 19, 2025
f800fdd
back out test change
rpatters1 Dec 19, 2025
0bb21c8
Don't create backwards spanners
XiaoMigros Dec 20, 2025
40a36a3
Clefs: Guess forInstrumentChange
XiaoMigros Dec 20, 2025
1fbb2a5
Marginally improve scaling
XiaoMigros Dec 21, 2025
9ba1d90
Remove unused font mapping files
XiaoMigros Dec 21, 2025
2faa0a6
Some more inst defs
XiaoMigros Dec 21, 2025
cd008c2
Use more namespaces
XiaoMigros Dec 22, 2025
1133d3b
Remove unused method
XiaoMigros Dec 22, 2025
0f567b9
namespace improvements
XiaoMigros Dec 22, 2025
02b905d
Improve text expr vertical pos
XiaoMigros Dec 22, 2025
cce776d
Fix 2-seg smartshape pos on 2nd system
XiaoMigros Dec 22, 2025
2f8b91d
Read more style settings
XiaoMigros Dec 22, 2025
2042399
Fix repeat marking positions
XiaoMigros Dec 22, 2025
e4d860f
Support expression scaling option
XiaoMigros Dec 22, 2025
8890b6c
Collect more of tuplet style
XiaoMigros Dec 22, 2025
e44e3d3
Attempt at dot fix
XiaoMigros Dec 22, 2025
52a329f
use musx consolidatated AlignJustify enum.
rpatters1 Dec 22, 2025
ba7c476
further attempt at dot fix
XiaoMigros Dec 22, 2025
13ee6a3
Fix spacers not being detected by page text
XiaoMigros Dec 23, 2025
2f57022
More AlignH simplifications
XiaoMigros Dec 23, 2025
5bd9dcf
Fix warnings
XiaoMigros Dec 23, 2025
0e0bb07
Fix grace slur direction?
XiaoMigros Dec 23, 2025
afa5ed0
Fix smartshape type detection
XiaoMigros Dec 16, 2025
a4c885a
Fix assert ?
XiaoMigros Dec 23, 2025
ed89bc3
Fix codestyle
XiaoMigros Dec 23, 2025
40731cf
Dot fix attempt
XiaoMigros Dec 23, 2025
f82d69c
Fix assert ?
XiaoMigros Dec 23, 2025
6d1a969
refactor slur thickness import
rpatters1 Dec 23, 2025
d016e01
refactor calculation of slur/tie thickness.
rpatters1 Dec 23, 2025
854bd74
uncrustify
rpatters1 Dec 23, 2025
8af6c50
remove IF_ASSERT_FAILED
rpatters1 Dec 23, 2025
4b6c701
ottava fix?
XiaoMigros Dec 24, 2025
0447daa
Move things to typesconv
XiaoMigros Dec 25, 2025
cfe44dd
More codestyle
XiaoMigros Dec 25, 2025
1c7bcf6
Don't rebase system left margins
XiaoMigros Oct 30, 2025
ae027b8
Don't import invalid tuplets
XiaoMigros Dec 25, 2025
13409c1
Resolve various todos
XiaoMigros Dec 25, 2025
2dec2ad
More style settings
XiaoMigros Dec 26, 2025
c61cc11
Bizarre style setting test
XiaoMigros Dec 26, 2025
44a48b4
Correctly determine placement for expressions
XiaoMigros Dec 26, 2025
f7774e8
Read ornament intervals from symbols
XiaoMigros Dec 26, 2025
2852c79
Store articulations
XiaoMigros Dec 26, 2025
9dfba9b
Import text-based articulation
XiaoMigros Dec 26, 2025
8fc2500
Fix artic placement on rests?
XiaoMigros Dec 26, 2025
890c185
Allow individual offset for chord symbols
XiaoMigros Dec 26, 2025
4e6513b
Preferences setup
XiaoMigros Dec 27, 2025
9f9f68d
Less iteration
XiaoMigros Dec 27, 2025
08bab6d
Preferences implementation
XiaoMigros Dec 27, 2025
6a5617b
Chord symbols tests
XiaoMigros Dec 27, 2025
1945376
Harp pedals test
XiaoMigros Dec 27, 2025
fbb7aad
More improvements
XiaoMigros Dec 27, 2025
8823246
Fix rogue beams
XiaoMigros Dec 27, 2025
d68015e
Fix arpeggios
XiaoMigros Dec 27, 2025
675f310
Tests use preferences
XiaoMigros Dec 27, 2025
30b09f9
arpeggios test
XiaoMigros Dec 27, 2025
d40a9a7
New build method
XiaoMigros Dec 27, 2025
52944c2
Fix a warning
XiaoMigros Dec 27, 2025
d209d02
Use const more widely
XiaoMigros Dec 27, 2025
23248d7
Fix rogue tie warning
XiaoMigros Dec 27, 2025
0f4e735
Adjustments only reads custom beam / tie direction
XiaoMigros Dec 27, 2025
2605213
Import rest articulations as symbols
XiaoMigros Dec 27, 2025
713b379
Clean up include statements
XiaoMigros Dec 27, 2025
df8269d
Fix a warning
XiaoMigros Dec 27, 2025
5a2be10
Fix build
XiaoMigros Dec 27, 2025
0084e24
Update smufl_mapping to pull release 1.1.0.
rpatters1 Dec 27, 2025
24a020f
use 3.0.0 release of musx.
rpatters1 Dec 27, 2025
3d233ba
Reactivate unit tests
XiaoMigros Dec 27, 2025
345fde1
Fix assert
XiaoMigros Dec 27, 2025
580ce84
Tidy unit tests
rpatters1 Nov 21, 2025
853ecfd
Beam simplifications
XiaoMigros Dec 28, 2025
6f92922
Refactor styles
XiaoMigros Dec 28, 2025
fe45c55
Set symbols size style
XiaoMigros Dec 28, 2025
981205b
Refactor text properties
XiaoMigros Dec 28, 2025
e3963e7
First attempt at correct font scaling
XiaoMigros Dec 28, 2025
65317a2
Header/Footer can inherit
XiaoMigros Dec 28, 2025
b9b3106
Add default spatium
XiaoMigros Dec 28, 2025
ade9f8f
Improved styles writing
XiaoMigros Dec 28, 2025
0e20325
Rename FontTracker property
XiaoMigros Dec 28, 2025
2f5390c
Fix attempt
XiaoMigros Dec 28, 2025
03c0f45
More text fixes
XiaoMigros Dec 29, 2025
19b26ba
Improve ottava positioning
XiaoMigros Dec 29, 2025
d3b5882
Scaling improvements
XiaoMigros Dec 29, 2025
fd55977
Read ottava baseline attempt
XiaoMigros Dec 29, 2025
224dc13
Import ottava symbols
XiaoMigros Dec 29, 2025
e6486fe
Chords: always replace SMuFL symbols
XiaoMigros Dec 29, 2025
6f834ec
static function for staff reference offset
XiaoMigros Dec 29, 2025
5483132
New swing calculation
XiaoMigros Dec 29, 2025
9a9267e
Refactor and correct page layout scaling
XiaoMigros Dec 29, 2025
1977f68
Fix multiple font settings
XiaoMigros Dec 29, 2025
84ba0ff
Test for mixed font styles
XiaoMigros Dec 29, 2025
40b57bc
SmartShape optimisations
XiaoMigros Dec 29, 2025
c4f6263
Entry optimisations
XiaoMigros Dec 29, 2025
452470f
conv methods for barline height
XiaoMigros Dec 30, 2025
671e935
optimise importStaffItems
XiaoMigros Dec 30, 2025
ed91ab3
Barlines optimisations
XiaoMigros Dec 30, 2025
f4771d3
Text optimisations
XiaoMigros Dec 30, 2025
59311d8
Allow diagonal smart shapes
XiaoMigros Dec 30, 2025
43b0e1c
Tidy unit conversion
XiaoMigros Dec 30, 2025
b99ab3d
Element scaling improvements
XiaoMigros Dec 30, 2025
7c970c9
Simplify ottava text offset
XiaoMigros Dec 31, 2025
83561c6
Import more guitar bends
XiaoMigros Dec 31, 2025
9f18cdd
Detect more spanner element types
XiaoMigros Dec 31, 2025
55360f5
Fix stem direction for middle beams
XiaoMigros Dec 31, 2025
97e0885
Fix page text top margin
XiaoMigros Dec 31, 2025
f9ef863
More style improvements
XiaoMigros Dec 31, 2025
3c6d7a1
Test another ottava fix
XiaoMigros Dec 31, 2025
b79b1cf
Expressions end barline position
XiaoMigros Dec 31, 2025
476bcce
Never create segments outside of measures
XiaoMigros Jan 1, 2026
b317ad5
Detect composite dynamics
XiaoMigros Jan 1, 2026
7454344
Dynamics detection tests
XiaoMigros Jan 1, 2026
e090c0a
Fix two-chord tremolos for short CRs
XiaoMigros Jan 1, 2026
2f394db
Two-chord tremolo test
XiaoMigros Jan 1, 2026
2b89a67
Fix incorrect grace note conversion
XiaoMigros Jan 2, 2026
10f0fc0
Set arpeggio distance style settings
XiaoMigros Jan 2, 2026
0dd15a4
constexpr for symbols size
XiaoMigros Jan 2, 2026
7f36621
More articulation styles
XiaoMigros Jan 2, 2026
1c09f04
Import grace artics as notes
XiaoMigros Jan 2, 2026
37490b1
Fix pickup measures
XiaoMigros Jan 2, 2026
1e01fc0
Special articulations test
XiaoMigros Jan 2, 2026
a87d099
Articulation fixes
XiaoMigros Jan 2, 2026
9eec975
Detect chordlines
XiaoMigros Jan 2, 2026
3fac204
simplify arpeggio calculation
XiaoMigros Jan 2, 2026
6390e04
Fix assert
XiaoMigros Jan 2, 2026
b589056
Symbols conversion preference
XiaoMigros Jan 2, 2026
5354a70
Text conversion implementation
XiaoMigros Jan 2, 2026
04f1e16
Fix artic grace note type
XiaoMigros Jan 2, 2026
7d402f4
pull smulf_mapping from main
rpatters1 Jan 2, 2026
9664112
uncrustify
rpatters1 Jan 2, 2026
c6f4851
Add code to enharmonically respell a pitch when it is enharmonically …
rpatters1 Jan 3, 2026
60ee6fe
code formatting bot fixes
rpatters1 Jan 3, 2026
31ac426
refactor to use new musx helper function.
rpatters1 Jan 3, 2026
fd4db1f
missing includes needed to compile in VS Code.
rpatters1 Jan 3, 2026
746b5f7
Import non-recognised articulations as symbols
XiaoMigros Jan 4, 2026
190bdf6
Don't double-scale instrument names
XiaoMigros Jan 4, 2026
a3dd067
Correctly append blank pages
XiaoMigros Jan 4, 2026
e9a828e
Use page margins for layout calculations
XiaoMigros Jan 4, 2026
283c39c
Fix diagonal hairpins
XiaoMigros Jan 4, 2026
35a944e
Read page padding styles
XiaoMigros Jan 4, 2026
945e840
Improve SpannerSegment break positions
XiaoMigros Jan 4, 2026
b3c3fcf
Show single instrument name when needed
XiaoMigros Jan 4, 2026
ea3520c
Fix faulty symbols size?
XiaoMigros Jan 4, 2026
775f638
Fix marker position
XiaoMigros Jan 4, 2026
2ae5739
Import offset headers/footers
XiaoMigros Jan 5, 2026
035a48c
Import some handbell symbols
XiaoMigros Jan 5, 2026
acf329a
Simplify cleftype search for shapes
XiaoMigros Jan 5, 2026
2f5c6a4
Detect gradual tempo change types
XiaoMigros Jan 5, 2026
773aff3
Articulation pos fixes
XiaoMigros Jan 6, 2026
8ef4a0a
Fix repeat text corruption
XiaoMigros Jan 6, 2026
b30d9ab
Better expr pos
XiaoMigros Jan 6, 2026
8ebc010
Rudimentary dive support
XiaoMigros Jan 7, 2026
1fbd1e5
Create EntryProcessContext
XiaoMigros Jan 7, 2026
bc6e217
Always fill measures
XiaoMigros Jan 7, 2026
8cd0f22
Better ottava offset
XiaoMigros Jan 7, 2026
a05dc73
Import more staff style options
XiaoMigros Jan 7, 2026
c960159
Fix text processing
XiaoMigros Jan 7, 2026
ac148d6
More accurate segment start pos
XiaoMigros Jan 8, 2026
97e0811
fixes to avoid crashes.
rpatters1 Jan 10, 2026
e15722f
fix code style
rpatters1 Jan 10, 2026
e3b5b30
bring in line with latest musx
rpatters1 Jan 10, 2026
607a826
Import chord brackets
XiaoMigros Jan 13, 2026
a3a14b7
Support for arrows
XiaoMigros Jan 16, 2026
b3e066a
Fix text metatags
XiaoMigros Jan 16, 2026
7b23ccc
Fix musical symbols scale
XiaoMigros Jan 16, 2026
73d0f1d
Fix lyrics scaling
XiaoMigros Jan 16, 2026
bf0b165
Use Fraction positive
XiaoMigros Jan 16, 2026
448ce07
Fix failing tie test
XiaoMigros Jan 17, 2026
910657e
Fix noteline width style
XiaoMigros Jan 18, 2026
3b1660b
New shape recognition
XiaoMigros Jan 20, 2026
d539e41
More symbols fixes
XiaoMigros Jan 20, 2026
2e5107c
Build fix attempt
XiaoMigros Jan 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ option(MUE_BUILD_IMPEXP_CAPELLA_MODULE "Build importexport capella module" ON)
option(MUE_BUILD_IMPEXP_MIDI_MODULE "Build importexport midi module" ON)
option(MUE_BUILD_IMPEXP_MUSEDATA_MODULE "Build importexport musedata module" ON)
option(MUE_BUILD_IMPEXP_MUSICXML_MODULE "Build importexport musicxml module" ON)
option(MUE_BUILD_IMPEXP_FINALE_MODULE "Build importexport finale module" ON)
option(MUE_BUILD_IMPEXP_OVE_MODULE "Build importexport ove module" ON)
option(MUE_BUILD_IMPEXP_AUDIOEXPORT_MODULE "Build importexport audioexport module" ON)
option(MUE_BUILD_IMPEXP_IMAGESEXPORT_MODULE "Build importexport imagesexport module" ON)
Expand Down
2 changes: 2 additions & 0 deletions SetupConfigure.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ if(BUILD_CONFIGURATION STREQUAL "APP-WEB")
set(MUE_BUILD_IMPEXP_MIDI_MODULE OFF)
set(MUE_BUILD_IMPEXP_MUSEDATA_MODULE OFF)
set(MUE_BUILD_IMPEXP_MUSICXML_MODULE OFF)
set(MUE_BUILD_IMPEXP_FINALE_MODULE OFF)
set(MUE_BUILD_IMPEXP_OVE_MODULE OFF)
set(MUE_BUILD_IMPEXP_AUDIOEXPORT_MODULE OFF)
set(MUE_BUILD_IMPEXP_IMAGESEXPORT_MODULE OFF)
Expand Down Expand Up @@ -244,6 +245,7 @@ if(BUILD_CONFIGURATION STREQUAL "VTEST")
set(MUE_BUILD_IMPEXP_MIDI_MODULE OFF)
set(MUE_BUILD_IMPEXP_MUSEDATA_MODULE OFF)
set(MUE_BUILD_IMPEXP_MUSICXML_MODULE OFF)
set(MUE_BUILD_IMPEXP_FINALE_MODULE OFF)
set(MUE_BUILD_IMPEXP_OVE_MODULE OFF)
set(MUE_BUILD_IMPEXP_AUDIOEXPORT_MODULE OFF)
set(MUE_BUILD_IMPEXP_IMAGESEXPORT_MODULE ON)
Expand Down
4 changes: 2 additions & 2 deletions src/app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ add_to_link_if_exists(iex_audioexport)
add_to_link_if_exists(iex_bb)
add_to_link_if_exists(iex_bww)
add_to_link_if_exists(iex_capella)
add_to_link_if_exists(iex_finale)
add_to_link_if_exists(iex_guitarpro)
add_to_link_if_exists(iex_imagesexport)
add_to_link_if_exists(iex_lyricsexport)
Expand All @@ -175,8 +176,7 @@ add_to_link_if_exists(palette)
add_to_link_if_exists(playback)
add_to_link_if_exists(preferences)
add_to_link_if_exists(print)
add_to_link_if_exists(project)

add_to_link_if_exists(project)

set(MSCORE_APPEND_SRC)

Expand Down
1 change: 1 addition & 0 deletions src/app/app_config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
#cmakedefine MUE_BUILD_IMPEXP_MIDI_MODULE ${MUE_BUILD_IMPEXP_MIDI_MODULE})
#cmakedefine MUE_BUILD_IMPEXP_MUSEDATA_MODULE ${MUE_BUILD_IMPEXP_MUSEDATA_MODULE})
#cmakedefine MUE_BUILD_IMPEXP_MUSICXML_MODULE ${MUE_BUILD_IMPEXP_MUSICXML_MODULE})
#cmakedefine MUE_BUILD_IMPEXP_FINALE_MODULE ${MUE_BUILD_IMPEXP_FINALE_MODULE})
#cmakedefine MUE_BUILD_IMPEXP_OVE_MODULE ${MUE_BUILD_IMPEXP_OVE_MODULE})
#cmakedefine MUE_BUILD_IMPEXP_AUDIOEXPORT_MODULE ${MUE_BUILD_IMPEXP_AUDIOEXPORT_MODULE})
#cmakedefine MUE_BUILD_IMPEXP_IMAGESEXPORT_MODULE ${MUE_BUILD_IMPEXP_IMAGESEXPORT_MODULE})
Expand Down
9 changes: 9 additions & 0 deletions src/app/appfactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,9 @@
#else
#include "stubs/importexport/musicxml/musicxmlmodule.h"
#endif
#ifdef MUE_BUILD_IMPEXP_FINALE_MODULE
#include "importexport/finale/finalemodule.h"
#endif
#ifdef MUE_BUILD_IMPEXP_OVE_MODULE
#include "importexport/ove/ovemodule.h"
#else
Expand Down Expand Up @@ -352,6 +355,9 @@ std::shared_ptr<muse::IApplication> AppFactory::newGuiApp(const CmdOptions& opti
#endif
app->addModule(new mu::iex::musicxml::MusicXmlModule());
app->addModule(new mu::iex::ove::OveModule());
#ifdef MUE_BUILD_IMPEXP_FINALE_MODULE
app->addModule(new mu::iex::finale::FinaleModule());
#endif
#ifdef MUE_BUILD_IMPEXP_AUDIOEXPORT_MODULE
app->addModule(new mu::iex::audioexport::AudioExportModule());
#endif
Expand Down Expand Up @@ -474,6 +480,9 @@ static void addConsoleModules(std::shared_ptr<ConsoleApp> app)
#endif
app->addModule(new mu::iex::musicxml::MusicXmlModule());
app->addModule(new mu::iex::ove::OveModule());
#ifdef MUE_BUILD_IMPEXP_FINALE_MODULE
app->addModule(new mu::iex::finale::FinaleModule());
#endif
#ifdef MUE_BUILD_IMPEXP_AUDIOEXPORT_MODULE
app->addModule(new mu::iex::audioexport::AudioExportModule());
#endif
Expand Down
4 changes: 2 additions & 2 deletions src/engraving/rendering/score/beamtremololayout.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@

#include <vector>

#include "dom/beambase.h"
#include "types/types.h"
#include "../../dom/beambase.h"
#include "../../types/types.h"

#include "layoutcontext.h"

Expand Down
3 changes: 3 additions & 0 deletions src/importexport/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ if (MUE_BUILD_IMPEXP_MUSICXML_MODULE)
else()
add_subdirectory(../stubs/importexport/musicxml stubs/musicxml)
endif()
if (MUE_BUILD_IMPEXP_FINALE_MODULE)
add_subdirectory(finale)
endif()
if (MUE_BUILD_IMPEXP_OVE_MODULE)
add_subdirectory(ove)
else()
Expand Down
77 changes: 77 additions & 0 deletions src/importexport/finale/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# SPDX-License-Identifier: GPL-3.0-only
# MuseScore-Studio-CLA-applies
#
# MuseScore Studio
# .musx Import Module (Experimental)

muse_create_module(iex_finale)

include(FetchContent)
include(GetCompilerInfo)

# turn on for reference and debugging as needed
set(MUSX_DISPLAY_NODE_NAMES OFF CACHE BOOL "Log node names to trace as they are processed" FORCE)

set(musx_BUILD_TESTING OFF CACHE BOOL "Do not build tests for musx")
FetchContent_Declare(
musx
GIT_REPOSITORY https://github.com/rpatters1/musxdom.git
GIT_TAG main
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
)

FetchContent_MakeAvailable(musx)

set(smufl_mapping_BUILD_TESTING OFF CACHE BOOL "Do not build tests for musx")
FetchContent_Declare(
smufl_mapping
GIT_REPOSITORY https://github.com/rpatters1/smufl-mapping.git
GIT_TAG main
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
)

FetchContent_MakeAvailable(smufl_mapping)

if (CC_IS_MSVC)
include(FindZlibStatic)
target_link_libraries(iex_finale PRIVATE zlibstat)
target_include_directories(iex_finale PRIVATE ${DEPENDENCIES_INC}/zlib)
endif ()

target_sources(iex_finale PRIVATE
third_party/score_encoder.h
internal/notationfinalereader.cpp
internal/notationfinalereader.h
internal/finaleconfiguration.cpp
internal/finaleconfiguration.h
internal/finaletypesconv.cpp
internal/finaletypesconv.h
internal/musxxmldom.h
internal/importfinale.cpp
internal/importfinale.h
internal/importfinaleentries.cpp
internal/importfinalelogger.cpp
internal/importfinalelogger.h
internal/importfinalescoremap.cpp
internal/importfinaleparser.cpp
internal/importfinaleparser.h
internal/importfinalestyles.cpp
internal/importfinalesmartshapes.cpp
internal/importfinaletext.cpp
internal/importfinalearticulations.cpp
internal/text/finaletextconv.cpp
internal/text/finaletextconv.h
ifinaleconfiguration.h
finalemodule.cpp
finalemodule.h
)

target_link_libraries(iex_finale PRIVATE
musx # Link musxdom library
smufl_mapping # Link smufl_mapping library
engraving # MuseScore expects importers to link to "engraving" usually
)

if (MUE_BUILD_IMPORTEXPORT_TESTS)
add_subdirectory(tests)
endif()
57 changes: 57 additions & 0 deletions src/importexport/finale/finalemodule.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
* SPDX-License-Identifier: GPL-3.0-only
* MuseScore-Studio-CLA-applies
*
* MuseScore Studio
* Music Composition & Notation
*
* Copyright (C) 2021 MuseScore Limited
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "finalemodule.h"

#include "modularity/ioc.h"

#include "project/inotationreadersregister.h"
#include "internal/finaleconfiguration.h"
#include "internal/notationfinalereader.h"

using namespace muse::modularity;
using namespace mu::iex::finale;
using namespace mu::project;

std::string FinaleModule::moduleName() const
{
return "iex_finale";
}

void FinaleModule::registerExports()
{
m_configuration = std::make_shared<FinaleConfiguration>();

ioc()->registerExport<IFinaleConfiguration>(moduleName(), m_configuration);
}

void FinaleModule::resolveImports()
{
auto readers = ioc()->resolve<INotationReadersRegister>(moduleName());
if (readers) {
readers->reg({ "musx", "enigmaxml" }, std::make_shared<NotationFinaleReader>(iocContext()));
}
}

void FinaleModule::onInit(const muse::IApplication::RunMode&)
{
m_configuration->init();
}
41 changes: 41 additions & 0 deletions src/importexport/finale/finalemodule.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* SPDX-License-Identifier: GPL-3.0-only
* MuseScore-Studio-CLA-applies
*
* MuseScore Studio
* Music Composition & Notation
*
* Copyright (C) 2025 MuseScore Limited
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once

#include "modularity/imodulesetup.h"
#include "global/iapplication.h"

namespace mu::iex::finale {
class FinaleConfiguration;
class FinaleModule : public muse::modularity::IModuleSetup
{
public:

std::string moduleName() const override;
void registerExports() override;
void resolveImports() override;
void onInit(const muse::IApplication::RunMode&) override;

private:
std::shared_ptr<FinaleConfiguration> m_configuration;
};
} // namespace mu::iex::finale
48 changes: 48 additions & 0 deletions src/importexport/finale/ifinaleconfiguration.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* SPDX-License-Identifier: GPL-3.0-only
* MuseScore-Studio-CLA-applies
*
* MuseScore Studio
* Music Composition & Notation
*
* Copyright (C) 2025 MuseScore Limited
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once

#include "modularity/imoduleinterface.h"
#include "async/channel.h"

namespace mu::iex::finale {
class IFinaleConfiguration : MODULE_GLOBAL_EXPORT_INTERFACE
{
INTERFACE_ID(IFinaleConfiguration)

public:
virtual ~IFinaleConfiguration() = default;

enum class ImportPositionsType {
None, AdjustmentsOnly, All
};

virtual ImportPositionsType importPositionsType() const = 0;
virtual bool convertTextSymbols() const = 0;

virtual void setImportPositionsType(ImportPositionsType importPositionsType) = 0;
virtual void setConvertTextSymbols(bool convert) = 0;

virtual muse::async::Channel<ImportPositionsType> importPositionsTypeChanged() const = 0;
virtual muse::async::Channel<bool> convertTextSymbolsChanged() const = 0;
};
}
Loading
Loading