From 2cd57a8869cbb77154e98ee677d5b6473b84c4ef Mon Sep 17 00:00:00 2001 From: Matthias Neeracher Date: Mon, 11 Sep 2006 02:49:56 +0000 Subject: [PATCH] Imported into SVN --- English.lproj/Credits.rtf | 29 + English.lproj/InfoPlist.strings | Bin 0 -> 258 bytes English.lproj/MainMenu.nib/classes.nib | 4 + English.lproj/MainMenu.nib/info.nib | 21 + English.lproj/MainMenu.nib/keyedobjects.nib | Bin 0 -> 10606 bytes English.lproj/VLDocument.nib/classes.nib | 15 + English.lproj/VLDocument.nib/info.nib | 16 + English.lproj/VLDocument.nib/keyedobjects.nib | Bin 0 -> 13302 bytes English.lproj/VLDocument~.nib/classes.nib | 15 + English.lproj/VLDocument~.nib/info.nib | 16 + .../VLDocument~.nib/keyedobjects.nib | Bin 0 -> 13239 bytes Resources/Info.plist | 51 + Resources/Music/eighth-flag.eps | 114 ++ Resources/Music/eighth-rest.eps | 112 ++ Resources/Music/flat.eps | 126 ++ Resources/Music/g-clef.eps | 207 +++ Resources/Music/half-notehead.eps | 100 ++ Resources/Music/half-rest.eps | 60 + Resources/Music/natural.eps | 129 ++ Resources/Music/notecursor.eps | 91 ++ Resources/Music/notehead.eps | 91 ++ Resources/Music/quarter-rest.eps | 129 ++ Resources/Music/sharp.eps | 184 +++ Resources/Music/sixteenth-flag.eps | 132 ++ Resources/Music/sixteenth-rest.eps | 126 ++ Resources/Music/thirtysecondth-flag.eps | 150 ++ Resources/Music/thirtysecondth-rest.eps | 137 ++ Resources/Music/whole-notehead.eps | 79 + Resources/Music/whole-rest.eps | 60 + Sources/VLDocument.h | 26 + Sources/VLDocument.mm | 111 ++ Sources/VLModel.cpp | 534 ++++++ Sources/VLModel.h | 219 +++ Sources/VLSheetView.h | 75 + Sources/VLSheetView.mm | 314 ++++ Sources/VLSheetViewChords.h | 15 + Sources/VLSheetViewChords.mm | 176 ++ Sources/VLSheetViewInternal.h | 31 + Sources/VLSheetViewNotes.h | 23 + Sources/VLSheetViewNotes.mm | 326 ++++ Sources/VLSoundOut.cpp | 159 ++ Sources/VLSoundOut.h | 24 + Sources/Vocalese_Prefix.pch | 7 + Sources/main.m | 14 + Tests/TVLChord.cpp | 31 + Tests/TVLEdit.cpp | 145 ++ Tests/TVLSoundOut.cpp | 28 + Vocalese.xcodeproj/neeri.mode1 | 1342 +++++++++++++++ Vocalese.xcodeproj/neeri.mode1v3 | 1435 +++++++++++++++++ Vocalese.xcodeproj/neeri.pbxuser | 346 ++++ Vocalese.xcodeproj/project.pbxproj | 734 +++++++++ 51 files changed, 8309 insertions(+) create mode 100644 English.lproj/Credits.rtf create mode 100644 English.lproj/InfoPlist.strings create mode 100644 English.lproj/MainMenu.nib/classes.nib create mode 100644 English.lproj/MainMenu.nib/info.nib create mode 100644 English.lproj/MainMenu.nib/keyedobjects.nib create mode 100644 English.lproj/VLDocument.nib/classes.nib create mode 100644 English.lproj/VLDocument.nib/info.nib create mode 100644 English.lproj/VLDocument.nib/keyedobjects.nib create mode 100644 English.lproj/VLDocument~.nib/classes.nib create mode 100644 English.lproj/VLDocument~.nib/info.nib create mode 100644 English.lproj/VLDocument~.nib/keyedobjects.nib create mode 100644 Resources/Info.plist create mode 100644 Resources/Music/eighth-flag.eps create mode 100644 Resources/Music/eighth-rest.eps create mode 100644 Resources/Music/flat.eps create mode 100644 Resources/Music/g-clef.eps create mode 100644 Resources/Music/half-notehead.eps create mode 100644 Resources/Music/half-rest.eps create mode 100644 Resources/Music/natural.eps create mode 100644 Resources/Music/notecursor.eps create mode 100644 Resources/Music/notehead.eps create mode 100644 Resources/Music/quarter-rest.eps create mode 100644 Resources/Music/sharp.eps create mode 100644 Resources/Music/sixteenth-flag.eps create mode 100644 Resources/Music/sixteenth-rest.eps create mode 100644 Resources/Music/thirtysecondth-flag.eps create mode 100644 Resources/Music/thirtysecondth-rest.eps create mode 100644 Resources/Music/whole-notehead.eps create mode 100644 Resources/Music/whole-rest.eps create mode 100644 Sources/VLDocument.h create mode 100644 Sources/VLDocument.mm create mode 100644 Sources/VLModel.cpp create mode 100644 Sources/VLModel.h create mode 100644 Sources/VLSheetView.h create mode 100644 Sources/VLSheetView.mm create mode 100644 Sources/VLSheetViewChords.h create mode 100644 Sources/VLSheetViewChords.mm create mode 100644 Sources/VLSheetViewInternal.h create mode 100644 Sources/VLSheetViewNotes.h create mode 100644 Sources/VLSheetViewNotes.mm create mode 100644 Sources/VLSoundOut.cpp create mode 100644 Sources/VLSoundOut.h create mode 100644 Sources/Vocalese_Prefix.pch create mode 100644 Sources/main.m create mode 100644 Tests/TVLChord.cpp create mode 100644 Tests/TVLEdit.cpp create mode 100644 Tests/TVLSoundOut.cpp create mode 100644 Vocalese.xcodeproj/neeri.mode1 create mode 100644 Vocalese.xcodeproj/neeri.mode1v3 create mode 100644 Vocalese.xcodeproj/neeri.pbxuser create mode 100644 Vocalese.xcodeproj/project.pbxproj diff --git a/English.lproj/Credits.rtf b/English.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/English.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/English.lproj/InfoPlist.strings b/English.lproj/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..3a8830d6d494851da0a631b0bcf94b5ca58b6799 GIT binary patch literal 258 zcmX|*%?g4*6ot>ar;wHs6+x?LlMn^vqM&U|Ia-uIXa)90y=3({f?V{DXTEce-=9YE zH_3|FYVR=85=OgnUg-{|Br0z3shC4ZIZ;+osE51B`1%WXrYa7{wp P^)|NysENkRwC(!?vd}Ds literal 0 HcmV?d00001 diff --git a/English.lproj/MainMenu.nib/classes.nib b/English.lproj/MainMenu.nib/classes.nib new file mode 100644 index 0000000..b9b4b09 --- /dev/null +++ b/English.lproj/MainMenu.nib/classes.nib @@ -0,0 +1,4 @@ +{ + IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); + IBVersion = 1; +} \ No newline at end of file diff --git a/English.lproj/MainMenu.nib/info.nib b/English.lproj/MainMenu.nib/info.nib new file mode 100644 index 0000000..6db899d --- /dev/null +++ b/English.lproj/MainMenu.nib/info.nib @@ -0,0 +1,21 @@ + + + + + IBDocumentLocation + 86 100 356 240 0 0 1280 1002 + IBEditorPositions + + 29 + 87 342 318 44 0 0 1280 1002 + + IBFramework Version + 401.0 + IBOpenObjects + + 29 + + IBSystem Version + 8A259 + + diff --git a/English.lproj/MainMenu.nib/keyedobjects.nib b/English.lproj/MainMenu.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..8d41e7dc3a797edfedf41d335492423b820132de GIT binary patch literal 10606 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 Dts??z literal 0 HcmV?d00001 diff --git a/English.lproj/VLDocument.nib/classes.nib b/English.lproj/VLDocument.nib/classes.nib new file mode 100644 index 0000000..96a02e2 --- /dev/null +++ b/English.lproj/VLDocument.nib/classes.nib @@ -0,0 +1,15 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = MyDocument; LANGUAGE = ObjC; SUPERCLASS = NSDocument; }, + {CLASS = VLDocument; LANGUAGE = ObjC; SUPERCLASS = NSDocument; }, + { + ACTIONS = {scroll = id; setDivisions = id; setKey = id; setTime = id; }; + CLASS = VLSheetView; + LANGUAGE = ObjC; + OUTLETS = {chords = id; }; + SUPERCLASS = NSView; + } + ); + IBVersion = 1; +} \ No newline at end of file diff --git a/English.lproj/VLDocument.nib/info.nib b/English.lproj/VLDocument.nib/info.nib new file mode 100644 index 0000000..646f180 --- /dev/null +++ b/English.lproj/VLDocument.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 41 30 356 240 0 0 1024 746 + IBFramework Version + 437.0 + IBOpenObjects + + 5 + + IBSystem Version + 8F46 + + diff --git a/English.lproj/VLDocument.nib/keyedobjects.nib b/English.lproj/VLDocument.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..7803d4cd230eca2926f0f80d09c0ce79f8dec690 GIT binary patch literal 13302 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 JZLM$f{{i!ci{StO literal 0 HcmV?d00001 diff --git a/English.lproj/VLDocument~.nib/classes.nib b/English.lproj/VLDocument~.nib/classes.nib new file mode 100644 index 0000000..96a02e2 --- /dev/null +++ b/English.lproj/VLDocument~.nib/classes.nib @@ -0,0 +1,15 @@ +{ + IBClasses = ( + {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + {CLASS = MyDocument; LANGUAGE = ObjC; SUPERCLASS = NSDocument; }, + {CLASS = VLDocument; LANGUAGE = ObjC; SUPERCLASS = NSDocument; }, + { + ACTIONS = {scroll = id; setDivisions = id; setKey = id; setTime = id; }; + CLASS = VLSheetView; + LANGUAGE = ObjC; + OUTLETS = {chords = id; }; + SUPERCLASS = NSView; + } + ); + IBVersion = 1; +} \ No newline at end of file diff --git a/English.lproj/VLDocument~.nib/info.nib b/English.lproj/VLDocument~.nib/info.nib new file mode 100644 index 0000000..646f180 --- /dev/null +++ b/English.lproj/VLDocument~.nib/info.nib @@ -0,0 +1,16 @@ + + + + + IBDocumentLocation + 41 30 356 240 0 0 1024 746 + IBFramework Version + 437.0 + IBOpenObjects + + 5 + + IBSystem Version + 8F46 + + diff --git a/English.lproj/VLDocument~.nib/keyedobjects.nib b/English.lproj/VLDocument~.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..5a8edd3bec933a968a976c1e495c02551202e532 GIT binary patch literal 13239 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 + + + + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + vlsong + + CFBundleTypeIconFile + + CFBundleTypeName + DocumentType + CFBundleTypeOSTypes + + ???? + + CFBundleTypeRole + Editor + LSTypeIsPackage + + NSDocumentClass + VLDocument + NSPersistentStoreTypeKey + XML + + + CFBundleExecutable + Vocalese + CFBundleIconFile + + CFBundleIdentifier + com.aereperennius.Vocalese + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/Resources/Music/eighth-flag.eps b/Resources/Music/eighth-flag.eps new file mode 100644 index 0000000..236d717 --- /dev/null +++ b/Resources/Music/eighth-flag.eps @@ -0,0 +1,114 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -13.7812 -752.095 208.323 0.110352 +%%Pages: 0 +%%Title: $8th-Flag from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 21:59 10-1-2006 +%%EndComments +%%BeginPreview: 22 73 4 73 +%3100000000000000000000 +%F500000000000000000000 +%F500000000000000000000 +%F700000000000000000000 +%F800000000000000000000 +%FB00000000000000000000 +%FE00000000000000000000 +%FF20000000000000000000 +%FF60000000000000000000 +%FFA0000000000000000000 +%FFE1000000000000000000 +%FFF5000000000000000000 +%FFFB000000000000000000 +%FFFF200000000000000000 +%FFFF900000000000000000 +%FFFFF20000000000000000 +%FFFFF90000000000000000 +%FFFFFF2000000000000000 +%FFFFFF9000000000000000 +%FFFFFFF200000000000000 +%FFFFFFFB00000000000000 +%FFFFFFFF50000000000000 +%FFFFFFFFD0000000000000 +%FFFFFFFFF8000000000000 +%CEFFFFFFFF200000000000 +%02DFFFFFFFB00000000000 +%002EFFFFFFF50000000000 +%0003EFFFFFFE1000000000 +%00003EFFFFFF9000000000 +%000004FFFFFFF300000000 +%0000006FFFFFFC00000000 +%00000008FFFFFF60000000 +%00000000AFFFFFE1000000 +%000000001CFFFFF8000000 +%0000000002EFFFFF200000 +%00000000005FFFFF900000 +%000000000009FFFFF20000 +%000000000001DFFFF90000 +%0000000000003FFFFF2000 +%00000000000009FFFF8000 +%00000000000001EFFFE000 +%000000000000007FFFF500 +%000000000000001EFFFA00 +%0000000000000007FFFE00 +%0000000000000001FFFF40 +%0000000000000000AFFF80 +%00000000000000005FFFB0 +%00000000000000001FFFE0 +%00000000000000000DFFF1 +%00000000000000000AFFF3 +%000000000000000008FFF4 +%000000000000000007FFF4 +%000000000000000007FFF5 +%000000000000000007FFF4 +%000000000000000008FFF4 +%000000000000000009FFF3 +%00000000000000000AFFF2 +%00000000000000000CFFF0 +%00000000000000000EFFD0 +%00000000000000001FFFB0 +%00000000000000004FFF90 +%00000000000000007FFF60 +%0000000000000000BFFF30 +%0000000000000000EFFE00 +%0000000000000003FFFB00 +%0000000000000008FFF700 +%000000000000000DFFF300 +%000000000000003FFFD000 +%000000000000008FFF9000 +%00000000000000DFFF4000 +%00000000000004FFFD0000 +%00000000000005FFF80000 +%00000000000000AFC10000 +%%EndPreview +%%EndProlog +%%Page "$8th-Flag" 1 +gsave newpath + -13.7812 -125.027 moveto + -13.7812 0.110352 lineto + -6.89062 0.110352 lineto + 0 0.110352 lineto + 0 -4.52051 lineto + 0 -16.2012 2.1377 -37.4863 4.73926 -51.709 curveto + 11.1934 -86.9912 23.4346 -121.775 43.54 -161.963 curveto + 57.6348 -190.136 70.8203 -212.955 103.872 -266.373 curveto + 138.152 -321.775 152.201 -346.117 165.943 -373.925 curveto + 187.084 -416.703 200.057 -455.732 205.337 -492.447 curveto + 212.951 -545.388 205.82 -616.648 186.059 -685.116 curveto + 180.283 -705.127 168.515 -739.052 165.865 -743.33 curveto + 164.217 -745.991 160.64 -748.996 157.166 -750.637 curveto + 154.525 -751.884 153.362 -752.095 149.118 -752.095 curveto + 144.708 -752.095 143.746 -751.9 140.463 -750.348 curveto + 133.071 -746.853 128.571 -740.629 128.016 -733.131 curveto + 127.737 -729.381 127.838 -728.997 131.615 -719.46 curveto + 151.983 -668.026 163.727 -619.226 167.868 -568.798 curveto + 169.114 -553.639 169.533 -530.377 168.732 -520.838 curveto + 163.457 -457.971 127.515 -391.015 54.8037 -308.6 curveto + 14.7344 -265.215 lineto + 0.385742 -250.165 lineto + -6.69824 -250.165 lineto + -13.7812 -250.165 lineto + -13.7812 -125.027 lineto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/eighth-rest.eps b/Resources/Music/eighth-rest.eps new file mode 100644 index 0000000..3efa389 --- /dev/null +++ b/Resources/Music/eighth-rest.eps @@ -0,0 +1,112 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -1.59413 -258.794 250.386 205.14 +%%Pages: 0 +%%Title: $8th-rest from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 14:59 27-12-2005 +%%EndComments +%%BeginPreview: 40 72 4 72 +%000000059CDDB830000000000000000000000000 +%000006EFFFFFFFFB200000000000000000000000 +%0001BFFFFFFFFFFFE40000000000000000000000 +%001DFFFFFFFFFFFFFF4000000000000000004510 +%00CFFFFFFFFFFFFFFFD10000000000000007FFC0 +%07FFFFFFFFFFFFFFFFF7000000000000001EFFC0 +%1EFFFFFFFFFFFFFFFFFC00000000000000AFFF80 +%6FFFFFFFFFFFFFFFFFFF20000000000004FFFF30 +%AFFFFFFFFFFFFFFFFFFF6000000000001EFFFE00 +%DFFFFFFFFFFFFFFFFFFF900000000000BFFFFA00 +%FFFFFFFFFFFFFFFFFFFFC00000000008FFFFF500 +%FFFFFFFFFFFFFFFFFFFFF1000000006FFFFFF100 +%EFFFFFFFFFFFFFFFFFFFF500000005FFFFFFB000 +%CFFFFFFFFFFFFFFFFFFFFB0000005FFFFFFF7000 +%8FFFFFFFFFFFFFFFFFFFFF600007FFFFFFFF2000 +%3FFFFFFFFFFFFFFFFFFFFFFB66CFFFFFFFFD0000 +%0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000 +%02FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40000 +%006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000 +%0008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA00000 +%00006FFFFFFFFFFFFFFFFFFFFFFD86FFFF600000 +%000003BFFFFFFFFFFFFFFFFFC73008FFFF100000 +%00000004AEFFFFFFFFFEB84100000DFFFC000000 +%00000000003577765420000000003FFFF7000000 +%00000000000000000000000000009FFFF3000000 +%0000000000000000000000000000EFFFD0000000 +%0000000000000000000000000004FFFF90000000 +%000000000000000000000000000AFFFF40000000 +%000000000000000000000000001EFFFE00000000 +%000000000000000000000000005FFFFA00000000 +%00000000000000000000000000BFFFF600000000 +%00000000000000000000000001FFFFF200000000 +%00000000000000000000000006FFFFC000000000 +%0000000000000000000000000BFFFF8000000000 +%0000000000000000000000002FFFFF3000000000 +%0000000000000000000000007FFFFE0000000000 +%000000000000000000000000CFFFF90000000000 +%000000000000000000000002FFFFF50000000000 +%000000000000000000000008FFFFF10000000000 +%00000000000000000000000DFFFFB00000000000 +%00000000000000000000003FFFFF600000000000 +%00000000000000000000009FFFFF200000000000 +%0000000000000000000000EFFFFC000000000000 +%0000000000000000000004FFFFF8000000000000 +%0000000000000000000009FFFFF4000000000000 +%000000000000000000001EFFFFE0000000000000 +%000000000000000000005FFFFFA0000000000000 +%00000000000000000000AFFFFF50000000000000 +%00000000000000000001FFFFFF10000000000000 +%00000000000000000006FFFFFB00000000000000 +%0000000000000000000BFFFFF700000000000000 +%0000000000000000002FFFFFF200000000000000 +%0000000000000000007FFFFFD000000000000000 +%000000000000000000CFFFFF8000000000000000 +%000000000000000002FFFFFF4000000000000000 +%000000000000000008FFFFFE0000000000000000 +%00000000000000000DFFFFFA0000000000000000 +%00000000000000003FFFFFF50000000000000000 +%00000000000000009FFFFFF10000000000000000 +%0000000000000000EFFFFFC00000000000000000 +%0000000000000004FFFFFF700000000000000000 +%0000000000000009FFFFFF300000000000000000 +%000000000000000EFFFFFD000000000000000000 +%000000000000005FFFFFF9000000000000000000 +%00000000000000AFFFFFF4000000000000000000 +%00000000000001FFFFFFE0000000000000000000 +%00000000000005FFFFFFA0000000000000000000 +%0000000000000BFFFFFF50000000000000000000 +%0000000000001FFFFFFF10000000000000000000 +%0000000000006FFFFFFB00000000000000000000 +%000000000000AFFFFFF600000000000000000000 +%00000000000018DFEB5000000000000000000000 +%%EndPreview +%%EndProlog +%%Page "$8th-rest" 1 +gsave newpath + 60.1982 204.578 moveto + 82.6348 207.497 104.066 198.919 117.087 181.809 curveto + 124.229 172.422 126.998 164.994 132.026 141.73 curveto + 136.84 119.46 140.704 111.699 149.008 107.625 curveto + 155.402 104.487 161.988 104.089 167.53 106.504 curveto + 178.14 111.127 196.523 130.154 213.87 154.465 curveto + 218.512 160.97 224.843 171.235 226.178 174.421 curveto + 228.142 179.109 232.414 182.041 237.872 182.445 curveto + 240.738 182.657 241.584 182.48 244.212 181.119 curveto + 246.142 180.119 247.815 178.726 248.814 177.288 curveto + 250.386 175.027 lineto + 187.211 -37.707 lineto + 135.249 -212.68 123.82 -250.612 122.822 -251.407 curveto + 120.236 -253.466 114.774 -256.211 110.805 -257.445 curveto + 104.7 -259.344 95.2041 -259.225 88.9746 -257.173 curveto + 85.3359 -255.974 78.9248 -252.542 77.0674 -250.8 curveto + 76.8252 -250.572 102.553 -176.984 134.233 -87.293 curveto + 165.914 2.39844 191.841 75.9854 191.841 76.2129 curveto + 191.841 76.4395 186.328 74.7744 179.604 72.5146 curveto + 144.267 60.6426 117.97 55.1904 91.7861 54.3086 curveto + 73.0977 53.6797 59.1719 56.3594 44.377 63.4326 curveto + 30.7607 69.9424 19.6514 79.334 11.4902 91.2344 curveto + -8.16992 119.9 -5.42773 158.309 18.0527 183.187 curveto + 28.7607 194.531 44.542 202.542 60.1982 204.578 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/flat.eps b/Resources/Music/flat.eps new file mode 100644 index 0000000..c00f6a8 --- /dev/null +++ b/Resources/Music/flat.eps @@ -0,0 +1,126 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -24.917 -157.276 200.068 470.155 +%%Pages: 0 +%%Title: Flat from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 15:01 27-12-2005 +%%EndComments +%%BeginPreview: 26 73 4 73 +%00220000000000000000000000 +%9EFFE700000000000000000000 +%FFFFFB00000000000000000000 +%FFFFFB00000000000000000000 +%EFFFFB00000000000000000000 +%EFFFFA00000000000000000000 +%EFFFFA00000000000000000000 +%DFFFFA00000000000000000000 +%DFFFFA00000000000000000000 +%DFFFF900000000000000000000 +%DFFFF900000000000000000000 +%CFFFF900000000000000000000 +%CFFFF800000000000000000000 +%CFFFF800000000000000000000 +%BFFFF800000000000000000000 +%BFFFF800000000000000000000 +%BFFFF700000000000000000000 +%BFFFF700000000000000000000 +%AFFFF700000000000000000000 +%AFFFF700000000000000000000 +%AFFFF600000000000000000000 +%9FFFF600000000000000000000 +%9FFFF600000000000000000000 +%9FFFF500000000000000000000 +%9FFFF500000000000000000000 +%8FFFF500000000000000000000 +%8FFFF500000000000000000000 +%8FFFF400000000000000000000 +%8FFFF400000000000000000000 +%7FFFF400000000000000000000 +%7FFFF400000000000000000000 +%7FFFF300000000000000000000 +%6FFFF300000000000000000000 +%6FFFF300000000000000000000 +%6FFFF300000000000000000000 +%6FFFF200000000000000000000 +%5FFFF200000000000000000000 +%5FFFF200000000000000000000 +%5FFFF100000368998610000000 +%5FFFF10039EFFFFFFFFA200000 +%4FFFF13BFFFFFFFFFFFFF70000 +%4FFFF9FFFFFFFFFFFFFFFF8000 +%4FFFFFFFFFECCFFFFFFFFFF600 +%3FFFFFFFD50001AFFFFFFFFE20 +%3FFFFFFD1000000BFFFFFFFFA0 +%3FFFFFF200000002FFFFFFFFF1 +%3FFFFF9000000000AFFFFFFFF6 +%2FFFFF30000000006FFFFFFFF9 +%2FFFFE00000000003FFFFFFFFC +%2FFFFD00000000001FFFFFFFFD +%1FFFFC00000000000FFFFFFFFD +%1FFFFB00000000001FFFFFFFFB +%1FFFFB00000000003FFFFFFFF8 +%1FFFFB00000000006FFFFFFFF4 +%0FFFFB0000000000AFFFFFFFD0 +%0FFFFA0000000001FFFFFFFF60 +%0FFFFA0000000008FFFFFFFC00 +%0FFFFA000000002EFFFFFFE200 +%0EFFFA00000000BFFFFFFF4000 +%0EFFFA00000007FFFFFFF50000 +%0EFFFA0000005FFFFFFE400000 +%0DFFFA000004FFFFFFD2000000 +%0DFFFB00004EFFFFFA10000000 +%0DFFFC0005EFFFFE6000000000 +%0DFFFD006FFFFFB20000000000 +%0CFFFE08FFFFF7000000000000 +%0CFFFFBFFFFD30000000000000 +%0CFFFFFFFF9000000000000000 +%0BFFFFFFE50000000000000000 +%0BFFFFFD200000000000000000 +%0BFFFFE3000000000000000000 +%08FFFF40000000000000000000 +%01AFD400000000000000000000 +%%EndPreview +%%EndProlog +%%Page "Flat" 1 +gsave newpath + -8.93066 469.513 moveto + -3.19727 470.614 7.11426 470.257 12.7891 468.76 curveto + 15.1045 468.149 18.9512 466.751 21.251 465.684 curveto + 25.4688 463.727 lineto + 25.1104 448.98 lineto + 24.9131 440.867 23.5371 366.538 22.0508 283.737 curveto + 20.5645 200.938 19.2383 128.988 19.1016 123.787 curveto + 18.8535 114.333 lineto + 24.752 118.316 lineto + 43.751 131.146 63.6162 138.937 86.2734 142.439 curveto + 97.7402 144.213 115.233 144.233 123.87 142.484 curveto + 152.866 136.611 175.987 118.364 189.365 90.7939 curveto + 201.544 65.6943 203.425 36.4385 194.519 10.6396 curveto + 187.65 -9.25488 172.657 -29.6553 151.213 -48.2832 curveto + 138.048 -59.7178 125.469 -69.0869 97.0234 -88.6426 curveto + 68.2471 -108.425 51.2627 -120.881 44.4326 -127.21 curveto + 42.9395 -128.594 38.4551 -133.683 34.4053 -138.589 curveto + 25.7139 -149.118 22.0654 -152.521 16.5381 -155.258 curveto + 12.6934 -157.16 12.1553 -157.276 7.19434 -157.276 curveto + 2.67383 -157.276 1.50098 -157.074 -1.10254 -155.844 curveto + -7.61133 -152.768 -12.7256 -145.921 -13.498 -139.25 curveto + -13.6846 -137.644 -16.1689 -7.93848 -19.0186 148.952 curveto + -21.8682 305.844 -24.3623 440.846 -24.5586 448.925 curveto + -24.917 463.616 lineto + -22.5469 464.831 lineto + -18.5781 466.865 -13.3408 468.666 -8.93066 469.513 curveto + closepath + 87.3213 104.869 moveto + 77.3057 107.447 64.7744 105.209 54.5205 99.0127 curveto + 40.8887 90.7744 30.8574 75.6895 26.9873 57.6074 curveto + 25.6748 51.4775 25.1914 37.1006 24.499 -16.4277 curveto + 24.0498 -51.1572 25.0225 -79.5254 27.3271 -98.9521 curveto + 27.6738 -101.874 lineto + 30.21 -99.832 lineto + 81.8086 -58.2705 106.525 -28.8633 117.454 3.96875 curveto + 124.629 25.5234 124.715 50.4863 117.686 71.5547 curveto + 111.562 89.9121 101.18 101.302 87.3213 104.869 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/g-clef.eps b/Resources/Music/g-clef.eps new file mode 100644 index 0000000..025f469 --- /dev/null +++ b/Resources/Music/g-clef.eps @@ -0,0 +1,207 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0.331055 -653.589 636.078 1249.21 +%%Pages: 0 +%%Title: G-clef from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 14:45 27-12-2005 +%%EndComments +%%BeginPreview: 25 73 4 73 +%00000000000030000000000000 +%000000000008F6000000000000 +%00000000007FFF300000000000 +%0000000004FFFFC00000000000 +%000000000DFFFFF70000000000 +%000000007FFFFFFE1000000000 +%00000000EFFFFB6F7000000000 +%00000005FFFF900DD000000000 +%00000009FFFA0007F400000000 +%0000000DFFD10003F900000000 +%0000001FFF400002FD00000000 +%0000003FFB000001FF20000000 +%0000004FF5000001FF50000000 +%0000004FF1000002FF70000000 +%0000003FC0000004FF80000000 +%0000003FA0000007FF80000000 +%0000002F9000000BFF70000000 +%0000000F9000001FFF50000000 +%0000000DA000007FFF20000000 +%0000000AC00000EFFD00000000 +%00000008F00007FFF800000000 +%00000004F4001EFFF200000000 +%00000001F700AFFFA000000000 +%00000000CB05FFFF2000000000 +%000000008F3EFFF80000000000 +%000000004FEFFFD10000000000 +%000000000EFFFF400000000000 +%000000006FFFF8000000000000 +%00000003FFFFB0000000000000 +%0000001DFFFE10000000000000 +%000000BFFFFE00000000000000 +%000008FFFFBF30000000000000 +%00004FFFF91F80000000000000 +%0001EFFFC00BD0000000000000 +%000AFFFE2007F2000000000000 +%004FFFF50002F7000000000000 +%00CFFF900000DB000000000000 +%05FFFE1000009F100000000000 +%0BFFF5000005BFCA7300000000 +%2FFFC00005EFFFFFFFC4000000 +%6FFF40008FFFFFFFFFFF800000 +%AFFD0006FFFFFFFFFFFFF90000 +%DFF7001EFFFB66F98DFFFF5000 +%FFF3006FFE5000E9007FFFE100 +%FFE0009FF50000BC0005FFF600 +%FFC000BFC000008F10007FFB00 +%DFA000BF9000005F30000DFF00 +%BFA0009F9000002F600008FF20 +%7FA0004FD000000E900004FF20 +%2FE0000CF600000BC00003FF10 +%0AF40003EF400009E00004FE00 +%02FC00004EF80007F10007F900 +%007F800002AF2005F3000CF300 +%000AF80000000003F5006F9000 +%0000AFB200000001F604FC1000 +%000008FE82000000F98FC10000 +%0000003BFFD98789FFF8100000 +%0000000028BEFFFEFC20000000 +%0000000000000100DA00000000 +%0000000000000000DA00000000 +%0000000000000000DA00000000 +%0000377200000000DA00000000 +%001BFFFF60000000E900000000 +%00AFFFFFF2000000F800000000 +%02FFFFFFF8000001F700000000 +%04FFFFFFF9000004F500000000 +%03FFFFFFF7000008F100000000 +%00EFFFFFD100000DB000000000 +%009FFFFB2000006F4000000000 +%001EF500000003EB0000000000 +%0004EF7000005ED10000000000 +%00003CFEA89CFC200000000000 +%0000005AEFFC60000000000000 +%%EndPreview +%%EndProlog +%%Page "G-clef" 1 +gsave newpath + 323.814 1248.23 moveto + 326.682 1249.53 330.958 1249.53 333.793 1248.25 curveto + 335.974 1247.26 343.655 1239.47 351.798 1229.99 curveto + 412.814 1158.93 466.992 1038.2 484.002 935.392 curveto + 490.694 894.941 491.027 858.71 485.088 817.42 curveto + 474.553 744.178 443.542 671.224 387.772 588.479 curveto + 368.944 560.543 349.479 534.123 319.294 495.535 curveto + 308.6 481.863 lineto + 311.188 473.76 lineto + 330.55 413.12 351.302 344.734 366.843 290.353 curveto + 375.193 261.136 lineto + 378.445 261.008 lineto + 415.932 259.54 443.484 254.213 472.437 242.837 curveto + 493.881 234.412 516.114 221.852 533.627 208.268 curveto + 592.691 162.458 630 92.3926 635.662 16.6484 curveto + 636.486 5.62305 636.02 -21.3018 634.831 -31.3125 curveto + 627.282 -94.873 598.324 -150.397 549.945 -194.071 curveto + 526.864 -214.908 500.275 -230.768 471.169 -241.062 curveto + 464.443 -243.439 lineto + 464.471 -245.838 lineto + 464.486 -247.159 464.823 -260.364 465.223 -275.248 curveto + 466.694 -330.1 463.972 -400.22 458.898 -438.147 curveto + 450.219 -503.032 421.728 -563.201 381.092 -602.463 curveto + 351.034 -631.505 316.152 -648.366 276.736 -652.908 curveto + 267.123 -654.016 244.929 -653.73 233.462 -652.352 curveto + 189.636 -647.081 152.445 -631.67 119.074 -604.95 curveto + 110.915 -598.417 97.4893 -585.221 90.8203 -577.178 curveto + 62.7783 -543.359 47.373 -503.308 45.9326 -460.474 curveto + 45.4385 -445.811 46.8252 -435.94 51.1201 -423.539 curveto + 62.5654 -390.494 92.668 -363.823 129.272 -354.298 curveto + 165.05 -344.987 197.516 -353.023 221.94 -377.234 curveto + 231.036 -386.25 237.005 -394.708 242.831 -406.836 curveto + 249.748 -421.234 253.574 -438.203 253.557 -454.41 curveto + 253.509 -500.331 219.952 -540.105 174.477 -548.146 curveto + 159.096 -550.866 143.572 -549.28 128.666 -543.466 curveto + 124.642 -541.896 lineto + 127.512 -546.031 lineto + 142.531 -567.672 166.152 -587.549 190.022 -598.633 curveto + 208.95 -607.423 227.288 -612.021 249.339 -613.507 curveto + 318.626 -618.176 377.845 -570.562 406.349 -487.266 curveto + 417.483 -454.727 421.021 -431.367 424.509 -367.31 curveto + 425.288 -353.011 425.832 -285.667 425.316 -267.476 curveto + 424.958 -254.852 424.827 -253.444 424.035 -253.68 curveto + 422.264 -254.204 404.796 -256.742 397.188 -257.58 curveto + 363.727 -261.264 328.477 -260.762 297.685 -256.162 curveto + 271.995 -252.325 241.293 -243.829 217.476 -233.969 curveto + 184.289 -220.229 151.174 -199.869 123.208 -176.01 curveto + 112.685 -167.031 94.3369 -148.677 85.1953 -137.982 curveto + 41.3271 -86.665 13.1162 -24.4209 3.61719 42.0068 curveto + 0.964844 60.5586 0.331055 70.4521 0.331055 93.2744 curveto + 0.331055 115.986 0.973633 126.291 3.62402 146.031 curveto + 13.9482 222.941 47.0889 300.496 106.521 386.824 curveto + 132.743 424.915 152.491 450.771 214.854 528.666 curveto + 233.743 552.26 241.412 562.22 241.171 562.845 curveto + 239.326 567.642 222.74 624.752 217.22 645.314 curveto + 188.939 750.661 177.104 836.958 178.2 929.823 curveto + 178.563 960.584 179.932 976.381 184.43 1001.76 curveto + 198.117 1079 232.71 1150.92 284.515 1209.87 curveto + 298.129 1225.36 319.617 1246.33 323.814 1248.23 curveto + closepath + 382.273 1105.13 moveto + 381.161 1107.11 380.093 1108.7 379.879 1108.69 curveto + 379.306 1108.66 365.711 1099.03 359.427 1094.2 curveto + 286.423 1038.1 239.173 955.348 228.266 864.498 curveto + 226.444 849.326 225.909 840.133 225.909 823.98 curveto + 225.909 807.421 226.723 795.7 229.104 777.949 curveto + 234.724 736.049 247.697 679.658 266.075 617.255 curveto + 268.672 608.435 270.943 601.095 271.142 600.882 curveto + 271.339 600.67 275.709 606.119 280.867 613.01 curveto + 350.484 706.009 388.812 778.888 407.648 854.079 curveto + 416.678 890.121 420.688 926.516 419.824 964.554 curveto + 418.924 1004.13 415.862 1025.06 407.287 1050.22 curveto + 402.249 1065.01 391.33 1088.97 382.273 1105.13 curveto + closepath + 287.954 413.562 moveto + 282.94 429.769 278.668 443.228 278.47 443.439 curveto + 278.105 443.828 271.34 435.502 247.25 405.017 curveto + 212.793 361.411 190.612 331.469 170.069 300.827 curveto + 108.605 209.151 78.1973 131.753 70.7666 48.0703 curveto + 69.5576 34.4541 69.3906 4.89453 70.4727 -4.02441 curveto + 75.042 -41.6758 90.3545 -76.9072 116.189 -109.206 curveto + 165.363 -170.686 246.747 -212.827 328.776 -219.286 curveto + 337.971 -220.01 369.294 -220.003 380.65 -219.274 curveto + 396.472 -218.259 420.526 -215.413 422.271 -214.35 curveto + 422.771 -214.046 422.576 -209.316 421.472 -194.983 curveto + 414.665 -106.63 400.827 -17.1992 378.19 84.7295 curveto + 371.764 113.672 361.756 155.576 361.102 156.284 curveto + 360.878 156.527 357.001 156.322 352.48 155.829 curveto + 292.724 149.306 247.742 117.004 231.903 69.2393 curveto + 227.31 55.3877 225.637 43.6602 226.179 29.1074 curveto + 226.831 11.5762 230.701 -3.58594 238.716 -20.0107 curveto + 252.416 -48.0879 276.626 -71.9375 309.868 -90.1035 curveto + 316.924 -93.96 318.589 -95.501 320.797 -100.221 curveto + 322.011 -102.814 322.21 -103.969 322.175 -108.214 curveto + 322.124 -114.168 320.701 -117.893 316.908 -121.995 curveto + 313.856 -125.298 310.915 -126.979 306.34 -128.034 curveto + 303.074 -128.787 302.205 -128.795 298.843 -128.101 curveto + 290.409 -126.359 267.31 -114.2 251.544 -103.204 curveto + 232.415 -89.8623 214.086 -71.8945 201.095 -53.749 curveto + 181.033 -25.7285 168.937 6.56055 165.322 41.7314 curveto + 164.461 50.1104 164.446 70.6855 165.296 78.9414 curveto + 168.943 114.388 180.922 147.255 200.336 175.083 curveto + 213.702 194.241 232.635 212.735 252.426 225.962 curveto + 274.418 240.661 301.599 251.552 329.107 256.688 curveto + 331.643 257.161 333.858 257.677 334.005 257.828 curveto + 334.706 258.549 308.739 346.361 287.954 413.562 curveto + closepath + 413.285 153.626 moveto + 404.024 155.334 402.809 155.389 403.187 154.079 curveto + 403.344 153.534 405.087 146.251 407.053 137.928 curveto + 433.833 24.5312 450.594 -73.8545 459.175 -168.026 curveto + 460.315 -180.54 461.963 -201.131 461.963 -202.866 curveto + 461.963 -203.653 462.899 -203.411 467.806 -201.357 curveto + 488.258 -192.797 505.714 -181.099 521.241 -165.546 curveto + 550.551 -136.188 567.716 -101.157 573.106 -59.7021 curveto + 574.268 -50.7715 574.446 -28.2441 573.425 -19.46 curveto + 568.063 26.6816 548.746 67.3506 517.024 99.2832 curveto + 488.579 127.919 453.749 146.164 413.285 153.626 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/half-notehead.eps b/Resources/Music/half-notehead.eps new file mode 100644 index 0000000..c8aa8f3 --- /dev/null +++ b/Resources/Music/half-notehead.eps @@ -0,0 +1,100 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0.0271721 -135.402 345.619 136.258 +%%Pages: 0 +%%Title: Half-notehead from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 15:02 27-12-2005 +%%EndComments +%%BeginPreview: 72 57 4 57 +%000000000000000000000000000000000000000000000000234567777653100000000000 +%00000000000000000000000000000000000000001468ACEFFFFFFFFFFFFFFDA500000000 +%00000000000000000000000000000000000158BEFFFFFFFFFFFFFFFFFFFFFFFFE6000000 +%0000000000000000000000000000000048CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC20000 +%000000000000000000000000000015AEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3000 +%0000000000000000000000000049EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD100 +%0000000000000000000000016DFFFFFFFFFFFFFFFFFFFFFFFFFFFC842237BFFFFFFFFA00 +%00000000000000000000018EFFFFFFFFFFFFFFFFFFFFFFFFFFE93000000003DFFFFFFF40 +%000000000000000000017EFFFFFFFFFFFFFFFFFFFFFFFFFFE71000000000001BFFFFFFB0 +%0000000000000000006EFFFFFFFFFFFFFFFFFFFFFFFFFFE71000000000000001CFFFFFF1 +%00000000000000002BFFFFFFFFFFFFFFFFFFFFFFFFFFE81000000000000000003FFFFFF6 +%0000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFA200000000000000000000AFFFFF9 +%00000000000001BFFFFFFFFFFFFFFFFFFFFFFFFFFC300000000000000000000004FFFFFB +%0000000000002CFFFFFFFFFFFFFFFFFFFFFFFFFE60000000000000000000000001FFFFFC +%000000000002DFFFFFFFFFFFFFFFFFFFFFFFFF9100000000000000000000000000FFFFFD +%00000000002DFFFFFFFFFFFFFFFFFFFFFFFFD40000000000000000000000000000FFFFFD +%0000000001DFFFFFFFFFFFFFFFFFFFFFFFF7000000000000000000000000000002FFFFFC +%000000000AFFFFFFFFFFFFFFFFFFFFFFFB20000000000000000000000000000006FFFFFA +%000000007FFFFFFFFFFFFFFFFFFFFFFE600000000000000000000000000000000BFFFFF8 +%00000003FFFFFFFFFFFFFFFFFFFFFFA2000000000000000000000000000000004FFFFFF5 +%0000000CFFFFFFFFFFFFFFFFFFFFE50000000000000000000000000000000001DFFFFFF2 +%0000006FFFFFFFFFFFFFFFFFFFFA10000000000000000000000000000000000BFFFFFFE0 +%000001EFFFFFFFFFFFFFFFFFFE500000000000000000000000000000000000AFFFFFFFA0 +%000007FFFFFFFFFFFFFFFFFFA100000000000000000000000000000000001BFFFFFFFF60 +%00001EFFFFFFFFFFFFFFFFE5000000000000000000000000000000000001CFFFFFFFFF20 +%00007FFFFFFFFFFFFFFFFA1000000000000000000000000000000000003DFFFFFFFFFC00 +%0000DFFFFFFFFFFFFFFE50000000000000000000000000000000000005EFFFFFFFFFF700 +%0005FFFFFFFFFFFFFFB20000000000000000000000000000000000008FFFFFFFFFFFF200 +%000BFFFFFFFFFFFFF70000000000000000000000000000000000002CFFFFFFFFFFFFC000 +%001FFFFFFFFFFFFD30000000000000000000000000000000000005EFFFFFFFFFFFFF6000 +%007FFFFFFFFFFFB10000000000000000000000000000000000019FFFFFFFFFFFFFFE1000 +%00CFFFFFFFFFF80000000000000000000000000000000000004DFFFFFFFFFFFFFFF80000 +%02FFFFFFFFFF60000000000000000000000000000000000018FFFFFFFFFFFFFFFFF20000 +%06FFFFFFFFE4000000000000000000000000000000000003DFFFFFFFFFFFFFFFFF900000 +%0AFFFFFFFE3000000000000000000000000000000000018FFFFFFFFFFFFFFFFFFF200000 +%0EFFFFFFE300000000000000000000000000000000004DFFFFFFFFFFFFFFFFFFF8000000 +%3FFFFFFF400000000000000000000000000000000019FFFFFFFFFFFFFFFFFFFFE1000000 +%6FFFFFF70000000000000000000000000000000004DFFFFFFFFFFFFFFFFFFFFF50000000 +%9FFFFFD0000000000000000000000000000000019FFFFFFFFFFFFFFFFFFFFFFA00000000 +%BFFFFF600000000000000000000000000000005DFFFFFFFFFFFFFFFFFFFFFFD100000000 +%DFFFFF2000000000000000000000000000001AFFFFFFFFFFFFFFFFFFFFFFFF3000000000 +%EFFFFE000000000000000000000000000006EFFFFFFFFFFFFFFFFFFFFFFFF50000000000 +%FFFFFD0000000000000000000000000003CFFFFFFFFFFFFFFFFFFFFFFFFF600000000000 +%FFFFFD000000000000000000000000018FFFFFFFFFFFFFFFFFFFFFFFFFF6000000000000 +%EFFFFF1000000000000000000000005DFFFFFFFFFFFFFFFFFFFFFFFFFE50000000000000 +%CFFFFF50000000000000000000003BFFFFFFFFFFFFFFFFFFFFFFFFFFD300000000000000 +%AFFFFFB000000000000000000019FFFFFFFFFFFFFFFFFFFFFFFFFFF81000000000000000 +%6FFFFFF5000000000000000018EFFFFFFFFFFFFFFFFFFFFFFFFFFC300000000000000000 +%1FFFFFFE3000000000000017EFFFFFFFFFFFFFFFFFFFFFFFFFFE60000000000000000000 +%0AFFFFFFE4000000000028EFFFFFFFFFFFFFFFFFFFFFFFFFFE7100000000000000000000 +%02FFFFFFFF930000015AFFFFFFFFFFFFFFFFFFFFFFFFFFFD710000000000000000000000 +%008FFFFFFFFFDA9ACFFFFFFFFFFFFFFFFFFFFFFFFFFFFB50000000000000000000000000 +%000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD72000000000000000000000000000 +%0001AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC73000000000000000000000000000000 +%000007EFFFFFFFFFFFFFFFFFFFFFFFFFFFFC951000000000000000000000000000000000 +%00000018DFFFFFFFFFFFFFFFFFFFFEC97410000000000000000000000000000000000000 +%00000000037ACDFFFFEEDCB9865310000000000000000000000000000000000000000000 +%%EndPreview +%%EndProlog +%%Page "Half-notehead" 1 +gsave newpath + 252.205 135.896 moveto + 298.787 138.354 324.591 128.407 337.745 102.922 curveto + 349.221 80.6885 348.205 53.418 334.355 11.9629 curveto + 324.964 -16.1523 313.459 -38.2393 298.606 -56.6699 curveto + 293.587 -62.8994 282.139 -74.0615 275.909 -78.8008 curveto + 247.135 -100.69 205.292 -118.225 161.025 -126.943 curveto + 130.815 -132.894 85.9746 -136.691 65.9316 -134.997 curveto + 36.3838 -132.499 18.2822 -122.253 7.90332 -102.15 curveto + -3.57422 -79.917 -2.55957 -52.6465 11.2891 -11.1904 curveto + 20.6816 16.9238 32.1855 39.0107 47.0381 57.4424 curveto + 52.0576 63.6719 63.5059 74.834 69.7354 79.5723 curveto + 98.5234 101.473 140.353 118.999 184.675 127.734 curveto + 201.812 131.111 233.021 134.883 252.205 135.896 curveto + closepath + 282.911 108.482 moveto + 274.69 110.053 267.034 109.229 256.505 105.639 curveto + 230.479 96.7656 191.951 74.3252 116.869 24.3086 curveto + 87.376 4.66113 70.0918 -8.08496 55.127 -21.2246 curveto + 38.4238 -35.8906 31.6455 -45.3428 29.1572 -57.4424 curveto + 26.1523 -72.0508 30.0352 -85.498 40.2344 -95.8105 curveto + 46.6074 -102.253 53.6387 -105.972 62.7344 -107.71 curveto + 70.9668 -109.284 78.6104 -108.457 89.1953 -104.849 curveto + 115.162 -95.9951 153.749 -73.5166 228.776 -23.5371 curveto + 258.269 -3.88965 275.554 8.85742 290.519 21.9961 curveto + 307.222 36.6621 313.999 46.1143 316.487 58.2139 curveto + 319.492 72.8223 315.609 86.2705 305.41 96.582 curveto + 299.038 103.025 292.007 106.744 282.911 108.482 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/half-rest.eps b/Resources/Music/half-rest.eps new file mode 100644 index 0000000..9779e2d --- /dev/null +++ b/Resources/Music/half-rest.eps @@ -0,0 +1,60 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0.275391 0.110352 374.587 156.67 +%%Pages: 0 +%%Title: half-rest from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 14:58 27-12-2005 +%%EndComments +%%BeginPreview: 72 31 4 31 +%000000000000000111111111111111111111111111111111111111111100000000000000 +%9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +%EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +%EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +%9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEE7 +%%EndPreview +%%EndProlog +%%Page "half-rest" 1 +gsave newpath + 4.4375 155.706 moveto + 6.2373 156.618 16.0967 156.67 187.431 156.67 curveto + 358.766 156.67 368.625 156.618 370.425 155.706 curveto + 371.472 155.174 372.834 154.048 373.456 153.197 curveto + 374.586 151.655 374.587 151.599 374.587 78.3906 curveto + 374.587 5.18164 374.586 5.12598 373.456 3.58301 curveto + 372.834 2.7334 371.472 1.60645 370.425 1.0752 curveto + 368.625 0.162109 358.766 0.110352 187.431 0.110352 curveto + 16.0967 0.110352 6.2373 0.162109 4.4375 1.0752 curveto + 3.39062 1.60645 2.02832 2.7334 1.40527 3.58301 curveto + 0.276367 5.12598 0.275391 5.18164 0.275391 78.3906 curveto + 0.275391 151.599 0.276367 151.655 1.40527 153.197 curveto + 2.02832 154.048 3.39062 155.174 4.4375 155.706 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/natural.eps b/Resources/Music/natural.eps new file mode 100644 index 0000000..79c0c7c --- /dev/null +++ b/Resources/Music/natural.eps @@ -0,0 +1,129 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -6.61523 -379.879 173.098 380.817 +%%Pages: 0 +%%Title: Natural from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 15:01 27-12-2005 +%%EndComments +%%BeginPreview: 18 73 4 73 +%033100000000000000 +%EFFF50000000000000 +%FFFF60000000000000 +%FFFF60000000000000 +%FFFF60000000000000 +%FFFF50000000000000 +%EFFF50000000000000 +%EFFF50000000000000 +%EFFF50000000000000 +%EFFF50000000000000 +%EFFF50000000000000 +%EFFF40000000000000 +%DFFF40000000000000 +%DFFF40000000000000 +%DFFF40000000000000 +%DFFF40000000000000 +%DFFF4000001468B900 +%DFFF5479BEFFFFFF60 +%CFFFFFFFFFFFFFFF70 +%CFFFFFFFFFFFFFFF70 +%CFFFFFFFFFFFFFFF70 +%CFFFFFFFFFFFFFFF70 +%CFFFFFFFFFFFFFFF70 +%CFFFFFFFFFFFFFFF80 +%BFFFFFFFFFFFFFFF80 +%BFFFFFFFFFFFFFFF80 +%BFFFFFFFDA853CFF80 +%BFFF953000000CFF80 +%BFFF200000000DFF80 +%AFFF100000000DFF90 +%AFFF100000000DFF90 +%AFFF100000000DFF90 +%AFFF100000000DFF90 +%AFFF100000000DFF90 +%AFFF000000000EFFA0 +%9FFF000000000EFFA0 +%9FFF000000000EFFA0 +%9FFF000000000EFFA0 +%9FFF000000000EFFA0 +%9FFF000000000EFFA0 +%8FFE000000000FFFB0 +%8FFE000000000FFFB0 +%8FFE000000000FFFB0 +%8FFE000000000FFFB0 +%8FFE000000000FFFB0 +%8FFD000000001FFFB0 +%7FFD00001368BFFFC0 +%7FFE68BDFFFFFFFFC0 +%7FFFFFFFFFFFFFFFC0 +%7FFFFFFFFFFFFFFFC0 +%7FFFFFFFFFFFFFFFC0 +%6FFFFFFFFFFFFFFFD0 +%6FFFFFFFFFFFFFFFD0 +%6FFFFFFFFFFFFFFFD0 +%6FFFFFFFFFFFFFFFD0 +%6FFFFFFFFFFFEFFFD0 +%4FFFFFDB86413FFFD0 +%0575310000003FFFE0 +%0000000000003FFFE0 +%0000000000003FFFE0 +%0000000000003FFFE0 +%0000000000004FFFE0 +%0000000000004FFFE0 +%0000000000004FFFF0 +%0000000000004FFFF0 +%0000000000004FFFF0 +%0000000000004FFFF0 +%0000000000004FFFF0 +%0000000000005FFFF0 +%0000000000005FFFF1 +%0000000000005FFFF1 +%0000000000005FFFF1 +%0000000000003CFFB0 +%%EndPreview +%%EndProlog +%%Page "Natural" 1 +gsave newpath + 9.20605 380.498 moveto + 10.6562 380.763 14.7188 380.889 18.1914 380.776 curveto + 25.083 380.553 31.7686 378.975 36.9902 376.337 curveto + 39.6914 374.973 lineto + 39.6914 364.36 lineto + 39.6914 358.525 39.2822 319.322 38.7812 277.26 curveto + 38.2812 235.198 38.0332 200.61 38.2305 200.413 curveto + 38.4277 200.216 63.3135 204.059 93.5781 208.958 curveto + 123.843 213.858 149.483 217.861 150.606 217.861 curveto + 156.505 217.861 163.095 213.09 165.302 207.222 curveto + 166.482 204.079 lineto + 169.79 -72.96 lineto + 171.609 -225.331 173.098 -355.445 173.098 -362.101 curveto + 173.098 -374.201 lineto + 170.369 -375.579 lineto + 168.881 -376.331 165.436 -377.621 162.789 -378.418 curveto + 158.474 -379.718 157.057 -379.879 149.945 -379.879 curveto + 142.834 -379.879 141.416 -379.718 137.101 -378.418 curveto + 134.454 -377.621 131.009 -376.331 129.521 -375.579 curveto + 126.792 -374.201 lineto + 126.792 -363.589 lineto + 126.792 -357.753 127.201 -318.55 127.701 -276.488 curveto + 128.201 -234.427 128.449 -199.839 128.253 -199.642 curveto + 128.056 -199.444 103.17 -203.286 72.9053 -208.187 curveto + 42.6406 -213.086 16.999 -217.089 15.877 -217.089 curveto + 9.97754 -217.089 3.3877 -212.318 1.18164 -206.45 curveto + 0 -203.308 lineto + -3.30762 73.7324 lineto + -5.12695 226.103 -6.61523 356.217 -6.61523 362.872 curveto + -6.61523 374.973 lineto + -3.96875 376.305 lineto + -1.02344 377.787 5.18164 379.762 9.20605 380.498 curveto + closepath + 132.139 94.2393 moveto + 132.421 111.273 132.355 114.215 131.698 114.167 curveto + 127.839 113.887 37.2266 98.6475 36.9717 98.2363 curveto + 36.6309 97.6846 34.0137 -112.9 34.3438 -113.23 curveto + 34.7266 -113.613 129.23 -98.0156 129.538 -97.5195 curveto + 129.726 -97.2158 130.312 -58.4346 130.844 -11.3564 curveto + 131.374 35.7217 131.957 83.25 132.139 94.2393 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/notecursor.eps b/Resources/Music/notecursor.eps new file mode 100644 index 0000000..71fba06 --- /dev/null +++ b/Resources/Music/notecursor.eps @@ -0,0 +1,91 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0.0928459 -135.18 329.014 136.045 +%%Pages: 0 +%%Title: Quart-notehead from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 15:02 27-12-2005 +%%EndComments +%%BeginPreview: 73 60 4 60 +%00000000000000000000000000000000000000000001345666543200000000000000000000 +%00000000000000000000000000000000000000259BEFFFFFFFFFFFFC962000000000000000 +%0000000000000000000000000000000000049DFFFFFFFFFFFFFFFFFFFFFC60000000000000 +%0000000000000000000000000000000049EFFFFFFFFFFFFFFFFFFFFFFFFFFE700000000000 +%0000000000000000000000000000017DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3000000000 +%00000000000000000000000000028EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000000 +%000000000000000000000000019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90000000 +%0000000000000000000000018EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000000 +%00000000000000000000005DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000 +%000000000000000000002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000 +%00000000000000000006EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000 +%000000000000000001AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4000 +%00000000000000003DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000 +%0000000000000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF200 +%000000000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF600 +%00000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF900 +%000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00 +%00000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00 +%0000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +%0000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +%000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +%00000004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00 +%0000001EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00 +%000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA00 +%000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700 +%00001EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF300 +%00009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000 +%0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000 +%000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4000 +%003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000 +%009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70000 +%01EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE10000 +%06FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 +%0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100000 +%1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000 +%4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000 +%8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000 +%AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000000 +%DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000000000 +%EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1000000000 +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE30000000000 +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF500000000000 +%EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000000 +%DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60000000000000 +%BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF500000000000000 +%8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000000000 +%4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE30000000000000000 +%0EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC200000000000000000 +%09FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91000000000000000000 +%02FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE500000000000000000000 +%008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2000000000000000000000 +%001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE600000000000000000000000 +%0003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91000000000000000000000000 +%00005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB300000000000000000000000000 +%000004EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB40000000000000000000000000000 +%0000002CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3000000000000000000000000000000 +%000000007EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8200000000000000000000000000000000 +%00000000029EFFFFFFFFFFFFFFFFFFFFFFFFE9400000000000000000000000000000000000 +%0000000000016BFFFFFFFFFFFFFFFFFFFC8400000000000000000000000000000000000000 +%00000000000000147ACEFFFFFFEDB963000000000000000000000000000000000000000000 +%%EndPreview +%%EndProlog +%%Page "Quart-notehead" 1 +gsave newpath + 211.687 135.942 moveto + 212.746 136.063 219.46 136.08 226.571 135.979 curveto + 252.095 135.614 271.873 130.749 289.14 120.587 curveto + 308.601 109.134 321.363 92.2822 326.524 71.2236 curveto + 335.072 36.3486 321.366 -6.4502 289.15 -45.4795 curveto + 282.302 -53.7773 267.42 -68.4414 258.324 -75.8555 curveto + 226.738 -101.601 189.636 -120.576 153.528 -129.453 curveto + 135.346 -133.924 123.98 -135.257 104.741 -135.177 curveto + 92.6133 -135.126 88.7939 -134.91 82.249 -133.904 curveto + 65.6562 -131.354 51.7188 -126.702 39.9668 -119.795 curveto + 20.5059 -108.355 7.74414 -91.5107 2.58203 -70.4521 curveto + -5.96484 -35.5762 7.74121 7.22168 39.9561 46.251 curveto + 46.8047 54.5488 61.6865 69.2119 70.7832 76.624 curveto + 110.897 109.314 160.144 130.997 203.693 135.145 curveto + 207.057 135.465 210.617 135.82 211.687 135.942 curveto + closepath +1 0 0 setrgbcolor fill grestore +%%EOF diff --git a/Resources/Music/notehead.eps b/Resources/Music/notehead.eps new file mode 100644 index 0000000..42c3da5 --- /dev/null +++ b/Resources/Music/notehead.eps @@ -0,0 +1,91 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0.0928459 -135.18 329.014 136.045 +%%Pages: 0 +%%Title: Quart-notehead from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 15:02 27-12-2005 +%%EndComments +%%BeginPreview: 73 60 4 60 +%00000000000000000000000000000000000000000001345666543200000000000000000000 +%00000000000000000000000000000000000000259BEFFFFFFFFFFFFC962000000000000000 +%0000000000000000000000000000000000049DFFFFFFFFFFFFFFFFFFFFFC60000000000000 +%0000000000000000000000000000000049EFFFFFFFFFFFFFFFFFFFFFFFFFFE700000000000 +%0000000000000000000000000000017DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3000000000 +%00000000000000000000000000028EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000000 +%000000000000000000000000019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90000000 +%0000000000000000000000018EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9000000 +%00000000000000000000005DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000 +%000000000000000000002BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000 +%00000000000000000006EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000 +%000000000000000001AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4000 +%00000000000000003DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000 +%0000000000000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF200 +%000000000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF600 +%00000000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF900 +%000000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00 +%00000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00 +%0000000000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +%0000000009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +%000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +%00000004FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00 +%0000001EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00 +%000000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA00 +%000006FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700 +%00001EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF300 +%00009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000 +%0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA000 +%000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4000 +%003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0000 +%009FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70000 +%01EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE10000 +%06FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 +%0BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE100000 +%1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6000000 +%4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0000000 +%8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000 +%AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000000 +%DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB000000000 +%EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1000000000 +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE30000000000 +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF500000000000 +%EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000000 +%DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60000000000000 +%BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF500000000000000 +%8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5000000000000000 +%4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE30000000000000000 +%0EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC200000000000000000 +%09FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91000000000000000000 +%02FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE500000000000000000000 +%008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2000000000000000000000 +%001DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE600000000000000000000000 +%0003EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91000000000000000000000000 +%00005FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB300000000000000000000000000 +%000004EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB40000000000000000000000000000 +%0000002CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3000000000000000000000000000000 +%000000007EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8200000000000000000000000000000000 +%00000000029EFFFFFFFFFFFFFFFFFFFFFFFFE9400000000000000000000000000000000000 +%0000000000016BFFFFFFFFFFFFFFFFFFFC8400000000000000000000000000000000000000 +%00000000000000147ACEFFFFFFEDB963000000000000000000000000000000000000000000 +%%EndPreview +%%EndProlog +%%Page "Quart-notehead" 1 +gsave newpath + 211.687 135.942 moveto + 212.746 136.063 219.46 136.08 226.571 135.979 curveto + 252.095 135.614 271.873 130.749 289.14 120.587 curveto + 308.601 109.134 321.363 92.2822 326.524 71.2236 curveto + 335.072 36.3486 321.366 -6.4502 289.15 -45.4795 curveto + 282.302 -53.7773 267.42 -68.4414 258.324 -75.8555 curveto + 226.738 -101.601 189.636 -120.576 153.528 -129.453 curveto + 135.346 -133.924 123.98 -135.257 104.741 -135.177 curveto + 92.6133 -135.126 88.7939 -134.91 82.249 -133.904 curveto + 65.6562 -131.354 51.7188 -126.702 39.9668 -119.795 curveto + 20.5059 -108.355 7.74414 -91.5107 2.58203 -70.4521 curveto + -5.96484 -35.5762 7.74121 7.22168 39.9561 46.251 curveto + 46.8047 54.5488 61.6865 69.2119 70.7832 76.624 curveto + 110.897 109.314 160.144 130.997 203.693 135.145 curveto + 207.057 135.465 210.617 135.82 211.687 135.942 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/quarter-rest.eps b/Resources/Music/quarter-rest.eps new file mode 100644 index 0000000..097e07f --- /dev/null +++ b/Resources/Music/quarter-rest.eps @@ -0,0 +1,129 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -22.2715 -318.973 241.368 395.851 +%%Pages: 0 +%%Title: Quarter-rest from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 14:59 27-12-2005 +%%EndComments +%%BeginPreview: 27 73 4 73 +%0000000012000000000000000000 +%00000001DF500000000000000000 +%00000002FFE30000000000000000 +%000000007FFE2000000000000000 +%000000000AFFC100000000000000 +%0000000001CFFB00000000000000 +%00000000002DFF90000000000000 +%000000000003FFF6000000000000 +%0000000000006FFF400000000000 +%0000000000000CFFE20000000000 +%00000000000005FFFD1000000000 +%00000000000000EFFFB000000000 +%00000000000000BFFFF900000000 +%000000000000009FFFFF70000000 +%000000000000008FFFFFF5000000 +%000000000000009FFFFFFE300000 +%00000000000000BFFFFFFFD10000 +%00000000000000EFFFFFFFFC0000 +%00000000000004FFFFFFFFFFA000 +%0000000000000BFFFFFFFFFFF700 +%0000000000004FFFFFFFFFFFFF30 +%000000000001DFFFFFFFFFFFFF80 +%00000000001CFFFFFFFFFFFFFF90 +%0000000002DFFFFFFFFFFFFFFF50 +%000000004EFFFFFFFFFFFFFFFC00 +%00000007FFFFFFFFFFFFFFFFE300 +%0000009FFFFFFFFFFFFFFFFE4000 +%00001BFFFFFFFFFFFFFFFFE40000 +%0001CFFFFFFFFFFFFFFFFD200000 +%000BFFFFFFFFFFFFFFFFB1000000 +%007FFFFFFFFFFFFFFFF800000000 +%00EFFFFFFFFFFFFFFF6000000000 +%03FFFFFFFFFFFFFFF40000000000 +%02FFFFFFFFFFFFFF600000000000 +%00BFFFFFFFFFFFFA000000000000 +%002EFFFFFFFFFFF2000000000000 +%0004FFFFFFFFFFA0000000000000 +%00006FFFFFFFFF50000000000000 +%000008FFFFFFFF20000000000000 +%000000BFFFFFFF00000000000000 +%0000001CFFFFFE00000000000000 +%00000002EFFFFF00000000000000 +%000000003FFFFF20000000000000 +%0000000005FFFF60000000000000 +%00000000008FFFB0000000000000 +%00000000000AFFF3000000000000 +%000000000000CFFC000000000000 +%0000000000001DFF900000000000 +%06BDCB85200003EFF60000000000 +%6FFFFFFFFD94004FFF4000000000 +%DFFFFFFFFFFFD827FFE300000000 +%FFFFFFFFFFFFFFFACFFD10000000 +%FFFFFFFFFFFFFFFFFFFFC0000000 +%FFFFFFFFFFFFFFFFFFFFFA000000 +%CFFFFFFFFFFFFFFFFFFFFF700000 +%9FFFFFFFFE843358BFFFFFF50000 +%5FFFFFFFE2000000017DFFFE3000 +%1FFFFFFF6000000000007EFFD100 +%0BFFFFFE00000000000002CFF700 +%05FFFFFB000000000000001BC200 +%00EFFFF800000000000000000000 +%008FFFF700000000000000000000 +%002FFFF700000000000000000000 +%0009FFF800000000000000000000 +%0002FFFA00000000000000000000 +%00008FFC00000000000000000000 +%00001EFE00000000000000000000 +%000006FF40000000000000000000 +%000000CF80000000000000000000 +%0000002FE0000000000000000000 +%00000007F6000000000000000000 +%00000000BE200000000000000000 +%000000001C600000000000000000 +%%EndPreview +%%EndProlog +%%Page "Quarter-rest" 1 +gsave newpath + 64.7188 395.023 moveto + 68.3018 396.294 71.0898 396.115 74.4766 394.398 curveto + 77.2422 392.996 82.7334 386.604 151.792 304.41 curveto + 230.796 210.144 lineto + 238.839 200.165 241.913 192.106 241.29 182.635 curveto + 240.211 166.262 228.06 149.227 200.938 126.066 curveto + 179.438 108.445 lineto + 151.488 85.8242 146.6 81.292 138.629 70.6172 curveto + 113.487 36.9473 108.746 -6.28418 126.21 -42.6133 curveto + 129.625 -49.7168 135.246 -58.2139 141.345 -65.4902 curveto + 186.797 -119.35 lineto + 209.146 -145.811 228.081 -168.709 228.918 -170.287 curveto + 230.902 -174.03 230.926 -177.288 228.997 -181.146 curveto + 226.542 -186.057 221.224 -189.526 216.152 -189.526 curveto + 213.085 -189.526 208.965 -187.211 205.36 -183.462 curveto + 195.787 -173.506 182.084 -164.249 166.759 -157.385 curveto + 130.815 -141.286 94.4062 -137.67 75.5234 -148.323 curveto + 71.7686 -150.441 65.3467 -156.891 62.9307 -160.971 curveto + 55.0303 -174.309 51.2588 -193.439 51.9766 -216.538 curveto + 53.0391 -250.717 63.5635 -286.143 78.2617 -305.017 curveto + 82.4688 -310.419 82.9355 -312.01 81.2695 -315.271 curveto + 79.5781 -318.578 75.4639 -319.932 72.2158 -318.248 curveto + 69.1846 -316.677 54.4639 -297.299 42.7764 -279.493 curveto + 10.3896 -230.154 -13.5127 -175.243 -20.7412 -133.572 curveto + -22.0645 -125.942 -22.2715 -123.264 -22.2715 -113.727 curveto + -22.2715 -101.213 -21.376 -96.1064 -17.9316 -88.9746 curveto + -12.7539 -78.2549 -4.2998 -73.3965 10.1982 -72.8066 curveto + 40.3965 -71.5791 90.6836 -85.0605 138.037 -107.08 curveto + 143.439 -109.592 lineto + 139.044 -104.465 lineto + 20.625 36.2188 lineto + 2.20703 58.1592 1.8916 58.5664 -0.588867 63.6719 curveto + -10.957 85.0088 -0.275391 106.545 36.1084 137.654 curveto + 57.6074 155.281 lineto + 85.6123 177.947 90.4434 182.433 98.5352 193.274 curveto + 126.678 230.981 128.839 281.014 103.933 318.191 curveto + 101.799 321.377 90.6338 335.198 79.1074 348.925 curveto + 67.5801 362.651 57.4766 375.134 56.6426 376.682 curveto + 55.6025 378.61 55.127 380.306 55.127 382.084 curveto + 55.127 387.236 59.5371 393.186 64.7188 395.023 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/sharp.eps b/Resources/Music/sharp.eps new file mode 100644 index 0000000..a101609 --- /dev/null +++ b/Resources/Music/sharp.eps @@ -0,0 +1,184 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0.275391 -374.026 275.358 374.892 +%%Pages: 0 +%%Title: Sharp from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 15:01 27-12-2005 +%%EndComments +%%BeginPreview: 27 72 4 72 +%000000000000000002CB20000000 +%000000000000000009FF80000000 +%00000000000000000AFF90000000 +%00000000000000000AFF90000000 +%0000008D600000000AFF90000000 +%000002FFF00000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFFA005A910 +%000003FFF10000000AFFB8EFFF60 +%000003FFF10000000AFFFFFFFF60 +%000003FFF10000038EFFFFFFFF60 +%000003FFF10016CFFFFFFFFFFF60 +%000003FFF139EFFFFFFFFFFFFF60 +%000003FFFDFFFFFFFFFFFFFFFF60 +%000005FFFFFFFFFFFFFFFFFFFF60 +%0017DFFFFFFFFFFFFFFFFFFFFF40 +%2AFFFFFFFFFFFFFFFFFFFFFFB400 +%EFFFFFFFFFFFFFFFFFFFFE820000 +%FFFFFFFFFFFFFFFFFFFFA0000000 +%FFFFFFFFFFFFFFFFDDFF90000000 +%FFFFFFFFFFFFFFA40AFF90000000 +%FFFFFFFFFFFD71000AFF90000000 +%FFFFFFFFFA4000000AFF90000000 +%FFFFFFFFF10000000AFF90000000 +%EFFE96FFF10000000AFF90000000 +%4A6103FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90026600 +%000003FFF10000000AFF94AFFF50 +%000003FFF10000000AFFFFFFFF60 +%000003FFF10000005DFFFFFFFF60 +%000003FFF100028EFFFFFFFFFF60 +%000003FFF105BFFFFFFFFFFFFF60 +%000003FFF9EFFFFFFFFFFFFFFF60 +%000003FFFFFFFFFFFFFFFFFFFF60 +%00039EFFFFFFFFFFFFFFFFFFFF50 +%06CFFFFFFFFFFFFFFFFFFFFFE800 +%CFFFFFFFFFFFFFFFFFFFFFB51000 +%FFFFFFFFFFFFFFFFFFFFC2000000 +%FFFFFFFFFFFFFFFFFEFF90000000 +%FFFFFFFFFFFFFFE82BFF90000000 +%FFFFFFFFFFFFB5000AFF90000000 +%FFFFFFFFFD8200000AFF90000000 +%FFFFFFFFF10000000AFF90000000 +%FFFFDAFFF10000000AFF90000000 +%8DA403FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF10000000AFF90000000 +%000003FFF100000009FF80000000 +%000003FFF100000003DD20000000 +%000003FFF1000000000000000000 +%000003FFF1000000000000000000 +%000003FFF1000000000000000000 +%000000AE80000000000000000000 +%%EndPreview +%%EndProlog +%%Page "Sharp" 1 +gsave newpath + 192.613 374.002 moveto + 200.331 376.769 209.377 372.878 213.173 365.16 curveto + 214.719 362.018 lineto + 214.994 286.715 lineto + 215.271 211.411 lineto + 235.392 219.433 lineto + 255.348 227.387 255.549 227.453 259.923 227.48 curveto + 263.396 227.502 264.813 227.252 266.593 226.301 curveto + 270.121 224.415 272.223 222.392 273.866 219.294 curveto + 275.358 216.482 lineto + 275.358 179.823 lineto + 275.358 143.164 lineto + 273.878 140.353 lineto + 271.073 135.027 270.287 134.613 241.455 123.262 curveto + 214.994 112.845 lineto + 214.994 30.623 lineto + 214.994 -51.5986 lineto + 220.369 -49.5039 lineto + 240.629 -41.4551 lineto + 255.127 -35.6562 255.627 -35.501 259.923 -35.4736 curveto + 263.451 -35.4521 264.785 -35.6885 266.593 -36.6543 curveto + 270.121 -38.5391 272.223 -40.5635 273.866 -43.6602 curveto + 275.358 -46.4717 lineto + 275.358 -83.1309 lineto + 275.358 -119.791 lineto + 273.849 -122.657 lineto + 271.072 -127.929 270.287 -128.342 241.455 -139.692 curveto + 214.994 -150.11 lineto + 214.856 -234.729 lineto + 214.719 -319.35 lineto + 213.543 -321.886 lineto + 211.856 -325.523 208.751 -328.715 205.182 -330.477 curveto + 200.717 -332.681 195.094 -332.681 190.629 -330.477 curveto + 187.06 -328.715 183.954 -325.523 182.267 -321.886 curveto + 181.092 -319.35 lineto + 180.815 -241.565 lineto + 180.54 -163.781 lineto + 137.707 -180.65 lineto + 94.873 -197.52 lineto + 94.708 -279.383 lineto + 94.542 -361.246 lineto + 93.3672 -363.781 lineto + 91.6807 -367.42 88.5742 -370.611 85.0059 -372.373 curveto + 80.54 -374.577 74.917 -374.577 70.4521 -372.373 curveto + 66.8828 -370.611 63.7773 -367.42 62.0908 -363.781 curveto + 60.915 -361.246 lineto + 60.6396 -286.219 lineto + 60.3643 -211.19 lineto + 40.2422 -219.212 lineto + 20.2871 -227.167 20.085 -227.232 15.7109 -227.26 curveto + 12.2383 -227.282 10.8203 -227.031 9.04102 -226.08 curveto + 5.5127 -224.194 3.41113 -222.171 1.76758 -219.074 curveto + 0.275391 -216.263 lineto + 0.275391 -179.604 lineto + 0.275391 -142.943 lineto + 1.75586 -140.133 lineto + 4.56055 -134.807 5.34766 -134.393 34.1787 -123.042 curveto + 60.6396 -112.624 lineto + 60.6396 -30.4023 lineto + 60.6396 51.8193 lineto + 55.2646 49.7246 lineto + 35.0059 41.6758 lineto + 20.5068 35.877 20.0068 35.7217 15.7109 35.6943 curveto + 12.1826 35.6729 10.8486 35.9082 9.04102 36.875 curveto + 5.5127 38.7598 3.41113 40.7842 1.76758 43.8809 curveto + 0.275391 46.6924 lineto + 0.275391 83.3516 lineto + 0.275391 120.011 lineto + 1.78516 122.878 lineto + 4.56152 128.149 5.34766 128.562 34.1787 139.913 curveto + 60.6396 150.331 lineto + 60.7773 235.226 lineto + 60.915 320.121 lineto + 62.0908 322.657 lineto + 63.7773 326.296 66.8828 329.486 70.4521 331.248 curveto + 74.917 333.452 80.54 333.452 85.0059 331.248 curveto + 88.5742 329.486 91.6807 326.296 93.3672 322.657 curveto + 94.542 320.121 lineto + 94.8184 242.062 lineto + 95.0938 164.002 lineto + 137.955 180.871 lineto + 180.815 197.74 lineto + 180.815 278.831 lineto + 180.815 367.641 180.642 362.936 184.108 367.695 curveto + 186.25 370.636 189.085 372.738 192.613 374.002 curveto + closepath + 180.815 17.0615 moveto + 180.815 62.3213 180.754 99.3262 180.678 99.3105 curveto + 180.603 99.2959 161.273 91.6758 137.679 82.3594 curveto + 94.8184 65.4355 lineto + 94.8184 -16.8408 lineto + 94.8184 -99.1182 lineto + 97.2158 -98.1533 lineto + 140.215 -81.2021 lineto + 180.815 -65.2148 lineto + 180.815 17.0615 lineto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/sixteenth-flag.eps b/Resources/Music/sixteenth-flag.eps new file mode 100644 index 0000000..324b77e --- /dev/null +++ b/Resources/Music/sixteenth-flag.eps @@ -0,0 +1,132 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -13.7812 -877.784 208.379 0.110352 +%%Pages: 0 +%%Title: $16th-Flag from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 22:00 10-1-2006 +%%EndComments +%%BeginPreview: 19 72 4 72 +%F2000000000000000000 +%F3000000000000000000 +%F4000000000000000000 +%F7000000000000000000 +%FA000000000000000000 +%FE000000000000000000 +%FF300000000000000000 +%FF800000000000000000 +%FFE00000000000000000 +%FFF60000000000000000 +%FFFD0000000000000000 +%FFFF6000000000000000 +%FFFFE100000000000000 +%FFFFF800000000000000 +%FFFFFF30000000000000 +%FFFFFFC0000000000000 +%FFFFFFF7000000000000 +%FDFFFFFF300000000000 +%F3BFFFFFC00000000000 +%F41BFFFFF80000000000 +%F601BFFFFF3000000000 +%F8001CFFFFD100000000 +%FC0001CFFFF900000000 +%FF10002DFFFF30000000 +%FF600003EFFFD0000000 +%FFC000005FFFF7000000 +%FFF4000008FFFE100000 +%FFFB000000CFFF900000 +%FFFF4000002FFFF20000 +%FFFFC0000007FFF90000 +%FFFFF6000000DFFE1000 +%FFFFFE1000006FFF6000 +%FFFFFFA000000DFFB000 +%FFFFFFF5000008FFF100 +%FFFFFFFE200003FFF400 +%F6EFFFFFB00000DFF700 +%F23EFFFFF70000AFF900 +%F203EFFFFF30008FFA00 +%F2002EFFFFC0008FFB00 +%F20002EFFFF8008FFA00 +%F200003EFFFF40AFF900 +%10000004FFFFD1DFF700 +%000000005FFFFAFFF400 +%0000000008FFFFFFE000 +%0000000000BFFFFFA000 +%00000000001EFFFF4000 +%000000000005FFFE0000 +%000000000000BFFF4000 +%0000000000002FFFA000 +%0000000000000AFFF100 +%00000000000003FFF600 +%00000000000000DFFA00 +%000000000000008FFD00 +%000000000000004FFF00 +%000000000000002FFF20 +%000000000000000FFF30 +%000000000000000FFF30 +%000000000000001FFF30 +%000000000000002FFF20 +%000000000000003FFF10 +%000000000000005FFE00 +%000000000000008FFB00 +%00000000000000BFF900 +%00000000000000EFF500 +%00000000000004FFF200 +%00000000000008FFD000 +%0000000000000DFF8000 +%0000000000004FFF4000 +%000000000000AFFD0000 +%000000000002FFF70000 +%000000000005FFF20000 +%000000000001BF700000 +%%EndPreview +%%EndProlog +%%Page "$16th-Flag" 1 +gsave newpath + -13.7812 -250.165 moveto + -13.7812 0.110352 lineto + -6.89062 0.110352 lineto + 0 0.110352 lineto + 0 -4.13477 lineto + 0 -14.2363 1.87598 -32.084 4.21777 -44.2666 curveto + 10.8584 -78.8086 24.5137 -113.23 47.2324 -152.701 curveto + 58.5977 -172.445 73.8438 -195.811 103.276 -238.589 curveto + 129.314 -276.902 lineto + 168.974 -337.101 188.774 -379.863 197.597 -424.366 curveto + 206.963 -471.609 202.284 -514.225 182.945 -557.828 curveto + 179.107 -566.482 lineto + 183.054 -575.193 lineto + 200.237 -613.12 208.379 -648.584 208.379 -685.502 curveto + 208.379 -740.415 195.241 -800.827 170.818 -858.214 curveto + 165.61 -870.452 163.704 -873.047 157.772 -875.966 curveto + 154.407 -877.622 153.639 -877.784 149.118 -877.784 curveto + 144.708 -877.784 143.746 -877.59 140.463 -876.036 curveto + 132.942 -872.479 128.511 -866.263 128.032 -858.6 curveto + 127.784 -854.631 lineto + 132.221 -844.873 lineto + 145.272 -816.172 154.283 -789.526 160.667 -760.75 curveto + 168.408 -725.854 171.186 -686.117 167.59 -661.687 curveto + 159.001 -603.339 119.35 -540.584 44.7627 -467.293 curveto + 34.2334 -456.946 11.0742 -435.187 2.37012 -427.462 curveto + 0 -425.358 lineto + 0 -462.899 lineto + 0 -500.441 lineto + -6.89062 -500.441 lineto + -13.7812 -500.441 lineto + -13.7812 -250.165 lineto + closepath + 33.1094 -245.039 moveto + 9.2334 -221.389 lineto + 0 -212.569 lineto + 0 -216.648 lineto + 0 -222.91 0.992188 -235.227 2.22363 -244.267 curveto + 7.60254 -283.727 23.0381 -323.649 50.332 -368.688 curveto + 63.1426 -389.827 74.4805 -406.67 100.65 -443.439 curveto + 127.448 -481.092 142.83 -503.48 151.287 -517.145 curveto + 152.72 -519.46 154.09 -521.39 154.3 -521.39 curveto + 155.469 -521.39 159.837 -504.024 161.58 -492.447 curveto + 169.574 -439.372 147.091 -379.327 94.3916 -313.01 curveto + 77.0576 -291.196 59.9453 -272.216 33.1094 -245.039 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/sixteenth-rest.eps b/Resources/Music/sixteenth-rest.eps new file mode 100644 index 0000000..6cc5438 --- /dev/null +++ b/Resources/Music/sixteenth-rest.eps @@ -0,0 +1,126 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -25.3103 -509.068 299.89 205.14 +%%Pages: 0 +%%Title: $16th-rest from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 15:00 27-12-2005 +%%EndComments +%%BeginPreview: 33 73 4 73 +%0000000000000011000000000000000000 +%0000000000029EFFE92000000000000000 +%00000000007FFFFFFFE400000000000000 +%0000000007FFFFFFFFFE20000000004D70 +%000000002FFFFFFFFFFF9000000000DFA0 +%000000009FFFFFFFFFFFE000000007FF60 +%00000000EFFFFFFFFFFFF30000002EFF20 +%00000001FFFFFFFFFFFFF7000000CFFD00 +%00000001FFFFFFFFFFFFFA000009FFF900 +%00000000EFFFFFFFFFFFFE10007FFFF500 +%00000000BFFFFFFFFFFFFFB218FFFFF100 +%000000004FFFFFFFFFFFFFFFFFFFFFC000 +%000000000AFFFFFFFFFFFFFFFFFFFF8000 +%0000000001CFFFFFFFFFFFFFFFFFFF4000 +%000000000019FFFFFFFFFFFFC72CFE0000 +%00000000000039DFFFFEC951001FFB0000 +%000000000000000122100000006FF70000 +%00000000000000000000000000AFF30000 +%00000000000000000000000000EFE00000 +%00000000000000000000000004FFA00000 +%00000000000000000000000009FF600000 +%0000000000000000000000000EFF200000 +%0000000000000000000000003FFD000000 +%0000000000000000000000008FF8000000 +%000000000000000000000000CFF4000000 +%000000000000000000000002FFF1000000 +%00005ACCA600000000000007FFB0000000 +%002CFFFFFFC200000000000BFF70000000 +%02EFFFFFFFFD10000000001FFF30000000 +%0DFFFFFFFFFF90000000006FFE00000000 +%6FFFFFFFFFFFE000000001DFFA00000000 +%BFFFFFFFFFFFF400000008FFF600000000 +%EFFFFFFFFFFFF70000004FFFF200000000 +%FFFFFFFFFFFFFB000002EFFFD000000000 +%DFFFFFFFFFFFFE10001DFFFF9000000000 +%AFFFFFFFFFFFFF9003DFFFFF5000000000 +%5FFFFFFFFFFFFFFDBFFFFFFF1000000000 +%0BFFFFFFFFFFFFFFFFFFFFFC0000000000 +%02DFFFFFFFFFFFFFFFFFFFF80000000000 +%002CFFFFFFFFFFFFFC78FFF40000000000 +%00006CFFFFFFFDA6200AFFE00000000000 +%0000002566531000001EFFB00000000000 +%0000000000000000005FFF700000000000 +%0000000000000000009FFF300000000000 +%000000000000000000EFFE000000000000 +%000000000000000003FFFA000000000000 +%000000000000000008FFF6000000000000 +%00000000000000000DFFF2000000000000 +%00000000000000002FFFC0000000000000 +%00000000000000007FFF80000000000000 +%0000000000000000BFFF40000000000000 +%0000000000000001FFFF10000000000000 +%0000000000000005FFFB00000000000000 +%000000000000000AFFF700000000000000 +%000000000000000EFFF300000000000000 +%000000000000004FFFE000000000000000 +%000000000000009FFFA000000000000000 +%00000000000000DFFF6000000000000000 +%00000000000003FFFF2000000000000000 +%00000000000007FFFD0000000000000000 +%0000000000000CFFF90000000000000000 +%0000000000001FFFF50000000000000000 +%0000000000006FFFF10000000000000000 +%000000000000AFFFC00000000000000000 +%000000000001EFFF800000000000000000 +%000000000005FFFF400000000000000000 +%000000000009FFFE000000000000000000 +%00000000000EFFFA000000000000000000 +%00000000003FFFF6000000000000000000 +%00000000008FFFF2000000000000000000 +%0000000000CFFFD0000000000000000000 +%0000000002FFFF90000000000000000000 +%0000000001AEFB20000000000000000000 +%%EndPreview +%%EndProlog +%%Page "$16th-rest" 1 +gsave newpath + 114.774 204.578 moveto + 137.211 207.497 158.642 198.919 171.662 181.809 curveto + 178.805 172.422 181.571 164.994 186.589 141.73 curveto + 190.31 124.477 193.026 117.228 197.726 112.018 curveto + 201.667 107.647 208.6 104.852 215.49 104.852 curveto + 222.769 104.852 234.005 114.112 247.929 131.588 curveto + 258.515 144.873 268 159.235 273.744 170.673 curveto + 275.737 174.642 277.888 178.43 278.564 179.162 curveto + 281.901 182.774 288.479 184.102 293.054 182.086 curveto + 296.361 180.629 297.52 179.604 298.843 176.957 curveto + 299.89 174.862 lineto + 208.931 -162.928 lineto + 131.695 -449.752 117.788 -500.862 116.759 -501.683 curveto + 114.173 -503.741 108.71 -506.486 104.741 -507.721 curveto + 98.6602 -509.611 89.1396 -509.5 82.9658 -507.466 curveto + 77.5078 -505.667 70.3926 -501.307 70.7832 -500 curveto + 71.6377 -497.134 169.854 -174.219 170.027 -173.704 curveto + 170.14 -173.372 164.829 -174.927 158.269 -177.148 curveto + 130.21 -186.648 107.478 -192.138 85.4463 -194.733 curveto + 74.6973 -196 59.3604 -196.413 52.0947 -195.631 curveto + 24.9727 -192.713 1.7998 -179.532 -12.2363 -159.041 curveto + -35.3066 -125.358 -27.0195 -79.4033 6.11914 -57.2637 curveto + 17.499 -49.6611 28.8311 -45.9609 42.7236 -45.3135 curveto + 63.0098 -44.3682 81.4727 -52.8057 93.3857 -68.4678 curveto + 100.525 -77.8535 103.291 -85.2812 108.309 -108.545 curveto + 112.029 -125.8 114.756 -133.062 119.481 -138.313 curveto + 123.618 -142.909 131.478 -145.848 138.147 -145.293 curveto + 146.84 -144.57 161.318 -132.028 177.899 -110.86 curveto + 184.377 -102.591 194.13 -87.8271 197.091 -81.8086 curveto + 199.035 -77.8564 204.52 -60.5293 222.933 -0.165039 curveto + 235.797 42.0068 246.27 76.498 246.224 76.5439 curveto + 246.179 76.5889 241.786 75.1445 236.494 73.3447 curveto + 208.379 63.7803 184.939 58.0605 163.451 55.5186 curveto + 152.977 54.2793 137.554 53.8721 130.375 54.6445 curveto + 103.253 57.5635 80.0771 70.7432 66.0361 91.2344 curveto + 46.3936 119.9 49.1475 158.309 72.6279 183.187 curveto + 83.3369 194.531 99.1182 202.542 114.774 204.578 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/thirtysecondth-flag.eps b/Resources/Music/thirtysecondth-flag.eps new file mode 100644 index 0000000..4c0165a --- /dev/null +++ b/Resources/Music/thirtysecondth-flag.eps @@ -0,0 +1,150 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -13.7812 -1073.48 208.104 0.110352 +%%Pages: 0 +%%Title: $32nd-Flag from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 22:00 10-1-2006 +%%EndComments +%%BeginPreview: 15 72 4 72 +%D000000000000000 +%F000000000000000 +%F100000000000000 +%F400000000000000 +%F800000000000000 +%FC00000000000000 +%FF20000000000000 +%FF80000000000000 +%FFE1000000000000 +%FFF7000000000000 +%FFFE100000000000 +%FFFF900000000000 +%FFFFF30000000000 +%FFFFFC0000000000 +%ECFFFF6000000000 +%E1DFFFE200000000 +%F12EFFFB00000000 +%F303EFFF50000000 +%F7005FFFE1000000 +%FB0007FFF9000000 +%FF1000AFFF300000 +%FF80001DFFB00000 +%FFE10004FFF40000 +%FFF700009FFB0000 +%FFFE20001EFF3000 +%FFFFB00007FF9000 +%FFFFF50001EFE000 +%FFFFFE2000AFF300 +%FFFFFFB0005FF700 +%E6FFFFF7001FFA00 +%F05FFFFF300EFB00 +%F204EFFFD10DFC00 +%F4003EFFF90DFC00 +%F80003EFFF5EFA00 +%FD00004FFFEFF800 +%FF400006FFFFF400 +%FFB000009FFFD000 +%FFF400000DFFA000 +%FFFC000003FFF100 +%FFFF600000AFF700 +%FFFFE200003FFC00 +%FFFFFB00000CFF10 +%FFFFFF700007FF40 +%FDFFFFF40004FF60 +%E1CFFFFD1003FF70 +%E01AFFFFB003FF70 +%E0009FFFF704FF60 +%E00008FFFF36FF40 +%E000008FFFDAFF10 +%E0000009FFFFFC00 +%50000000BFFFF700 +%000000001DFFF100 +%0000000004FFF300 +%00000000009FF900 +%00000000001EFE10 +%000000000009FF50 +%000000000004FF80 +%000000000000EFB0 +%000000000000CFD0 +%000000000000BFD0 +%000000000000CFD0 +%000000000000DFC0 +%000000000000EFA0 +%000000000002FF80 +%000000000005FF50 +%000000000009FF20 +%00000000000DFD00 +%00000000004FF900 +%0000000000AFF400 +%0000000001FFD000 +%0000000007FF7000 +%0000000003EC1000 +%%EndPreview +%%EndProlog +%%Page "$32nd-Flag" 1 +gsave newpath + -13.7812 -375.303 moveto + -13.7812 0.110352 lineto + -6.89062 0.110352 lineto + 0 0.110352 lineto + 0 -4.16211 lineto + 0 -6.51172 0.246094 -11.9072 0.546875 -16.1523 curveto + 3.91797 -63.6836 19.7617 -109.702 52.3623 -166.648 curveto + 62.9268 -185.103 71.1094 -198.291 94.2588 -234.179 curveto + 130.033 -289.636 140.997 -307.924 154.907 -335.336 curveto + 180.196 -385.171 192.393 -430.282 192.393 -473.98 curveto + 192.393 -498.842 186.658 -526.082 176.354 -550.165 curveto + 173.595 -556.615 lineto + 175.478 -560.364 lineto + 180.77 -570.896 188.113 -589.581 192.117 -602.701 curveto + 196.112 -615.792 199.262 -630.871 201.042 -645.425 curveto + 202.401 -656.532 202.399 -682.58 201.038 -694.046 curveto + 198.003 -719.625 191.387 -744.482 181.303 -768.191 curveto + 180.06 -771.113 179.176 -773.879 179.327 -774.366 curveto + 179.479 -774.852 181.46 -779.217 183.73 -784.068 curveto + 196.357 -811.057 203.659 -835.942 207.102 -863.727 curveto + 208.446 -874.576 208.436 -903.639 207.082 -918.302 curveto + 203.087 -961.576 192.347 -1003.75 174.723 -1045.37 curveto + 166.085 -1065.77 164.352 -1068.45 157.718 -1071.7 curveto + 154.443 -1073.31 153.583 -1073.48 149.118 -1073.48 curveto + 144.708 -1073.48 143.746 -1073.29 140.463 -1071.74 curveto + 132.942 -1068.18 128.512 -1061.96 128.034 -1054.3 curveto + 127.801 -1050.55 127.919 -1050.01 129.75 -1046.36 curveto + 139.893 -1026.17 150.522 -998.512 156.766 -976.075 curveto + 167.367 -937.982 171.746 -893.853 167.626 -866.648 curveto + 158.104 -803.79 110.419 -739.923 11.5762 -657.644 curveto + 0.275391 -648.236 lineto + 0.137695 -699.477 lineto + 0 -750.717 lineto + -6.89062 -750.717 lineto + -13.7812 -750.717 lineto + -13.7812 -375.303 lineto + closepath + 16.293 -229.823 moveto + 2.86621 -215.49 lineto + -0.0546875 -212.403 lineto + 0.234375 -223.704 lineto + 1.08496 -256.876 9.22559 -289.25 25.5439 -324.366 curveto + 39.5674 -354.543 56.9561 -382.305 94.2236 -434.014 curveto + 120.287 -470.177 128.677 -482.072 138.35 -496.582 curveto + 148.126 -511.246 lineto + 149.603 -505.017 lineto + 152.34 -493.467 152.922 -487.982 152.922 -473.704 curveto + 152.922 -452.297 149.909 -435.446 141.932 -412.238 curveto + 123.879 -359.72 85.291 -303.693 16.293 -229.823 curveto + closepath + 13.5059 -442.136 moveto + 1.15723 -431.312 lineto + -0.165039 -430.154 lineto + 0.170898 -441.18 lineto + 1.63477 -489.198 17.2129 -533.241 52.2314 -588.368 curveto + 63.8203 -606.61 76.7178 -624.697 108.644 -667.476 curveto + 128.104 -693.55 137.2 -706.161 146.616 -720.121 curveto + 153.197 -729.879 lineto + 154.601 -725.413 lineto + 160.285 -707.325 162.888 -689.856 162.861 -669.956 curveto + 162.848 -659.096 162.624 -655.303 161.611 -648.787 curveto + 152.031 -587.135 106.615 -523.766 13.5059 -442.136 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/thirtysecondth-rest.eps b/Resources/Music/thirtysecondth-rest.eps new file mode 100644 index 0000000..0f5fcff --- /dev/null +++ b/Resources/Music/thirtysecondth-rest.eps @@ -0,0 +1,137 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: -53.9761 -508.948 325.523 455.428 +%%Pages: 0 +%%Title: $32th-rest from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 15:00 27-12-2005 +%%EndComments +%%BeginPreview: 29 73 4 73 +%000000000000003430000000000000 +%0000000000004DFFFD400000000000 +%000000000006FFFFFFF40000002920 +%00000000002EFFFFFFFC000000AF50 +%00000000007FFFFFFFFF100003FF20 +%0000000000AFFFFFFFFF50000CFD00 +%0000000000AFFFFFFFFF90007FF900 +%00000000008FFFFFFFFFE206FFF600 +%00000000002FFFFFFFFFFECFFFF200 +%000000000008FFFFFFFFFFFFFFE000 +%0000000000008FFFFFFFFFFBAFA000 +%000000000000039DFFEC95109F7000 +%000000000000000000000000DF3000 +%000000000000000000000002FE0000 +%000000000000000000000006FB0000 +%00000000000000000000000AF70000 +%00000000000000000000000EF40000 +%00000000000000000000003FF10000 +%00000000000000000000007FC00000 +%0000000027861000000000BF800000 +%00000019FFFFE500000000EF500000 +%000000BFFFFFFF30000004FF100000 +%000005FFFFFFFFA0000009FD000000 +%00000AFFFFFFFFE000003FF9000000 +%00000DFFFFFFFFF30001DFF5000000 +%00000CFFFFFFFFF7000AFFF2000000 +%000009FFFFFFFFFE31AFFFD0000000 +%000003FFFFFFFFFFFFFFFFA0000000 +%0000007FFFFFFFFFFFFFFF60000000 +%00000006EFFFFFFFFC77FF30000000 +%0000000017ACBA851009FE00000000 +%0000000000000000000CFA00000000 +%0000000000000000001FF700000000 +%0000000000000000005FF300000000 +%0000000000000000009FE000000000 +%000000000000000000DFB000000000 +%000000000000000002FF8000000000 +%000000000000000006FF4000000000 +%0017AB93000000000AFF1000000000 +%03DFFFFF700000000EFC0000000000 +%1EFFFFFFF30000004FF80000000000 +%8FFFFFFFFA000000AFF50000000000 +%DFFFFFFFFE000005FFF10000000000 +%EFFFFFFFFF20002EFFD00000000000 +%DFFFFFFFFF7001DFFF900000000000 +%AFFFFFFFFFE65DFFFF600000000000 +%3FFFFFFFFFFFFFFFFF200000000000 +%06FFFFFFFFFFFFEFFD000000000000 +%004DFFFFFFFD844FFA000000000000 +%000047886410008FF6000000000000 +%00000000000000CFF3000000000000 +%00000000000001FFE0000000000000 +%00000000000005FFB0000000000000 +%00000000000009FF70000000000000 +%0000000000000DFF40000000000000 +%0000000000002FFF00000000000000 +%0000000000006FFB00000000000000 +%000000000000AFF800000000000000 +%000000000000DFF400000000000000 +%000000000002FFF100000000000000 +%000000000006FFC000000000000000 +%00000000000AFF8000000000000000 +%00000000000EFF5000000000000000 +%00000000003FFF1000000000000000 +%00000000007FFD0000000000000000 +%0000000000BFF90000000000000000 +%0000000000FFF60000000000000000 +%0000000004FFF20000000000000000 +%0000000008FFD00000000000000000 +%000000000CFFA00000000000000000 +%000000001FFF600000000000000000 +%000000005FFF200000000000000000 +%000000004EFB000000000000000000 +%%EndPreview +%%EndProlog +%%Page "$32th-rest" 1 +gsave newpath + 145.094 454.86 moveto + 169.625 458.058 192.607 447.59 205.265 427.453 curveto + 209.79 420.254 212.336 412.789 216.035 395.865 curveto + 220.325 376.24 222.713 369.107 226.757 363.837 curveto + 230.666 358.741 236.328 355.884 243.66 355.308 curveto + 247.85 354.979 248.255 355.053 251.764 356.782 curveto + 262.682 362.165 283.049 389.195 296.582 416.263 curveto + 299.173 421.444 302.022 426.693 302.955 428.004 curveto + 308.197 435.369 319.851 435.006 324.136 427.343 curveto + 325.523 424.862 lineto + 215.821 -37.6514 lineto + 131.747 -392.117 105.86 -500.462 105.01 -501.434 curveto + 103.343 -503.338 97.7949 -506.277 93.1641 -507.708 curveto + 89.7529 -508.762 87.8721 -508.979 82.4141 -508.944 curveto + 74.3662 -508.894 69.1836 -507.421 62.9551 -503.415 curveto + 59.5918 -501.252 58.9805 -500.637 59.2344 -499.669 curveto + 86.5078 -395.645 144.823 -172.665 144.774 -172.591 curveto + 144.737 -172.536 138.644 -174.537 131.202 -177.048 curveto + 102.646 -186.682 79.8477 -192.129 57.0566 -194.765 curveto + 46.4717 -195.988 30.6309 -196.391 23.4287 -195.617 curveto + -3.69336 -192.708 -26.8662 -179.532 -40.9014 -159.041 curveto + -63.9727 -125.358 -55.6855 -79.4033 -22.5469 -57.2637 curveto + -11.167 -49.6611 0.165039 -45.9609 14.0576 -45.3135 curveto + 34.3438 -44.3682 52.8066 -52.8057 64.7197 -68.4678 curveto + 71.8594 -77.8535 74.6279 -85.2812 79.6562 -108.545 curveto + 84.458 -130.761 88.3535 -138.583 96.6377 -142.636 curveto + 105.402 -146.925 112.577 -146.236 120.838 -140.314 curveto + 133.24 -131.424 151.312 -109.647 163.397 -89.0303 curveto + 169.687 -78.3018 169.181 -79.9893 190.212 0.441406 curveto + 201.11 42.1172 210.033 76.4385 210.033 76.6816 curveto + 210.033 76.9248 204.3 75.1973 197.244 72.8281 curveto + 159.868 60.2793 128.754 54.1426 102.591 54.1582 curveto + 71.2236 54.1777 43.4941 67.8662 27.4785 91.2344 curveto + 4.39453 124.917 12.6719 170.872 45.8105 193.012 curveto + 57.1904 200.615 68.5225 204.314 82.4141 204.962 curveto + 102.701 205.908 121.164 197.47 133.077 181.809 curveto + 140.217 172.422 142.982 164.994 148 141.73 curveto + 151.721 124.477 154.438 117.228 159.137 112.018 curveto + 163.078 107.647 170.011 104.852 176.902 104.852 curveto + 184.717 104.852 198.012 116.373 212.842 135.998 curveto + 221.34 147.244 230.586 162.146 233.876 169.9 curveto + 235.28 173.208 275.705 325.966 275.293 326.405 curveto + 275.208 326.496 269.846 324.788 263.396 322.615 curveto + 236.604 313.588 214.238 308.18 193.771 305.776 curveto + 183.241 304.541 167.911 304.144 160.694 304.92 curveto + 133.572 307.839 110.396 321.019 96.3555 341.511 curveto + 76.7139 370.177 79.4668 408.584 102.948 433.462 curveto + 113.656 444.808 129.438 452.82 145.094 454.86 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/whole-notehead.eps b/Resources/Music/whole-notehead.eps new file mode 100644 index 0000000..cc6f644 --- /dev/null +++ b/Resources/Music/whole-notehead.eps @@ -0,0 +1,79 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0.232666 -135.502 500.869 136.306 +%%Pages: 0 +%%Title: Whole-notehead from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 15:02 27-12-2005 +%%EndComments +%%BeginPreview: 73 40 4 40 +%00000000000000000000000000000000011221100000000000000000000000000000000000 +%0000000000000000000000002579BCEFFFFFFFFFFECB975200000000000000000000000000 +%0000000000000000000048BEFFFFFFFFFFFFFFFFFFFFFFFFEB840000000000000000000000 +%000000000000000016AEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB61000000000000000000 +%000000000000004AFFFFFFFFFFE941001259DFFFFFFFFFFFFFFFFFFFA40000000000000000 +%0000000000006DFFFFFFFFFFF81000000000038EFFFFFFFFFFFFFFFFFFD600000000000000 +%00000000005DFFFFFFFFFFFF50000000000000017EFFFFFFFFFFFFFFFFFFD6000000000000 +%000000003CFFFFFFFFFFFFF70000000000000000019FFFFFFFFFFFFFFFFFFFC30000000000 +%00000008FFFFFFFFFFFFFFC000000000000000000005EFFFFFFFFFFFFFFFFFFF8000000000 +%000001BFFFFFFFFFFFFFFF40000000000000000000003EFFFFFFFFFFFFFFFFFFFC20000000 +%00002DFFFFFFFFFFFFFFFD000000000000000000000002EFFFFFFFFFFFFFFFFFFFE3000000 +%0002EFFFFFFFFFFFFFFFF90000000000000000000000003FFFFFFFFFFFFFFFFFFFFE300000 +%001DFFFFFFFFFFFFFFFFF600000000000000000000000007FFFFFFFFFFFFFFFFFFFFE20000 +%00BFFFFFFFFFFFFFFFFFF300000000000000000000000000CFFFFFFFFFFFFFFFFFFFFB0000 +%05FFFFFFFFFFFFFFFFFFF1000000000000000000000000004FFFFFFFFFFFFFFFFFFFFF6000 +%0DFFFFFFFFFFFFFFFFFFF0000000000000000000000000000BFFFFFFFFFFFFFFFFFFFFE100 +%5FFFFFFFFFFFFFFFFFFFF00000000000000000000000000005FFFFFFFFFFFFFFFFFFFFF600 +%AFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000EFFFFFFFFFFFFFFFFFFFFB00 +%DFFFFFFFFFFFFFFFFFFFF10000000000000000000000000000AFFFFFFFFFFFFFFFFFFFFE00 +%FFFFFFFFFFFFFFFFFFFFF300000000000000000000000000006FFFFFFFFFFFFFFFFFFFFF10 +%FFFFFFFFFFFFFFFFFFFFF500000000000000000000000000004FFFFFFFFFFFFFFFFFFFFF10 +%FFFFFFFFFFFFFFFFFFFFF800000000000000000000000000002FFFFFFFFFFFFFFFFFFFFF10 +%DFFFFFFFFFFFFFFFFFFFFB00000000000000000000000000000FFFFFFFFFFFFFFFFFFFFE00 +%9FFFFFFFFFFFFFFFFFFFFF10000000000000000000000000000EFFFFFFFFFFFFFFFFFFFA00 +%4FFFFFFFFFFFFFFFFFFFFF60000000000000000000000000000EFFFFFFFFFFFFFFFFFFF500 +%0CFFFFFFFFFFFFFFFFFFFFD0000000000000000000000000000FFFFFFFFFFFFFFFFFFFD000 +%04FFFFFFFFFFFFFFFFFFFFF5000000000000000000000000001FFFFFFFFFFFFFFFFFFF5000 +%00AFFFFFFFFFFFFFFFFFFFFD100000000000000000000000002FFFFFFFFFFFFFFFFFFB0000 +%001CFFFFFFFFFFFFFFFFFFFF900000000000000000000000005FFFFFFFFFFFFFFFFFD10000 +%0002DFFFFFFFFFFFFFFFFFFFF50000000000000000000000008FFFFFFFFFFFFFFFFD200000 +%00001CFFFFFFFFFFFFFFFFFFFF400000000000000000000000DFFFFFFFFFFFFFFFD2000000 +%000001AFFFFFFFFFFFFFFFFFFFE40000000000000000000004FFFFFFFFFFFFFFFB10000000 +%00000006EFFFFFFFFFFFFFFFFFFF700000000000000000000CFFFFFFFFFFFFFF7000000000 +%000000002AFFFFFFFFFFFFFFFFFFFB2000000000000000007FFFFFFFFFFFFFB20000000000 +%00000000004CFFFFFFFFFFFFFFFFFFF92000000000000006FFFFFFFFFFFFC4000000000000 +%0000000000004BFFFFFFFFFFFFFFFFFFFA4000000000019FFFFFFFFFFFB400000000000000 +%0000000000000028EFFFFFFFFFFFFFFFFFFEA7422236AFFFFFFFFFFE930000000000000000 +%0000000000000000049DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD940000000000000000000 +%00000000000000000000269DFFFFFFFFFFFFFFFFFFFFFFFFDA630000000000000000000000 +%00000000000000000000000013579BCDEEFFFFEEDCB9753100000000000000000000000000 +%%EndPreview +%%EndProlog +%%Page "Whole-notehead" 1 +gsave newpath + 224.917 135.661 moveto + 301.103 139.42 369.479 126.709 423.098 98.8203 curveto + 466.703 76.1396 492.641 48.0254 499.566 15.9316 curveto + 501.304 7.88281 501.304 -7.11133 499.566 -15.1602 curveto + 492.641 -47.2539 466.703 -75.3691 423.098 -98.0518 curveto + 375.417 -122.854 317.145 -135.502 250.551 -135.502 curveto + 183.958 -135.502 125.686 -122.854 78.0049 -98.0518 curveto + 34.3994 -75.3691 8.46289 -47.2539 1.53613 -15.1602 curveto + -0.201172 -7.11133 -0.202148 7.88281 1.53516 15.9316 curveto + 7.01465 41.332 24.4766 64.3447 53.1973 84.0186 curveto + 97.1641 114.135 157.718 132.346 224.917 135.661 curveto + closepath + 235.006 113.17 moveto + 227.508 114.478 211.912 115.022 205.898 114.187 curveto + 174.04 109.759 154.887 89.5811 148.322 53.5283 curveto + 145.854 39.9746 145.495 20.5625 147.441 5.89844 curveto + 150.953 -20.5625 161.306 -44.6943 177.358 -63.8369 curveto + 198.284 -88.792 231.367 -106.683 267.751 -112.72 curveto + 276.847 -114.229 293.288 -114.087 300.938 -112.433 curveto + 322.878 -107.688 338.285 -94.7295 346.854 -73.8145 curveto + 355.685 -52.2607 357.477 -19.9561 351.383 7.82812 curveto + 346.837 28.5557 336.982 48.7793 323.716 64.6084 curveto + 303.081 89.2285 270.728 106.939 235.006 113.17 curveto + closepath +fill grestore +%%EOF diff --git a/Resources/Music/whole-rest.eps b/Resources/Music/whole-rest.eps new file mode 100644 index 0000000..b625808 --- /dev/null +++ b/Resources/Music/whole-rest.eps @@ -0,0 +1,60 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 0.275391 -155.898 374.587 0.661133 +%%Pages: 0 +%%Title: whole-rest from feta +%%Creator: FontForge +%%Author: Matthias Neeracher +%%CreationDate: 14:58 27-12-2005 +%%EndComments +%%BeginPreview: 72 31 4 31 +%000000000000000011111111111111111111111111111111111111110000000000000000 +%9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +%EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +%EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +%9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEE7 +%%EndPreview +%%EndProlog +%%Page "whole-rest" 1 +gsave newpath + 4.4375 -0.302734 moveto + 6.2373 0.609375 16.0967 0.661133 187.431 0.661133 curveto + 358.766 0.661133 368.625 0.609375 370.425 -0.302734 curveto + 371.472 -0.834961 372.834 -1.96094 373.456 -2.81152 curveto + 374.586 -4.35352 374.587 -4.41016 374.587 -77.6182 curveto + 374.587 -150.827 374.586 -150.883 373.456 -152.426 curveto + 372.834 -153.275 371.472 -154.402 370.425 -154.934 curveto + 368.625 -155.847 358.766 -155.898 187.431 -155.898 curveto + 16.0967 -155.898 6.2373 -155.847 4.4375 -154.934 curveto + 3.39062 -154.402 2.02832 -153.275 1.40527 -152.426 curveto + 0.276367 -150.883 0.275391 -150.827 0.275391 -77.6182 curveto + 0.275391 -4.41016 0.276367 -4.35352 1.40527 -2.81152 curveto + 2.02832 -1.96094 3.39062 -0.834961 4.4375 -0.302734 curveto + closepath +fill grestore +%%EOF diff --git a/Sources/VLDocument.h b/Sources/VLDocument.h new file mode 100644 index 0000000..e555adc --- /dev/null +++ b/Sources/VLDocument.h @@ -0,0 +1,26 @@ +// +// MyDocument.h +// Vocalese +// +// Created by Matthias Neeracher on 12/17/05. +// Copyright __MyCompanyName__ 2005 . All rights reserved. +// + + +#import +#import "VLModel.h" + +@interface VLDocument : NSDocument +{ + VLSong * song; +} + +- (VLSong *) song; +- (NSNumber *) songKey; +- (NSNumber *) songTime; +- (NSNumber *) songDivisions; + +- (void) setKey:(int)key transpose:(BOOL)transpose; +- (void) setTimeNum:(int)num denom:(int)denom; +- (void) setDivisions:(int)divisions; +@end diff --git a/Sources/VLDocument.mm b/Sources/VLDocument.mm new file mode 100644 index 0000000..3c7c7a1 --- /dev/null +++ b/Sources/VLDocument.mm @@ -0,0 +1,111 @@ +// +// MyDocument.m +// Vocalese +// +// Created by Matthias Neeracher on 12/17/05. +// Copyright __MyCompanyName__ 2005 . All rights reserved. +// + +#import "VLDocument.h" + +@implementation VLDocument + +- (id)init +{ + self = [super init]; + if (self) { + + // Add your subclass-specific initialization here. + // If an error occurs here, send a [self release] message and return nil. + + song = new VLSong; + } + return self; +} + +- (void) dealloc +{ + delete song; + [super dealloc]; +} + +- (VLSong *) song +{ + return song; +} + +- (NSNumber *) songKey +{ + const VLProperties & prop = song->fProperties.front(); + + return [NSNumber numberWithInt: (prop.fKey << 8) | (prop.fMode & 0xFF)]; +} + +- (void) setKey:(int)key transpose:(BOOL)transpose +{ + VLProperties & prop = song->fProperties.front(); + + prop.fKey = key >> 8; + prop.fMode= key & 0xFF; +} + +- (NSNumber *) songTime +{ + const VLProperties & prop = song->fProperties.front(); + + return [NSNumber numberWithInt: (prop.fTime.fNum << 8) | prop.fTime.fDenom]; +} + +- (void) setTimeNum:(int)num denom:(int)denom +{ + VLProperties & prop = song->fProperties.front(); + + prop.fTime = VLFraction(num, denom); +} + +- (NSNumber *) songDivisions +{ + const VLProperties & prop = song->fProperties.front(); + + return [NSNumber numberWithInt: prop.fDivisions]; +} + +- (void) setDivisions:(int)divisions +{ + VLProperties & prop = song->fProperties.front(); + + prop.fDivisions = divisions; +} + +- (NSString *)windowNibName +{ + // Override returning the nib file name of the document + // If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead. + return @"VLDocument"; +} + +- (void)windowControllerDidLoadNib:(NSWindowController *) aController +{ + [super windowControllerDidLoadNib:aController]; + // Add any code here that needs to be executed once the windowController has loaded the document's window. +} + +- (NSData *)dataRepresentationOfType:(NSString *)aType +{ + // Insert code here to write your document from the given data. You can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead. + + // For applications targeted for Tiger or later systems, you should use the new Tiger API -dataOfType:error:. In this case you can also choose to override -writeToURL:ofType:error:, -fileWrapperOfType:error:, or -writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead. + + return nil; +} + +- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType +{ + // Insert code here to read your document from the given data. You can also choose to override -loadFileWrapperRepresentation:ofType: or -readFromFile:ofType: instead. + + // For applications targeted for Tiger or later systems, you should use the new Tiger API readFromData:ofType:error:. In this case you can also choose to override -readFromURL:ofType:error: or -readFromFileWrapper:ofType:error: instead. + + return YES; +} + +@end diff --git a/Sources/VLModel.cpp b/Sources/VLModel.cpp new file mode 100644 index 0000000..e6d9210 --- /dev/null +++ b/Sources/VLModel.cpp @@ -0,0 +1,534 @@ +/* + * VLModel.cpp + * Vocalese + * + * Created by Matthias Neeracher on 12/18/05. + * Copyright 2005 __MyCompanyName__. All rights reserved. + * + */ + +#include "VLModel.h" +#include + +VLFraction & VLFraction::Normalize() +{ + // + // Divide GCD + // + if (fNum) { + unsigned a = fNum; + unsigned b = fDenom; + + while (b) { + unsigned c = a % b; + a = b; + b = c; + } + + fNum /= a; + fDenom /= a; + } else + fDenom = 1; + + return *this; +} + +VLFraction & VLFraction::operator+=(VLFraction other) +{ + fNum = fNum*other.fDenom + other.fNum*fDenom; + fDenom *= other.fDenom; + + return Normalize(); +} + +VLFraction & VLFraction::operator-=(VLFraction other) +{ + fNum = fNum*other.fDenom - other.fNum*fDenom; + fDenom *= other.fDenom; + + return Normalize(); +} + +VLFraction & VLFraction::operator*=(VLFraction other) +{ + fNum *= other.fNum; + fDenom *= other.fDenom; + + return Normalize(); +} + +VLFraction & VLFraction::operator/=(VLFraction other) +{ + fNum *= other.fDenom; + fDenom *= other.fNum; + + return Normalize(); +} + +VLFraction & VLFraction::operator%=(VLFraction other) +{ + fNum *= other.fDenom; + fDenom *= other.fNum; + fNum %= fDenom; + + return *this *= other; +} + +static const char kScale[] = "c d ef g a b"; + +static std::string PitchName(int8_t pitch, bool useSharps) +{ + if (pitch == VLNote::kNoPitch) + return "r"; + pitch %= 12; + if (kScale[pitch] != ' ') + return static_cast(std::toupper(kScale[pitch])) + std::string(); + else if (useSharps) + return static_cast(std::toupper(kScale[pitch-1])) + std::string("♯"); + else + return static_cast(std::toupper(kScale[pitch+1])) + std::string("â™­"); +} + +VLNote::VLNote(std::string name) +{ + // + // Determine key + // + if (const char * key = strchr(kScale, name[0])) + fPitch = key-kScale+kMiddleC; + else + goto failed; + name.erase(0, 1); + // + // Look for sharp / flat + // + if (name.size()) + if (name[0] == '#') { + ++fPitch; + name.erase(0); + } else if (name[0] == 'b') { + --fPitch; + name.erase(0, 1); + } + if (name == "") + return; + + failed: + fPitch = kNoPitch; // Failed to parse completely +} + +void VLNote::Name(std::string & name, bool useSharps) const +{ + name = PitchName(fPitch, useSharps); +} + +struct VLChordModifier { + const char * fName; + uint32_t fAddSteps; + uint32_t fDelSteps; +}; + +static const VLChordModifier kModifiers[] = { + {"b13", VLChord::kmMin7th | VLChord::kmMaj9th | VLChord::km11th | VLChord::kmMin13th, 0}, + {"13", VLChord::kmMin7th | VLChord::kmMaj9th | VLChord::km11th | VLChord::kmMaj13th, 0}, + {"#11", VLChord::kmMin7th | VLChord::kmMaj9th | VLChord::kmAug11th, VLChord::km11th}, + {"11", VLChord::kmMin7th | VLChord::kmMaj9th | VLChord::km11th, 0}, + {"#9", VLChord::kmMin7th | VLChord::kmAug9th, VLChord::kmMaj9th}, + {"b9", VLChord::kmMin7th | VLChord::kmMin9th, VLChord::kmMaj9th}, + {"9", VLChord::kmMin7th | VLChord::kmMaj9th, 0}, + {"7", VLChord::kmMin7th, 0}, + {"maj", VLChord::kmMaj7th, VLChord::kmMin7th}, + {"6", VLChord::kmDim7th, 0}, + {"#5", VLChord::kmAug5th, VLChord::km5th}, + {"aug", VLChord::kmAug5th, VLChord::km5th}, + {"+", VLChord::kmAug5th, VLChord::km5th}, + {"b5", VLChord::kmDim5th, VLChord::km5th}, + {"sus4", VLChord::km4th, VLChord::kmMaj3rd}, + {"sus2", VLChord::kmMaj2nd, VLChord::kmMaj3rd}, + {"sus", VLChord::km4th, VLChord::kmMaj3rd}, + {"4", VLChord::km4th, VLChord::kmMaj3rd}, + {"2", VLChord::kmMaj2nd, VLChord::kmMaj3rd}, + {NULL, 0, 0} +}; + +static const char * kStepNames[] = { + "", "", "sus2", "", "", "sus", "â™­5", "", "+", "â™­7", "7", "♯7", "", + "â™­9", "9", "♯9", "", "11", "♯11", "", "â™­9", "13" +}; + +VLChord::VLChord(std::string name) +{ + size_t root; + // + // Determine key + // + if (const char * key = strchr(kScale, name[0])) + fPitch = key-kScale+kMiddleC; + else + goto failed; + name.erase(0, 1); + // + // Look for sharp / flat + // + if (name.size()) + if (name[0] == '#') { + ++fPitch; + name.erase(0); + } else if (name[0] == 'b') { + --fPitch; + name.erase(0, 1); + } + // + // Root + // + fRootPitch = kNoPitch; + if ((root = name.find('/')) != std::string::npos) { + if (root+1 >= name.size()) + goto failed; + if (const char * key = strchr(kScale, name[root+1])) + fRootPitch = key-kScale+kMiddleC-12; + else + goto failed; + if (root+2 < name.size()) { + switch (name[root+2]) { + case 'b': + --fRootPitch; + break; + case '#': + ++fRootPitch; + break; + default: + goto failed; + } + name.erase(root, 3); + } else + name.erase(root, 2); + } + // + // Apply modifiers + // + fSteps = kmUnison | kmMaj3rd | km5th; + + for (const VLChordModifier * mod = kModifiers; mod->fName && name.size() && name != "dim" && name != "m" && name != "-"; ++mod) { + size_t pos = name.find(mod->fName); + if (pos != std::string::npos) { + name.erase(pos, strlen(mod->fName)); + fSteps &= ~mod->fDelSteps; + fSteps |= mod->fAddSteps; + } + } + if (name == "m" || name == "-") { + fSteps = (fSteps & ~kmMaj3rd) | kmMin3rd; + name.erase(0, 1); + } else if (name == "dim") { + uint32_t steps = fSteps & (kmMaj3rd | km5th | kmMin7th); + fSteps ^= steps; + fSteps |= steps >> 1; // Diminish 3rd, 5th, and 7th, if present + name.erase(0, 3); + } + if (name == "") + return; // Success +failed: + fPitch = kNoPitch; +} + +void VLChord::Name(std::string & base, std::string & ext, std::string & root, bool useSharps) const +{ + base = PitchName(fPitch, useSharps); + ext = ""; + root = ""; + + uint32_t steps = fSteps & ~(kmUnison | km5th); + // + // m / dim + // + if (steps & kmMin3rd) + if (steps & (kmDim5th|kmDim7th) + && !(steps & (km5th|kmMin7th|kmMaj7th|kmMin9th|kmMaj9th|km11th|kmAug11th|kmMin13th|kmMaj13th)) + ) { + ext += "dim"; + steps|= (steps & kmDim7th) << 1; + steps&= ~(kmMin3rd|kmDim5th|kmDim7th); + } else { + base += "m"; + steps&= ~kmMin3rd; + } + // + // Maj + // + if (steps & kmMaj7th) { + ext += "Maj"; + steps&= ~kmMaj7th; + } + // + // Other extensions. Only the highest unaltered extension is listed. + // + if (uint32_t unaltered = steps & (kmMin7th | kmMaj9th | km11th | kmMaj13th)) { + steps &= ~unaltered; + + for (int step = kMaj13th; step > kDim7th; --step) + if (unaltered & (1 << step)) { + ext += kStepNames[step]; + break; + } + } + for (int step = kMin2nd; steps; ++step) + if (steps & (1 << step)) { + ext += kStepNames[step]; + steps &= ~(1 << step); + } + // + // Root + // + if (fRootPitch != kNoPitch) + root = PitchName(fRootPitch, useSharps); +} + +static VLFraction MaxNote(VLFraction d) +{ + if (d >= 1) + return 1; + if (d.fNum == 1 && !(d.fDenom & (d.fDenom-1))) // Power of 2 + return d; + + VLFraction note(1,2); + VLFraction triplet(1,3); + + for (;;) { + if (d >= note) + return note; + else if (d >= triplet) + return triplet; + note /= 2; + triplet /= 2; + } +} + +static void TrimNote(VLFraction at, VLFraction & d, VLFraction grid) +{ + if (at < grid && d > grid-at) + d = MaxNote(grid-at); +} + +void VLProperties::PartialNote(VLFraction at, VLFraction totalDuration, + VLFraction * noteDuration) const +{ + const VLFraction kBeat(1, fTime.fDenom); + + at %= fTime; + *noteDuration = MaxNote(std::min(MaxNote(totalDuration), fTime-at)); // Don't extend past measure + + if (at.fDenom > kBeat.fDenom) { // Break up notes not starting on beat + // Don't extend past "middle" of measure + if (fTime.fNum & 1) // Odd timecode, round up (most 5/4 seems to be 3+2, not 2+3) + TrimNote(at, *noteDuration, VLFraction((fTime.fNum+1)/2, fTime.fDenom)); + else + TrimNote(at, *noteDuration, fTime / 2); + at %= kBeat; + if (at == 2*kBeat/3) + TrimNote(0, *noteDuration, kBeat); // Allow syncopated beats in swing + else + TrimNote(at, *noteDuration, kBeat);// Don't let other notes span beats + } + if (!(noteDuration->fDenom % 3) && *noteDuration != totalDuration && ((at+*noteDuration)%kBeat) > 0) + *noteDuration *= VLFraction(3,4); // avoid frivolous triplets +} + +VLMeasure::VLMeasure() + : fProperties(0) +{ +} + +VLSong::VLSong() +{ + const VLFraction fourFour(4,4); + VLProperties defaultProperties = {fourFour, 0, 1, 3}; + + fProperties.push_back(defaultProperties); + fMeasures.resize(33); // Leadin, AABA + + VLNote rest = VLRest(1); + VLChord rchord; + rchord.fDuration = 1; + + for (int i=0; i<33; ++i) { + fMeasures[i].fProperties = &fProperties.front(); + fMeasures[i].fChords.push_back(rchord); + fMeasures[i].fMelody.push_back(rest); + } +} + +// +// Deal with chords - a bit simpler +// +void VLSong::AddChord(VLChord chord, size_t measure, VLFraction at) +{ + VLChordList::iterator i = fMeasures[measure].fChords.begin(); + VLFraction t(0); + + for (;;) { + VLFraction tEnd = t+i->fDuration; + if (tEnd > at) { + if (t == at) { + // + // Exact match, replace current + // + chord.fDuration = i->fDuration; + *i = chord; + } else { + // + // Overlap, split current + // + chord.fDuration = tEnd-at; + i->fDuration = at-t; + fMeasures[measure].fChords.insert(++i, chord); + } + break; // Exit here + } + t = tEnd; + ++i; + } +} + +void VLSong::DelChord(size_t measure, VLFraction at) +{ + VLChordList::iterator i = fMeasures[measure].fChords.begin(); + VLFraction t(0); + + for (;;) { + if (t == at) { + // + // Found it. Extend previous or make rest + // + if (i != fMeasures[measure].fChords.begin()) { + // + // Extend previous + // + VLChordList::iterator j = i; + --j; + j->fDuration += i->fDuration; + fMeasures[measure].fChords.erase(i); + } else { + // + // Turn into rest + // + i->fPitch = VLNote::kNoPitch; + } + break; + } + VLFraction tEnd = t+i->fDuration; + if (tEnd > at) + break; // Past the point, quit + t = tEnd; + ++i; + } +} + +uint8_t & FirstTie(VLMeasure & measure) +{ + VLNoteList::iterator i = measure.fMelody.begin(); + return i->fTied; +} + +uint8_t & LastTie(VLMeasure & measure) +{ + VLNoteList::iterator i = measure.fMelody.end(); + --i; + return i->fTied; +} + +// +// Dealing with notes is similar, but we also have to handle ties +// +void VLSong::AddNote(VLNote note, size_t measure, VLFraction at) +{ + VLNoteList::iterator i = fMeasures[measure].fMelody.begin(); + VLFraction t(0); + + for (;;) { + VLFraction tEnd = t+i->fDuration; + if (tEnd > at) { + if (t == at) { + // + // Exact match, replace current + // + if (i->fTied) { + // + // Break ties + // + if (i->fTied & VLNote::kTiedWithPrev) + LastTie(fMeasures[measure-1]) &= ~VLNote::kTiedWithNext; + if (i->fTied & VLNote::kTiedWithNext) + FirstTie(fMeasures[measure+1]) &= ~VLNote::kTiedWithPrev; + } + note.fDuration = i->fDuration; + *i = note; + } else { + // + // Overlap, split current + // + if (i->fTied & VLNote::kTiedWithPrev) + LastTie(fMeasures[measure-1]) &= ~VLNote::kTiedWithNext; + note.fDuration = tEnd-at; + i->fDuration = at-t; + i = fMeasures[measure].fMelody.insert(++i, note); + } + break; // Exit here + } + t = tEnd; + ++i; + } + i->fTied = 0; + if (note.fTied & VLNote::kTiedWithPrev) // kTiedWithNext is NEVER user set + if (measure && i == fMeasures[measure].fMelody.begin()) { + VLNoteList::iterator j = fMeasures[measure-1].fMelody.end(); + --j; + if (j->fPitch == i->fPitch) { + j->fTied |= VLNote::kTiedWithNext; + i->fTied |= VLNote::kTiedWithPrev; + } + } +} + +void VLSong::DelNote(size_t measure, VLFraction at) +{ + VLNoteList::iterator i = fMeasures[measure].fMelody.begin(); + VLFraction t(0); + + for (;;) { + if (t == at) { + // + // Found it. Break ties. + // + if (i->fTied & VLNote::kTiedWithNext) + FirstTie(fMeasures[measure+1]) &= ~VLNote::kTiedWithPrev; + if (i->fTied & VLNote::kTiedWithPrev) + LastTie(fMeasures[measure-1]) &= ~VLNote::kTiedWithNext; + // + // Extend previous or make rest + // + if (i != fMeasures[measure].fMelody.begin()) { + // + // Extend previous + // + VLNoteList::iterator j = i; + --j; + j->fDuration += i->fDuration; + fMeasures[measure].fMelody.erase(i); + } else { + // + // Turn into rest + // + i->fPitch = VLNote::kNoPitch; + i->fTied = 0; + } + break; + } + VLFraction tEnd = t+i->fDuration; + if (tEnd > at) + break; // Past the point, quit + t = tEnd; + ++i; + } +} + diff --git a/Sources/VLModel.h b/Sources/VLModel.h new file mode 100644 index 0000000..5e1cf94 --- /dev/null +++ b/Sources/VLModel.h @@ -0,0 +1,219 @@ +/* + * VLModel.h + * Vocalese + * + * Created by Matthias Neeracher on 12/18/05. + * Copyright 2005 __MyCompanyName__. All rights reserved. + * + */ + +#include +#include +#include +#include + +struct VLFract { + uint16_t fNum; // Numerator + uint16_t fDenom; // Denominator +}; + +struct VLFraction : VLFract { + VLFraction(uint16_t num = 0, uint16_t denom = 1, bool norm=false) + { fNum = num; fDenom = denom; if (norm) Normalize(); } + VLFraction(VLFract f) : VLFract(f) {} + + VLFraction & operator+=(VLFraction other); + VLFraction & operator-=(VLFraction other); + VLFraction & operator*=(VLFraction other); + VLFraction & operator/=(VLFraction other); + VLFraction & operator%=(VLFraction other); +private: + VLFraction & Normalize(); +}; + +inline VLFraction operator+(VLFraction one, VLFraction other) +{ + return one += other; +} + +inline VLFraction operator-(VLFraction one, VLFraction other) +{ + return one -= other; +} + +inline VLFraction operator*(VLFraction one, VLFraction other) +{ + return one *= other; +} + +inline VLFraction operator/(VLFraction one, VLFraction other) +{ + return one /= other; +} + +inline VLFraction operator%(VLFraction one, VLFraction other) +{ + return one %= other; +} + +inline bool operator==(VLFraction one, VLFraction other) +{ + return one.fNum*other.fDenom == other.fNum*one.fDenom; +} + +inline bool operator!=(VLFraction one, VLFraction other) +{ + return one.fNum*other.fDenom != other.fNum*one.fDenom; +} + +inline bool operator<(VLFraction one, VLFraction other) +{ + return one.fNum*other.fDenom < other.fNum*one.fDenom; +} + +inline bool operator>(VLFraction one, VLFraction other) +{ + return one.fNum*other.fDenom > other.fNum*one.fDenom; +} + +inline bool operator<=(VLFraction one, VLFraction other) +{ + return one.fNum*other.fDenom <= other.fNum*one.fDenom; +} + +inline bool operator>=(VLFraction one, VLFraction other) +{ + return one.fNum*other.fDenom >= other.fNum*one.fDenom; +} + +struct VLNote { + VLFraction fDuration; + int8_t fPitch; // Semitones + enum { + kNoPitch = -128, + kMiddleC = 60 + }; + // + // We only allow ties BETWEEN measures. Within measures, we just store + // a combined note length. + // + uint8_t fTied; // Tied with note in adjacent measure + enum { + kNotTied = 0, + kTiedWithNext = 1, + kTiedWithPrev = 2 + }; + VLNote() : fPitch(kNoPitch) {} + VLNote(VLFraction dur, int8_t pitch) + : fDuration(dur), fPitch(pitch), fTied(kNotTied) + {} + VLNote(std::string name); + + void Name(std::string & name, bool useSharps = false) const; +}; + +struct VLRest : VLNote { + VLRest(VLFraction duration) : VLNote(duration, kNoPitch) {} +}; + +struct VLChord : VLNote { + uint32_t fSteps; // Notes in chord, listed in semitones + enum { + kUnison = 0, + kMin2nd, + kMaj2nd, + kMin3rd, + kMaj3rd, + k4th, + kDim5th, + k5th, + kAug5th, + kDim7th, + kMin7th, + kMaj7th, + kOctave, + kMin9th, + kMaj9th, + kAug9th, + kDim11th, + k11th, + kAug11th, + kDim13th, + kMin13th, + kMaj13th, + + kmUnison = (1 << kUnison), + kmMin2nd = (1 << kMin2nd), + kmMaj2nd = (1 << kMaj2nd), + kmMin3rd = (1 << kMin3rd), + kmMaj3rd = (1 << kMaj3rd), + km4th = (1 << k4th), + kmDim5th = (1 << kDim5th), + km5th = (1 << k5th), + kmAug5th = (1 << kAug5th), + kmDim7th = (1 << kDim7th), + kmMin7th = (1 << kMin7th), + kmMaj7th = (1 << kMaj7th), + kmOctave = (1 << kOctave), + kmMin9th = (1 << kMin9th), + kmMaj9th = (1 << kMaj9th), + kmAug9th = (1 << kAug9th), + kmDim11th = (1 << kDim11th), + km11th = (1 << k11th), + kmAug11th = (1 << kAug11th), + kmDim13th = (1 << kDim13th), + kmMin13th = (1 << kMin13th), + kmMaj13th = (1 << kMaj13th) + }; + int8_t fRootPitch; // kNoPitch == no root + + VLChord() {} + VLChord(std::string name); + void Name(std::string & base, std::string & ext, std::string & root, bool useSharps = false) const; +}; + +struct VLProperties { + VLFraction fTime; // Time (non-normalized) + int8_t fKey; // Circle of fifths from C, >0 sharps, <0 flats + int8_t fMode; // 1 = major -1 = minor + int8_t fDivisions; // Number of divisions per quarter note + + // + // Subdivide a note and adjust for swing + // + void PartialNote(VLFraction at, VLFraction totalDuration, VLFraction * noteDuration) const; +}; + +struct VLSyllable { + std::string fText; + bool fHyphen; // Followed by hyphen +}; + +typedef std::list VLChordList; +typedef std::list VLNoteList; +typedef std::list VLSyllList; + +struct VLMeasure { + VLProperties * fProperties; + VLChordList fChords; + VLNoteList fMelody; + VLSyllList fLyrics; + + VLMeasure(); +}; + +struct VLSong { + VLSong(); + + std::list fProperties; + std::vector fMeasures; + + void AddChord(VLChord chord, size_t measure, VLFraction at); + void AddNote(VLNote note, size_t measure, VLFraction at); + void DelChord(size_t measure, VLFraction at); + void DelNote(size_t measure, VLFraction at); +}; + +// Local Variables: +// mode:C++ +// End: diff --git a/Sources/VLSheetView.h b/Sources/VLSheetView.h new file mode 100644 index 0000000..a28b233 --- /dev/null +++ b/Sources/VLSheetView.h @@ -0,0 +1,75 @@ +// +// VLSheetView.h +// Vocalese +// +// Created by Matthias Neeracher on 12/17/05. +// Copyright 2005 __MyCompanyName__. All rights reserved. +// + +#import + +#import "VLModel.h" + +@class VLDocument; + +enum VLMusicElement { + kMusicGClef, + kMusicFlat, + kMusicSharp, + kMusicNatural, + kMusicWholeNote, + kMusicHalfNote, + kMusicNote, + kMusicWholeRest, + kMusicHalfRest, + kMusicQuarterRest, + kMusicEighthRest, + kMusicSixteenthRest, + kMusicThirtysecondthRest, + kMusicEighthFlag, + kMusicSixteenthFlag, + kMusicThirtysecondthFlag, + kMusicNoteCursor, + kMusicElements +}; + +@interface VLSheetView : NSView { + BOOL needsRecalc; + float clefKeyW; + float measureW; + int groups; + int quarterBeats; + int divPerGroup; + int firstMeasure; + int lastMeasure; + int visibleMeasures; + NSImageRep * noteCursorCache; + NSPoint noteCursorLocation; + NSPoint lastNoteCenter; + NSRect noteRect; + NSTrackingRectTag noteRectTracker; + int noteCursorMeasure; + VLFract noteCursorAt; + int noteCursorPitch; + + IBOutlet id chords; +} + +- (IBAction) setKey:(id)sender; +- (IBAction) setTime:(id)sender; +- (IBAction) setDivisions:(id)sender; + +- (void) setFirstMeasure: (NSNumber *)measure; + +- (VLDocument *) document; +- (VLSong *) song; +- (NSImage *) musicElement:(VLMusicElement)elt; + +- (float) noteYWithPitch:(int)pitch; +- (float) noteXInMeasure:(int)measure at:(VLFraction)at; + +@end + +// Local Variables: +// mode:ObjC +// End: diff --git a/Sources/VLSheetView.mm b/Sources/VLSheetView.mm new file mode 100644 index 0000000..5dd2de3 --- /dev/null +++ b/Sources/VLSheetView.mm @@ -0,0 +1,314 @@ +// +// VLSheetView.mm +// Vocalese +// +// Created by Matthias Neeracher on 12/17/05. +// Copyright 2005 __MyCompanyName__. All rights reserved. +// + +#import "VLSheetView.h" +#import "VLSheetViewInternal.h" +#import "VLSheetViewChords.h" +#import "VLSheetViewNotes.h" + +#import "VLDocument.h" + +#include + +@implementation VLSheetView + +static NSImage ** sMusic; + +static NSString * sElementNames[kMusicElements] = { + @"g-clef", + @"flat", + @"sharp", + @"natural", + @"whole-notehead", + @"half-notehead", + @"notehead", + @"whole-rest", + @"half-rest", + @"quarter-rest", + @"eighth-rest", + @"sixteenth-rest", + @"thirtysecondth-rest", + @"eighth-flag", + @"sixteenth-flag", + @"thirtysecondth-flag", + @"notecursor" +}; + +static float sSharpPos[] = { + kLineY+4.0f*kLineH, // F# + kLineY+2.5f*kLineH, // C# + kLineY+4.5f*kLineH, // G# + kLineY+3.0f*kLineH, // D# + kLineY+1.5f*kLineH, // A# + kLineY+3.5f*kLineH, // E# + kLineY+2.0f*kLineH, // B# +}; + +static float sFlatPos[] = { + kLineY+2.0f*kLineH, // Bb + kLineY+3.5f*kLineH, // Eb + kLineY+1.5f*kLineH, // Ab + kLineY+3.0f*kLineH, // Db + kLineY+1.0f*kLineH, // Gb + kLineY+2.5f*kLineH, // Cb + kLineY+0.5f*kLineH, // Fb +}; + +- (id)initWithFrame:(NSRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + if (!sMusic) { + NSBundle * b = [NSBundle mainBundle]; + sMusic = new NSImage * [kMusicElements]; + for (int i=0; ifProperties.front().fKey >= 0; + + float y = kLineY+octave*3.5f*kLineH; + float sharp = useSharps ? 0.0f : 0.5f*kLineH; + + switch (semi) { + case 0: // C + return y-1.0f*kLineH; + case 1: // C# / Db + return y-1.0f*kLineH+sharp; + case 2: // D + return y-0.5f*kLineH; + case 3: // D# / Eb + return y-0.5f*kLineH+sharp; + case 4: // E + return y; + case 5: // F + return y+0.5f*kLineH; + case 6: // F# / Gb + return y+0.5f*kLineH+sharp; + case 7: // G + return y+1.0f*kLineH; + case 8: // G# / Ab + return y+1.0f*kLineH+sharp; + case 9: // A + return y+1.5f*kLineH; + case 10: // A# / Bb + return y+1.5f*kLineH+sharp; + case 11: // B + default: + return y+2.0f*kLineH; + } +} + +- (float) noteXInMeasure:(int)measure at:(VLFraction)at +{ + const VLProperties & prop = [self song]->fProperties.front(); + const float mx = clefKeyW+(measure-firstMeasure)*measureW; + + at /= prop.fTime / (4 * prop.fDivisions); + int div = at.fNum / at.fDenom; + + return mx + (div + (div / divPerGroup) + 1)*kNoteW; +} + +- (void) recalculateDimensions +{ + needsRecalc = NO; + + const VLSong * song = [self song]; + const VLProperties & prop = song->fProperties.front(); + + groups = prop.fTime.fNum / std::max(prop.fTime.fDenom / 4, 1); + quarterBeats = (prop.fTime.fNum*4) / prop.fTime.fDenom; + divPerGroup = prop.fDivisions * (quarterBeats / groups); + clefKeyW = kClefX+kClefW+(std::labs(prop.fKey)+1)*kKeyW; + measureW = groups*(divPerGroup+1)*kNoteW; + visibleMeasures = (int)std::floor(([self bounds].size.width - clefKeyW) + / measureW); + [self setValue: + [NSNumber numberWithInt: + std::max((int)song->fMeasures.size()-visibleMeasures, 0)] + forKey: @"lastMeasure"]; + if (firstMeasure > lastMeasure) + [self setValue: [NSNumber numberWithInt:lastMeasure] + forKey: @"firstMeasure"]; + + [self setupChords]; + + noteRect = NSMakeRect(clefKeyW, kLineY-kMaxLedgers*kLineH, + visibleMeasures*measureW, + (4.0f+2.0f*kMaxLedgers)*kLineH); + NSPoint mouse = + [self convertPoint:[[self window] mouseLocationOutsideOfEventStream] + fromView: nil]; + BOOL inNoteRect = [self mouse:mouse inRect:noteRect]; + + [self removeTrackingRect:noteRectTracker]; + noteRectTracker = [self addTrackingRect:noteRect owner:self + userData:nil assumeInside:inNoteRect]; + [[self window] setAcceptsMouseMovedEvents:inNoteRect]; + [[self window] makeFirstResponder:self]; +} + +- (void)drawRect:(NSRect)rect +{ + const VLSong * song = [self song]; + const VLProperties & prop = song->fProperties.front(); + + NSBezierPath * bz = [NSBezierPath bezierPath]; + + // + // Draw lines + // + [bz setLineWidth:0.0]; + if (needsRecalc) + [self recalculateDimensions]; + for (int line = 0; line<5; ++line) { + const float x0 = kLineX; + const float xx = x0 + clefKeyW + visibleMeasures*measureW; + const float y = kLineY+line*kLineH; + [bz moveToPoint: NSMakePoint(x0, y)]; + [bz lineToPoint: NSMakePoint(xx, y)]; + } + [bz stroke]; + [bz removeAllPoints]; + // + // Draw measure lines + // + [bz setLineWidth:2.0]; + for (int measure = 0; measure<=visibleMeasures; ++measure) { + const float x = clefKeyW+measure*measureW; + const float yy = kLineY+4.0f*kLineH; + [bz moveToPoint: NSMakePoint(x, kLineY)]; + [bz lineToPoint: NSMakePoint(x, yy)]; + } + [bz stroke]; + [bz removeAllPoints]; + + // + // Draw division lines + // + [bz setLineWidth:0.0]; + [[NSColor colorWithDeviceWhite:0.8f alpha:1.0f] set]; + for (int measure = 0; measure 0) { + float x = kClefX+kClefW; + for (int i=0; iprop.fKey; ++i) { + [[self musicElement: kMusicFlat] compositeToPoint: + NSMakePoint(x, sFlatPos[i]+kFlatY) + operation: NSCompositeSourceOver]; + x += kAccW; + } + } + + // + // Draw notes + // + [self drawNotes]; +} + +- (IBAction) setKey:(id)sender +{ + int key = [[sender selectedItem] tag]; + [[self document] setKey: key transpose: YES]; + needsRecalc = YES; + [self setNeedsDisplay: YES]; +} + +- (IBAction) setTime:(id)sender +{ + int time = [[sender selectedItem] tag]; + + [[self document] setTimeNum: time >> 8 denom: time & 0xFF]; + needsRecalc = YES; + [self setNeedsDisplay: YES]; +} + +- (IBAction) setDivisions:(id)sender +{ + int div = [[sender selectedItem] tag]; + + [[self document] setDivisions: div]; + needsRecalc = YES; + [self setNeedsDisplay: YES]; +} + +- (void) setFirstMeasure: (NSNumber *)measure +{ + firstMeasure = [measure intValue]; + + [self setupChords]; + [self setNeedsDisplay: YES]; +} + +@end diff --git a/Sources/VLSheetViewChords.h b/Sources/VLSheetViewChords.h new file mode 100644 index 0000000..480215e --- /dev/null +++ b/Sources/VLSheetViewChords.h @@ -0,0 +1,15 @@ +// +// VLSheetViewChords.h +// Vocalese +// +// Created by Matthias Neeracher on 1/4/06. +// Copyright 2006 __MyCompanyName__. All rights reserved. +// + +@interface VLSheetView (Chords) + +- (IBAction) editChord:(id)sender; + +- (void) setupChords; + +@end diff --git a/Sources/VLSheetViewChords.mm b/Sources/VLSheetViewChords.mm new file mode 100644 index 0000000..cefa951 --- /dev/null +++ b/Sources/VLSheetViewChords.mm @@ -0,0 +1,176 @@ +// +// VLSheetViewChords.mm +// Vocalese +// +// Created by Matthias Neeracher on 1/4/06. +// Copyright 2006 __MyCompanyName__. All rights reserved. +// + +#import "VLSheetView.h" +#import "VLSheetViewChords.h" +#import "VLSheetViewInternal.h" + +#import "VLModel.h" +#import "VLSoundOut.h" + +@implementation VLSheetView (Chords) + +- (NSAttributedString *) attributedStringWithCppString:(const std::string &)s + attributes:(NSDictionary *)a +{ + return [[[NSAttributedString alloc] + initWithString:[NSString stringWithUTF8String:s.c_str()] + attributes: a] + autorelease]; +} + +- (NSAttributedString *) stringWithChord:(const VLChord &)chord +{ + const VLSong * song = [self song]; + const VLProperties & prop = song->fProperties.front(); + + static NSDictionary * sBigFont = nil; + static NSDictionary * sSuperFont = nil; + if (!sBigFont) + sBigFont = + [[NSDictionary alloc] initWithObjectsAndKeys: + [NSFont fontWithName: @"Helvetica" size: 14], + NSFontAttributeName, + nil]; + if (!sSuperFont) + sSuperFont = + [[NSDictionary alloc] initWithObjectsAndKeys: + [NSFont fontWithName: @"Helvetica" size: 12], + NSFontAttributeName, + [NSNumber numberWithInt: 1], + NSSuperscriptAttributeName, + nil]; + + std::string name, ext, root; + if (chord.fPitch != VLNote::kNoPitch) + chord.Name(name, ext, root, prop.fKey > 0); + + NSMutableAttributedString * s = + [[[NSMutableAttributedString alloc] init] autorelease]; + [s appendAttributedString: + [self attributedStringWithCppString: name + attributes: sBigFont]]; + [s appendAttributedString: + [self attributedStringWithCppString: ext.size() ? ext : " " + attributes: sSuperFont]]; + if (root.size()) + [s appendAttributedString: + [self attributedStringWithCppString: "/" + root + attributes: sBigFont]]; + + return s; +} + +- (void) setupChords +{ + const VLSong * song = [self song]; + const VLProperties & prop = song->fProperties.front(); + NSView * chordView = [chords contentView]; + + // + // Delete old list of chord boxes + // + for (NSEnumerator * e = [[chordView subviews] objectEnumerator]; + NSView * subview = [e nextObject]; + ) + [subview removeFromSuperview]; + + // + // Build new list + // + NSView * prevKeyView = nil; + NSFont * chordFont = [NSFont controlContentFontOfSize: 14]; + int beatsPerGroup = quarterBeats / groups; + for (int m = 0; mfMeasures[measure].fChords.begin(); + VLChordList::const_iterator cEnd = song->fMeasures[measure].fChords.end(); + VLFraction at(0); + for (int beat = 0; beatfDuration; + if (cCur != cEnd && at == VLFraction(beat, 4) && cCur->fPitch != VLNote::kNoPitch) + [chord setAttributedStringValue: [self stringWithChord:*cCur]]; + [chord release]; + } + } + [chords setNeedsDisplay: YES]; +} + + +- (IBAction) editChord:(id)sender +{ + VLSong * song = [self song]; + + std::string chordName = + (const char *)[[[sender stringValue] lowercaseString] UTF8String]; + // + // Normalize # and b + // + for (;;) { + size_t found; + + found = chordName.find("\xE2\x99\xAF", 0, 3); + if (found != std::string::npos) { + chordName.replace(found, 3, 1, '#'); + continue; + } + found = chordName.find("\xE2\x99\xAD", 0, 3); + if (found != std::string::npos) { + chordName.replace(found, 3, 1, 'b'); + continue; + } + found = chordName.find(" ", 0, 1); + if (found != std::string::npos) { + chordName.erase(found); + continue; + } + break; + } + // + // Check for valid chord + // + VLChord chord(chordName); + if (!chordName.size()) { + [sender setTextColor: [NSColor blackColor]]; + } else if (chord.fPitch == VLChord::kNoPitch) { + if (chordName.size()) { + NSBeep(); + [sender setTextColor: [NSColor redColor]]; + } + int tag = [sender tag]; + song->DelChord(tag >> 8, VLFraction(tag & 0xFF, 4)); + } else { + NSAttributedString * s = [self stringWithChord:chord]; + [sender setAttributedStringValue: s]; + [sender setTextColor: [NSColor blackColor]]; + NSSize sz = [sender frame].size; + sz.width = [s size].width+10.0; + [sender setFrameSize: sz]; + VLSoundOut::Instance()->PlayChord(chord); + int tag = [sender tag]; + song->AddChord(chord, tag >> 8, VLFraction(tag & 0xFF, 4)); + } +} + +@end diff --git a/Sources/VLSheetViewInternal.h b/Sources/VLSheetViewInternal.h new file mode 100644 index 0000000..fda03bc --- /dev/null +++ b/Sources/VLSheetViewInternal.h @@ -0,0 +1,31 @@ +// +// VLSheetViewInternal.h +// Vocalese +// +// Created by Matthias Neeracher on 1/4/06. +// Copyright 2006 __MyCompanyName__. All rights reserved. +// + +const float kLineX = 5; +const float kLineY = 90.5; +const float kLineH = 10; +const float kClefX = 20.5f; +const float kClefY = 75.0f; +const float kClefW = 30.0f; +const float kNoteW = 12.0f; +const float kKeyW = 10.0f; +const float kAccW = 10.0f; +const float kSharpY =-15.0f; +const float kFlatY = -7.0f; +const float kImgScale = 0.04f; +const float kChordW = 40.0f; +const float kChordH = 25.0f; +const float kNoteX = 7.0f; +const float kNoteY = 5.0f; +const float kStemX = 0.0f; +const float kStemY = 1.0f; +const float kStemH = 30.0f; +const float kWholeRestY = 20.0f; +const float kHalfRestY = 15.0f; +const float kTieDepth = 10.0f; +const int kMaxLedgers = 3; diff --git a/Sources/VLSheetViewNotes.h b/Sources/VLSheetViewNotes.h new file mode 100644 index 0000000..59fc4ca --- /dev/null +++ b/Sources/VLSheetViewNotes.h @@ -0,0 +1,23 @@ +// +// VLSheetViewNotes.h +// Vocalese +// +// Created by Matthias Neeracher on 1/4/06. +// Copyright 2006 __MyCompanyName__. All rights reserved. +// + +#import + +@interface VLSheetView (Notes) + +- (void) mouseMoved:(NSEvent *)event; +- (void) mouseDown:(NSEvent *)event; +- (void) mouseEntered:(NSEvent *)event; +- (void) mouseExited:(NSEvent *)event; + +- (void) drawNotes; + +- (void) setNoteCursorMeasure:(int)measure at:(VLFraction)at pitch:(int)pitch; +- (void) hideNoteCursor; + +@end diff --git a/Sources/VLSheetViewNotes.mm b/Sources/VLSheetViewNotes.mm new file mode 100644 index 0000000..1c278e4 --- /dev/null +++ b/Sources/VLSheetViewNotes.mm @@ -0,0 +1,326 @@ +// +// VLSheetViewNotes.mm +// Vocalese +// +// Created by Matthias Neeracher on 1/4/06. +// Copyright 2006 __MyCompanyName__. All rights reserved. +// + +#import "VLSheetView.h" +#import "VLSheetViewNotes.h" +#import "VLSheetViewInternal.h" +#import "VLSoundOut.h" + +#include + +@implementation VLSheetView (Notes) + +static int sSemiToPitch[] = { + 53, // F + 55, 57, // A + 59, 60, // Middle C + 62, 64, // E + 65, 67, // G + 69, 71, // B + 72, 74, // D + 76, 77, // F + 79, 81, // A + 83, 84, // C + 86, 88 // E +}; + +- (void) mouseMoved:(NSEvent *)event +{ + if ([event modifierFlags] & NSAlphaShiftKeyMask) + return; // Keyboard mode, ignore mouse + const VLProperties & prop = [self song]->fProperties.front(); + NSPoint loc = [event locationInWindow]; + loc = [self convertPoint:loc fromView:nil]; + + loc.x -= noteRect.origin.x; + int measure = static_cast(loc.x / measureW)+firstMeasure; + loc.x -= (measure-firstMeasure)*measureW; + int group = static_cast(loc.x / ((divPerGroup+1)*kNoteW)); + loc.x -= group*(divPerGroup+1)*kNoteW; + int div = static_cast(roundf(loc.x / kNoteW))-1; + div = std::min(std::max(div, 0), divPerGroup-1); + VLFraction at(div+group*divPerGroup, 4*prop.fDivisions); + + loc.y -= noteRect.origin.y; + int semi = static_cast(roundf(loc.y / (0.5f*kLineH))); + int pitch = sSemiToPitch[semi]; + + [self setNoteCursorMeasure:measure at:at pitch:pitch]; +} + +- (void) addNoteAtCursor:(BOOL)isRest +{ + if (noteCursorMeasure > -1) { + VLNote newNote(1, !isRest ? noteCursorPitch : VLNote::kNoPitch); + + [self song]->AddNote(newNote, noteCursorMeasure, noteCursorAt); + + [self setNeedsDisplay:YES]; + + VLSoundOut::Instance()->PlayNote(newNote); + } +} + +- (void) mouseDown:(NSEvent *)event +{ + [self mouseMoved:event]; + [self addNoteAtCursor: ([event modifierFlags] & NSShiftKeyMask) != 0]; +} + +- (void) mouseEntered:(NSEvent *)event +{ + [[self window] setAcceptsMouseMovedEvents:YES]; + [self mouseMoved:event]; +} + +- (void) mouseExited:(NSEvent *)event +{ + [[self window] setAcceptsMouseMovedEvents:NO]; + if (!([event modifierFlags] & NSAlphaShiftKeyMask)) + [self hideNoteCursor]; +} + +- (void) startKeyboardCursor +{ + if (noteCursorMeasure < 0) { + noteCursorMeasure = firstMeasure; + noteCursorPitch = VLNote::kMiddleC; + noteCursorAt = VLFraction(0); + } +} + +- (void) keyDown:(NSEvent *)event +{ + NSString * k = [event charactersIgnoringModifiers]; + + switch ([k characterAtIndex:0]) { + case '\r': + [self startKeyboardCursor]; + [self addNoteAtCursor]; + break; + case ' ': + [self startKeyboardCursor]; + VLSoundOut::Instance()->PlayNote(VLNote(1, noteCursorPitch)); + break; + } +} + +- (void) hideNoteCursor +{ + noteCursorMeasure = -1; + [self setNeedsDisplay:YES]; +} + +- (void) drawNoteCursor +{ + NSPoint note = + NSMakePoint([self noteXInMeasure:noteCursorMeasure at:noteCursorAt], + [self noteYWithPitch:noteCursorPitch]); + NSRect noteCursorRect = + NSMakeRect(note.x-kNoteX, note.y-kNoteY, 2.0f*kNoteX, 2.0f*kNoteY); + [[self musicElement:kMusicNoteCursor] + compositeToPoint:NSMakePoint(note.x-kNoteX, note.y-kNoteY) + operation: NSCompositeSourceOver]; +} + +- (void) drawNote:(VLFraction)dur at:(NSPoint)p tied:(BOOL)tied +{ + NSPoint s = p; + NSPoint c = p; + p.x -= kNoteX; + p.y -= kNoteY; + s.x += kNoteX+kStemX; + s.y += kStemY; + // + // Draw note head + // + NSImage * head; + switch (dur.fDenom) { + case 1: + head = [self musicElement:kMusicWholeNote]; + break; + case 2: + head = [self musicElement:kMusicHalfNote]; + s.x -= 1.0f; + break; + default: + head = [self musicElement:kMusicNote]; + s.x -= 2.0f; + break; + } + [head compositeToPoint:p + operation: NSCompositePlusDarker]; + // + // Draw stem + // + // + // + if (dur.fDenom > 1) { + NSBezierPath * bz = [NSBezierPath bezierPath]; + NSPoint s1 = NSMakePoint(s.x, s.y+kStemH); + NSImage * flag = nil; + switch (dur.fDenom) { + case 8: + flag = [self musicElement:kMusicEighthFlag]; + break; + case 16: + flag = [self musicElement:kMusicSixteenthFlag]; + s1.y += 5.0f; + break; + case 32: + flag = [self musicElement:kMusicThirtysecondthFlag]; + s1.y += 13.0f; + break; + } + [[NSColor blackColor] set]; + [bz setLineWidth:2.0f]; + [bz moveToPoint:s]; + [bz lineToPoint:s1]; + [bz stroke]; + if (flag) + [flag compositeToPoint:s + operation: NSCompositePlusDarker]; + } + // + // Draw tie + // + if (tied) { + NSPoint mid = + NSMakePoint(0.5f*(lastNoteCenter.x+c.x), + 0.5f*(lastNoteCenter.y+c.y)); + NSPoint dir = NSMakePoint(c.y-mid.y, c.x-mid.x); + float n = dir.x*dir.x+dir.y*dir.y; + float r = (kTieDepth*kTieDepth+n) / (2.0f*kTieDepth); + float l = (r-kTieDepth) / sqrtf(n); + mid.x += dir.x*l; + mid.y += dir.y*l; + float a1 = atan2(lastNoteCenter.y-mid.y, lastNoteCenter.x-mid.x); + float a2 = atan2(c.y-mid.y, c.x-mid.x); + NSBezierPath * bz = [NSBezierPath bezierPath]; + [bz appendBezierPathWithArcWithCenter:mid radius:r + startAngle:a1*180.0f/M_PI endAngle:a2*180.0f/M_PI]; + [bz stroke]; + } + lastNoteCenter = c; +} + +- (void) drawRest:(VLFraction)dur at:(NSPoint)p +{ + // + // Draw rest + // + NSImage * head = nil; + switch (dur.fDenom) { + case 1: + head = [self musicElement:kMusicWholeRest]; + p.y += kWholeRestY; + break; + case 2: + head = [self musicElement:kMusicHalfRest]; + p.y += kHalfRestY; + break; + case 4: + head = [self musicElement:kMusicQuarterRest]; + p.x -= kNoteX; + break; + case 8: + head = [self musicElement:kMusicEighthRest]; + p.x -= kNoteX; + break; + case 16: + head = [self musicElement:kMusicSixteenthRest]; + p.x -= kNoteX; + break; + case 32: + head = [self musicElement:kMusicThirtysecondthRest]; + p.x -= kNoteX; + break; + } + [head compositeToPoint:p + operation: NSCompositeSourceOver]; +} + +- (void) drawNotes +{ + const VLSong * song = [self song]; + const VLProperties & prop = song->fProperties.front(); + BOOL swing= !(prop.fDivisions % 3); // In swing mode? + VLFraction swung(3, prop.fDivisions*8, true); // Which notes to swing + VLFraction swingGrid(2*swung); // Alignment of swing notes + + for (int m = 0; mfMeasures[measIdx]; + const VLNoteList & melody = measure.fMelody; + VLFraction at(0); + for (VLNoteList::const_iterator note = melody.begin(); + note != melody.end(); + ++note + ) { + VLFraction dur = note->fDuration; + BOOL first = !m || !note->fTied; + int pitch = note->fPitch; + while (dur > 0) { + VLFraction partialDur; // Actual value of note drawn + measure.fProperties->PartialNote(at, dur, &partialDur); + + BOOL triplet = !(partialDur.fDenom % 3); + VLFraction noteDur(1); // Visual value of note + + if (triplet) { + if (swing) { // Swing 8ths / 16ths are written as straight 8ths + if (partialDur == 4*swung/3 && (at % swingGrid) == 0) { + noteDur = swung; + triplet = NO; + } else if (partialDur == 2*swung/3 && ((at+partialDur) % swingGrid) == 0) { + noteDur = swung; + triplet = NO; + } else { + noteDur = 4*partialDur/3; + } + } else { + noteDur = 4*partialDur/3; + } + } else { + noteDur = partialDur; + } + if (pitch != VLNote::kNoPitch) + [self drawNote:noteDur + at: NSMakePoint( + [self noteXInMeasure:measIdx at:at], + [self noteYWithPitch:pitch]) + tied:!first]; + else + [self drawRest:noteDur + at: NSMakePoint( + [self noteXInMeasure:measIdx at:at], + [self noteYWithPitch:65])]; + dur -= partialDur; + at += partialDur; + first = NO; + } + } + } + if (noteCursorMeasure > -1) + [self drawNoteCursor]; +} + +- (void) setNoteCursorMeasure:(int)measure at:(VLFraction)at pitch:(int)pitch +{ + if (measure != noteCursorMeasure || at != noteCursorAt + || pitch != noteCursorPitch + ) { + noteCursorMeasure = measure; + noteCursorAt = at; + noteCursorPitch = pitch; + + [self setNeedsDisplay:YES]; + } +} + +@end diff --git a/Sources/VLSoundOut.cpp b/Sources/VLSoundOut.cpp new file mode 100644 index 0000000..688e48b --- /dev/null +++ b/Sources/VLSoundOut.cpp @@ -0,0 +1,159 @@ +/* + * VLSoundOut.cpp + * Vocalese + * + * Created by Matthias Neeracher on 12/18/05. + * Copyright 2005 __MyCompanyName__. All rights reserved. + * + */ + +#include "VLSoundOut.h" + +#include +#include + +#include +#include + +const int kMidiChannelInUse = 0; + +enum { + kMidiMessage_ControlChange = 0xB, + kMidiMessage_ProgramChange = 0xC, + kMidiMessage_BankMSBControl = 0, + kMidiMessage_BankLSBControl = 32, + kMidiMessage_NoteOn = 0x9, + kMidiMessage_NoteOff = 0x8 +}; + +class VLAUSoundOut : public VLSoundOut { +public: + VLAUSoundOut(); + + virtual void PlayNote(const VLNote & note); + virtual void PlayChord(const VLChord & chord); + + virtual ~VLAUSoundOut(); +private: + AUGraph fGraph; + AudioUnit fSynth; + bool fRunning; + + void Run(); + void Stop(); + void Play(const int8_t * note, size_t numNotes = 1); +}; + +static std::auto_ptr sSoundOut; + +VLSoundOut * VLSoundOut::Instance() +{ + if (!sSoundOut.get()) + sSoundOut.reset(new VLAUSoundOut); + + return sSoundOut.get(); +} + +VLSoundOut::~VLSoundOut() +{ +} + +VLAUSoundOut::VLAUSoundOut() + : fRunning(false) +{ + AUNode synthNode, limiterNode, outNode; + ComponentDescription cd; + + cd.componentManufacturer = kAudioUnitManufacturer_Apple; + cd.componentFlags = 0; + cd.componentFlagsMask = 0; + + NewAUGraph(&fGraph); + + cd.componentType = kAudioUnitType_MusicDevice; + cd.componentSubType = kAudioUnitSubType_DLSSynth; + + AUGraphNewNode(fGraph, &cd, 0, NULL, &synthNode); + + cd.componentType = kAudioUnitType_Effect; + cd.componentSubType = kAudioUnitSubType_PeakLimiter; + + AUGraphNewNode (fGraph, &cd, 0, NULL, &limiterNode); + + cd.componentType = kAudioUnitType_Output; + cd.componentSubType = kAudioUnitSubType_DefaultOutput; + + AUGraphNewNode(fGraph, &cd, 0, NULL, &outNode); + + AUGraphOpen(fGraph); + AUGraphConnectNodeInput(fGraph, synthNode, 0, limiterNode, 0); + AUGraphConnectNodeInput(fGraph, limiterNode, 0, outNode, 0); + AUGraphGetNodeInfo(fGraph, synthNode, 0, 0, 0, &fSynth); + + AUGraphInitialize(fGraph); + + MusicDeviceMIDIEvent(fSynth, + kMidiMessage_ControlChange << 4 | kMidiChannelInUse, + kMidiMessage_BankMSBControl, 0, + 0/*sample offset*/); + MusicDeviceMIDIEvent(fSynth, + kMidiMessage_ProgramChange << 4 | kMidiChannelInUse, + 0/*prog change num*/, 0, + 0/*sample offset*/); +} + +VLAUSoundOut::~VLAUSoundOut() +{ + Stop(); + DisposeAUGraph(fGraph); +} + +void VLAUSoundOut::Run() +{ + if (!fRunning) { + AUGraphStart(fGraph); + fRunning = true; + } +} + +void VLAUSoundOut::Stop() +{ + if (fRunning) { + AUGraphStop(fGraph); + fRunning = false; + } +} + +void VLAUSoundOut::PlayNote(const VLNote & note) +{ + Play(¬e.fPitch); +} + +void VLAUSoundOut::PlayChord(const VLChord & chord) +{ + std::vector notes; + + for (int i = 0; i < 32; ++i) + if (chord.fSteps & (1 << i)) + notes.push_back(chord.fPitch+i); + if (chord.fRootPitch != VLNote::kNoPitch) + notes.push_back(chord.fRootPitch); + Play(¬es[0], notes.size()); +} + +void VLAUSoundOut::Play(const int8_t * note, size_t numNotes) +{ + Run(); + + const UInt32 kNoteOn = kMidiMessage_NoteOn << 4 | kMidiChannelInUse; + const UInt32 kNoteOff = kMidiMessage_NoteOff << 4 | kMidiChannelInUse; + const UInt32 kNoteVelocity= 127; + + for (size_t i = 0; i +#endif diff --git a/Sources/main.m b/Sources/main.m new file mode 100644 index 0000000..57138ef --- /dev/null +++ b/Sources/main.m @@ -0,0 +1,14 @@ +// +// main.m +// Vocalese +// +// Created by Matthias Neeracher on 12/17/05. +// Copyright __MyCompanyName__ 2005 . All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **) argv); +} diff --git a/Tests/TVLChord.cpp b/Tests/TVLChord.cpp new file mode 100644 index 0000000..d05fb2e --- /dev/null +++ b/Tests/TVLChord.cpp @@ -0,0 +1,31 @@ +/* + * TVLChord.cpp + * Vocalese + * + * Created by Matthias Neeracher on 12/19/05. + * Copyright 2005 __MyCompanyName__. All rights reserved. + * + */ + +#include "VLModel.h" + +#include + +int main(int, char *const []) +{ + std::string chordName; + + while (std::cin >> chordName) { + VLChord chord(chordName); + + std::string baseS, extS, rootS, baseF, extF, rootF; + + chord.Name(baseS, extS, rootS, true); + chord.Name(baseF, extF, rootF, false); + + std::cout << baseS << "[" << extS << "]" << rootS << " " + << baseF << "[" << extF << "]" << rootF + << std::endl; + } + exit(0); +} diff --git a/Tests/TVLEdit.cpp b/Tests/TVLEdit.cpp new file mode 100644 index 0000000..0fdd611 --- /dev/null +++ b/Tests/TVLEdit.cpp @@ -0,0 +1,145 @@ +/* + * TVLEdit.cpp + * Vocalese + * + * Created by Matthias Neeracher on 12/19/05. + * Copyright 2005 __MyCompanyName__. All rights reserved. + * + */ + +#include "VLModel.h" + +#include + +std::istream & operator>>(std::istream & s, VLFraction & f) +{ + int num, n, d; + char c; + + s >> num >> c; + if (c == '.') { + s >> n >> c >> d; + + f = num + VLFraction(n, d); + } else { + s >> d; + + f = VLFraction(num, d); + } + + return s; +} + +std::ostream & operator<<(std::ostream & s, VLFraction f) +{ + int whole = f.fNum / f.fDenom; + + if (whole) { + s << whole; + f -= whole; + if (f.fNum) + s << int(f.fNum) << '/' << int(f.fDenom); + } else if (f.fNum) { + s << int(f.fNum) << '/' << int(f.fDenom); + } else { + s << '0'; + } + return s; +} + +void PrintName(const VLNote & note) +{ + std::string name; + note.Name(name, false); + std::cout << name; +} + +void PrintName(const VLChord & chord) +{ + if (chord.fPitch == VLNote::kNoPitch) { + std::cout << 's'; + } else { + std::string base,ext,root; + chord.Name(base, ext, root, false); + std::cout << base << '[' << ext << ']' << root; + } +} + +template class Printer { + VLProperties * fProp; + VLFraction fAt; +public: + Printer(VLProperties * prop) : fProp(prop) {} + + void operator()(const C& obj) { + PrintName(obj); + + std::cout << '@'; + for (VLFraction d = obj.fDuration; d > 0; ) { + VLFraction p; + fProp->PartialNote(fAt, d, &p); + if (d < obj.fDuration) + std::cout << '+'; + std::cout << p; + d -= p; + fAt += p; + } + std::cout << ' '; + } +}; + +void PrintMeasure(const VLMeasure & measure) +{ + std::for_each(measure.fChords.begin(), measure.fChords.end(), + Printer(measure.fProperties)); + std::cout << std::endl; + std::for_each(measure.fMelody.begin(), measure.fMelody.end(), + Printer(measure.fProperties)); + std::cout << std::endl << std::endl; +} + +void PrintSong(const VLSong & song) +{ + std::for_each(song.fMeasures.begin(), song.fMeasures.end(), PrintMeasure); +} + +int main(int, char *const []) +{ + VLSong song; + + song.fMeasures.resize(4); + + char command; + while (std::cin >> command) { + int measure; + VLFraction at; + std::string name; + switch (command) { + case '+': + std::cin >> name >> measure >> at; + song.AddNote(name, measure, at); + + PrintSong(song); + break; + case '-': + std::cin >> measure >> at; + song.DelNote(measure, at); + + PrintSong(song); + break; + case '&': + std::cin >> name >> measure >> at; + song.AddChord(name, measure, at); + + PrintSong(song); + break; + case '^': + std::cin >> measure >> at; + song.DelChord(measure, at); + + PrintSong(song); + break; + } + } + exit(0); +} diff --git a/Tests/TVLSoundOut.cpp b/Tests/TVLSoundOut.cpp new file mode 100644 index 0000000..54c41db --- /dev/null +++ b/Tests/TVLSoundOut.cpp @@ -0,0 +1,28 @@ +/* + * TVLSoundOut.cpp + * Vocalese + * + * Created by Matthias Neeracher on 12/19/05. + * Copyright 2005 __MyCompanyName__. All rights reserved. + * + */ + +#include "VLSoundOut.h" + +#include + +int main(int, char *const []) +{ + std::string chordName; + VLSoundOut * soundOut = VLSoundOut::Instance(); + + while (std::cin >> chordName) { + VLChord chord(chordName); + + soundOut->PlayNote(chord); + usleep(250*1000); + soundOut->PlayChord(chord); + } + + exit(0); +} diff --git a/Vocalese.xcodeproj/neeri.mode1 b/Vocalese.xcodeproj/neeri.mode1 new file mode 100644 index 0000000..39eb6ee --- /dev/null +++ b/Vocalese.xcodeproj/neeri.mode1 @@ -0,0 +1,1342 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXRunSessionModule + Name + Run Log + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1 + FavBarConfig + + PBXProjectModuleGUID + 954D742C095407E7007D9571 + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1 + MajorVersion + 31 + MinorVersion + 1 + Name + Default + Notifications + + OpenEditors + + + Content + + PBXProjectModuleGUID + 952FE0B6097B69AB00FCD2C5 + PBXProjectModuleLabel + VLSheetViewInternal.h + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 952FE0B7097B69AB00FCD2C5 + PBXProjectModuleLabel + VLSheetViewInternal.h + _historyCapacity + 0 + bookmark + 9512EC42097C7E5300C07611 + history + + 952FE0C1097B709100FCD2C5 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {763, 552}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 15 148 763 593 0 0 1024 746 + + + + Content + + PBXProjectModuleGUID + 95B666BA0970D19900FE18C9 + PBXProjectModuleLabel + VLModel.cpp + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 95B666BB0970D19900FE18C9 + PBXProjectModuleLabel + VLModel.cpp + _historyCapacity + 0 + bookmark + 9512EC43097C7E5300C07611 + history + + 952FE0C2097B709100FCD2C5 + + + SplitCount + 1 + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {763, 552}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 256 118 763 593 0 0 1024 746 + + + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-target-popup + action + NSToolbarFlexibleSpaceItem + buildOrClean + build-and-runOrDebug + com.apple.ide.PBXToolbarStopButton + get-info + toggle-editor + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 2A37F4AAFDCFA73011CA2CEA + 2A37F4ABFDCFA73011CA2CEA + 2A37F4AFFDCFA73011CA2CEA + 955E59560957C0C50045FDA5 + 2A37F4B8FDCFA73011CA2CEA + 95B3E1980960E58B000E9C0D + 2A37F4C3FDCFA73011CA2CEA + 1058C7A6FEA54F5311CA2CBB + 1C37FBAC04509CD000000102 + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 453}, {186, 338}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 356}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 167 325 690 397 0 0 1024 746 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + MyNewFile14.java + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + MyNewFile14.java + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {482, 0}} + RubberWindowFrame + 167 325 690 397 0 0 1024 746 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 5}, {482, 351}} + RubberWindowFrame + 167 325 690 397 0 0 1024 746 + + Module + XCDetailModule + Proportion + 351pt + + + Proportion + 482pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 9512EC31097B84F200C07611 + 1CE0B1FE06471DED0097A5F4 + 9512EC32097B84F200C07611 + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.short + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 9512EC40097B84F200C07611 + 9512EC41097B84F200C07611 + 9512EC3C097B84F200C07611 + 95B666BA0970D19900FE18C9 + /Users/neeri/Development/Vocalese/Vocalese.xcode + 1C0AD2B3069F1EA900FABCE6 + 952FE0B6097B69AB00FCD2C5 + 95D6E96D0960E42700458912 + 955E59A30957CC4D0045FDA5 + 1CD10A99069EF8BA00B06720 + + WindowString + 167 325 690 397 0 0 1024 746 + WindowTools + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + VLSheetViewNotes.mm + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {985, 477}} + RubberWindowFrame + 16 131 985 528 0 0 1024 746 + + Module + PBXNavigatorGroup + Proportion + 477pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 482}, {985, 5}} + RubberWindowFrame + 16 131 985 528 0 0 1024 746 + + Module + PBXBuildResultsModule + Proportion + 5pt + + + Proportion + 487pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 955E59A30957CC4D0045FDA5 + 9512EC35097B84F200C07611 + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.build + WindowString + 16 131 985 528 0 0 1024 746 + WindowToolGUID + 955E59A30957CC4D0045FDA5 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {326, 113}} + {{326, 0}, {383, 113}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {709, 113}} + {{0, 113}, {709, 520}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {709, 633}} + RubberWindowFrame + 263 60 709 674 0 0 1024 746 + + Module + PBXDebugSessionModule + Proportion + 633pt + + + Proportion + 633pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 9512EC36097B84F200C07611 + 1C162984064C10D400B95A72 + 9512EC37097B84F200C07611 + 9512EC38097B84F200C07611 + 9512EC39097B84F200C07611 + 9512EC3A097B84F200C07611 + 9512EC3B097B84F200C07611 + 9512EC3C097B84F200C07611 + + ToolbarConfiguration + xcode.toolbar.config.debug + WindowString + 263 60 709 674 0 0 1024 746 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.find + IsVertical + + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {781, 212}} + RubberWindowFrame + 188 230 781 470 0 0 1024 746 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 212pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{0, 217}, {781, 212}} + RubberWindowFrame + 188 230 781 470 0 0 1024 746 + + Module + PBXProjectFindModule + Proportion + 212pt + + + Proportion + 429pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + + TableOfContents + + 1C530D57069F1CE1000CFCEE + 95B6666D096E64BC00FE18C9 + 95B6666E096E64BC00FE18C9 + 1CDD528C0622207200134675 + 1CD0528E0623707200166675 + + WindowString + 188 230 781 470 0 0 1024 746 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {440, 358}} + RubberWindowFrame + 512 15 440 400 0 0 1024 746 + + Module + PBXDebugCLIModule + Proportion + 358pt + + + Proportion + 359pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 95D6E96D0960E42700458912 + 9512EC3D097B84F200C07611 + 1C78EAAC065D492600B07095 + + WindowString + 512 15 440 400 0 0 1024 746 + WindowToolGUID + 95D6E96D0960E42700458912 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.run + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + LauncherConfigVersion + 3 + PBXProjectModuleGUID + 1CD0528B0623707200166675 + PBXProjectModuleLabel + Run + Runner + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {367, 168}} + {{0, 173}, {367, 270}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {406, 443}} + {{411, 0}, {517, 443}} + + + + + GeometryConfiguration + + Frame + {{0, 0}, {687, 215}} + RubberWindowFrame + 188 442 687 256 0 0 1024 746 + + Module + PBXRunSessionModule + Proportion + 215pt + + + Proportion + 215pt + + + Name + Run Log + ServiceClasses + + PBXRunSessionModule + + StatusbarIsVisible + + TableOfContents + + 1C0AD2B3069F1EA900FABCE6 + 9512EC3E097B84F200C07611 + 1CD0528B0623707200166675 + 9512EC3F097B84F200C07611 + + ToolbarConfiguration + xcode.toolbar.config.run + WindowString + 188 442 687 256 0 0 1024 746 + WindowToolGUID + 1C0AD2B3069F1EA900FABCE6 + WindowToolIsVisible + + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.09500122070312 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.breakpoints + IsVertical + + Layout + + + Dock + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CD052930623707200166675 + PBXProjectModuleLabel + Breakpoints + + GeometryConfiguration + + BreakpointsTreeTableConfiguration + + enabledColumn + 16 + breakpointColumn + 216 + + Frame + {{0, 0}, {240, 195}} + RubberWindowFrame + 128 507 240 216 0 0 1024 746 + + Module + PBXDebugBreakpointsModule + Proportion + 195pt + + + Proportion + 196pt + + + Name + Breakpoints + ServiceClasses + + PBXDebugBreakpointsModule + + StatusbarIsVisible + + TableOfContents + + 1C0AD2AD069F1E9B00FABCE6 + 9594090B096A7288007CCCF8 + 1CD052930623707200166675 + + WindowString + 128 507 240 216 0 0 1024 746 + WindowToolGUID + 1C0AD2AD069F1E9B00FABCE6 + WindowToolIsVisible + + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + + diff --git a/Vocalese.xcodeproj/neeri.mode1v3 b/Vocalese.xcodeproj/neeri.mode1v3 new file mode 100644 index 0000000..20003d8 --- /dev/null +++ b/Vocalese.xcodeproj/neeri.mode1v3 @@ -0,0 +1,1435 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXRunSessionModule + Name + Run Log + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 95D7BF950AA6A40E00D5E02C + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 32 + MinorVersion + 1 + Name + Default + Notifications + + OpenEditors + + + Content + + PBXProjectModuleGUID + 95FA70960AB3370800B2D764 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {763, 552}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 203 96 763 593 0 0 1024 746 + + + + Content + + PBXProjectModuleGUID + 956999A10AB370CD0033F43C + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + StatusBarVisibility + + + Geometry + + Frame + {{0, 20}, {763, 552}} + PBXModuleWindowStatusBarHidden2 + + RubberWindowFrame + 38 127 763 593 0 0 1024 746 + + + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-target-popup + active-buildstyle-popup + action + NSToolbarFlexibleSpaceItem + buildOrClean + build-and-goOrGo + com.apple.ide.PBXToolbarStopButton + get-info + toggle-editor + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 2A37F4AAFDCFA73011CA2CEA + 2A37F4B8FDCFA73011CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 9 + 4 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 338}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 356}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 167 327 690 397 0 0 1024 746 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + MyNewFile14.java + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + MyNewFile14.java + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {482, 0}} + RubberWindowFrame + 167 327 690 397 0 0 1024 746 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 5}, {482, 351}} + RubberWindowFrame + 167 327 690 397 0 0 1024 746 + + Module + XCDetailModule + Proportion + 351pt + + + Proportion + 482pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 956999870AB36FA30033F43C + 1CE0B1FE06471DED0097A5F4 + 956999880AB36FA30033F43C + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 956999A10AB370CD0033F43C + 956999940AB36FA30033F43C + 956999950AB36FA30033F43C + 956999960AB36FA30033F43C + 95D7BFC80AA6C1A500D5E02C + 95D7BFC00AA6C1A500D5E02C + 95FA70960AB3370800B2D764 + 1CD10A99069EF8BA00B06720 + /Users/neeri/Development/Vocalese/Vocalese.xcodeproj + + WindowString + 167 327 690 397 0 0 1024 746 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {764, 293}} + RubberWindowFrame + 188 126 764 575 0 0 1024 746 + + Module + PBXNavigatorGroup + Proportion + 293pt + + + ContentConfiguration + + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 298}, {764, 236}} + RubberWindowFrame + 188 126 764 575 0 0 1024 746 + + Module + PBXBuildResultsModule + Proportion + 236pt + + + Proportion + 534pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 95D7BFC00AA6C1A500D5E02C + 9569998C0AB36FA30033F43C + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowString + 188 126 764 575 0 0 1024 746 + WindowToolGUID + 95D7BFC00AA6C1A500D5E02C + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {310, 200}} + {{310, 0}, {384, 200}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 200}} + {{0, 200}, {694, 181}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 381}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 154 + + Frame + {{310, 0}, {384, 200}} + RubberWindowFrame + 254 208 694 422 0 0 1024 746 + + RubberWindowFrame + 254 208 694 422 0 0 1024 746 + + Module + PBXDebugSessionModule + Proportion + 381pt + + + Proportion + 381pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 9569998D0AB36FA30033F43C + 1C162984064C10D400B95A72 + 9569998E0AB36FA30033F43C + 9569998F0AB36FA30033F43C + 956999900AB36FA30033F43C + 956999910AB36FA30033F43C + 956999920AB36FA30033F43C + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 254 208 694 422 0 0 1024 746 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + Identifier + windowTool.find + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CD0528D0623707200166675 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {781, 167}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 50% + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{8, 0}, {773, 254}} + RubberWindowFrame + 62 385 781 470 0 0 1440 878 + + Module + PBXProjectFindModule + Proportion + 50% + + + Proportion + 428pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C530D57069F1CE1000CFCEE + 1C530D58069F1CE1000CFCEE + 1C530D59069F1CE1000CFCEE + 1CDD528C0622207200134675 + 1C530D5A069F1CE1000CFCEE + 1CE0B1FE06471DED0097A5F4 + 1CD0528E0623707200166675 + + WindowString + 62 385 781 470 0 0 1440 878 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + 0 + + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {603, 492}} + RubberWindowFrame + 188 168 603 533 0 0 1024 746 + + Module + PBXDebugCLIModule + Proportion + 492pt + + + Proportion + 492pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 95D7BFC80AA6C1A500D5E02C + 956999930AB36FA30033F43C + 1C78EAAC065D492600B07095 + + WindowString + 188 168 603 533 0 0 1024 746 + WindowToolGUID + 95D7BFC80AA6C1A500D5E02C + WindowToolIsVisible + + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + FirstTimeWindowDisplayed + + Identifier + windowTool.run + IsVertical + + Layout + + + Dock + + Proportion + 159pt + + + Name + Run Log + ServiceClasses + + PBXRunSessionModule + + StatusbarIsVisible + + TableOfContents + + 95D7BFCA0AA6C1A500D5E02C + 95D7BFCB0AA6C1A500D5E02C + + ToolbarConfiguration + xcode.toolbar.config.run + WindowString + 209 478 459 200 0 0 1024 746 + WindowToolGUID + 95D7BFCA0AA6C1A500D5E02C + WindowToolIsVisible + + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.09500122070312 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + 0 + Layout + + + Dock + + + BecomeActive + 1 + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + diff --git a/Vocalese.xcodeproj/neeri.pbxuser b/Vocalese.xcodeproj/neeri.pbxuser new file mode 100644 index 0000000..87e6b5c --- /dev/null +++ b/Vocalese.xcodeproj/neeri.pbxuser @@ -0,0 +1,346 @@ +// !$*UTF8*$! +{ + 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { + activeBuildConfigurationName = Development; + activeExecutable = 954D740509540691007D9571 /* Vocalese */; + activeTarget = 8D15AC270486D014006FF6A4 /* Vocalese */; + addToTargets = ( + 8D15AC270486D014006FF6A4 /* Vocalese */, + ); + breakpoints = ( + 95B66671096E64FD00FE18C9 /* VLSheetViewNotes.mm:21 */, + ); + codeSenseManager = 954D7414095406B2007D9571 /* Code sense */; + executables = ( + 954D740509540691007D9571 /* Vocalese */, + 955E595D0957C0FC0045FDA5 /* TVLChord */, + 952CBB99095FD19D00434E43 /* TVLSoundOut */, + 959408A1096922CA007CCCF8 /* TVLEdit */, + ); + perUserDictionary = { + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = 1; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 243, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 200, + 63, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 179531674; + PBXWorkspaceStateSaveDate = 179531674; + }; + sourceControlManager = 954D7413095406B2007D9571 /* Source Control */; + userBuildSettings = { + }; + }; + 2A37F4ACFDCFA73011CA2CEA /* VLDocument.mm */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1748, 1568}}"; + sepNavSelRange = "{539, 0}"; + sepNavVisRect = "{{0, 440}, {818, 338}}"; + sepNavWindowFrame = "{{171, 76}, {763, 649}}"; + }; + }; + 2A37F4AEFDCFA73011CA2CEA /* VLDocument.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {724, 520}}"; + sepNavSelRange = "{347, 0}"; + sepNavVisRect = "{{0, 0}, {724, 520}}"; + sepNavWindowFrame = "{{15, 92}, {763, 649}}"; + }; + }; + 2A37F4BAFDCFA73011CA2CEA /* English */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {724, 535}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 0}, {724, 535}}"; + sepNavWindowFrame = "{{61, 50}, {763, 649}}"; + }; + }; + 8D15AC270486D014006FF6A4 /* Vocalese */ = { + activeExec = 0; + executables = ( + 954D740509540691007D9571 /* Vocalese */, + ); + }; + 952CBB97095FD19D00434E43 /* TVLSoundOut */ = { + activeExec = 0; + executables = ( + 952CBB99095FD19D00434E43 /* TVLSoundOut */, + ); + }; + 952CBB99095FD19D00434E43 /* TVLSoundOut */ = { + isa = PBXExecutable; + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 1; + configStateDict = { + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = TVLSoundOut; + sourceDirectories = ( + ); + }; + 952CBB9A095FD1CA00434E43 /* VLSoundOut.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {724, 2030}}"; + sepNavSelRange = "{548, 0}"; + sepNavVisRect = "{{0, 1510}, {724, 520}}"; + sepNavWindowFrame = "{{107, 8}, {763, 649}}"; + }; + }; + 952CBB9E095FD1D900434E43 /* TVLSoundOut.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {944, 392}}"; + sepNavSelRange = "{166, 0}"; + sepNavVisRect = "{{0, 0}, {944, 214}}"; + }; + }; + 952DCD76096BBB11001C2316 /* VLSheetViewChords.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {724, 520}}"; + sepNavSelRange = "{150, 0}"; + sepNavVisRect = "{{0, 0}, {724, 520}}"; + sepNavWindowFrame = "{{15, 92}, {763, 649}}"; + }; + }; + 954D740509540691007D9571 /* Vocalese */ = { + isa = PBXExecutable; + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 1; + configStateDict = { + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = Vocalese; + savedGlobals = { + }; + sourceDirectories = ( + ); + variableFormatDictionary = { + }; + }; + 954D7413095406B2007D9571 /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + }; + scmType = ""; + }; + 954D7414095406B2007D9571 /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 955E58E3095658AB0045FDA5 /* VLModel.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {704, 3080}}"; + sepNavSelRange = "{2267, 0}"; + sepNavVisRect = "{{0, 558}, {704, 497}}"; + sepNavWindowFrame = "{{203, 40}, {763, 649}}"; + }; + }; + 955E58E4095658AB0045FDA5 /* VLModel.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {704, 4564}}"; + sepNavSelRange = "{9472, 29}"; + sepNavVisRect = "{{0, 2375}, {704, 497}}"; + sepNavWindowFrame = "{{256, 62}, {763, 649}}"; + }; + }; + 955E595B0957C0FC0045FDA5 /* TVLChord */ = { + activeExec = 0; + executables = ( + 955E595D0957C0FC0045FDA5 /* TVLChord */, + ); + }; + 955E595D0957C0FC0045FDA5 /* TVLChord */ = { + isa = PBXExecutable; + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 1; + configStateDict = { + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = TVLChord; + sourceDirectories = ( + ); + }; + 955E59600957C1400045FDA5 /* TVLChord.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {724, 520}}"; + sepNavSelRange = "{557, 0}"; + sepNavVisRect = "{{0, 0}, {724, 520}}"; + sepNavWindowFrame = "{{84, 29}, {763, 649}}"; + }; + }; + 9594089F096922CA007CCCF8 /* TVLEdit */ = { + activeExec = 0; + executables = ( + 959408A1096922CA007CCCF8 /* TVLEdit */, + ); + }; + 959408A1096922CA007CCCF8 /* TVLEdit */ = { + isa = PBXExecutable; + activeArgIndex = 2147483647; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 1; + configStateDict = { + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = TVLEdit; + sourceDirectories = ( + ); + }; + 959408AC096922EA007CCCF8 /* TVLEdit.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {704, 2044}}"; + sepNavSelRange = "{1445, 0}"; + sepNavVisRect = "{{0, 298}, {704, 497}}"; + sepNavWindowFrame = "{{120, 85}, {763, 649}}"; + }; + }; + 95B66653096BC6A100FE18C9 /* VLSheetViewInternal.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {724, 520}}"; + sepNavSelRange = "{792, 0}"; + sepNavVisRect = "{{0, 0}, {724, 520}}"; + sepNavWindowFrame = "{{15, 92}, {763, 649}}"; + }; + }; + 95B66656096BCA1F00FE18C9 /* VLSheetViewNotes.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {704, 520}}"; + sepNavSelRange = "{181, 0}"; + sepNavVisRect = "{{0, 0}, {704, 520}}"; + sepNavWindowFrame = "{{15, 92}, {763, 649}}"; + }; + }; + 95B66657096BCA1F00FE18C9 /* VLSheetViewNotes.mm */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {704, 3976}}"; + sepNavSelRange = "{5055, 0}"; + sepNavVisRect = "{{0, 2576}, {704, 497}}"; + sepNavWindowFrame = "{{38, 71}, {763, 649}}"; + }; + }; + 95B66671096E64FD00FE18C9 /* VLSheetViewNotes.mm:21 */ = { + isa = PBXFileBreakpoint; + actions = ( + ); + breakpointStyle = 0; + continueAfterActions = 0; + countType = 0; + delayBeforeContinue = 0; + fileReference = 95B66657096BCA1F00FE18C9 /* VLSheetViewNotes.mm */; + functionName = "-restoreCursorLocation"; + hitCount = 0; + ignoreCount = 0; + lineNumber = 21; + modificationTime = 179531977.512253; + state = 2; + }; + 95BDA15709540BF1009F9D65 /* VLSheetView.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {704, 1064}}"; + sepNavSelRange = "{890, 0}"; + sepNavVisRect = "{{0, 434}, {704, 497}}"; + sepNavWindowFrame = "{{242, 97}, {763, 649}}"; + }; + }; + 95BDA15809540BF1009F9D65 /* VLSheetView.mm */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {704, 4410}}"; + sepNavSelRange = "{3053, 0}"; + sepNavVisRect = "{{0, 0}, {704, 497}}"; + sepNavWindowFrame = "{{164, 35}, {763, 649}}"; + }; + }; +} diff --git a/Vocalese.xcodeproj/project.pbxproj b/Vocalese.xcodeproj/project.pbxproj new file mode 100644 index 0000000..9a97642 --- /dev/null +++ b/Vocalese.xcodeproj/project.pbxproj @@ -0,0 +1,734 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */; }; + 8D15AC2D0486D014006FF6A4 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */; }; + 8D15AC2E0486D014006FF6A4 /* VLDocument.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B4FDCFA73011CA2CEA /* VLDocument.nib */; }; + 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165FFE840EACC02AAC07 /* InfoPlist.strings */; }; + 8D15AC310486D014006FF6A4 /* VLDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* VLDocument.mm */; settings = {ATTRIBUTES = (); }; }; + 8D15AC320486D014006FF6A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; + 952CBB9C095FD1CA00434E43 /* VLSoundOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 952CBB9A095FD1CA00434E43 /* VLSoundOut.cpp */; }; + 952CBB9D095FD1CA00434E43 /* VLSoundOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 952CBB9A095FD1CA00434E43 /* VLSoundOut.cpp */; }; + 952CBB9F095FD1D900434E43 /* TVLSoundOut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 952CBB9E095FD1D900434E43 /* TVLSoundOut.cpp */; }; + 952CBBB4095FD34F00434E43 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 952CBBB2095FD34F00434E43 /* AudioToolbox.framework */; }; + 952CBBB5095FD34F00434E43 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 952CBBB3095FD34F00434E43 /* AudioUnit.framework */; }; + 952CBBB6095FD37300434E43 /* VLModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E58E4095658AB0045FDA5 /* VLModel.cpp */; }; + 952DCD78096BBB11001C2316 /* VLSheetViewChords.mm in Sources */ = {isa = PBXBuildFile; fileRef = 952DCD77096BBB11001C2316 /* VLSheetViewChords.mm */; }; + 955E58E5095658AB0045FDA5 /* VLModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E58E4095658AB0045FDA5 /* VLModel.cpp */; }; + 955E59610957C1400045FDA5 /* TVLChord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E59600957C1400045FDA5 /* TVLChord.cpp */; }; + 955E59640957C15A0045FDA5 /* VLModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E58E4095658AB0045FDA5 /* VLModel.cpp */; }; + 95932B91096527700008B0DB /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 952CBBB3095FD34F00434E43 /* AudioUnit.framework */; }; + 95932B92096527710008B0DB /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 952CBBB2095FD34F00434E43 /* AudioToolbox.framework */; }; + 959408AD096922EA007CCCF8 /* TVLEdit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 959408AC096922EA007CCCF8 /* TVLEdit.cpp */; }; + 959408AE096922F7007CCCF8 /* VLModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 955E58E4095658AB0045FDA5 /* VLModel.cpp */; }; + 95B3E1A70960E58B000E9C0D /* Music in Resources */ = {isa = PBXBuildFile; fileRef = 95B3E1980960E58B000E9C0D /* Music */; }; + 95B66658096BCA1F00FE18C9 /* VLSheetViewNotes.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95B66657096BCA1F00FE18C9 /* VLSheetViewNotes.mm */; }; + 95BDA15909540BF1009F9D65 /* VLSheetView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 95BDA15809540BF1009F9D65 /* VLSheetView.mm */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 2A37F4ACFDCFA73011CA2CEA /* VLDocument.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLDocument.mm; path = Sources/VLDocument.mm; sourceTree = ""; }; + 2A37F4AEFDCFA73011CA2CEA /* VLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLDocument.h; path = Sources/VLDocument.h; sourceTree = ""; }; + 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Sources/main.m; sourceTree = ""; }; + 2A37F4B5FDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/VLDocument.nib; sourceTree = ""; }; + 2A37F4B7FDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = ""; }; + 2A37F4BAFDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/Credits.rtf; sourceTree = ""; }; + 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 32DBCF750370BD2300C91783 /* Vocalese_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Vocalese_Prefix.pch; path = Sources/Vocalese_Prefix.pch; sourceTree = ""; }; + 8D15AC360486D014006FF6A4 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = Info.plist; path = Resources/Info.plist; sourceTree = ""; }; + 8D15AC370486D014006FF6A4 /* Vocalese.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Vocalese.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 952CBB98095FD19D00434E43 /* TVLSoundOut */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TVLSoundOut; sourceTree = BUILT_PRODUCTS_DIR; }; + 952CBB9A095FD1CA00434E43 /* VLSoundOut.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = VLSoundOut.cpp; path = Sources/VLSoundOut.cpp; sourceTree = ""; }; + 952CBB9B095FD1CA00434E43 /* VLSoundOut.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = VLSoundOut.h; path = Sources/VLSoundOut.h; sourceTree = ""; }; + 952CBB9E095FD1D900434E43 /* TVLSoundOut.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = TVLSoundOut.cpp; path = Tests/TVLSoundOut.cpp; sourceTree = ""; }; + 952CBBB2095FD34F00434E43 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; + 952CBBB3095FD34F00434E43 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; + 952DCD76096BBB11001C2316 /* VLSheetViewChords.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLSheetViewChords.h; path = Sources/VLSheetViewChords.h; sourceTree = ""; }; + 952DCD77096BBB11001C2316 /* VLSheetViewChords.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLSheetViewChords.mm; path = Sources/VLSheetViewChords.mm; sourceTree = ""; }; + 955E58E3095658AB0045FDA5 /* VLModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLModel.h; path = Sources/VLModel.h; sourceTree = ""; }; + 955E58E4095658AB0045FDA5 /* VLModel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VLModel.cpp; path = Sources/VLModel.cpp; sourceTree = ""; }; + 955E595C0957C0FC0045FDA5 /* TVLChord */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TVLChord; sourceTree = BUILT_PRODUCTS_DIR; }; + 955E59600957C1400045FDA5 /* TVLChord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TVLChord.cpp; path = Tests/TVLChord.cpp; sourceTree = ""; }; + 959408A0096922CA007CCCF8 /* TVLEdit */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TVLEdit; sourceTree = BUILT_PRODUCTS_DIR; }; + 959408AC096922EA007CCCF8 /* TVLEdit.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = TVLEdit.cpp; path = Tests/TVLEdit.cpp; sourceTree = ""; }; + 95B3E1980960E58B000E9C0D /* Music */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Music; path = Resources/Music; sourceTree = ""; }; + 95B66653096BC6A100FE18C9 /* VLSheetViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = VLSheetViewInternal.h; path = Sources/VLSheetViewInternal.h; sourceTree = ""; }; + 95B66656096BCA1F00FE18C9 /* VLSheetViewNotes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLSheetViewNotes.h; path = Sources/VLSheetViewNotes.h; sourceTree = ""; }; + 95B66657096BCA1F00FE18C9 /* VLSheetViewNotes.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLSheetViewNotes.mm; path = Sources/VLSheetViewNotes.mm; sourceTree = ""; }; + 95BDA15709540BF1009F9D65 /* VLSheetView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VLSheetView.h; path = Sources/VLSheetView.h; sourceTree = ""; }; + 95BDA15809540BF1009F9D65 /* VLSheetView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = VLSheetView.mm; path = Sources/VLSheetView.mm; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D15AC330486D014006FF6A4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */, + 95932B91096527700008B0DB /* AudioUnit.framework in Frameworks */, + 95932B92096527710008B0DB /* AudioToolbox.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 952CBB96095FD19D00434E43 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 952CBBB4095FD34F00434E43 /* AudioToolbox.framework in Frameworks */, + 952CBBB5095FD34F00434E43 /* AudioUnit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 955E595A0957C0FC0045FDA5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9594089E096922CA007CCCF8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, + 952CBBB2095FD34F00434E43 /* AudioToolbox.framework */, + 952CBBB3095FD34F00434E43 /* AudioUnit.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */, + 13E42FBA07B3F13500E4EEF1 /* CoreData.framework */, + 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FB0FE9D524F11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D15AC370486D014006FF6A4 /* Vocalese.app */, + 955E595C0957C0FC0045FDA5 /* TVLChord */, + 952CBB98095FD19D00434E43 /* TVLSoundOut */, + 959408A0096922CA007CCCF8 /* TVLEdit */, + ); + name = Products; + sourceTree = ""; + }; + 2A37F4AAFDCFA73011CA2CEA /* Vocalese */ = { + isa = PBXGroup; + children = ( + 2A37F4ABFDCFA73011CA2CEA /* Classes */, + 2A37F4AFFDCFA73011CA2CEA /* Other Sources */, + 955E59560957C0C50045FDA5 /* Tests */, + 2A37F4B8FDCFA73011CA2CEA /* Resources */, + 2A37F4C3FDCFA73011CA2CEA /* Frameworks */, + 19C28FB0FE9D524F11CA2CBB /* Products */, + ); + name = Vocalese; + sourceTree = ""; + }; + 2A37F4ABFDCFA73011CA2CEA /* Classes */ = { + isa = PBXGroup; + children = ( + 952CBB9A095FD1CA00434E43 /* VLSoundOut.cpp */, + 952CBB9B095FD1CA00434E43 /* VLSoundOut.h */, + 2A37F4AEFDCFA73011CA2CEA /* VLDocument.h */, + 2A37F4ACFDCFA73011CA2CEA /* VLDocument.mm */, + 955E58E3095658AB0045FDA5 /* VLModel.h */, + 955E58E4095658AB0045FDA5 /* VLModel.cpp */, + 95BDA15709540BF1009F9D65 /* VLSheetView.h */, + 95BDA15809540BF1009F9D65 /* VLSheetView.mm */, + 95B66653096BC6A100FE18C9 /* VLSheetViewInternal.h */, + 952DCD76096BBB11001C2316 /* VLSheetViewChords.h */, + 952DCD77096BBB11001C2316 /* VLSheetViewChords.mm */, + 95B66656096BCA1F00FE18C9 /* VLSheetViewNotes.h */, + 95B66657096BCA1F00FE18C9 /* VLSheetViewNotes.mm */, + ); + name = Classes; + sourceTree = ""; + }; + 2A37F4AFFDCFA73011CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 32DBCF750370BD2300C91783 /* Vocalese_Prefix.pch */, + 2A37F4B0FDCFA73011CA2CEA /* main.m */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 95B3E1980960E58B000E9C0D /* Music */, + 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */, + 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */, + 2A37F4B4FDCFA73011CA2CEA /* VLDocument.nib */, + 8D15AC360486D014006FF6A4 /* Info.plist */, + 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = ""; + }; + 2A37F4C3FDCFA73011CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */, + 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 955E59560957C0C50045FDA5 /* Tests */ = { + isa = PBXGroup; + children = ( + 959408AC096922EA007CCCF8 /* TVLEdit.cpp */, + 952CBB9E095FD1D900434E43 /* TVLSoundOut.cpp */, + 955E59600957C1400045FDA5 /* TVLChord.cpp */, + ); + name = Tests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D15AC270486D014006FF6A4 /* Vocalese */ = { + isa = PBXNativeTarget; + buildConfigurationList = 95D7BF780AA699C600D5E02C /* Build configuration list for PBXNativeTarget "Vocalese" */; + buildPhases = ( + 8D15AC2B0486D014006FF6A4 /* Resources */, + 8D15AC300486D014006FF6A4 /* Sources */, + 8D15AC330486D014006FF6A4 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Vocalese; + productInstallPath = "$(HOME)/Applications"; + productName = Vocalese; + productReference = 8D15AC370486D014006FF6A4 /* Vocalese.app */; + productType = "com.apple.product-type.application"; + }; + 952CBB97095FD19D00434E43 /* TVLSoundOut */ = { + isa = PBXNativeTarget; + buildConfigurationList = 95D7BF800AA699C600D5E02C /* Build configuration list for PBXNativeTarget "TVLSoundOut" */; + buildPhases = ( + 952CBB95095FD19D00434E43 /* Sources */, + 952CBB96095FD19D00434E43 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TVLSoundOut; + productName = TVLSoundOut; + productReference = 952CBB98095FD19D00434E43 /* TVLSoundOut */; + productType = "com.apple.product-type.tool"; + }; + 955E595B0957C0FC0045FDA5 /* TVLChord */ = { + isa = PBXNativeTarget; + buildConfigurationList = 95D7BF7C0AA699C600D5E02C /* Build configuration list for PBXNativeTarget "TVLChord" */; + buildPhases = ( + 955E59590957C0FC0045FDA5 /* Sources */, + 955E595A0957C0FC0045FDA5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TVLChord; + productName = TVLChord; + productReference = 955E595C0957C0FC0045FDA5 /* TVLChord */; + productType = "com.apple.product-type.tool"; + }; + 9594089F096922CA007CCCF8 /* TVLEdit */ = { + isa = PBXNativeTarget; + buildConfigurationList = 95D7BF840AA699C600D5E02C /* Build configuration list for PBXNativeTarget "TVLEdit" */; + buildPhases = ( + 9594089D096922CA007CCCF8 /* Sources */, + 9594089E096922CA007CCCF8 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TVLEdit; + productName = TVLEdit; + productReference = 959408A0096922CA007CCCF8 /* TVLEdit */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 95D7BF740AA699C600D5E02C /* Build configuration list for PBXProject "Vocalese" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 2A37F4AAFDCFA73011CA2CEA /* Vocalese */; + projectDirPath = ""; + projectRoot = ""; + shouldCheckCompatibility = 1; + targets = ( + 8D15AC270486D014006FF6A4 /* Vocalese */, + 955E595B0957C0FC0045FDA5 /* TVLChord */, + 952CBB97095FD19D00434E43 /* TVLSoundOut */, + 9594089F096922CA007CCCF8 /* TVLEdit */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D15AC2B0486D014006FF6A4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */, + 8D15AC2D0486D014006FF6A4 /* MainMenu.nib in Resources */, + 8D15AC2E0486D014006FF6A4 /* VLDocument.nib in Resources */, + 8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */, + 95B3E1A70960E58B000E9C0D /* Music in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D15AC300486D014006FF6A4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D15AC310486D014006FF6A4 /* VLDocument.mm in Sources */, + 8D15AC320486D014006FF6A4 /* main.m in Sources */, + 95BDA15909540BF1009F9D65 /* VLSheetView.mm in Sources */, + 955E58E5095658AB0045FDA5 /* VLModel.cpp in Sources */, + 952CBB9D095FD1CA00434E43 /* VLSoundOut.cpp in Sources */, + 952DCD78096BBB11001C2316 /* VLSheetViewChords.mm in Sources */, + 95B66658096BCA1F00FE18C9 /* VLSheetViewNotes.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 952CBB95095FD19D00434E43 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 952CBB9C095FD1CA00434E43 /* VLSoundOut.cpp in Sources */, + 952CBB9F095FD1D900434E43 /* TVLSoundOut.cpp in Sources */, + 952CBBB6095FD37300434E43 /* VLModel.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 955E59590957C0FC0045FDA5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 955E59610957C1400045FDA5 /* TVLChord.cpp in Sources */, + 955E59640957C15A0045FDA5 /* VLModel.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9594089D096922CA007CCCF8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 959408AD096922EA007CCCF8 /* TVLEdit.cpp in Sources */, + 959408AE096922F7007CCCF8 /* VLModel.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C165FFE840EACC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C1660FE840EACC02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 2A37F4B4FDCFA73011CA2CEA /* VLDocument.nib */ = { + isa = PBXVariantGroup; + children = ( + 2A37F4B5FDCFA73011CA2CEA /* English */, + ); + name = VLDocument.nib; + sourceTree = ""; + }; + 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */ = { + isa = PBXVariantGroup; + children = ( + 2A37F4B7FDCFA73011CA2CEA /* English */, + ); + name = MainMenu.nib; + sourceTree = ""; + }; + 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 2A37F4BAFDCFA73011CA2CEA /* English */, + ); + name = Credits.rtf; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 95D7BF750AA699C600D5E02C /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Development; + }; + 95D7BF760AA699C600D5E02C /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Deployment; + }; + 95D7BF770AA699C600D5E02C /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Default; + }; + 95D7BF790AA699C600D5E02C /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Sources/Vocalese_Prefix.pch; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = Vocalese; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Development; + }; + 95D7BF7A0AA699C600D5E02C /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Sources/Vocalese_Prefix.pch; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PREBINDING = NO; + PRODUCT_NAME = Vocalese; + WRAPPER_EXTENSION = app; + ZERO_LINK = NO; + }; + name = Deployment; + }; + 95D7BF7B0AA699C600D5E02C /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Sources/Vocalese_Prefix.pch; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = Vocalese; + WRAPPER_EXTENSION = app; + }; + name = Default; + }; + 95D7BF7D0AA699C600D5E02C /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = TVLChord; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + ZERO_LINK = YES; + }; + name = Development; + }; + 95D7BF7E0AA699C600D5E02C /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = TVLChord; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + ZERO_LINK = NO; + }; + name = Deployment; + }; + 95D7BF7F0AA699C600D5E02C /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = TVLChord; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Default; + }; + 95D7BF810AA699C600D5E02C /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = TVLSoundOut; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + ZERO_LINK = YES; + }; + name = Development; + }; + 95D7BF820AA699C600D5E02C /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = TVLSoundOut; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + ZERO_LINK = NO; + }; + name = Deployment; + }; + 95D7BF830AA699C600D5E02C /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = TVLSoundOut; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Default; + }; + 95D7BF850AA699C600D5E02C /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = TVLEdit; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + ZERO_LINK = YES; + }; + name = Development; + }; + 95D7BF860AA699C600D5E02C /* Deployment */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = TVLEdit; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + ZERO_LINK = NO; + }; + name = Deployment; + }; + 95D7BF870AA699C600D5E02C /* Default */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = "$(HOME)/bin"; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + OTHER_REZFLAGS = ""; + PREBINDING = NO; + PRODUCT_NAME = TVLEdit; + SECTORDER_FLAGS = ""; + WARNING_CFLAGS = ( + "-Wmost", + "-Wno-four-char-constants", + "-Wno-unknown-pragmas", + ); + }; + name = Default; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 95D7BF740AA699C600D5E02C /* Build configuration list for PBXProject "Vocalese" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 95D7BF750AA699C600D5E02C /* Development */, + 95D7BF760AA699C600D5E02C /* Deployment */, + 95D7BF770AA699C600D5E02C /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + 95D7BF780AA699C600D5E02C /* Build configuration list for PBXNativeTarget "Vocalese" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 95D7BF790AA699C600D5E02C /* Development */, + 95D7BF7A0AA699C600D5E02C /* Deployment */, + 95D7BF7B0AA699C600D5E02C /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + 95D7BF7C0AA699C600D5E02C /* Build configuration list for PBXNativeTarget "TVLChord" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 95D7BF7D0AA699C600D5E02C /* Development */, + 95D7BF7E0AA699C600D5E02C /* Deployment */, + 95D7BF7F0AA699C600D5E02C /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + 95D7BF800AA699C600D5E02C /* Build configuration list for PBXNativeTarget "TVLSoundOut" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 95D7BF810AA699C600D5E02C /* Development */, + 95D7BF820AA699C600D5E02C /* Deployment */, + 95D7BF830AA699C600D5E02C /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; + 95D7BF840AA699C600D5E02C /* Build configuration list for PBXNativeTarget "TVLEdit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 95D7BF850AA699C600D5E02C /* Development */, + 95D7BF860AA699C600D5E02C /* Deployment */, + 95D7BF870AA699C600D5E02C /* Default */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Default; + }; +/* End XCConfigurationList section */ + }; + rootObject = 2A37F4A9FDCFA73011CA2CEA /* Project object */; +}