From 0dd03637090832e6032ba1225262e213da28ba7b Mon Sep 17 00:00:00 2001 From: vspader Date: Tue, 7 Jun 2005 04:01:00 +0000 Subject: [PATCH] Fixed play button and minor bugs. --- Changelog | 8 +- Cog.xcode/project.pbxproj | 16 + Cog.xcode/xugg.mode1 | 213 +-- Cog.xcode/xugg.pbxuser | 1488 ++++++++++--------- English.lproj/MainMenu.nib/classes.nib | 3 + English.lproj/MainMenu.nib/info.nib | 4 +- English.lproj/MainMenu.nib/keyedobjects.nib | Bin 40581 -> 41893 bytes Playlist/PlaylistView.m | 4 +- README | 26 +- Sound.h | 8 +- Sound.m | 105 +- SoundController.h | 8 + SoundController.m | 33 +- SoundFile/ShnFile.m | 4 +- 14 files changed, 1109 insertions(+), 811 deletions(-) diff --git a/Changelog b/Changelog index b7dad8524..fc4bce4a0 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,9 @@ Awesomized id3v2 and tagging support courtesy of TagLib. Dramatically improved performance of monkeys audio codec. -minor bug fixes. \ No newline at end of file +SHN and Wavpack support. +AAC support. +Fixed 10.3 bug where files would not be removed from the playlist. +Added tooltips and control menu. +Fixed play button so it now plays the currently selected song if no song is playing. Otherwise, it does pause/resume. + +TODO: have button images change, play to pause...shuffle and repeat \ No newline at end of file diff --git a/Cog.xcode/project.pbxproj b/Cog.xcode/project.pbxproj index eb58fd98d..114549eac 100644 --- a/Cog.xcode/project.pbxproj +++ b/Cog.xcode/project.pbxproj @@ -202,6 +202,7 @@ 29B97318FDCFA39411CA2CEA, 8E10DBEF084BBCF00013815C, 8E5A90B0084CBC2F00AE6D62, + 8E8F3F9B0855499500BCF803, ); isa = PBXGroup; name = Resources; @@ -383,6 +384,7 @@ 8E6F2A1908480D010011F126, 8E10DBF0084BBCF00013815C, 8E5A90B1084CBC2F00AE6D62, + 8E8F3F9C0855499500BCF803, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; @@ -1099,6 +1101,20 @@ settings = { }; }; + 8E8F3F9B0855499500BCF803 = { + fileEncoding = 30; + isa = PBXFileReference; + lastKnownFileType = text; + path = README; + refType = 4; + sourceTree = ""; + }; + 8E8F3F9C0855499500BCF803 = { + fileRef = 8E8F3F9B0855499500BCF803; + isa = PBXBuildFile; + settings = { + }; + }; 8EAB85FC0846889B000A9CEC = { isa = PBXFileReference; lastKnownFileType = image.png; diff --git a/Cog.xcode/xugg.mode1 b/Cog.xcode/xugg.mode1 index c1635d712..b905f4b4a 100644 --- a/Cog.xcode/xugg.mode1 +++ b/Cog.xcode/xugg.mode1 @@ -255,20 +255,20 @@ 29B97314FDCFA39411CA2CEA 080E96DDFE201D6D7F000001 - 8EF6FA64082DA525006F7BE6 + 8E47215C08318D12001F89FA + 29B97317FDCFA39411CA2CEA 1C37FABC05509CD000000102 PBXSmartGroupTreeModuleOutlineStateSelectionKey - 23 - 5 - 1 + 32 + 24 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 565}} + {{0, 61}, {186, 565}} PBXTopSmartGroupGIDs @@ -305,7 +305,7 @@ PBXProjectModuleGUID 1CE0B20306471E060097A5F4 PBXProjectModuleLabel - ShnFile.m + Changelog PBXSplitModuleInNavigatorKey Split0 @@ -313,11 +313,11 @@ PBXProjectModuleGUID 1CE0B20406471E060097A5F4 PBXProjectModuleLabel - ShnFile.m + Changelog _historyCapacity 0 bookmark - 8EB30E5F0854C90E009EA87F + 8E8F3FB008554B8000BCF803 history 8EF6FACD082DAA2B006F7BE6 @@ -330,50 +330,34 @@ 8E652A34083E1A7900A7AF1B 8E652A35083E1A7900A7AF1B 8E652A36083E1A7900A7AF1B - 8EDCBEF40840FA2200F5C7E3 8EDC88A90842F8DE007D1532 8EDC88B50842F936007D1532 8ED833CD08457E6B0033CDBD - 8E6F2A2708480D900011F126 8E10DC00084BBE490013815C - 8E10DC02084BBE490013815C 8E94D9D2084BEA32007F0AEB 8E94D9D3084BEA32007F0AEB - 8E5A90B7084CC25900AE6D62 8E5A90B8084CC25900AE6D62 8EA0A215084CC43F008DFEC9 - 8EA0A216084CC43F008DFEC9 - 8EA0A21A084CC43F008DFEC9 8E14E4A5084D089100246BCC - 8EC18D9F084E3D8200AE0BA9 - 8E9E2E81084FA7E400599965 - 8EC156F4084FEB8900BB24E8 8EC156F5084FEB8900BB24E8 8E2752B70850A92E001618CD 8E2BC83D0850F56200BEAC36 8EE2A5B808511A1800367489 8EE2A5B908511A1800367489 - 8E72BC630851408F00E34F1D 8E72BC640851408F00E34F1D 8EFC6D18085376D100C67D06 8EFC6DE7085380B800C67D06 8EFC6DE8085380B800C67D06 8EFC6DF0085380B800C67D06 - 8EFC6DF3085380B800C67D06 8EFC6E29085386CE00C67D06 8E3EDBC9085477D0007C6A53 8E3EDBCF085477D0007C6A53 8E3EDBD1085477D0007C6A53 8E8BAF10085494E000E9F14D - 8E8BAF780854976A00E9F14D 8E8BAF790854976A00E9F14D - 8E8BAF7A0854976A00E9F14D - 8E8BAF7C0854976A00E9F14D 8E91CCEE08549FEE0055EC68 8EB30D890854BEF1009EA87F 8EB30D8A0854BEF1009EA87F - 8EB30DAC0854BFEE009EA87F - 8EB30DAD0854BFEE009EA87F 8EB30DAE0854BFEE009EA87F 8EB30DDB0854C261009EA87F 8EB30DDC0854C261009EA87F @@ -383,8 +367,25 @@ 8EB30DE00854C261009EA87F 8EB30E1F0854C36A009EA87F 8EB30E200854C36A009EA87F - 8EB30E410854C6D6009EA87F - 8EB30E1E0854C36A009EA87F + 8E4D66E90854CD2C00816BEE + 8E4D66EA0854CD2C00816BEE + 8E4D67210854D2E700816BEE + 8E4D67D40854E7B100816BEE + 8E8F3F20085543D700BCF803 + 8E8F3F21085543D700BCF803 + 8E8F3F22085543D700BCF803 + 8E8F3F23085543D700BCF803 + 8E8F3F3F0855457A00BCF803 + 8E8F3F400855457A00BCF803 + 8E8F3F59085546B300BCF803 + 8E8F3F770855483300BCF803 + 8E8F3F780855483300BCF803 + 8E8F3F790855483300BCF803 + 8E8F3FA408554B8000BCF803 + 8E8F3FA508554B8000BCF803 + 8E8F3FA608554B8000BCF803 + 8E8F3FA708554B8000BCF803 + 8E8F3FA808554B8000BCF803 prevStack @@ -452,46 +453,57 @@ 8E8BAEB308548C9600E9F14D 8E8BAEB708548C9600E9F14D 8E8BAF17085494E000E9F14D - 8EB30D8D0854BEF1009EA87F - 8EB30D8E0854BEF1009EA87F - 8EB30D8F0854BEF1009EA87F - 8EB30D900854BEF1009EA87F - 8EB30D910854BEF1009EA87F - 8EB30D920854BEF1009EA87F - 8EB30D930854BEF1009EA87F - 8EB30D940854BEF1009EA87F - 8EB30D950854BEF1009EA87F - 8EB30D960854BEF1009EA87F - 8EB30D970854BEF1009EA87F - 8EB30D980854BEF1009EA87F 8EB30D990854BEF1009EA87F - 8EB30D9A0854BEF1009EA87F - 8EB30D9B0854BEF1009EA87F - 8EB30D9C0854BEF1009EA87F - 8EB30D9D0854BEF1009EA87F - 8EB30DB00854BFEE009EA87F - 8EB30DB10854BFEE009EA87F - 8EB30DB20854BFEE009EA87F - 8EB30DB30854BFEE009EA87F - 8EB30DB40854BFEE009EA87F - 8EB30DB50854BFEE009EA87F - 8EB30DE20854C261009EA87F - 8EB30DE30854C261009EA87F - 8EB30DE40854C261009EA87F - 8EB30DE50854C261009EA87F - 8EB30DE60854C261009EA87F - 8EB30DE70854C261009EA87F - 8EB30DE80854C261009EA87F - 8EB30DE90854C261009EA87F - 8EB30DEA0854C261009EA87F - 8EB30DEB0854C261009EA87F - 8EB30DEC0854C261009EA87F - 8EB30DED0854C261009EA87F - 8EB30DEE0854C261009EA87F - 8EB30E210854C36A009EA87F - 8EB30E220854C36A009EA87F - 8EB30E230854C36A009EA87F - 8EB30E420854C6D6009EA87F + 8E8F3ED00855401300BCF803 + 8E8F3ED10855401300BCF803 + 8E8F3ED20855401300BCF803 + 8E8F3ED30855401300BCF803 + 8E8F3ED40855401300BCF803 + 8E8F3ED50855401300BCF803 + 8E8F3ED60855401300BCF803 + 8E8F3ED70855401300BCF803 + 8E8F3ED80855401300BCF803 + 8E8F3ED90855401300BCF803 + 8E8F3EDA0855401300BCF803 + 8E8F3EDB0855401300BCF803 + 8E8F3EDC0855401300BCF803 + 8E8F3EDD0855401300BCF803 + 8E8F3EDE0855401300BCF803 + 8E8F3EDF0855401300BCF803 + 8E8F3EE00855401300BCF803 + 8E8F3EE10855401300BCF803 + 8E8F3EE20855401300BCF803 + 8E8F3EE30855401300BCF803 + 8E8F3F26085543D700BCF803 + 8E8F3F27085543D700BCF803 + 8E8F3F28085543D700BCF803 + 8E8F3F29085543D700BCF803 + 8E8F3F2A085543D700BCF803 + 8E8F3F2B085543D700BCF803 + 8E8F3F2C085543D700BCF803 + 8E8F3F2D085543D700BCF803 + 8E8F3F2E085543D700BCF803 + 8E8F3F420855457A00BCF803 + 8E8F3F430855457A00BCF803 + 8E8F3F440855457A00BCF803 + 8E8F3F450855457A00BCF803 + 8E8F3F460855457A00BCF803 + 8E8F3F470855457A00BCF803 + 8E8F3F510855461700BCF803 + 8E8F3F5B085546B300BCF803 + 8E8F3F5C085546B300BCF803 + 8E8F3F5D085546B300BCF803 + 8E8F3F690855478900BCF803 + 8E8F3F7B0855483300BCF803 + 8E8F3F7C0855483300BCF803 + 8E8F3F7D0855483300BCF803 + 8E8F3F7E0855483300BCF803 + 8E8F3FA908554B8000BCF803 + 8E8F3FAA08554B8000BCF803 + 8E8F3FAB08554B8000BCF803 + 8E8F3FAC08554B8000BCF803 + 8E8F3FAD08554B8000BCF803 + 8E8F3FAE08554B8000BCF803 SplitCount @@ -503,14 +515,14 @@ GeometryConfiguration Frame - {{0, 0}, {816, 404}} + {{0, 0}, {816, 578}} RubberWindowFrame 2 122 1024 624 0 0 1024 746 Module PBXNavigatorGroup Proportion - 404pt + 578pt ContentConfiguration @@ -523,14 +535,14 @@ GeometryConfiguration Frame - {{0, 409}, {816, 174}} + {{0, 583}, {816, 0}} RubberWindowFrame 2 122 1024 624 0 0 1024 746 Module XCDetailModule Proportion - 174pt + 0pt Proportion @@ -549,9 +561,9 @@ TableOfContents - 8EB30D9F0854BEF1009EA87F + 8E8F3E480855374000BCF803 1CE0B1FE06471DED0097A5F4 - 8EB30DA00854BEF1009EA87F + 8E8F3E490855374000BCF803 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 @@ -686,8 +698,13 @@ WindowOrderList 8EF6FAA6082DA951006F7BE6 - /Users/xugg/Projects/Cog/Cog.xcode + 8E8F3EE50855401300BCF803 + 8E8F3EE60855401300BCF803 + 8E7A9371083675B600771E14 + 1CD10A99069EF8BA00B06720 + 8E8F3E5B085538AB00BCF803 1C0AD2B3069F1EA900FABCE6 + /Users/xugg/Projects/Cog/Cog.xcode WindowString 2 122 1024 624 0 0 1024 746 @@ -713,7 +730,7 @@ PBXProjectModuleGUID 1CD0528F0623707200166675 PBXProjectModuleLabel - shn.h + Sound.m StatusBarVisibility @@ -769,7 +786,7 @@ TableOfContents 8EF6FAA6082DA951006F7BE6 - 8EB30D540854BDDD009EA87F + 8E8F3E8408553C6000BCF803 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID @@ -811,8 +828,8 @@ yes sizes - {{0, 0}, {225, 206}} - {{225, 0}, {799, 206}} + {{0, 0}, {184, 198}} + {{184, 0}, {840, 198}} VerticalSplitView @@ -827,8 +844,8 @@ yes sizes - {{0, 0}, {1024, 206}} - {{0, 206}, {1024, 378}} + {{0, 0}, {1024, 198}} + {{0, 198}, {1024, 386}} @@ -875,14 +892,14 @@ TableOfContents 1CD10A99069EF8BA00B06720 - 8E91CD450854A4BF0055EC68 + 8E8F3E55085538AB00BCF803 1C162984064C10D400B95A72 - 8E91CD460854A4BF0055EC68 - 8E91CD470854A4BF0055EC68 - 8E91CD480854A4BF0055EC68 - 8E91CD490854A4BF0055EC68 - 8E91CD4A0854A4BF0055EC68 - 8E91CD4B0854A4BF0055EC68 + 8E8F3E56085538AB00BCF803 + 8E8F3E57085538AB00BCF803 + 8E8F3E58085538AB00BCF803 + 8E8F3E59085538AB00BCF803 + 8E8F3E5A085538AB00BCF803 + 8E8F3E5B085538AB00BCF803 ToolbarConfiguration xcode.toolbar.config.debug @@ -909,14 +926,12 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID 1CDD528C0622207200134675 PBXProjectModuleLabel - PlaylistController.m + Sound.m StatusBarVisibility @@ -937,6 +952,8 @@ 342pt + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -972,8 +989,8 @@ TableOfContents 1C530D57069F1CE1000CFCEE - 8EA094300853FC4200EBC193 - 8EA094310853FC4200EBC193 + 8E4D67990854E47400816BEE + 8E4D679A0854E47400816BEE 1CDD528C0622207200134675 1CD0528E0623707200166675 @@ -1036,7 +1053,7 @@ TableOfContents 8E7A9371083675B600771E14 - 8E91CD4C0854A4BF0055EC68 + 8E8F3E5C085538AB00BCF803 1C78EAAC065D492600B07095 WindowString @@ -1081,8 +1098,8 @@ yes sizes - {{0, 0}, {491, 168}} - {{0, 173}, {491, 270}} + {{0, 0}, {366, 168}} + {{0, 173}, {366, 270}} VerticalSplitView @@ -1108,7 +1125,7 @@ Frame {{0, 0}, {1024, 583}} RubberWindowFrame - 4 123 1024 623 0 0 1024 746 + 3 123 1024 623 0 0 1024 746 Module PBXRunSessionModule @@ -1131,18 +1148,18 @@ TableOfContents 1C0AD2B3069F1EA900FABCE6 - 8EB30D820854BEA3009EA87F + 8E8F3E4C085537A500BCF803 1CD0528B0623707200166675 - 8EB30D830854BEA3009EA87F + 8E8F3E4D085537A500BCF803 ToolbarConfiguration xcode.toolbar.config.run WindowString - 4 123 1024 623 0 0 1024 746 + 3 123 1024 623 0 0 1024 746 WindowToolGUID 1C0AD2B3069F1EA900FABCE6 WindowToolIsVisible - + Identifier diff --git a/Cog.xcode/xugg.pbxuser b/Cog.xcode/xugg.pbxuser index 70520ba8e..a55005094 100644 --- a/Cog.xcode/xugg.pbxuser +++ b/Cog.xcode/xugg.pbxuser @@ -110,14 +110,13 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 139774232; - PBXWorkspaceStateSaveDate = 139774232; + PBXPerProjectTemplateStateSaveDate = 139802423; + PBXWorkspaceStateSaveDate = 139802423; }; perUserProjectItems = { 8E0EBF58084BAA56003A6E64 = 8E0EBF58084BAA56003A6E64; 8E0EBF59084BAA56003A6E64 = 8E0EBF59084BAA56003A6E64; 8E10DC00084BBE490013815C = 8E10DC00084BBE490013815C; - 8E10DC02084BBE490013815C = 8E10DC02084BBE490013815C; 8E10DC08084BBE490013815C = 8E10DC08084BBE490013815C; 8E14E4A5084D089100246BCC = 8E14E4A5084D089100246BCC; 8E14E4B3084D089100246BCC = 8E14E4B3084D089100246BCC; @@ -158,7 +157,10 @@ 8E4721E008319EFC001F89FA = 8E4721E008319EFC001F89FA; 8E4721E108319EFC001F89FA = 8E4721E108319EFC001F89FA; 8E4721E508319EFC001F89FA = 8E4721E508319EFC001F89FA; - 8E5A90B7084CC25900AE6D62 = 8E5A90B7084CC25900AE6D62; + 8E4D66E90854CD2C00816BEE = 8E4D66E90854CD2C00816BEE; + 8E4D66EA0854CD2C00816BEE = 8E4D66EA0854CD2C00816BEE; + 8E4D67210854D2E700816BEE = 8E4D67210854D2E700816BEE; + 8E4D67D40854E7B100816BEE = 8E4D67D40854E7B100816BEE; 8E5A90B8084CC25900AE6D62 = 8E5A90B8084CC25900AE6D62; 8E5A90BB084CC25900AE6D62 = 8E5A90BB084CC25900AE6D62; 8E6082C7083920310017AECF = 8E6082C7083920310017AECF; @@ -169,94 +171,105 @@ 8E652A36083E1A7900A7AF1B = 8E652A36083E1A7900A7AF1B; 8E652A39083E1A7900A7AF1B = 8E652A39083E1A7900A7AF1B; 8E652A3A083E1A7900A7AF1B = 8E652A3A083E1A7900A7AF1B; - 8E6F2A2708480D900011F126 = 8E6F2A2708480D900011F126; - 8E72BC630851408F00E34F1D = 8E72BC630851408F00E34F1D; 8E72BC640851408F00E34F1D = 8E72BC640851408F00E34F1D; 8E8BAEB208548C9600E9F14D = 8E8BAEB208548C9600E9F14D; 8E8BAEB308548C9600E9F14D = 8E8BAEB308548C9600E9F14D; 8E8BAEB708548C9600E9F14D = 8E8BAEB708548C9600E9F14D; 8E8BAF10085494E000E9F14D = 8E8BAF10085494E000E9F14D; 8E8BAF17085494E000E9F14D = 8E8BAF17085494E000E9F14D; - 8E8BAF780854976A00E9F14D = 8E8BAF780854976A00E9F14D; 8E8BAF790854976A00E9F14D = 8E8BAF790854976A00E9F14D; - 8E8BAF7A0854976A00E9F14D = 8E8BAF7A0854976A00E9F14D; - 8E8BAF7C0854976A00E9F14D = 8E8BAF7C0854976A00E9F14D; + 8E8F3ED00855401300BCF803 = 8E8F3ED00855401300BCF803; + 8E8F3ED10855401300BCF803 = 8E8F3ED10855401300BCF803; + 8E8F3ED20855401300BCF803 = 8E8F3ED20855401300BCF803; + 8E8F3ED30855401300BCF803 = 8E8F3ED30855401300BCF803; + 8E8F3ED40855401300BCF803 = 8E8F3ED40855401300BCF803; + 8E8F3ED50855401300BCF803 = 8E8F3ED50855401300BCF803; + 8E8F3ED60855401300BCF803 = 8E8F3ED60855401300BCF803; + 8E8F3ED70855401300BCF803 = 8E8F3ED70855401300BCF803; + 8E8F3ED80855401300BCF803 = 8E8F3ED80855401300BCF803; + 8E8F3ED90855401300BCF803 = 8E8F3ED90855401300BCF803; + 8E8F3EDA0855401300BCF803 = 8E8F3EDA0855401300BCF803; + 8E8F3EDB0855401300BCF803 = 8E8F3EDB0855401300BCF803; + 8E8F3EDC0855401300BCF803 = 8E8F3EDC0855401300BCF803; + 8E8F3EDD0855401300BCF803 = 8E8F3EDD0855401300BCF803; + 8E8F3EDE0855401300BCF803 = 8E8F3EDE0855401300BCF803; + 8E8F3EDF0855401300BCF803 = 8E8F3EDF0855401300BCF803; + 8E8F3EE00855401300BCF803 = 8E8F3EE00855401300BCF803; + 8E8F3EE10855401300BCF803 = 8E8F3EE10855401300BCF803; + 8E8F3EE20855401300BCF803 = 8E8F3EE20855401300BCF803; + 8E8F3EE30855401300BCF803 = 8E8F3EE30855401300BCF803; + 8E8F3F20085543D700BCF803 = 8E8F3F20085543D700BCF803; + 8E8F3F21085543D700BCF803 = 8E8F3F21085543D700BCF803; + 8E8F3F22085543D700BCF803 = 8E8F3F22085543D700BCF803; + 8E8F3F23085543D700BCF803 = 8E8F3F23085543D700BCF803; + 8E8F3F26085543D700BCF803 = 8E8F3F26085543D700BCF803; + 8E8F3F27085543D700BCF803 = 8E8F3F27085543D700BCF803; + 8E8F3F28085543D700BCF803 = 8E8F3F28085543D700BCF803; + 8E8F3F29085543D700BCF803 = 8E8F3F29085543D700BCF803; + 8E8F3F2A085543D700BCF803 = 8E8F3F2A085543D700BCF803; + 8E8F3F2B085543D700BCF803 = 8E8F3F2B085543D700BCF803; + 8E8F3F2C085543D700BCF803 = 8E8F3F2C085543D700BCF803; + 8E8F3F2D085543D700BCF803 = 8E8F3F2D085543D700BCF803; + 8E8F3F2E085543D700BCF803 = 8E8F3F2E085543D700BCF803; + 8E8F3F3F0855457A00BCF803 = 8E8F3F3F0855457A00BCF803; + 8E8F3F400855457A00BCF803 = 8E8F3F400855457A00BCF803; + 8E8F3F420855457A00BCF803 = 8E8F3F420855457A00BCF803; + 8E8F3F430855457A00BCF803 = 8E8F3F430855457A00BCF803; + 8E8F3F440855457A00BCF803 = 8E8F3F440855457A00BCF803; + 8E8F3F450855457A00BCF803 = 8E8F3F450855457A00BCF803; + 8E8F3F460855457A00BCF803 = 8E8F3F460855457A00BCF803; + 8E8F3F470855457A00BCF803 = 8E8F3F470855457A00BCF803; + 8E8F3F510855461700BCF803 = 8E8F3F510855461700BCF803; + 8E8F3F59085546B300BCF803 = 8E8F3F59085546B300BCF803; + 8E8F3F5B085546B300BCF803 = 8E8F3F5B085546B300BCF803; + 8E8F3F5C085546B300BCF803 = 8E8F3F5C085546B300BCF803; + 8E8F3F5D085546B300BCF803 = 8E8F3F5D085546B300BCF803; + 8E8F3F690855478900BCF803 = 8E8F3F690855478900BCF803; + 8E8F3F770855483300BCF803 = 8E8F3F770855483300BCF803; + 8E8F3F780855483300BCF803 = 8E8F3F780855483300BCF803; + 8E8F3F790855483300BCF803 = 8E8F3F790855483300BCF803; + 8E8F3F7B0855483300BCF803 = 8E8F3F7B0855483300BCF803; + 8E8F3F7C0855483300BCF803 = 8E8F3F7C0855483300BCF803; + 8E8F3F7D0855483300BCF803 = 8E8F3F7D0855483300BCF803; + 8E8F3F7E0855483300BCF803 = 8E8F3F7E0855483300BCF803; + 8E8F3FA408554B8000BCF803 = 8E8F3FA408554B8000BCF803; + 8E8F3FA508554B8000BCF803 = 8E8F3FA508554B8000BCF803; + 8E8F3FA608554B8000BCF803 = 8E8F3FA608554B8000BCF803; + 8E8F3FA708554B8000BCF803 = 8E8F3FA708554B8000BCF803; + 8E8F3FA808554B8000BCF803 = 8E8F3FA808554B8000BCF803; + 8E8F3FA908554B8000BCF803 = 8E8F3FA908554B8000BCF803; + 8E8F3FAA08554B8000BCF803 = 8E8F3FAA08554B8000BCF803; + 8E8F3FAB08554B8000BCF803 = 8E8F3FAB08554B8000BCF803; + 8E8F3FAC08554B8000BCF803 = 8E8F3FAC08554B8000BCF803; + 8E8F3FAD08554B8000BCF803 = 8E8F3FAD08554B8000BCF803; + 8E8F3FAE08554B8000BCF803 = 8E8F3FAE08554B8000BCF803; + 8E8F3FB008554B8000BCF803 = 8E8F3FB008554B8000BCF803; 8E91CCEE08549FEE0055EC68 = 8E91CCEE08549FEE0055EC68; 8E94D9D2084BEA32007F0AEB = 8E94D9D2084BEA32007F0AEB; 8E94D9D3084BEA32007F0AEB = 8E94D9D3084BEA32007F0AEB; 8E9BF08B082FB9DD00B26943 = 8E9BF08B082FB9DD00B26943; 8E9BF100082FEF6B00B26943 = 8E9BF100082FEF6B00B26943; - 8E9E2E81084FA7E400599965 = 8E9E2E81084FA7E400599965; 8EA0A215084CC43F008DFEC9 = 8EA0A215084CC43F008DFEC9; - 8EA0A216084CC43F008DFEC9 = 8EA0A216084CC43F008DFEC9; - 8EA0A21A084CC43F008DFEC9 = 8EA0A21A084CC43F008DFEC9; 8EB30D890854BEF1009EA87F = 8EB30D890854BEF1009EA87F; 8EB30D8A0854BEF1009EA87F = 8EB30D8A0854BEF1009EA87F; - 8EB30D8D0854BEF1009EA87F = 8EB30D8D0854BEF1009EA87F; - 8EB30D8E0854BEF1009EA87F = 8EB30D8E0854BEF1009EA87F; - 8EB30D8F0854BEF1009EA87F = 8EB30D8F0854BEF1009EA87F; - 8EB30D900854BEF1009EA87F = 8EB30D900854BEF1009EA87F; - 8EB30D910854BEF1009EA87F = 8EB30D910854BEF1009EA87F; - 8EB30D920854BEF1009EA87F = 8EB30D920854BEF1009EA87F; - 8EB30D930854BEF1009EA87F = 8EB30D930854BEF1009EA87F; - 8EB30D940854BEF1009EA87F = 8EB30D940854BEF1009EA87F; - 8EB30D950854BEF1009EA87F = 8EB30D950854BEF1009EA87F; - 8EB30D960854BEF1009EA87F = 8EB30D960854BEF1009EA87F; - 8EB30D970854BEF1009EA87F = 8EB30D970854BEF1009EA87F; - 8EB30D980854BEF1009EA87F = 8EB30D980854BEF1009EA87F; 8EB30D990854BEF1009EA87F = 8EB30D990854BEF1009EA87F; - 8EB30D9A0854BEF1009EA87F = 8EB30D9A0854BEF1009EA87F; - 8EB30D9B0854BEF1009EA87F = 8EB30D9B0854BEF1009EA87F; - 8EB30D9C0854BEF1009EA87F = 8EB30D9C0854BEF1009EA87F; - 8EB30D9D0854BEF1009EA87F = 8EB30D9D0854BEF1009EA87F; - 8EB30DAC0854BFEE009EA87F = 8EB30DAC0854BFEE009EA87F; - 8EB30DAD0854BFEE009EA87F = 8EB30DAD0854BFEE009EA87F; 8EB30DAE0854BFEE009EA87F = 8EB30DAE0854BFEE009EA87F; - 8EB30DB00854BFEE009EA87F = 8EB30DB00854BFEE009EA87F; - 8EB30DB10854BFEE009EA87F = 8EB30DB10854BFEE009EA87F; - 8EB30DB20854BFEE009EA87F = 8EB30DB20854BFEE009EA87F; - 8EB30DB30854BFEE009EA87F = 8EB30DB30854BFEE009EA87F; - 8EB30DB40854BFEE009EA87F = 8EB30DB40854BFEE009EA87F; - 8EB30DB50854BFEE009EA87F = 8EB30DB50854BFEE009EA87F; 8EB30DDB0854C261009EA87F = 8EB30DDB0854C261009EA87F; 8EB30DDC0854C261009EA87F = 8EB30DDC0854C261009EA87F; 8EB30DDD0854C261009EA87F = 8EB30DDD0854C261009EA87F; 8EB30DDE0854C261009EA87F = 8EB30DDE0854C261009EA87F; 8EB30DDF0854C261009EA87F = 8EB30DDF0854C261009EA87F; 8EB30DE00854C261009EA87F = 8EB30DE00854C261009EA87F; - 8EB30DE20854C261009EA87F = 8EB30DE20854C261009EA87F; - 8EB30DE30854C261009EA87F = 8EB30DE30854C261009EA87F; - 8EB30DE40854C261009EA87F = 8EB30DE40854C261009EA87F; - 8EB30DE50854C261009EA87F = 8EB30DE50854C261009EA87F; - 8EB30DE60854C261009EA87F = 8EB30DE60854C261009EA87F; - 8EB30DE70854C261009EA87F = 8EB30DE70854C261009EA87F; - 8EB30DE80854C261009EA87F = 8EB30DE80854C261009EA87F; - 8EB30DE90854C261009EA87F = 8EB30DE90854C261009EA87F; - 8EB30DEA0854C261009EA87F = 8EB30DEA0854C261009EA87F; - 8EB30DEB0854C261009EA87F = 8EB30DEB0854C261009EA87F; - 8EB30DEC0854C261009EA87F = 8EB30DEC0854C261009EA87F; - 8EB30DED0854C261009EA87F = 8EB30DED0854C261009EA87F; - 8EB30DEE0854C261009EA87F = 8EB30DEE0854C261009EA87F; - 8EB30E1E0854C36A009EA87F = 8EB30E1E0854C36A009EA87F; 8EB30E1F0854C36A009EA87F = 8EB30E1F0854C36A009EA87F; 8EB30E200854C36A009EA87F = 8EB30E200854C36A009EA87F; - 8EB30E210854C36A009EA87F = 8EB30E210854C36A009EA87F; - 8EB30E220854C36A009EA87F = 8EB30E220854C36A009EA87F; - 8EB30E230854C36A009EA87F = 8EB30E230854C36A009EA87F; - 8EB30E410854C6D6009EA87F = 8EB30E410854C6D6009EA87F; - 8EB30E420854C6D6009EA87F = 8EB30E420854C6D6009EA87F; - 8EB30E5F0854C90E009EA87F = 8EB30E5F0854C90E009EA87F; - 8EC156F4084FEB8900BB24E8 = 8EC156F4084FEB8900BB24E8; 8EC156F5084FEB8900BB24E8 = 8EC156F5084FEB8900BB24E8; 8EC156F9084FEB8900BB24E8 = 8EC156F9084FEB8900BB24E8; - 8EC18D9F084E3D8200AE0BA9 = 8EC18D9F084E3D8200AE0BA9; 8EC18EBD084E57D500AE0BA9 = 8EC18EBD084E57D500AE0BA9; 8ED833CD08457E6B0033CDBD = 8ED833CD08457E6B0033CDBD; 8EDC88A90842F8DE007D1532 = 8EDC88A90842F8DE007D1532; 8EDC88B50842F936007D1532 = 8EDC88B50842F936007D1532; 8EDCBDDB084061E500F5C7E3 = 8EDCBDDB084061E500F5C7E3; 8EDCBDDC084061E500F5C7E3 = 8EDCBDDC084061E500F5C7E3; - 8EDCBEF40840FA2200F5C7E3 = 8EDCBEF40840FA2200F5C7E3; 8EDE0CCC08369EB200EABFE4 = 8EDE0CCC08369EB200EABFE4; 8EE2A5B808511A1800367489 = 8EE2A5B808511A1800367489; 8EE2A5B908511A1800367489 = 8EE2A5B908511A1800367489; @@ -282,7 +295,6 @@ 8EFC6DE7085380B800C67D06 = 8EFC6DE7085380B800C67D06; 8EFC6DE8085380B800C67D06 = 8EFC6DE8085380B800C67D06; 8EFC6DF0085380B800C67D06 = 8EFC6DF0085380B800C67D06; - 8EFC6DF3085380B800C67D06 = 8EFC6DF3085380B800C67D06; 8EFC6E29085386CE00C67D06 = 8EFC6E29085386CE00C67D06; }; sourceControlManager = 8EB77466082DA402005891CA; @@ -347,9 +359,9 @@ }; 8E10DBEF084BBCF00013815C = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {775, 372}}"; - sepNavSelRange = "{36, 0}"; - sepNavVisRect = "{{0, 0}, {775, 372}}"; + sepNavIntBoundsRect = "{{0, 0}, {775, 546}}"; + sepNavSelRange = "{30, 0}"; + sepNavVisRect = "{{0, 0}, {775, 546}}"; }; }; 8E10DC00084BBE490013815C = { @@ -362,16 +374,6 @@ vrLen = 119; vrLoc = 0; }; - 8E10DC02084BBE490013815C = { - fRef = 8E10DBEF084BBCF00013815C; - isa = PBXTextBookmark; - name = "Credits.html: 5"; - rLen = 0; - rLoc = 30; - rType = 0; - vrLen = 30; - vrLoc = 0; - }; 8E10DC08084BBE490013815C = { fRef = 8E10DBEF084BBCF00013815C; isa = PBXTextBookmark; @@ -504,7 +506,7 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {775, 994}}"; sepNavSelRange = "{0, 0}"; - sepNavVisRect = "{{0, 0}, {775, 372}}"; + sepNavVisRect = "{{0, 0}, {775, 546}}"; }; }; 8E267D0A0837F7A6004ACBC5 = { @@ -518,14 +520,14 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {775, 658}}"; sepNavSelRange = "{998, 0}"; - sepNavVisRect = "{{0, 272}, {775, 372}}"; + sepNavVisRect = "{{0, 112}, {775, 546}}"; }; }; 8E267D0C0837F7A6004ACBC5 = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1022, 2366}}"; - sepNavSelRange = "{2945, 0}"; - sepNavVisRect = "{{0, 1460}, {775, 372}}"; + sepNavSelRange = "{3155, 0}"; + sepNavVisRect = "{{0, 1372}, {775, 546}}"; }; }; 8E267D8C0837F963004ACBC5 = { @@ -793,24 +795,24 @@ isa = PBXTextBookmark; name = "SoundController.m: 6"; rLen = 0; - rLoc = 920; + rLoc = 1122; rType = 0; vrLen = 67; vrLoc = 0; }; 8E45227A0832898A00F8BA7C = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {860, 1792}}"; - sepNavSelRange = "{1056, 7}"; - sepNavVisRect = "{{0, 591}, {775, 372}}"; + sepNavIntBoundsRect = "{{0, 0}, {860, 1848}}"; + sepNavSelRange = "{767, 0}"; + sepNavVisRect = "{{0, 224}, {775, 546}}"; sepNavWindowFrame = "{{15, 61}, {702, 680}}"; }; }; 8E45227B0832898A00F8BA7C = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1208, 9590}}"; - sepNavSelRange = "{18102, 4}"; - sepNavVisRect = "{{0, 9208}, {775, 372}}"; + sepNavIntBoundsRect = "{{0, 0}, {1208, 10360}}"; + sepNavSelRange = "{7601, 0}"; + sepNavVisRect = "{{0, 0}, {775, 546}}"; sepNavWindowFrame = "{{15, 66}, {702, 680}}"; }; }; @@ -819,7 +821,7 @@ isa = PBXTextBookmark; name = "Sound.h: 13"; rLen = 0; - rLoc = 2006; + rLoc = 2075; rType = 0; vrLen = 199; vrLoc = 0; @@ -829,7 +831,7 @@ isa = PBXTextBookmark; name = "Sound.m: 15"; rLen = 0; - rLoc = 18230; + rLoc = 19382; rType = 0; vrLen = 182; vrLoc = 0; @@ -851,15 +853,15 @@ 8E47218708318D7A001F89FA = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {775, 1176}}"; - sepNavSelRange = "{1643, 38}"; - sepNavVisRect = "{{0, 748}, {775, 372}}"; + sepNavSelRange = "{990, 0}"; + sepNavVisRect = "{{0, 104}, {775, 546}}"; }; }; 8E47218808318D7A001F89FA = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {896, 7154}}"; - sepNavSelRange = "{2243, 0}"; - sepNavVisRect = "{{0, 1277}, {775, 372}}"; + sepNavSelRange = "{8585, 0}"; + sepNavVisRect = "{{0, 5908}, {775, 546}}"; }; }; 8E47218908318D7A001F89FA = { @@ -872,23 +874,23 @@ 8E47218A08318D7A001F89FA = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {782, 3878}}"; - sepNavSelRange = "{1734, 0}"; - sepNavVisRect = "{{0, 1386}, {775, 372}}"; + sepNavSelRange = "{1736, 0}"; + sepNavVisRect = "{{0, 1246}, {775, 546}}"; sepNavWindowFrame = "{{15, 61}, {1016, 680}}"; }; }; 8E47218B08318D7A001F89FA = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {775, 372}}"; - sepNavSelRange = "{222, 0}"; + sepNavSelRange = "{206, 0}"; sepNavVisRect = "{{0, 0}, {775, 372}}"; }; }; 8E47218C08318D7A001F89FA = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {983, 952}}"; - sepNavSelRange = "{536, 0}"; - sepNavVisRect = "{{0, 300}, {983, 310}}"; + sepNavIntBoundsRect = "{{0, 0}, {775, 952}}"; + sepNavSelRange = "{951, 0}"; + sepNavVisRect = "{{0, 406}, {775, 546}}"; }; }; 8E4721AE08318F3E001F89FA = { @@ -958,7 +960,7 @@ rLen = 0; rLoc = 284; rType = 0; - vrLen = 518; + vrLen = 491; vrLoc = 507; }; 8E4721BA08318F3E001F89FA = { @@ -982,21 +984,21 @@ uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1340, 2156}}"; sepNavSelRange = "{1676, 0}"; - sepNavVisRect = "{{0, 756}, {775, 372}}"; + sepNavVisRect = "{{0, 630}, {775, 546}}"; }; }; 8E4721D4083192C2001F89FA = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {775, 602}}"; - sepNavSelRange = "{488, 0}"; - sepNavVisRect = "{{0, 210}, {775, 372}}"; + sepNavIntBoundsRect = "{{0, 0}, {775, 714}}"; + sepNavSelRange = "{639, 0}"; + sepNavVisRect = "{{0, 0}, {775, 546}}"; }; }; 8E4721D5083192C2001F89FA = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {950, 3668}}"; - sepNavSelRange = "{3816, 0}"; - sepNavVisRect = "{{0, 1584}, {775, 372}}"; + sepNavIntBoundsRect = "{{0, 0}, {950, 4046}}"; + sepNavSelRange = "{2409, 0}"; + sepNavVisRect = "{{0, 1288}, {775, 546}}"; sepNavWindowFrame = "{{15, 61}, {1016, 680}}"; }; }; @@ -1030,16 +1032,53 @@ vrLen = 63; vrLoc = 0; }; - 8E5A90B7084CC25900AE6D62 = { - fRef = 8E5A90B0084CBC2F00AE6D62; + 8E4D66E90854CD2C00816BEE = { + fRef = 8E8BAE5108548BD500E9F14D; isa = PBXTextBookmark; - name = "Changelog: 3"; + name = "WavPackFile.h: 13"; rLen = 0; - rLoc = 131; + rLoc = 214; rType = 0; - vrLen = 131; + vrLen = 282; vrLoc = 0; }; + 8E4D66EA0854CD2C00816BEE = { + fRef = 8E8BAE5208548BD500E9F14D; + isa = PBXTextBookmark; + name = "WavPackFile.m: 41"; + rLen = 0; + rLoc = 735; + rType = 0; + vrLen = 526; + vrLoc = 392; + }; + 8E4D67210854D2E700816BEE = { + fRef = 8E8BAE5608548BE800E9F14D; + isa = PBXTextBookmark; + name = "ShnFile.m: 58"; + rLen = 0; + rLoc = 1136; + rType = 0; + vrLen = 637; + vrLoc = 598; + }; + 8E4D67D40854E7B100816BEE = { + fRef = 8E47218B08318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistView.h: 12"; + rLen = 0; + rLoc = 206; + rType = 0; + vrLen = 369; + vrLoc = 0; + }; + 8E5A90B0084CBC2F00AE6D62 = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {775, 546}}"; + sepNavSelRange = "{439, 0}"; + sepNavVisRect = "{{0, 0}, {775, 546}}"; + }; + }; 8E5A90B8084CC25900AE6D62 = { fRef = 8E2871090836934A0013CE39; isa = PBXTextBookmark; @@ -1055,7 +1094,7 @@ isa = PBXTextBookmark; name = "Changelog: 3"; rLen = 0; - rLoc = 131; + rLoc = 439; rType = 0; vrLen = 131; vrLoc = 0; @@ -1154,26 +1193,6 @@ vrLen = 65; vrLoc = 0; }; - 8E6F2A2708480D900011F126 = { - fRef = 8E267D090837F7A6004ACBC5; - isa = PBXTextBookmark; - name = "MacPADSocket.h: 1"; - rLen = 0; - rLoc = 0; - rType = 0; - vrLen = 967; - vrLoc = 0; - }; - 8E72BC630851408F00E34F1D = { - fRef = 8E4721D208319294001F89FA; - isa = PBXTextBookmark; - name = "AppController.m: 65"; - rLen = 0; - rLoc = 1676; - rType = 0; - vrLen = 897; - vrLoc = 1378; - }; 8E72BC640851408F00E34F1D = { fRef = 8E47218908318D7A001F89FA; isa = PBXTextBookmark; @@ -1194,8 +1213,8 @@ 8E8BAE5208548BD500E9F14D = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {775, 1120}}"; - sepNavSelRange = "{558, 0}"; - sepNavVisRect = "{{0, 367}, {775, 372}}"; + sepNavSelRange = "{735, 0}"; + sepNavVisRect = "{{0, 353}, {775, 372}}"; sepNavWindowFrame = "{{15, 60}, {1017, 681}}"; }; }; @@ -1209,8 +1228,8 @@ 8E8BAE5608548BE800E9F14D = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {775, 1624}}"; - sepNavSelRange = "{1056, 0}"; - sepNavVisRect = "{{0, 520}, {775, 372}}"; + sepNavSelRange = "{1087, 0}"; + sepNavVisRect = "{{0, 507}, {775, 372}}"; }; }; 8E8BAEB208548C9600E9F14D = { @@ -1270,16 +1289,6 @@ vrLen = 199; vrLoc = 0; }; - 8E8BAF780854976A00E9F14D = { - fRef = 8E4721D5083192C2001F89FA; - isa = PBXTextBookmark; - name = "SoundController.m: 174"; - rLen = 0; - rLoc = 3816; - rType = 0; - vrLen = 764; - vrLoc = 2237; - }; 8E8BAF790854976A00E9F14D = { fRef = 8E47218508318D7A001F89FA; isa = PBXTextBookmark; @@ -1290,25 +1299,672 @@ vrLen = 811; vrLoc = 0; }; - 8E8BAF7A0854976A00E9F14D = { - fRef = 8E47218708318D7A001F89FA; - isa = PBXTextBookmark; - name = "- (NSArray *)acceptablePlaylistTypes;"; - rLen = 38; - rLoc = 1643; - rType = 0; - vrLen = 595; - vrLoc = 1271; - }; - 8E8BAF7C0854976A00E9F14D = { + 8E8F3ED00855401300BCF803 = { fRef = 8E45227B0832898A00F8BA7C; isa = PBXTextBookmark; - name = open; - rLen = 4; - rLoc = 18102; + name = "Sound.m: 345"; + rLen = 0; + rLoc = 10047; rType = 0; - vrLen = 517; - vrLoc = 17713; + vrLen = 892; + vrLoc = 15649; + }; + 8E8F3ED10855401300BCF803 = { + fRef = 8E45227A0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.h: 70"; + rLen = 0; + rLoc = 1477; + rType = 0; + vrLen = 1284; + vrLoc = 977; + }; + 8E8F3ED20855401300BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 611"; + rLen = 0; + rLoc = 17302; + rType = 0; + vrLen = 783; + vrLoc = 16169; + }; + 8E8F3ED30855401300BCF803 = { + fRef = 8E45227A0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.h: kCogStatusUpdate"; + rLen = 0; + rLoc = 775; + rType = 0; + vrLen = 772; + vrLoc = 0; + }; + 8E8F3ED40855401300BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 608"; + rLen = 0; + rLoc = 17146; + rType = 0; + vrLen = 783; + vrLoc = 16169; + }; + 8E8F3ED50855401300BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 276"; + rLen = 0; + rLoc = 6560; + rType = 0; + vrLen = 958; + vrLoc = 5387; + }; + 8E8F3ED60855401300BCF803 = { + fRef = 8E4721D4083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.h: playbackStatus"; + rLen = 0; + rLoc = 515; + rType = 0; + vrLen = 844; + vrLoc = 0; + }; + 8E8F3ED70855401300BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 267"; + rLen = 0; + rLoc = 6291; + rType = 0; + vrLen = 986; + vrLoc = 5387; + }; + 8E8F3ED80855401300BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "- (void)setPlaybackStatus:(int)s"; + rLen = 33; + rLoc = 17112; + rType = 0; + vrLen = 783; + vrLoc = 16194; + }; + 8E8F3ED90855401300BCF803 = { + fRef = 8E45227A0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.h: setPlaybackStatus:"; + rLen = 0; + rLoc = 2789; + rType = 0; + vrLen = 841; + vrLoc = 2224; + }; + 8E8F3EDA0855401300BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 614"; + rLen = 0; + rLoc = 17302; + rType = 0; + vrLen = 789; + vrLoc = 16194; + }; + 8E8F3EDB0855401300BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 270"; + rLen = 0; + rLoc = 6362; + rType = 0; + vrLen = 1007; + vrLoc = 4588; + }; + 8E8F3EDC0855401300BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 614"; + rLen = 0; + rLoc = 17302; + rType = 0; + vrLen = 789; + vrLoc = 16194; + }; + 8E8F3EDD0855401300BCF803 = { + fRef = 8E45227A0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.h: 98"; + rLen = 0; + rLoc = 2378; + rType = 0; + vrLen = 743; + vrLoc = 298; + }; + 8E8F3EDE0855401300BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 268"; + rLen = 0; + rLoc = 6336; + rType = 0; + vrLen = 889; + vrLoc = 5519; + }; + 8E8F3EDF0855401300BCF803 = { + fRef = 8E45227A0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.h: kCogStatusUpdateMessage"; + rLen = 0; + rLoc = 775; + rType = 0; + vrLen = 720; + vrLoc = 328; + }; + 8E8F3EE00855401300BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 613"; + rLen = 0; + rLoc = 17242; + rType = 0; + vrLen = 796; + vrLoc = 16194; + }; + 8E8F3EE10855401300BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 280"; + rLen = 0; + rLoc = 6564; + rType = 0; + vrLen = 967; + vrLoc = 5519; + }; + 8E8F3EE20855401300BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 613"; + rLen = 0; + rLoc = 17242; + rType = 0; + vrLen = 796; + vrLoc = 16194; + }; + 8E8F3EE30855401300BCF803 = { + fRef = 8E45227A0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.h: kCogStatusUpdateMessage"; + rLen = 0; + rLoc = 767; + rType = 0; + vrLen = 720; + vrLoc = 328; + }; + 8E8F3F20085543D700BCF803 = { + fRef = 8E267D090837F7A6004ACBC5; + isa = PBXTextBookmark; + name = "MacPADSocket.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1402; + vrLoc = 0; + }; + 8E8F3F21085543D700BCF803 = { + fRef = 8E267D0B0837F7A6004ACBC5; + isa = PBXTextBookmark; + name = "UpdateController.h: takeBoolFromObject:"; + rLen = 0; + rLoc = 998; + rType = 0; + vrLen = 902; + vrLoc = 142; + }; + 8E8F3F22085543D700BCF803 = { + fRef = 8E267D0C0837F7A6004ACBC5; + isa = PBXTextBookmark; + name = "UpdateController.m: 127"; + rLen = 0; + rLoc = 3155; + rType = 0; + vrLen = 1586; + vrLoc = 2232; + }; + 8E8F3F23085543D700BCF803 = { + fRef = 8E45227A0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.h: kCogStatusUpdateMessage"; + rLen = 0; + rLoc = 767; + rType = 0; + vrLen = 720; + vrLoc = 328; + }; + 8E8F3F26085543D700BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 248"; + rLen = 0; + rLoc = 7528; + rType = 0; + vrLen = 899; + vrLoc = 6665; + }; + 8E8F3F27085543D700BCF803 = { + fRef = 8E267D090837F7A6004ACBC5; + isa = PBXTextBookmark; + name = "MacPADSocket.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 1402; + vrLoc = 0; + }; + 8E8F3F28085543D700BCF803 = { + fRef = 8E267D0B0837F7A6004ACBC5; + isa = PBXTextBookmark; + name = "UpdateController.h: takeBoolFromObject:"; + rLen = 0; + rLoc = 998; + rType = 0; + vrLen = 902; + vrLoc = 142; + }; + 8E8F3F29085543D700BCF803 = { + fRef = 8E267D0C0837F7A6004ACBC5; + isa = PBXTextBookmark; + name = "UpdateController.m: 127"; + rLen = 0; + rLoc = 3155; + rType = 0; + vrLen = 1586; + vrLoc = 2232; + }; + 8E8F3F2A085543D700BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 280"; + rLen = 0; + rLoc = 6564; + rType = 0; + vrLen = 967; + vrLoc = 5519; + }; + 8E8F3F2B085543D700BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 249"; + rLen = 0; + rLoc = 7637; + rType = 0; + vrLen = 1104; + vrLoc = 6665; + }; + 8E8F3F2C085543D700BCF803 = { + fRef = 8E45227A0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.h: kCogStatusUpdateMessage"; + rLen = 0; + rLoc = 767; + rType = 0; + vrLen = 720; + vrLoc = 328; + }; + 8E8F3F2D085543D700BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 190"; + rLen = 0; + rLoc = 4294; + rType = 0; + vrLen = 1037; + vrLoc = 3531; + }; + 8E8F3F2E085543D700BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 230"; + rLen = 0; + rLoc = 6975; + rType = 0; + vrLen = 1045; + vrLoc = 6665; + }; + 8E8F3F3F0855457A00BCF803 = { + fRef = 8E4721D4083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.h: playPauseResume:"; + rLen = 0; + rLoc = 639; + rType = 0; + vrLen = 855; + vrLoc = 0; + }; + 8E8F3F400855457A00BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 252"; + rLen = 0; + rLoc = 7601; + rType = 0; + vrLen = 1016; + vrLoc = 0; + }; + 8E8F3F420855457A00BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 68"; + rLen = 0; + rLoc = 1405; + rType = 0; + vrLen = 735; + vrLoc = 1263; + }; + 8E8F3F430855457A00BCF803 = { + fRef = 8E4721D4083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.h: playPauseResume:"; + rLen = 0; + rLoc = 639; + rType = 0; + vrLen = 855; + vrLoc = 0; + }; + 8E8F3F440855457A00BCF803 = { + fRef = 8E4721D208319294001F89FA; + isa = PBXTextBookmark; + name = "AppController.m: 65"; + rLen = 0; + rLoc = 1676; + rType = 0; + vrLen = 1162; + vrLoc = 1182; + }; + 8E8F3F450855457A00BCF803 = { + fRef = 8E4721D4083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.h: playPauseResume:"; + rLen = 0; + rLoc = 639; + rType = 0; + vrLen = 855; + vrLoc = 0; + }; + 8E8F3F460855457A00BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 17"; + rLen = 0; + rLoc = 366; + rType = 0; + vrLen = 868; + vrLoc = 0; + }; + 8E8F3F470855457A00BCF803 = { + fRef = 8E45227B0832898A00F8BA7C; + isa = PBXTextBookmark; + name = "Sound.m: 252"; + rLen = 0; + rLoc = 7601; + rType = 0; + vrLen = 1016; + vrLoc = 0; + }; + 8E8F3F510855461700BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 121"; + rLen = 0; + rLoc = 2409; + rType = 0; + vrLen = 842; + vrLoc = 1837; + }; + 8E8F3F59085546B300BCF803 = { + fRef = 8E47218708318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistController.h: 43"; + rLen = 0; + rLoc = 990; + rType = 0; + vrLen = 936; + vrLoc = 143; + }; + 8E8F3F5B085546B300BCF803 = { + fRef = 8E5A90B0084CBC2F00AE6D62; + isa = PBXTextBookmark; + name = "Changelog: 8"; + rLen = 0; + rLoc = 439; + rType = 0; + vrLen = 272; + vrLoc = 0; + }; + 8E8F3F5C085546B300BCF803 = { + fRef = 8E47218808318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistController.m: 232"; + rLen = 0; + rLoc = 4972; + rType = 0; + vrLen = 974; + vrLoc = 4338; + }; + 8E8F3F5D085546B300BCF803 = { + fRef = 8E47218708318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistController.h: 43"; + rLen = 0; + rLoc = 990; + rType = 0; + vrLen = 936; + vrLoc = 143; + }; + 8E8F3F690855478900BCF803 = { + fRef = 8E47218808318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistController.m: 224"; + rLen = 0; + rLoc = 4865; + rType = 0; + vrLen = 974; + vrLoc = 4338; + }; + 8E8F3F770855483300BCF803 = { + fRef = 8E10DBEF084BBCF00013815C; + isa = PBXTextBookmark; + name = "Credits.html: 5"; + rLen = 0; + rLoc = 30; + rType = 0; + vrLen = 30; + vrLoc = 0; + }; + 8E8F3F780855483300BCF803 = { + fRef = 8E47218C08318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistView.m: 59"; + rLen = 0; + rLoc = 951; + rType = 0; + vrLen = 502; + vrLoc = 496; + }; + 8E8F3F790855483300BCF803 = { + fRef = 8E47218A08318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistEntry.m: 110"; + rLen = 0; + rLoc = 1736; + rType = 0; + vrLen = 385; + vrLoc = 1526; + }; + 8E8F3F7B0855483300BCF803 = { + fRef = 8E10DBEF084BBCF00013815C; + isa = PBXTextBookmark; + name = "Credits.html: 5"; + rLen = 0; + rLoc = 30; + rType = 0; + vrLen = 30; + vrLoc = 0; + }; + 8E8F3F7C0855483300BCF803 = { + fRef = 8E47218A08318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistEntry.m: 109"; + rLen = 0; + rLoc = 1734; + rType = 0; + vrLen = 403; + vrLoc = 1526; + }; + 8E8F3F7D0855483300BCF803 = { + fRef = 8E47218C08318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistView.m: 59"; + rLen = 0; + rLoc = 951; + rType = 0; + vrLen = 502; + vrLoc = 496; + }; + 8E8F3F7E0855483300BCF803 = { + fRef = 8E47218A08318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistEntry.m: 110"; + rLen = 0; + rLoc = 1736; + rType = 0; + vrLen = 385; + vrLoc = 1526; + }; + 8E8F3F9B0855499500BCF803 = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {775, 546}}"; + sepNavSelRange = "{105, 0}"; + sepNavVisRect = "{{0, 0}, {775, 546}}"; + }; + }; + 8E8F3FA408554B8000BCF803 = { + fRef = 8E47218808318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistController.m: setShuffle:"; + rLen = 0; + rLoc = 8585; + rType = 0; + vrLen = 472; + vrLoc = 8263; + }; + 8E8F3FA508554B8000BCF803 = { + fRef = 8E4721D208319294001F89FA; + isa = PBXTextBookmark; + name = "AppController.m: 65"; + rLen = 0; + rLoc = 1676; + rType = 0; + vrLen = 1162; + vrLoc = 1182; + }; + 8E8F3FA608554B8000BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 269"; + rLen = 0; + rLoc = 6158; + rType = 0; + vrLen = 973; + vrLoc = 5599; + }; + 8E8F3FA708554B8000BCF803 = { + fRef = 8E8F3F9B0855499500BCF803; + isa = PBXTextBookmark; + name = "README: 2"; + rLen = 0; + rLoc = 105; + rType = 0; + vrLen = 1522; + vrLoc = 0; + }; + 8E8F3FA808554B8000BCF803 = { + fRef = 8E5A90B0084CBC2F00AE6D62; + isa = PBXTextBookmark; + name = "Changelog: 7"; + rLen = 0; + rLoc = 370; + rType = 0; + vrLen = 371; + vrLoc = 0; + }; + 8E8F3FA908554B8000BCF803 = { + fRef = 8E47218808318D7A001F89FA; + isa = PBXTextBookmark; + name = "PlaylistController.m: setShuffle:"; + rLen = 0; + rLoc = 8585; + rType = 0; + vrLen = 472; + vrLoc = 8263; + }; + 8E8F3FAA08554B8000BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 121"; + rLen = 0; + rLoc = 2409; + rType = 0; + vrLen = 814; + vrLoc = 1865; + }; + 8E8F3FAB08554B8000BCF803 = { + fRef = 8E4721D208319294001F89FA; + isa = PBXTextBookmark; + name = "AppController.m: 65"; + rLen = 0; + rLoc = 1676; + rType = 0; + vrLen = 1162; + vrLoc = 1182; + }; + 8E8F3FAC08554B8000BCF803 = { + fRef = 8E4721D5083192C2001F89FA; + isa = PBXTextBookmark; + name = "SoundController.m: 269"; + rLen = 0; + rLoc = 6158; + rType = 0; + vrLen = 973; + vrLoc = 5599; + }; + 8E8F3FAD08554B8000BCF803 = { + fRef = 8E5A90B0084CBC2F00AE6D62; + isa = PBXTextBookmark; + name = "Changelog: 8"; + rLen = 0; + rLoc = 439; + rType = 0; + vrLen = 272; + vrLoc = 0; + }; + 8E8F3FAE08554B8000BCF803 = { + fRef = 8E8F3F9B0855499500BCF803; + isa = PBXTextBookmark; + name = "README: 2"; + rLen = 0; + rLoc = 105; + rType = 0; + vrLen = 1522; + vrLoc = 0; + }; + 8E8F3FB008554B8000BCF803 = { + fRef = 8E5A90B0084CBC2F00AE6D62; + isa = PBXTextBookmark; + name = "Changelog: 9"; + rLen = 0; + rLoc = 439; + rType = 0; + vrLen = 439; + vrLoc = 0; }; 8E91CCEE08549FEE0055EC68 = { fRef = 8EF6FA6F082DA526006F7BE6; @@ -1368,16 +2024,6 @@ vrLen = 661; vrLoc = 2015; }; - 8E9E2E81084FA7E400599965 = { - fRef = 8E267D0B0837F7A6004ACBC5; - isa = PBXTextBookmark; - name = "UpdateController.h: takeBoolFromObject:"; - rLen = 0; - rLoc = 998; - rType = 0; - vrLen = 681; - vrLoc = 363; - }; 8EA0A215084CC43F008DFEC9 = { fRef = 8E2871080836934A0013CE39; isa = PBXTextBookmark; @@ -1388,26 +2034,6 @@ vrLen = 1043; vrLoc = 3793; }; - 8EA0A216084CC43F008DFEC9 = { - fRef = 8E4721D4083192C2001F89FA; - isa = PBXTextBookmark; - name = "SoundController.h: sendPort"; - rLen = 0; - rLoc = 488; - rType = 0; - vrLen = 671; - vrLoc = 367; - }; - 8EA0A21A084CC43F008DFEC9 = { - fRef = 8E47218B08318D7A001F89FA; - isa = PBXTextBookmark; - name = "PlaylistView.h: 13"; - rLen = 0; - rLoc = 222; - rType = 0; - vrLen = 369; - vrLoc = 0; - }; 8EB30D4F0854BDDD009EA87F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; @@ -1436,126 +2062,6 @@ vrLen = 532; vrLoc = 961; }; - 8EB30D8D0854BEF1009EA87F = { - fRef = 8E8BAE5208548BD500E9F14D; - isa = PBXTextBookmark; - name = "WavPackFile.m: 67"; - rLen = 0; - rLoc = 1169; - rType = 0; - vrLen = 447; - vrLoc = 918; - }; - 8EB30D8E0854BEF1009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: 11"; - rLen = 0; - rLoc = 261; - rType = 0; - vrLen = 224; - vrLoc = 0; - }; - 8EB30D8F0854BEF1009EA87F = { - fRef = 8EF6FA6D082DA526006F7BE6; - isa = PBXTextBookmark; - name = "SoundFile.h: 42"; - rLen = 0; - rLoc = 859; - rType = 0; - vrLen = 670; - vrLoc = 461; - }; - 8EB30D900854BEF1009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 15"; - rLen = 0; - rLoc = 384; - rType = 0; - vrLen = 367; - vrLoc = 0; - }; - 8EB30D910854BEF1009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: handle"; - rLen = 0; - rLoc = 401; - rType = 0; - vrLen = 242; - vrLoc = 0; - }; - 8EB30D920854BEF1009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 11"; - rLen = 0; - rLoc = 156; - rType = 0; - vrLen = 399; - vrLoc = 0; - }; - 8EB30D930854BEF1009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: 12"; - rLen = 0; - rLoc = 260; - rType = 0; - vrLen = 270; - vrLoc = 0; - }; - 8EB30D940854BEF1009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 17"; - rLen = 0; - rLoc = 220; - rType = 0; - vrLen = 411; - vrLoc = 0; - }; - 8EB30D950854BEF1009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: 12"; - rLen = 0; - rLoc = 233; - rType = 0; - vrLen = 294; - vrLoc = 0; - }; - 8EB30D960854BEF1009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 16"; - rLen = 0; - rLoc = 220; - rType = 0; - vrLen = 411; - vrLoc = 0; - }; - 8EB30D970854BEF1009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: 12"; - rLen = 0; - rLoc = 233; - rType = 0; - vrLen = 294; - vrLoc = 0; - }; - 8EB30D980854BEF1009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 16"; - rLen = 0; - rLoc = 220; - rType = 0; - vrLen = 411; - vrLoc = 0; - }; 8EB30D990854BEF1009EA87F = { fRef = 8EB30D4F0854BDDD009EA87F; isa = PBXTextBookmark; @@ -1566,66 +2072,6 @@ vrLen = 532; vrLoc = 961; }; - 8EB30D9A0854BEF1009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 12"; - rLen = 0; - rLoc = 169; - rType = 0; - vrLen = 411; - vrLoc = 0; - }; - 8EB30D9B0854BEF1009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: 12"; - rLen = 0; - rLoc = 209; - rType = 0; - vrLen = 322; - vrLoc = 0; - }; - 8EB30D9C0854BEF1009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 24"; - rLen = 0; - rLoc = 220; - rType = 0; - vrLen = 440; - vrLoc = 0; - }; - 8EB30D9D0854BEF1009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: 12"; - rLen = 0; - rLoc = 209; - rType = 0; - vrLen = 322; - vrLoc = 0; - }; - 8EB30DAC0854BFEE009EA87F = { - fRef = 8E8BAE5208548BD500E9F14D; - isa = PBXTextBookmark; - name = "WavPackFile.m: 33"; - rLen = 0; - rLoc = 558; - rType = 0; - vrLen = 517; - vrLoc = 403; - }; - 8EB30DAD0854BFEE009EA87F = { - fRef = 8E8BAE5108548BD500E9F14D; - isa = PBXTextBookmark; - name = "WavPackFile.h: 13"; - rLen = 0; - rLoc = 214; - rType = 0; - vrLen = 282; - vrLoc = 0; - }; 8EB30DAE0854BFEE009EA87F = { fRef = 8EF6FA72082DA526006F7BE6; isa = PBXTextBookmark; @@ -1636,66 +2082,6 @@ vrLen = 418; vrLoc = 1717; }; - 8EB30DB00854BFEE009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 35"; - rLen = 0; - rLoc = 384; - rType = 0; - vrLen = 419; - vrLoc = 182; - }; - 8EB30DB10854BFEE009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: buffer"; - rLen = 0; - rLoc = 401; - rType = 0; - vrLen = 356; - vrLoc = 0; - }; - 8EB30DB20854BFEE009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 35"; - rLen = 0; - rLoc = 220; - rType = 0; - vrLen = 500; - vrLoc = 218; - }; - 8EB30DB30854BFEE009EA87F = { - fRef = 8E8BAE5208548BD500E9F14D; - isa = PBXTextBookmark; - name = "WavPackFile.m: 33"; - rLen = 0; - rLoc = 558; - rType = 0; - vrLen = 517; - vrLoc = 403; - }; - 8EB30DB40854BFEE009EA87F = { - fRef = 8E8BAE5108548BD500E9F14D; - isa = PBXTextBookmark; - name = "WavPackFile.h: 13"; - rLen = 0; - rLoc = 214; - rType = 0; - vrLen = 282; - vrLoc = 0; - }; - 8EB30DB50854BFEE009EA87F = { - fRef = 8EF6FA72082DA526006F7BE6; - isa = PBXTextBookmark; - name = "WaveFile.m: close"; - rLen = 0; - rLoc = 2003; - rType = 0; - vrLen = 418; - vrLoc = 1717; - }; 8EB30DDB0854C261009EA87F = { fRef = 8EF6FA70082DA526006F7BE6; isa = PBXTextBookmark; @@ -1756,146 +2142,6 @@ vrLen = 792; vrLoc = 1708; }; - 8EB30DE20854C261009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 66"; - rLen = 0; - rLoc = 2030; - rType = 0; - vrLen = 650; - vrLoc = 246; - }; - 8EB30DE30854C261009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: buffer"; - rLen = 0; - rLoc = 401; - rType = 0; - vrLen = 356; - vrLoc = 0; - }; - 8EB30DE40854C261009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 28"; - rLen = 0; - rLoc = 220; - rType = 0; - vrLen = 659; - vrLoc = 246; - }; - 8EB30DE50854C261009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: buffer"; - rLen = 0; - rLoc = 401; - rType = 0; - vrLen = 356; - vrLoc = 0; - }; - 8EB30DE60854C261009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 62"; - rLen = 0; - rLoc = 1756; - rType = 0; - vrLen = 369; - vrLoc = 1103; - }; - 8EB30DE70854C261009EA87F = { - fRef = 8EF6FA70082DA526006F7BE6; - isa = PBXTextBookmark; - name = "VorbisFile.m: 50"; - rLen = 333; - rLoc = 868; - rType = 0; - vrLen = 593; - vrLoc = 657; - }; - 8EB30DE80854C261009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 64"; - rLen = 0; - rLoc = 1756; - rType = 0; - vrLen = 386; - vrLoc = 1101; - }; - 8EB30DE90854C261009EA87F = { - fRef = 8E8BAE5508548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.h: bufferSize"; - rLen = 0; - rLoc = 345; - rType = 0; - vrLen = 410; - vrLoc = 0; - }; - 8EB30DEA0854C261009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 67"; - rLen = 0; - rLoc = 1756; - rType = 0; - vrLen = 386; - vrLoc = 1101; - }; - 8EB30DEB0854C261009EA87F = { - fRef = 8EF6FA67082DA526006F7BE6; - isa = PBXTextBookmark; - name = "MonkeysFile.h: 15"; - rLen = 0; - rLoc = 267; - rType = 0; - vrLen = 308; - vrLoc = 0; - }; - 8EB30DEC0854C261009EA87F = { - fRef = 8EF6FA68082DA526006F7BE6; - isa = PBXTextBookmark; - name = "MonkeysFile.m: close"; - rLen = 0; - rLoc = 1738; - rType = 0; - vrLen = 475; - vrLoc = 1471; - }; - 8EB30DED0854C261009EA87F = { - fRef = 8EF6FA6C082DA526006F7BE6; - isa = PBXTextBookmark; - name = "MusepackFile.m: 115"; - rLen = 0; - rLoc = 2381; - rType = 0; - vrLen = 685; - vrLoc = 1881; - }; - 8EB30DEE0854C261009EA87F = { - fRef = 8E14E47A084CF1A200246BCC; - isa = PBXTextBookmark; - name = "AACFile.m: 76"; - rLen = 1694; - rLoc = 1761; - rType = 0; - vrLen = 792; - vrLoc = 1708; - }; - 8EB30E1E0854C36A009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 89"; - rLen = 0; - rLoc = 1729; - rType = 0; - vrLen = 446; - vrLoc = 1373; - }; 8EB30E1F0854C36A009EA87F = { fRef = 8EF6FA6A082DA526006F7BE6; isa = PBXTextBookmark; @@ -1916,66 +2162,6 @@ vrLen = 588; vrLoc = 1467; }; - 8EB30E210854C36A009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 89"; - rLen = 0; - rLoc = 1729; - rType = 0; - vrLen = 446; - vrLoc = 1373; - }; - 8EB30E220854C36A009EA87F = { - fRef = 8EF6FA6A082DA526006F7BE6; - isa = PBXTextBookmark; - name = "MPEGFile.m: 106"; - rLen = 0; - rLoc = 2304; - rType = 0; - vrLen = 386; - vrLoc = 1947; - }; - 8EB30E230854C36A009EA87F = { - fRef = 8EF6FA6E082DA526006F7BE6; - isa = PBXTextBookmark; - name = "SoundFile.m: 93"; - rLen = 0; - rLoc = 1985; - rType = 0; - vrLen = 588; - vrLoc = 1467; - }; - 8EB30E410854C6D6009EA87F = { - fRef = 8E47218808318D7A001F89FA; - isa = PBXTextBookmark; - name = "PlaylistController.m: 108"; - rLen = 0; - rLoc = 2243; - rType = 0; - vrLen = 486; - vrLoc = 2015; - }; - 8EB30E420854C6D6009EA87F = { - fRef = 8E47218808318D7A001F89FA; - isa = PBXTextBookmark; - name = "PlaylistController.m: 108"; - rLen = 0; - rLoc = 2243; - rType = 0; - vrLen = 486; - vrLoc = 2015; - }; - 8EB30E5F0854C90E009EA87F = { - fRef = 8E8BAE5608548BE800E9F14D; - isa = PBXTextBookmark; - name = "ShnFile.m: 55"; - rLen = 0; - rLoc = 1056; - rType = 0; - vrLen = 598; - vrLoc = 620; - }; 8EB77455082DA3EB005891CA = { activeArgIndex = 2147483647; activeArgIndices = ( @@ -2657,16 +2843,6 @@ indexTemplatePath = ""; isa = PBXCodeSenseManager; }; - 8EC156F4084FEB8900BB24E8 = { - fRef = 8E267D0C0837F7A6004ACBC5; - isa = PBXTextBookmark; - name = "UpdateController.m: 118"; - rLen = 0; - rLoc = 2945; - rType = 0; - vrLen = 1079; - vrLoc = 2359; - }; 8EC156F5084FEB8900BB24E8 = { fRef = 8E267D0A0837F7A6004ACBC5; isa = PBXTextBookmark; @@ -2687,16 +2863,6 @@ vrLen = 957; vrLoc = 6740; }; - 8EC18D9F084E3D8200AE0BA9 = { - fRef = 8E47218A08318D7A001F89FA; - isa = PBXTextBookmark; - name = "PlaylistEntry.m: 109"; - rLen = 0; - rLoc = 1734; - rType = 0; - vrLen = 244; - vrLoc = 1652; - }; 8EC18EB9084E57D500AE0BA9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; @@ -2794,16 +2960,6 @@ vrLen = 0; vrLoc = 0; }; - 8EDCBEF40840FA2200F5C7E3 = { - fRef = 8E47218C08318D7A001F89FA; - isa = PBXTextBookmark; - name = "PlaylistView.m: 61"; - rLen = 0; - rLoc = 1014; - rType = 0; - vrLen = 434; - vrLoc = 612; - }; 8EDE0CCC08369EB200EABFE4 = { fRef = 8E2871080836934A0013CE39; isa = PBXTextBookmark; @@ -2878,7 +3034,7 @@ fileReference = 8E4721D5083192C2001F89FA; functionName = "-handlePortMessage:"; isa = PBXFileBreakpoint; - lineNumber = 239; + lineNumber = 254; state = 2; }; 8EF1B97C083A49980095B236 = { @@ -3200,16 +3356,6 @@ vrLen = 309; vrLoc = 0; }; - 8EFC6DF3085380B800C67D06 = { - fRef = 8E45227A0832898A00F8BA7C; - isa = PBXTextBookmark; - name = current; - rLen = 7; - rLoc = 1056; - rType = 0; - vrLen = 629; - vrLoc = 780; - }; 8EFC6E29085386CE00C67D06 = { fRef = 8EF6FA65082DA526006F7BE6; isa = PBXTextBookmark; diff --git a/English.lproj/MainMenu.nib/classes.nib b/English.lproj/MainMenu.nib/classes.nib index 976e35619..8ffd93cfc 100644 --- a/English.lproj/MainMenu.nib/classes.nib +++ b/English.lproj/MainMenu.nib/classes.nib @@ -65,6 +65,8 @@ next = id; pause = id; pauseResume = id; + play = id; + playPauseResume = id; prev = id; resume = id; seek = id; @@ -76,6 +78,7 @@ bitrateField = NSTextField; lengthField = NSTextField; playlistController = PlaylistController; + playlistView = PlaylistView; positionSlider = TrackingSlider; timeField = NSTextField; }; diff --git a/English.lproj/MainMenu.nib/info.nib b/English.lproj/MainMenu.nib/info.nib index c6c863b06..bfbd2b8a6 100644 --- a/English.lproj/MainMenu.nib/info.nib +++ b/English.lproj/MainMenu.nib/info.nib @@ -7,14 +7,14 @@ IBEditorPositions 29 - 334 667 253 44 0 0 1024 746 + 243 676 346 44 0 0 1024 746 IBFramework Version 437.0 IBOpenObjects - 21 29 + 21 IBSystem Version 8B15 diff --git a/English.lproj/MainMenu.nib/keyedobjects.nib b/English.lproj/MainMenu.nib/keyedobjects.nib index eea10103832e44344b5629691daec5f4ee7644f5..d3d2b09fa5f195f6aacfb519d0b6109a4cfab270 100644 GIT binary patch literal 41893 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 AZ2$lO delta 27047 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 BhJyeA diff --git a/Playlist/PlaylistView.m b/Playlist/PlaylistView.m index 2dfa29d72..89cf64d57 100644 --- a/Playlist/PlaylistView.m +++ b/Playlist/PlaylistView.m @@ -26,7 +26,7 @@ // DBLog(@"MOUSE DOWN"); if ([e type] == NSLeftMouseDown && [e clickCount] == 2) { - [soundController playEntryAtIndex:[self selectedRow]]; + [soundController play:self]; } else { @@ -56,7 +56,7 @@ } else if (c == NSEnterCharacter || c == NSCarriageReturnCharacter) { - [soundController playEntryAtIndex:[self selectedRow]]; + [soundController play:self]; } else { diff --git a/README b/README index ac9afa6d3..ed9519062 100644 --- a/README +++ b/README @@ -1,13 +1,31 @@ +------------------------------------------------------------------------------------ + NOTE ABOUT BUTTONS: + If you are under impression that the buttons are acting strange, +they actually may be acting as intended. The back button goes through +the history of the songs played, that is,it goes to the "previously played" +song, not just the one before it in the playlist. So, for example, if you +had shuffle mode on, and then turned it off, you could go back through the +songs played during shuffle mode. The forward button acts as expected, where +if shuffle is on, it will pick a random song, and if not it goes to the next +song in the playlist. + Please comment on, whether you like this behaviour or not! +------------------------------------------------------------------------------------ + Cog is released under the GPL. See COPYING for details. + The libraries folder contains various decoding and tagging libraries, which i have created Xcode projects for, and possibly modified to make compile on OS X. The various libraries are under each of their own licenses. - Please note that the source code may contain vulgar language as comments, -and in debugging messages. All Cog code is copywrited by me, and is licensed -under the GPL. + + Please note that vulgar language may be contained in the source code. It is rated +M for mature by the ESRB, the MPAA, and whatever else deems it unsuitable for virgin +ears. + + All Cog code is copywrited by me, and is licensed under the GPL. + If you would like the photoshop sources for the various icons and graphics, please send me an email, and I will be happy to get them to you. Share and enjoy. ---Vincent Spader (cog@badahol.net) +--Vincent Spader (vspader@users.sf.net) diff --git a/Sound.h b/Sound.h index a8c8309e5..020fec2ac 100644 --- a/Sound.h +++ b/Sound.h @@ -34,12 +34,13 @@ enum kCogBitrateUpdateMessage, kCogLengthUpdateMessage, kCogPositionUpdateMessage, - kCogFileChangedMessage + kCogFileChangedMessage, + kCogStatusUpdateMessage }; enum { - kCogStatusPaused, + kCogStatusPaused = 0, kCogStatusStopped, kCogStatusPlaying, kCogStatusEndOfFile, @@ -66,6 +67,7 @@ enum void *conversionBuffer; int playbackStatus; + int oldPlaybackStatus; //For resuming NSTimer *fillTimer; //used to wake up the filler thread //semaphore_t semaphore; //used to wake up the filler thread @@ -110,6 +112,8 @@ enum - (void)setThreadPolicy; +- (void)setPlaybackStatus:(int)s; + - (void)pause; - (void)resume; - (void)stop; diff --git a/Sound.m b/Sound.m index f22623f89..db3b09256 100644 --- a/Sound.m +++ b/Sound.m @@ -96,7 +96,8 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc // DBLog(@"FILE CHANGED!!!!!"); [sound sendPortMessage:kCogFileChangedMessage]; sound->readRingBuffer = [sound oppositeBuffer:sound->readRingBuffer]; - sound->playbackStatus = kCogStatusPlaying; + + [sound setPlaybackStatus:kCogStatusPlaying]; sound->currentPosition = 0; @@ -108,7 +109,8 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc if (sound->playbackStatus == kCogStatusEndOfPlaylist && amountAvailable == 0) { //Stop playback - sound->playbackStatus = kCogStatusPlaybackEnded; + [sound setPlaybackStatus:kCogStatusStopped]; +// return err; } if (amountAvailable < ([sound->readRingBuffer bufferLength] - BUFFER_WRITE_CHUNK)) @@ -181,7 +183,7 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc [self setThreadPolicy]; [[NSRunLoop currentRunLoop] run]; - + DBLog(@"THREAD EXIT!!!!!!!!!!!"); [pool release]; } @@ -204,7 +206,7 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc error = thread_policy_set(mach_thread_self(), THREAD_EXTENDED_POLICY, (thread_policy_t)&extendedPolicy, THREAD_EXTENDED_POLICY_COUNT); if (error != KERN_SUCCESS) { - DBLog(@"Couldn't set feeder thread's extended policy"); + DBLog(@"Couldnt set feeder thread's extended policy"); } precedencePolicy.importance = FEEDER_THREAD_IMPORTANCE; @@ -221,9 +223,12 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc if (portMessage) { - NSDate *date = [[NSDate alloc] init]; + NSDate *date = [[NSDate alloc] initWithTimeIntervalSinceNow:20.0];//[[NSDate alloc] init]; [portMessage setMsgid:msgid]; + + DBLog(@"Sending message (nodata): %i", msgid); + [portMessage sendBeforeDate:date]; [date release]; @@ -243,14 +248,27 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc if (portMessage) { - NSDate *date = [[NSDate alloc] init]; - + NSDate *date = [[NSDate alloc] initWithTimeIntervalSinceNow:20.0];//give shit a little time to send, just in case...may come back to bite me + if ([date laterDate:[NSDate date]] != date) + { + DBLog(@"WTF"); + } [portMessage setMsgid:msgid]; - [portMessage sendBeforeDate:date]; + DBLog(@"Sending message: %i", msgid); + NS_DURING + [portMessage sendBeforeDate:date]; + NS_HANDLER + NSRunAlertPanel(@"Error Panel", @"%@", @"OK", nil, nil, + localException); + NS_ENDHANDLER + [date release]; [portMessage release]; } + else { + DBLog(@"DIDNT SEND! ERROR"); + } } @@ -335,10 +353,21 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc } else if (msgid == kCogEndOfPlaylistMessage) { - playbackStatus = kCogStatusEndOfPlaylist; + [self setPlaybackStatus:kCogStatusEndOfPlaylist]; } } +- (void)startPositionTimer +{ + positionTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(sendPositionUpdate:) userInfo:nil repeats:YES]; +} + +- (void)stopPositionTimer +{ + [positionTimer invalidate]; + positionTimer = nil; +} + - (void)scheduleFillTimer { fillTimer = [NSTimer scheduledTimerWithTimeInterval:TIMEOUT target:self selector:@selector(fillBuffer:) userInfo:nil repeats:NO]; @@ -360,8 +389,12 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc int convertedSize; void *writePointer; - if (playbackStatus == kCogStatusPlaybackEnded) + if (playbackStatus == kCogStatusStopped) + { + DBLog(@"STOPPING"); [self stop]; + return; + } [writeLock lock]; @@ -384,7 +417,8 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc // DBLog(@"NEXT!!!!"); [self sendPortMessage:kCogRequestNextFileMessage]; writeRingBuffer = [self oppositeBuffer:writeRingBuffer]; - playbackStatus = kCogStatusEndOfFile; + + [self setPlaybackStatus:kCogStatusEndOfFile]; } // writePointer = (char *)writePointer + convertedSize; @@ -588,48 +622,65 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc [soundFile close]; } +- (void)setPlaybackStatus:(int)s +{ + playbackStatus = s; + DBLog(@"SENDING MESSAGE"); + [self sendPortMessage:kCogStatusUpdateMessage withData:&s ofSize:(sizeof(int))]; + DBLog(@"MESSAGE SENT"); +} + - (void)pause { [self stopAudioOutput]; - playbackStatus = kCogStatusPaused; - [positionTimer invalidate]; - positionTimer = nil; + oldPlaybackStatus = playbackStatus; + [self setPlaybackStatus:kCogStatusPaused]; + + [self stopPositionTimer]; } - (void)resume { + [self setPlaybackStatus:oldPlaybackStatus]; + [self startAudioOutput]; - playbackStatus = kCogStatusPlaying; - positionTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(sendPositionUpdate:) userInfo:nil repeats:YES]; + [self startPositionTimer]; } - (void)stop { -// DBLog(@"STOPPING"); + DBLog(@"STOPPING 2"); [self stopAudioOutput]; + DBLog(@"Audio output stopped"); [self resetBuffer]; - playbackStatus = kCogStatusStopped; + DBLog(@"BUFFERS RESET"); + + [self setPlaybackStatus:kCogStatusStopped]; // DBLog(@"HERE? PORT CONFLICT...FUCK"); unsigned long pos = 0; + DBLog(@"STOPPED 0"); [self sendPortMessage:kCogPositionUpdateMessage withData:&pos ofSize:(sizeof(unsigned long))]; // DBLog(@"THIS IS UBER SHITE: %@", positionTimer); - [positionTimer invalidate]; - positionTimer = nil; -// DBLog(@"INVALIDATED"); + DBLog(@"STOPPED 1"); + + [self stopPositionTimer]; + + // DBLog(@"INVALIDATED"); + DBLog(@"STOPPED 2"); } - (void)playFile:(NSString *)filename { [self stop]; -// DBLog(@"PLAYING FILE"); + DBLog(@"PLAYING FILE"); [self setSoundFile:filename]; -// DBLog(@"DONT LIKE THIS, HUH?"); + DBLog(@"DONT LIKE THIS, HUH?"); [readLock lock]; unsigned long length = totalLength; @@ -641,13 +692,18 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc [self sendPortMessage:kCogLengthUpdateMessage withData:&time ofSize:(sizeof(double))]; [self sendPortMessage:kCogBitrateUpdateMessage withData:&bitrate ofSize:(sizeof(int))]; - [self resume]; + [self setPlaybackStatus:kCogStatusPlaying]; + [self fillBuffer:self]; + [self startAudioOutput]; + + [self startPositionTimer]; } - (void)changeFile:(NSString *)filename { [self setSoundFile:filename]; + [self fireFillTimer]; } - (void)resetBuffer @@ -677,7 +733,6 @@ static OSStatus Sound_Renderer(void *inRefCon, AudioUnitRenderActionFlags *ioAc // DBLog(@"File opened: %s", [filename UTF8String]); [self prepareSoundFile]; - [self fireFillTimer]; } diff --git a/SoundController.h b/SoundController.h index 613477899..d38a1a9e5 100644 --- a/SoundController.h +++ b/SoundController.h @@ -6,9 +6,13 @@ #import "PlaylistController.h" #import "TrackingSlider.h" +@class PlaylistView; + @interface SoundController : NSObject { IBOutlet PlaylistController *playlistController; + IBOutlet PlaylistView *playlistView; + IBOutlet TrackingSlider *positionSlider; IBOutlet NSTextField *timeField; IBOutlet NSTextField *lengthField; @@ -16,13 +20,17 @@ BOOL waitingForPlay; //No sneaky changing on us Sound *sound; + int playbackStatus; + //For communication with the sound NSPort *sendPort; NSPort *distantPort; } +- (IBAction)playPauseResume:(id)sender; - (IBAction)pauseResume:(id)sender; +- (IBAction)play:(id)sender; - (IBAction)pause:(id)sender; - (IBAction)resume:(id)sender; - (IBAction)stop:(id)sender; diff --git a/SoundController.m b/SoundController.m index 511ea1035..83ba84410 100644 --- a/SoundController.m +++ b/SoundController.m @@ -1,5 +1,6 @@ #import "SoundController.h" #import "Sound.h" +#import "PlaylistView.h" #import "DBLog.h" @@ -13,6 +14,7 @@ if (self) { sound = [[Sound alloc] init]; + playbackStatus = kCogStatusStopped; } return self; @@ -41,6 +43,14 @@ } +- (IBAction)playPauseResume:(id)sender +{ + if (playbackStatus == kCogStatusStopped) + [self play:self]; + else + [self pauseResume:self]; +} + - (IBAction)pauseResume:(id)sender { // DBLog(@"Pause/Resume Sent!"); @@ -79,6 +89,10 @@ [self playEntry:pe]; } +- (IBAction)play:(id)sender +{ + [self playEntryAtIndex:[playlistView selectedRow]]; +} - (void)playEntry:(PlaylistEntry *)pe; { @@ -176,11 +190,12 @@ { unsigned int message = [portMessage msgid]; -// DBLog(@"SOUNDCONTROLLER RECEIVED MESSAGE"); + DBLog(@"GOT SOME KINDA WONDERFUL: %i %i", message, kCogStatusUpdateMessage); + if (message == kCogCheckinMessage) { // Get the worker threadÕs communications port. -// DBLog(@"CHECKIN RECEIVED"); + DBLog(@"CHECKIN RECEIVED"); distantPort = [portMessage sendPort]; // Retain and save the worker port for later use. @@ -237,7 +252,7 @@ // DBLog(@"Length changed: %f", max); // [lengthField setDoubleValue:max/1000.0]; } - else if (message = kCogPositionUpdateMessage) + else if (message == kCogPositionUpdateMessage) { NSArray* components = [portMessage components]; NSData *data = [components objectAtIndex:0]; @@ -256,6 +271,18 @@ text = [NSString stringWithFormat:@"%i:%02i", sec/60, sec%60]; [timeField setStringValue:text]; } + else if (message == kCogStatusUpdateMessage) + { + DBLog(@"MESSAGE?"); + NSArray* components = [portMessage components]; + NSData *data = [components objectAtIndex:0]; + + int s; + s = (*(int *)[data bytes]); + + playbackStatus = s; + DBLog(@"STATUS UPDATE: %i", s); + } } @end diff --git a/SoundFile/ShnFile.m b/SoundFile/ShnFile.m index eb5b52bdb..e2ccd3683 100644 --- a/SoundFile/ShnFile.m +++ b/SoundFile/ShnFile.m @@ -51,11 +51,9 @@ unsigned int length; length = shn_get_song_length(handle); totalSize = (((double)(length)*frequency)/1000.0) * channels * (bitsPerSample/8); - DBLog(@"TOTAL SIZE: %i", totalSize); - DBLog(@"LENGTH: %i %lf %i %i", length, ((double)length)*frequency, (int)((length*frequency)/1000.0), channels); bitRate = (int)((double)totalSize/((double)length/1000.0)); - + DBLog(@"Bitrate; %i", bitRate); return YES; }