Skip to content

fix xcode project for komp - #39

Merged
webern merged 3 commits into
developfrom
feature/build-issues
Nov 24, 2019
Merged

fix xcode project for komp#39
webern merged 3 commits into
developfrom
feature/build-issues

Conversation

@webern

@webern webern commented Nov 24, 2019

Copy link
Copy Markdown
Owner

No description provided.

Matt Briggs added 3 commits November 23, 2019 18:00
# Conflicts:
#	Sourcecode/private/mx/impl/AccidentalMarkFunctions.h
#	Sourcecode/private/mx/impl/NoteFunctions.h
#	Sourcecode/private/mx/impl/OrnamentsFunctions.h
#	Sourcecode/private/mx/xml/PugiDoc.h
#	Xcode/Mx.xcodeproj/project.pbxproj
#	Xcode/MxTest.xcodeproj/project.pbxproj
@webern
webern merged commit 7fb62a7 into develop Nov 24, 2019
webern added a commit that referenced this pull request Nov 24, 2019
* release v0.3.0

* frz fix placement of directions in chords

* frz round trip musicxml version

* frz fix tuplet issues

* frz branch progress

* gene noteheads and lyrics

* fix errant comments in cmake build

* better error message and project update

* gitignore

* merge mxapi into develop

* probably ok

* sublime

* merge mxapi branch (#20)

* mxapi komp-build stuff

* mxapi bombe test

* the latest crap

* mxapi handle divisions changes

* mxapi use voice 1 in bombe

* mx-version-0.2.0.2

* mx-version-0.2.0.3

* mx-version-0.2.0.4

* mxapi adjust -0 to say 0 instead when stringing decimals

* mx-version-0.2.0.5

* mx-version-0.2.0.6

* mxapi save ornaments

* mx-version-0.2.0.7

* mxapi working on direction offset problems

* mxapi direction mark time bug fixed

* mxapi reenable some tests

* mxapi pedal start stop working

* mxapi disable the core tests

* mx-version-0.2.0.8

* mxapi working on order of directions and notes

* mxapi directions are now written in a relatively sane order with respect to notes

* mxapi tests passing

* mx-version-0.2.0.9

* mxapi fix direction position data import and export

* mx-version-0.2.0.10

* mxapi compile visual studio

* mx-version-0.2.0.11

* mxapi doesnt compile add tremolos

* better support for tremolo glyphs

* mxapi words are exporting

* mxapi finish with words for now

* mx-version-0.2.0.12

* mxapi save and load technical marks

* mx-version-0.2.0.13

* mxapi turn off cout

* mxapi fix bug with other articulation

* mx-version-0.2.0.14

* mxapi merge decimal

* mxapi score data and tests

* mxapi tests

* mxapi sort score data before writing

* mx-version-0.2.0.17

* mxapi progress on directions robustness

* more work on cursor and direction

* mxapi directions seem more bulletproof now

* mx-version-0.2.0.18

* mxapi fix chord bug

* mxapi fix xcode project groups - add enum macros

* mxapi add musicxml instrument sound strings

* mxapi sound id

* mxapi restore compile control

* mx-version-0.2.0.20

* sound and general midi work

* mxapi begin adding chord support

* mxapi chord test simple

* mxapi middle of something does not compile

* mxapi chord progress

* mxapi chord saving works but round trip does not work

* mxapi still cannot fix the round trip test

* mxapi basic chord support complete

* mx-version-0.2.0.21

* mxapi add chord symbol features

* mx-version-0.2.0.22

* mxapi add processing instructions

* mx-version-0.2.0.23

* more chord symbol work

* mx-version-0.2.0.24

* mxapi not much

* mxapi Barlines (#12)

* mxapi fix broken test

* mx-version-0.2.0.25

* Feature/mxapi (#14)

mxapi barlines and endings

* Feature/repeats (#15)

mxapi repeats

* mx-version-0.2.0.26

* mxapi add chord positioning

* mx-version-0.2.0.27

* mxapi read and write note position data

* mx-version-0.2.0.28

* mxapi barline work

* mx-version-0.2.0.29

* mxapi fix measure rest writing

* mx-version-0.2.0.30

* mxapi fix another measure rest issue

* mx-version-0.2.0.31

* mx-version-0.2.0.32

* mxapi add failing freezing pieces test viola measure 7

* mxapi freezing tests

* mxapi more freezing tests

* mxapi freezing tests

* Feature/mxapi (#17)

* Smufl flailing

* Fat framework

* Add missing architectures

* Clean up projects

* Remove scheme and add stub post-archive script

* Track down a memory smasher

* Add an additional check

* use sparsepp to avoid smufl crash (#18)

* Use frozen map

* User sparse map for unordered list

* Return ref not copy of string

* smufl map carnage

* version

* mx-version-0.3.1.37

* nothing

* gitignore

* remove sublime workspace

* ignore sublime workspace

* ci and gcc work

* pesky sublime workspace

* sublime workspace ignore

* ci

* ci work

* ci work and gcc

* circleci

* circleci

* circleci

* test stuff

* work on test options (#27)

work on test options #24 #23

* readme and examples #22 #26 (#28)

* work on test options

* work on examples

* work on examples

* build examples on circleci

* run examples on circleci

* use include directory as public api #21 (#29)

* work on test options

* work on examples

* work on examples

* build examples on circleci

* run examples on circleci

* readme

* readme

* readme

* big shuffle

* hide stuff

* readme work for 1.0 #25 #26 #30 (#31)

* work on test options

* work on examples

* work on examples

* build examples on circleci

* run examples on circleci

* readme

* readme

* readme

* big shuffle

* hide stuff

* readme work

* done enough

* xcode

* merge with ezxml library (#38)

* bring in latest ezxml

* use ezxml library cmake works xcode does not

* incorporate ezxml into xcode project - does not build

* xcode mx library compiles

* xcode project stuff

* xcode tests run

* fix circleci warning

* delete circleci comments

* fix xcode project for komp (#39)

* fix-build

* xcode
webern added a commit that referenced this pull request Feb 3, 2020
* release v0.3.0

* frz fix placement of directions in chords

* frz round trip musicxml version

* frz fix tuplet issues

* frz branch progress

* gene noteheads and lyrics

* fix errant comments in cmake build

* better error message and project update

* gitignore

* merge mxapi into develop

* probably ok

* sublime

* merge mxapi branch (#20)

* mxapi komp-build stuff

* mxapi bombe test

* the latest crap

* mxapi handle divisions changes

* mxapi use voice 1 in bombe

* mx-version-0.2.0.2

* mx-version-0.2.0.3

* mx-version-0.2.0.4

* mxapi adjust -0 to say 0 instead when stringing decimals

* mx-version-0.2.0.5

* mx-version-0.2.0.6

* mxapi save ornaments

* mx-version-0.2.0.7

* mxapi working on direction offset problems

* mxapi direction mark time bug fixed

* mxapi reenable some tests

* mxapi pedal start stop working

* mxapi disable the core tests

* mx-version-0.2.0.8

* mxapi working on order of directions and notes

* mxapi directions are now written in a relatively sane order with respect to notes

* mxapi tests passing

* mx-version-0.2.0.9

* mxapi fix direction position data import and export

* mx-version-0.2.0.10

* mxapi compile visual studio

* mx-version-0.2.0.11

* mxapi doesnt compile add tremolos

* better support for tremolo glyphs

* mxapi words are exporting

* mxapi finish with words for now

* mx-version-0.2.0.12

* mxapi save and load technical marks

* mx-version-0.2.0.13

* mxapi turn off cout

* mxapi fix bug with other articulation

* mx-version-0.2.0.14

* mxapi merge decimal

* mxapi score data and tests

* mxapi tests

* mxapi sort score data before writing

* mx-version-0.2.0.17

* mxapi progress on directions robustness

* more work on cursor and direction

* mxapi directions seem more bulletproof now

* mx-version-0.2.0.18

* mxapi fix chord bug

* mxapi fix xcode project groups - add enum macros

* mxapi add musicxml instrument sound strings

* mxapi sound id

* mxapi restore compile control

* mx-version-0.2.0.20

* sound and general midi work

* mxapi begin adding chord support

* mxapi chord test simple

* mxapi middle of something does not compile

* mxapi chord progress

* mxapi chord saving works but round trip does not work

* mxapi still cannot fix the round trip test

* mxapi basic chord support complete

* mx-version-0.2.0.21

* mxapi add chord symbol features

* mx-version-0.2.0.22

* mxapi add processing instructions

* mx-version-0.2.0.23

* more chord symbol work

* mx-version-0.2.0.24

* mxapi not much

* mxapi Barlines (#12)

* mxapi fix broken test

* mx-version-0.2.0.25

* Feature/mxapi (#14)

mxapi barlines and endings

* Feature/repeats (#15)

mxapi repeats

* mx-version-0.2.0.26

* mxapi add chord positioning

* mx-version-0.2.0.27

* mxapi read and write note position data

* mx-version-0.2.0.28

* mxapi barline work

* mx-version-0.2.0.29

* mxapi fix measure rest writing

* mx-version-0.2.0.30

* mxapi fix another measure rest issue

* mx-version-0.2.0.31

* mx-version-0.2.0.32

* mxapi add failing freezing pieces test viola measure 7

* mxapi freezing tests

* mxapi more freezing tests

* mxapi freezing tests

* Feature/mxapi (#17)

* Smufl flailing

* Fat framework

* Add missing architectures

* Clean up projects

* Remove scheme and add stub post-archive script

* Track down a memory smasher

* Add an additional check

* use sparsepp to avoid smufl crash (#18)

* Use frozen map

* User sparse map for unordered list

* Return ref not copy of string

* smufl map carnage

* version

* mx-version-0.3.1.37

* nothing

* gitignore

* remove sublime workspace

* ignore sublime workspace

* ci and gcc work

* pesky sublime workspace

* sublime workspace ignore

* ci

* ci work

* ci work and gcc

* circleci

* circleci

* circleci

* test stuff

* work on test options (#27)

work on test options #24 #23

* readme and examples #22 #26 (#28)

* work on test options

* work on examples

* work on examples

* build examples on circleci

* run examples on circleci

* use include directory as public api #21 (#29)

* work on test options

* work on examples

* work on examples

* build examples on circleci

* run examples on circleci

* readme

* readme

* readme

* big shuffle

* hide stuff

* readme work for 1.0 #25 #26 #30 (#31)

* work on test options

* work on examples

* work on examples

* build examples on circleci

* run examples on circleci

* readme

* readme

* readme

* big shuffle

* hide stuff

* readme work

* done enough

* xcode

* merge with ezxml library (#38)

* bring in latest ezxml

* use ezxml library cmake works xcode does not

* incorporate ezxml into xcode project - does not build

* xcode mx library compiles

* xcode project stuff

* xcode tests run

* fix circleci warning

* delete circleci comments

* fix xcode project for komp (#39)

* fix-build

* xcode

* further explain tick time position #43 (#47)

* further explain tick time position

* improve tick time position comment

* support microtonal notes with cents #42 (#48)

* document and add cents

* documentation

* documentation

* implementation

* pitch data test

* run only my new test

* cents bug

* working

* good

* restore compile control

* clean up

* Update Sourcecode/private/mxtest/api/NoteDataTest.cpp

* Update Sourcecode/private/mxtest/api/NoteDataTest.cpp

* Update Sourcecode/private/mxtest/api/PitchDataTest.cpp

* Update Sourcecode/private/mx/impl/NoteReader.cpp

* Update Sourcecode/include/mx/api/PitchData.h

* note msvc compiler is tested in the readme #41 (#49)

* readme

* Update README.md

* badges

* Update README.md
webern added a commit that referenced this pull request Mar 9, 2020
#64)

* release v0.3.0

* frz fix placement of directions in chords

* frz round trip musicxml version

* frz fix tuplet issues

* frz branch progress

* gene noteheads and lyrics

* fix errant comments in cmake build

* better error message and project update

* gitignore

* merge mxapi into develop

* probably ok

* sublime

* merge mxapi branch (#20)

* mxapi komp-build stuff

* mxapi bombe test

* the latest crap

* mxapi handle divisions changes

* mxapi use voice 1 in bombe

* mx-version-0.2.0.2

* mx-version-0.2.0.3

* mx-version-0.2.0.4

* mxapi adjust -0 to say 0 instead when stringing decimals

* mx-version-0.2.0.5

* mx-version-0.2.0.6

* mxapi save ornaments

* mx-version-0.2.0.7

* mxapi working on direction offset problems

* mxapi direction mark time bug fixed

* mxapi reenable some tests

* mxapi pedal start stop working

* mxapi disable the core tests

* mx-version-0.2.0.8

* mxapi working on order of directions and notes

* mxapi directions are now written in a relatively sane order with respect to notes

* mxapi tests passing

* mx-version-0.2.0.9

* mxapi fix direction position data import and export

* mx-version-0.2.0.10

* mxapi compile visual studio

* mx-version-0.2.0.11

* mxapi doesnt compile add tremolos

* better support for tremolo glyphs

* mxapi words are exporting

* mxapi finish with words for now

* mx-version-0.2.0.12

* mxapi save and load technical marks

* mx-version-0.2.0.13

* mxapi turn off cout

* mxapi fix bug with other articulation

* mx-version-0.2.0.14

* mxapi merge decimal

* mxapi score data and tests

* mxapi tests

* mxapi sort score data before writing

* mx-version-0.2.0.17

* mxapi progress on directions robustness

* more work on cursor and direction

* mxapi directions seem more bulletproof now

* mx-version-0.2.0.18

* mxapi fix chord bug

* mxapi fix xcode project groups - add enum macros

* mxapi add musicxml instrument sound strings

* mxapi sound id

* mxapi restore compile control

* mx-version-0.2.0.20

* sound and general midi work

* mxapi begin adding chord support

* mxapi chord test simple

* mxapi middle of something does not compile

* mxapi chord progress

* mxapi chord saving works but round trip does not work

* mxapi still cannot fix the round trip test

* mxapi basic chord support complete

* mx-version-0.2.0.21

* mxapi add chord symbol features

* mx-version-0.2.0.22

* mxapi add processing instructions

* mx-version-0.2.0.23

* more chord symbol work

* mx-version-0.2.0.24

* mxapi not much

* mxapi Barlines (#12)

* mxapi fix broken test

* mx-version-0.2.0.25

* Feature/mxapi (#14)

mxapi barlines and endings

* Feature/repeats (#15)

mxapi repeats

* mx-version-0.2.0.26

* mxapi add chord positioning

* mx-version-0.2.0.27

* mxapi read and write note position data

* mx-version-0.2.0.28

* mxapi barline work

* mx-version-0.2.0.29

* mxapi fix measure rest writing

* mx-version-0.2.0.30

* mxapi fix another measure rest issue

* mx-version-0.2.0.31

* mx-version-0.2.0.32

* mxapi add failing freezing pieces test viola measure 7

* mxapi freezing tests

* mxapi more freezing tests

* mxapi freezing tests

* Feature/mxapi (#17)

* Smufl flailing

* Fat framework

* Add missing architectures

* Clean up projects

* Remove scheme and add stub post-archive script

* Track down a memory smasher

* Add an additional check

* use sparsepp to avoid smufl crash (#18)

* Use frozen map

* User sparse map for unordered list

* Return ref not copy of string

* smufl map carnage

* version

* mx-version-0.3.1.37

* nothing

* gitignore

* remove sublime workspace

* ignore sublime workspace

* ci and gcc work

* pesky sublime workspace

* sublime workspace ignore

* ci

* ci work

* ci work and gcc

* circleci

* circleci

* circleci

* test stuff

* work on test options (#27)

work on test options #24 #23

* readme and examples #22 #26 (#28)

* work on test options

* work on examples

* work on examples

* build examples on circleci

* run examples on circleci

* use include directory as public api #21 (#29)

* work on test options

* work on examples

* work on examples

* build examples on circleci

* run examples on circleci

* readme

* readme

* readme

* big shuffle

* hide stuff

* readme work for 1.0 #25 #26 #30 (#31)

* work on test options

* work on examples

* work on examples

* build examples on circleci

* run examples on circleci

* readme

* readme

* readme

* big shuffle

* hide stuff

* readme work

* done enough

* xcode

* merge with ezxml library (#38)

* bring in latest ezxml

* use ezxml library cmake works xcode does not

* incorporate ezxml into xcode project - does not build

* xcode mx library compiles

* xcode project stuff

* xcode tests run

* fix circleci warning

* delete circleci comments

* fix xcode project for komp (#39)

* fix-build

* xcode

* further explain tick time position #43 (#47)

* further explain tick time position

* improve tick time position comment

* support microtonal notes with cents #42 (#48)

* document and add cents

* documentation

* documentation

* implementation

* pitch data test

* run only my new test

* cents bug

* working

* good

* restore compile control

* clean up

* Update Sourcecode/private/mxtest/api/NoteDataTest.cpp

* Update Sourcecode/private/mxtest/api/NoteDataTest.cpp

* Update Sourcecode/private/mxtest/api/PitchDataTest.cpp

* Update Sourcecode/private/mx/impl/NoteReader.cpp

* Update Sourcecode/include/mx/api/PitchData.h

* note msvc compiler is tested in the readme #41 (#49)

* readme

* Update README.md

* badges

* Update README.md

* fix new system logic #52 (#56)

* remove mx::utility (#51)

* fix #62 windows msvc bad address bug (#61)

* fix windows msvc compiler issue

* add timers and logs

* trace the hanging test

* another msvc workaround

* fix syntax

* fix off by one error

* try using almost point five instead of point five

* fix precision failure

* revert traces

Co-authored-by: Matt Briggs <mjb@nowhere.com>

* fix rust gitignore

* use the catch2 test framework instead of cpplite #46 (#59)

* no go

* Revert "no go"

This reverts commit b36e91c.

* catch

* this is close

* closer

* passing

* print fewer dots when preprocessing xml files

* better cmake messages

* add traces for undefined behavior

* add more traces

* More trace

* More traces

* More traces

* Count the xml document that is failing

* remove traces

* clean up test main

* do not do unnecessary changes for now

* cleanup

Co-authored-by: Matt Briggs <brigmatt>
Co-authored-by: Matt Briggs <mjb@nowhere.com>
@webern
webern deleted the feature/build-issues branch May 31, 2020 00:28
webern added a commit that referenced this pull request Jul 12, 2026
## Human Summary

Take @rpatters1&#39;s suggested design from #297 and attempts to
implement it with a spanner identifying object and a sort of spanner
resource pool.

## AI Summary

MusicXML pairs a spanner's start with its stop using a `number`
attribute, and two spanners of the same type that are open at the same
point in the serialized stream must carry different numbers. Which
spanners are open at the same point depends on the order the writer
emits notes (voice interleaving via `backup`), so a caller cannot
reliably choose the number. This PR moves number assignment into the
writer.

The design differs from the shape proposed in #297 (a second `spannerId`
field beside `numberLevel`): two mutually exclusive fields side by side
is the recurring defect that design principle #3 and #249 exist to
eliminate. Instead the two are unified into one value type.

- New `SpannerNumber` value type (`SpannerNumber.h`/`SpannerNumber.cpp`,
following the `TimeChoice.h`/`.cpp` declaration/implementation split)
with exactly three states: unspecified (default, no number emitted for a
lone spanner), explicit level 1..16 (emitted verbatim; what the reader
produces), and identity (an author-only, never-serialized label;
start/continue/stop sharing an id are the same logical spanner and the
writer assigns the number). A contradictory state is unrepresentable by
construction. Constructed directly (`SpannerNumber{3}`,
`SpannerNumber{"my-id"}`), not via factory functions. Follows the
`TimeChoice` "choice" pattern: nothing throws. An out-of-range level or
an empty id collapses to unspecified at construction, and calling
`level()`/`identity()` for the wrong kind returns a harmless default
(`NUMBER_LEVEL_UNSPECIFIED`, or an empty string) instead of an
exception.
- Breaking: `int numberLevel` is replaced by `SpannerNumber number` in
`CurveStart`, `CurveContinue`, `CurveStop`, `WedgeStart`, `WedgeStop`,
`SpannerStart`, and `SpannerStop`. Tuplets are untouched and keep the
legacy `int` + `NUMBER_LEVEL_UNSPECIFIED`.
- New `SpannerNumberResolver` runs once per part before writing. It
walks the part in true serialization order (measures, staves, voices
ascending, notes in vector order with curve stops/continues/starts per
note, directions in vector order) and assigns each identity spanner the
lowest free number from a 1..16 pool per staff and per spanner class
(slur, tied, wedge, octave-shift, bracket, and dashes pools are
independent). While an explicit spanner is open its level is reserved,
so explicit and identity spanners sharing a pool never collide. Pool
exhaustion (more than 16 concurrently open) throws rather than emitting
an illegal number.
- The wedge and octave-shift writers now emit numbers at all; previously
they dropped them on write even when the reader had captured them, so
explicit wedge/ottava numbers now survive a round trip.
- Readers only ever produce unspecified or explicit, keeping
read-to-write fidelity for files that already carry numbers.

## Testing

- [x] `SpannerNumberTest`: three-state semantics,
out-of-range/empty-input construction collapsing to unspecified,
wrong-kind accessors returning harmless defaults (never throwing),
equality across all kind combinations
- [x] `SpannerIdentityTest`: the #297 scenario — slurs disjoint in
musical time that overlap in the stream once voice 1 serializes ahead of
voice 2 get distinct numbers (1, 1-reused, 2); explicit + identity pool
sharing; slur/tied pool independence; wedge number round-trip
- [x] `data/rpatters1/slurs_overbars.musicxml`: the file rpatters1
attached to #297 (a genuine Finale export, confirmed provenance in
review), pinned in `roundtrip-baseline.txt` alongside his other
contributed fixtures in `data/rpatters1/`
- [x] `make test`, `make test-api-roundtrip` (166/166 pinned), `make
test-core-dev` (835 corert files), `make check-core-dev`, `make
validate-cpp`, `make test-cpp-unit`, `make probe-cpp`
- [x] Unity build (`CMAKE_UNITY_BUILD=ON`, batch size 0) compiles
- [x] Rebased over main (through #333) and CI re-run on the rebased
branch

## References

- Closes #297
- Related to #249 (one fact, one field: motivates unifying level and
identity into a single type instead of adding a parallel field)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant