xsample-master/0000755000175000017500000000000013014165104014245 5ustar zmoelnigzmoelnigxsample-master/xsample.xcodeproj/0000755000175000017500000000000013014165104017712 5ustar zmoelnigzmoelnigxsample-master/xsample.xcodeproj/project.pbxproj0000644000175000017500000011566313014165104023002 0ustar zmoelnigzmoelnig// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { /* Begin PBXBuildFile section */ E907FC1F1ACB4BBA003B821A /* inter.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974DE70770749400206F68 /* inter.h */; }; E907FC201ACB4BBA003B821A /* main.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974DE90770749400206F68 /* main.h */; }; E907FC211ACB4BBA003B821A /* prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974E2B07707D1400206F68 /* prefix.h */; }; E907FC251ACB4BBA003B821A /* groove.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE50770749400206F68 /* groove.cpp */; }; E907FC261ACB4BBA003B821A /* inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE60770749400206F68 /* inter.cpp */; }; E907FC271ACB4BBA003B821A /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE80770749400206F68 /* main.cpp */; }; E907FC281ACB4BBA003B821A /* play.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEA0770749400206F68 /* play.cpp */; }; E907FC291ACB4BBA003B821A /* record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEB0770749400206F68 /* record.cpp */; }; E907FC731AD353AD003B821A /* Jackmp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E907FC721AD353AD003B821A /* Jackmp.framework */; }; E9974DF30770749400206F68 /* groove.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE50770749400206F68 /* groove.cpp */; }; E9974DF40770749400206F68 /* inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE60770749400206F68 /* inter.cpp */; }; E9974DF50770749400206F68 /* inter.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974DE70770749400206F68 /* inter.h */; }; E9974DF60770749400206F68 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE80770749400206F68 /* main.cpp */; }; E9974DF70770749400206F68 /* main.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974DE90770749400206F68 /* main.h */; }; E9974DF80770749400206F68 /* play.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEA0770749400206F68 /* play.cpp */; }; E9974DF90770749400206F68 /* record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEB0770749400206F68 /* record.cpp */; }; E9974E2D07707D1400206F68 /* prefix.h in Headers */ = {isa = PBXBuildFile; fileRef = E9974E2B07707D1400206F68 /* prefix.h */; }; E9974E5B0770851500206F68 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFA0770750400206F68 /* MaxAPI.framework */; }; E9974E5C0770851700206F68 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFB0770750400206F68 /* MaxAudioAPI.framework */; }; E9974E5E0770852000206F68 /* prefix.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974E2B07707D1400206F68 /* prefix.h */; }; E9974E5F0770852000206F68 /* groove.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE50770749400206F68 /* groove.cpp */; }; E9974E600770852000206F68 /* inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE60770749400206F68 /* inter.cpp */; }; E9974E610770852000206F68 /* inter.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE70770749400206F68 /* inter.h */; }; E9974E620770852000206F68 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE80770749400206F68 /* main.cpp */; }; E9974E630770852000206F68 /* main.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE90770749400206F68 /* main.h */; }; E9974E640770852000206F68 /* play.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEA0770749400206F68 /* play.cpp */; }; E9974E650770852000206F68 /* record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEB0770749400206F68 /* record.cpp */; }; E9974EB007708BF700206F68 /* xsample.rsrc in Resources */ = {isa = PBXBuildFile; fileRef = E9974EAF07708BF700206F68 /* xsample.rsrc */; }; E9974EC607708D0C00206F68 /* xsample-objectmappings.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = E9974EC307708CED00206F68 /* xsample-objectmappings.txt */; }; E9F6F20B0DC4DB5400244EE5 /* prefix.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974E2B07707D1400206F68 /* prefix.h */; }; E9F6F20C0DC4DB5400244EE5 /* groove.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE50770749400206F68 /* groove.cpp */; }; E9F6F20D0DC4DB5400244EE5 /* inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE60770749400206F68 /* inter.cpp */; }; E9F6F20E0DC4DB5400244EE5 /* inter.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE70770749400206F68 /* inter.h */; }; E9F6F20F0DC4DB5400244EE5 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE80770749400206F68 /* main.cpp */; }; E9F6F2100DC4DB5400244EE5 /* main.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE90770749400206F68 /* main.h */; }; E9F6F2140DC4DB5400244EE5 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFB0770750400206F68 /* MaxAudioAPI.framework */; }; E9F6F2150DC4DB5400244EE5 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFA0770750400206F68 /* MaxAPI.framework */; }; E9F6F23C0DC4DC2800244EE5 /* prefix.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974E2B07707D1400206F68 /* prefix.h */; }; E9F6F23E0DC4DC2800244EE5 /* inter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE60770749400206F68 /* inter.cpp */; }; E9F6F23F0DC4DC2800244EE5 /* inter.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE70770749400206F68 /* inter.h */; }; E9F6F2400DC4DC2800244EE5 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE80770749400206F68 /* main.cpp */; }; E9F6F2410DC4DC2800244EE5 /* main.h in Sources */ = {isa = PBXBuildFile; fileRef = E9974DE90770749400206F68 /* main.h */; }; E9F6F2430DC4DC2800244EE5 /* record.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9974DEB0770749400206F68 /* record.cpp */; }; E9F6F2450DC4DC2800244EE5 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFB0770750400206F68 /* MaxAudioAPI.framework */; }; E9F6F2460DC4DC2800244EE5 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974DFA0770750400206F68 /* MaxAPI.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ E9974EC207708C9300206F68 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 8; dstPath = "/Library/Application Support/Cycling '74/init"; dstSubfolderSpec = 0; files = ( E9974EC607708D0C00206F68 /* xsample-objectmappings.txt in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 1; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ D2AAC09D05546B4700DB518D /* xsample.pd_darwin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = xsample.pd_darwin; sourceTree = BUILT_PRODUCTS_DIR; }; E907FC2E1ACB4BBA003B821A /* xsample.pd_darwin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = xsample.pd_darwin; sourceTree = BUILT_PRODUCTS_DIR; }; E907FC721AD353AD003B821A /* Jackmp.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Jackmp.framework; path = /System/Library/Frameworks/Jackmp.framework; sourceTree = ""; }; E9974DE50770749400206F68 /* groove.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = groove.cpp; path = source/groove.cpp; sourceTree = ""; }; E9974DE60770749400206F68 /* inter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = inter.cpp; path = source/inter.cpp; sourceTree = ""; }; E9974DE70770749400206F68 /* inter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inter.h; path = source/inter.h; sourceTree = ""; }; E9974DE80770749400206F68 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = source/main.cpp; sourceTree = ""; }; E9974DE90770749400206F68 /* main.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = main.h; path = source/main.h; sourceTree = ""; }; E9974DEA0770749400206F68 /* play.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = play.cpp; path = source/play.cpp; sourceTree = ""; }; E9974DEB0770749400206F68 /* record.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = record.cpp; path = source/record.cpp; sourceTree = ""; }; E9974DFA0770750400206F68 /* MaxAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAPI.framework; path = /Library/Frameworks/MaxAPI.framework; sourceTree = ""; }; E9974DFB0770750400206F68 /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = /Library/Frameworks/MaxAudioAPI.framework; sourceTree = ""; }; E9974E2B07707D1400206F68 /* prefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = prefix.h; path = source/prefix.h; sourceTree = ""; }; E9974E53077083C700206F68 /* xsample.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = xsample.mxo; sourceTree = BUILT_PRODUCTS_DIR; }; E9974E58077084DA00206F68 /* xsample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; name = "xsample-Info.plist"; path = "source/xsample-Info.plist"; sourceTree = ""; }; E9974EAF07708BF700206F68 /* xsample.rsrc */ = {isa = PBXFileReference; lastKnownFileType = archive.rsrc; name = xsample.rsrc; path = source/xsample.rsrc; sourceTree = ""; }; E9974EC307708CED00206F68 /* xsample-objectmappings.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = "xsample-objectmappings.txt"; path = "maxmsp/xsample-objectmappings.txt"; sourceTree = ""; }; E9F6F21D0DC4DB5400244EE5 /* xgroove~.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "xgroove~.mxo"; sourceTree = BUILT_PRODUCTS_DIR; }; E9F6F21E0DC4DB5400244EE5 /* xgroove~-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "xgroove~-Info.plist"; path = "source/xgroove~-Info.plist"; sourceTree = ""; }; E9F6F24E0DC4DC2800244EE5 /* xrecord~.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "xrecord~.mxo"; sourceTree = BUILT_PRODUCTS_DIR; }; E9F6F24F0DC4DC2800244EE5 /* xrecord~-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "xrecord~-Info.plist"; path = "source/xrecord~-Info.plist"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ D2AAC09B05546B4700DB518D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( E907FC731AD353AD003B821A /* Jackmp.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; E907FC221ACB4BBA003B821A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; E9974E51077083C700206F68 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( E9974E5C0770851700206F68 /* MaxAudioAPI.framework in Frameworks */, E9974E5B0770851500206F68 /* MaxAPI.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; E9F6F2130DC4DB5400244EE5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( E9F6F2140DC4DB5400244EE5 /* MaxAudioAPI.framework in Frameworks */, E9F6F2150DC4DB5400244EE5 /* MaxAPI.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; E9F6F2440DC4DC2800244EE5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( E9F6F2450DC4DC2800244EE5 /* MaxAudioAPI.framework in Frameworks */, E9F6F2460DC4DC2800244EE5 /* MaxAPI.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 034768DDFF38A45A11DB9C8B /* Products */ = { isa = PBXGroup; children = ( D2AAC09D05546B4700DB518D /* xsample.pd_darwin */, E9974E53077083C700206F68 /* xsample.mxo */, E9F6F21D0DC4DB5400244EE5 /* xgroove~.mxo */, E9F6F24E0DC4DC2800244EE5 /* xrecord~.mxo */, E907FC2E1ACB4BBA003B821A /* xsample.pd_darwin */, ); name = Products; sourceTree = ""; }; 0867D691FE84028FC02AAC07 /* xsample */ = { isa = PBXGroup; children = ( E9974EC507708CFA00206F68 /* Max */, 08FB77ACFE841707C02AAC07 /* Source */, 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, 034768DDFF38A45A11DB9C8B /* Products */, ); name = xsample; sourceTree = ""; }; 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { isa = PBXGroup; children = ( E907FC721AD353AD003B821A /* Jackmp.framework */, E9974DFA0770750400206F68 /* MaxAPI.framework */, E9974DFB0770750400206F68 /* MaxAudioAPI.framework */, ); name = "External Frameworks and Libraries"; sourceTree = ""; }; 08FB77ACFE841707C02AAC07 /* Source */ = { isa = PBXGroup; children = ( E9974E2B07707D1400206F68 /* prefix.h */, E9974DE80770749400206F68 /* main.cpp */, E9974DE90770749400206F68 /* main.h */, E9974DE60770749400206F68 /* inter.cpp */, E9974DE70770749400206F68 /* inter.h */, E9974DE50770749400206F68 /* groove.cpp */, E9974DEA0770749400206F68 /* play.cpp */, E9974DEB0770749400206F68 /* record.cpp */, E9974EAF07708BF700206F68 /* xsample.rsrc */, E9974E58077084DA00206F68 /* xsample-Info.plist */, E9F6F21E0DC4DB5400244EE5 /* xgroove~-Info.plist */, E9F6F24F0DC4DC2800244EE5 /* xrecord~-Info.plist */, ); name = Source; sourceTree = ""; }; E9974EC507708CFA00206F68 /* Max */ = { isa = PBXGroup; children = ( E9974EC307708CED00206F68 /* xsample-objectmappings.txt */, ); name = Max; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ D2AAC09905546B4700DB518D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( E9974DF50770749400206F68 /* inter.h in Headers */, E9974DF70770749400206F68 /* main.h in Headers */, E9974E2D07707D1400206F68 /* prefix.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; E907FC1E1ACB4BBA003B821A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( E907FC1F1ACB4BBA003B821A /* inter.h in Headers */, E907FC201ACB4BBA003B821A /* main.h in Headers */, E907FC211ACB4BBA003B821A /* prefix.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ D2AAC09C05546B4700DB518D /* xsample pd static */ = { isa = PBXNativeTarget; buildConfigurationList = E9A5BC8A0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "xsample pd static" */; buildPhases = ( D2AAC09905546B4700DB518D /* Headers */, D2AAC09B05546B4700DB518D /* Frameworks */, D2AAC09A05546B4700DB518D /* Sources */, ); buildRules = ( ); dependencies = ( ); name = "xsample pd static"; productName = xsample; productReference = D2AAC09D05546B4700DB518D /* xsample.pd_darwin */; productType = "com.apple.product-type.library.dynamic"; }; E907FC1D1ACB4BBA003B821A /* xsample pd inline */ = { isa = PBXNativeTarget; buildConfigurationList = E907FC2A1ACB4BBA003B821A /* Build configuration list for PBXNativeTarget "xsample pd inline" */; buildPhases = ( E907FC1E1ACB4BBA003B821A /* Headers */, E907FC221ACB4BBA003B821A /* Frameworks */, E907FC241ACB4BBA003B821A /* Sources */, ); buildRules = ( ); dependencies = ( ); name = "xsample pd inline"; productName = xsample; productReference = E907FC2E1ACB4BBA003B821A /* xsample.pd_darwin */; productType = "com.apple.product-type.library.dynamic"; }; E9974E52077083C700206F68 /* xsample max static */ = { isa = PBXNativeTarget; buildConfigurationList = E9A5BC8E0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "xsample max static" */; buildPhases = ( E9974E4F077083C700206F68 /* Resources */, E9974E50077083C700206F68 /* Sources */, E9974E51077083C700206F68 /* Frameworks */, E9974EC207708C9300206F68 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); name = "xsample max static"; productName = "Max xsample static"; productReference = E9974E53077083C700206F68 /* xsample.mxo */; productType = "com.apple.product-type.bundle"; }; E9F6F2060DC4DB5400244EE5 /* xgroove~ max static */ = { isa = PBXNativeTarget; buildConfigurationList = E9F6F2190DC4DB5400244EE5 /* Build configuration list for PBXNativeTarget "xgroove~ max static" */; buildPhases = ( E9F6F20A0DC4DB5400244EE5 /* Sources */, E9F6F2130DC4DB5400244EE5 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = "xgroove~ max static"; productName = "Max xsample static"; productReference = E9F6F21D0DC4DB5400244EE5 /* xgroove~.mxo */; productType = "com.apple.product-type.bundle"; }; E9F6F2370DC4DC2800244EE5 /* xrecord~ max static */ = { isa = PBXNativeTarget; buildConfigurationList = E9F6F24A0DC4DC2800244EE5 /* Build configuration list for PBXNativeTarget "xrecord~ max static" */; buildPhases = ( E9F6F23B0DC4DC2800244EE5 /* Sources */, E9F6F2440DC4DC2800244EE5 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = "xrecord~ max static"; productName = "Max xsample static"; productReference = E9F6F24E0DC4DC2800244EE5 /* xrecord~.mxo */; productType = "com.apple.product-type.bundle"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 0867D690FE84028FC02AAC07 /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0620; }; buildConfigurationList = E9A5BC920A33819900AD9F03 /* Build configuration list for PBXProject "xsample" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( en, ); mainGroup = 0867D691FE84028FC02AAC07 /* xsample */; productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( D2AAC09C05546B4700DB518D /* xsample pd static */, E9974E52077083C700206F68 /* xsample max static */, E9F6F2060DC4DB5400244EE5 /* xgroove~ max static */, E9F6F2370DC4DC2800244EE5 /* xrecord~ max static */, E907FC1D1ACB4BBA003B821A /* xsample pd inline */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ E9974E4F077083C700206F68 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( E9974EB007708BF700206F68 /* xsample.rsrc in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ D2AAC09A05546B4700DB518D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( E9974DF30770749400206F68 /* groove.cpp in Sources */, E9974DF40770749400206F68 /* inter.cpp in Sources */, E9974DF60770749400206F68 /* main.cpp in Sources */, E9974DF80770749400206F68 /* play.cpp in Sources */, E9974DF90770749400206F68 /* record.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; E907FC241ACB4BBA003B821A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( E907FC251ACB4BBA003B821A /* groove.cpp in Sources */, E907FC261ACB4BBA003B821A /* inter.cpp in Sources */, E907FC271ACB4BBA003B821A /* main.cpp in Sources */, E907FC281ACB4BBA003B821A /* play.cpp in Sources */, E907FC291ACB4BBA003B821A /* record.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; E9974E50077083C700206F68 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( E9974E5E0770852000206F68 /* prefix.h in Sources */, E9974E5F0770852000206F68 /* groove.cpp in Sources */, E9974E600770852000206F68 /* inter.cpp in Sources */, E9974E610770852000206F68 /* inter.h in Sources */, E9974E620770852000206F68 /* main.cpp in Sources */, E9974E630770852000206F68 /* main.h in Sources */, E9974E640770852000206F68 /* play.cpp in Sources */, E9974E650770852000206F68 /* record.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; E9F6F20A0DC4DB5400244EE5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( E9F6F20B0DC4DB5400244EE5 /* prefix.h in Sources */, E9F6F20C0DC4DB5400244EE5 /* groove.cpp in Sources */, E9F6F20D0DC4DB5400244EE5 /* inter.cpp in Sources */, E9F6F20E0DC4DB5400244EE5 /* inter.h in Sources */, E9F6F20F0DC4DB5400244EE5 /* main.cpp in Sources */, E9F6F2100DC4DB5400244EE5 /* main.h in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; E9F6F23B0DC4DC2800244EE5 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( E9F6F23C0DC4DC2800244EE5 /* prefix.h in Sources */, E9F6F23E0DC4DC2800244EE5 /* inter.cpp in Sources */, E9F6F23F0DC4DC2800244EE5 /* inter.h in Sources */, E9F6F2400DC4DC2800244EE5 /* main.cpp in Sources */, E9F6F2410DC4DC2800244EE5 /* main.h in Sources */, E9F6F2430DC4DC2800244EE5 /* record.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ E907FC2B1ACB4BBA003B821A /* Development */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_X86_VECTOR_INSTRUCTIONS = default; COPY_PHASE_STRIP = NO; DYLIB_COMPATIBILITY_VERSION = ""; DYLIB_CURRENT_VERSION = ""; EXECUTABLE_EXTENSION = pd_darwin; GCC_FAST_MATH = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = source/prefix.h; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=2", FLEXT_INLINE, ); HEADER_SEARCH_PATHS = ( "$(PD)/src", "$(flext)/source", ); INSTALL_PATH = "$(PD)/extra"; MACH_O_TYPE = mh_bundle; MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_LDFLAGS = ( "-bundle_loader", "/Applications/Pd-0.46-6.app/Contents/Resources/bin/pd", "-flat_namespace", ); }; name = Development; }; E907FC2C1ACB4BBA003B821A /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_X86_VECTOR_INSTRUCTIONS = default; DEPLOYMENT_LOCATION = YES; DEPLOYMENT_POSTPROCESSING = YES; DSTROOT = /; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; EXECUTABLE_EXTENSION = pd_darwin; GCC_FAST_MATH = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=2", FLEXT_INLINE, ); HEADER_SEARCH_PATHS = ( "$(PD)/src", "$(inherited)", ); INSTALL_PATH = "/Users/thomas/Library/Pure Data"; LLVM_LTO = YES; MACH_O_TYPE = mh_dylib; MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_LDFLAGS = ( "-undefined", dynamic_lookup, ); }; name = Deployment; }; E907FC2D1ACB4BBA003B821A /* Default */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_X86_VECTOR_INSTRUCTIONS = default; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; EXECUTABLE_EXTENSION = pd_darwin; GCC_FAST_MATH = YES; GCC_INPUT_FILETYPE = sourcecode.cpp.cpp; GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2"; HEADER_SEARCH_PATHS = ( "$(flext)/source", "$(PD)/src", ); INSTALL_PATH = "$(PD)/extra"; MACH_O_TYPE = mh_bundle; MACOSX_DEPLOYMENT_TARGET = 10.6; PRODUCT_NAME = xsample; }; name = Default; }; E9A5BC8B0A33819900AD9F03 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; EXECUTABLE_EXTENSION = pd_darwin; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = source/prefix.h; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=2", ); HEADER_SEARCH_PATHS = ( "$(flext)/source", "$(PD)/src", ); INSTALL_PATH = "$(PD)/extra"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = BUNDLE; MACH_O_TYPE = mh_dylib; OTHER_LDFLAGS = ( "-lflext-pd_sd", "-undefined", dynamic_lookup, ); ZERO_LINK = YES; }; name = Development; }; E9A5BC8C0A33819900AD9F03 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; DEPLOYMENT_LOCATION = YES; DEPLOYMENT_POSTPROCESSING = YES; DSTROOT = /; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; EXECUTABLE_EXTENSION = pd_darwin; GCC_AUTO_VECTORIZATION = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=2", ); GCC_VERSION = ""; HEADER_SEARCH_PATHS = ( /usr/local/include/flext, "$(PD)/src", ); INSTALL_PATH = /Applications/pdext; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = BUNDLE; MACH_O_TYPE = mh_dylib; OTHER_LDFLAGS = ( "-lflext-pd_s", "-undefined", dynamic_lookup, ); ZERO_LINK = NO; }; name = Deployment; }; E9A5BC8D0A33819900AD9F03 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; EXECUTABLE_EXTENSION = pd_darwin; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_INPUT_FILETYPE = sourcecode.cpp.cpp; GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2"; HEADER_SEARCH_PATHS = ( "$(PD)/src", "$(flext)/source", ); INSTALL_PATH = "$(PD)/extra"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = BUNDLE; MACH_O_TYPE = mh_bundle; OTHER_LDFLAGS = ( "-bundle_loader", "$(PDApp)/bin/pd", ); PRODUCT_NAME = xsample; }; name = Default; }; E9A5BC8F0A33819900AD9F03 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = source/prefix.h; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=1", ); GENERATE_PKGINFO_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(maxsdk)/max-includes", "$(maxsdk)/msp-includes", ); INFOPLIST_FILE = "source/xsample-Info.plist"; INSTALL_PATH = "/Library/Application\\ Support/Cycling\\ '74/externals/flext"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = DYNAMIC; OTHER_LDFLAGS = "-lflext-max_sd"; OTHER_REZFLAGS = ""; PRODUCT_NAME = xsample; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = mxo; ZERO_LINK = YES; }; name = Development; }; E9A5BC900A33819900AD9F03 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEPLOYMENT_LOCATION = NO; FLEXT_SYS = "1 NDEBUG FLEXT_USESIMD"; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = source/prefix.h; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=1", ); GCC_VERSION = 4.2; GENERATE_PKGINFO_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(maxsdk)/max-includes", "$(maxsdk)/msp-includes", ); INFOPLIST_FILE = "source/xsample-Info.plist"; INSTALL_PATH = "/Library/Application Support/Cycling '74/externals/flext"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = DYNAMIC; OTHER_LDFLAGS = "-lflext-max_s"; OTHER_REZFLAGS = ""; PRODUCT_NAME = xsample; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = mxo; ZERO_LINK = NO; }; name = Deployment; }; E9A5BC910A33819900AD9F03 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; GENERATE_PKGINFO_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(maxsdk)/max-includes", "$(maxsdk)/msp-includes", ); INFOPLIST_FILE = "source/xsample-Info.plist"; INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = DYNAMIC; OTHER_CFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = xsample; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = mxo; }; name = Default; }; E9A5BC930A33819900AD9F03 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { GCC_ALTIVEC_EXTENSIONS = YES; GCC_FAST_MATH = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( _DEBUG, FLEXT_USE_SIMD, ); HEADER_SEARCH_PATHS = ( "$(inherited)", "$(flext)/source", ); LIBRARY_SEARCH_PATHS = ""; MACOSX_DEPLOYMENT_TARGET = 10.6; PRODUCT_NAME = "$(PROJECT_NAME)"; }; name = Development; }; E9A5BC940A33819900AD9F03 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { GCC_ALTIVEC_EXTENSIONS = YES; GCC_AUTO_VECTORIZATION = YES; GCC_ENABLE_SSE3_EXTENSIONS = YES; GCC_FAST_MATH = YES; GCC_OPTIMIZATION_LEVEL = 3; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = source/prefix.h; GCC_PREPROCESSOR_DEFINITIONS = ( NDEBUG, FLEXT_USE_SIMD, ); GCC_STRICT_ALIASING = YES; GCC_UNROLL_LOOPS = YES; GCC_VERSION = ""; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(flext)/source", ); LIBRARY_SEARCH_PATHS = /usr/local/lib; MACOSX_DEPLOYMENT_TARGET = 10.6; PRODUCT_NAME = "$(PROJECT_NAME)"; }; name = Deployment; }; E9A5BC950A33819900AD9F03 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { GCC_FAST_MATH = YES; HEADER_SEARCH_PATHS = "$(flext)/source"; LIBRARY_SEARCH_PATHS = "$(flext)/build"; MACOSX_DEPLOYMENT_TARGET = 10.6; }; name = Default; }; E9F6F21A0DC4DB5400244EE5 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = source/prefix.h; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=1", XGROOVE_STANDALONE, ); GENERATE_PKGINFO_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(maxsdk)/max-includes", "$(maxsdk)/msp-includes", ); INFOPLIST_FILE = "source/xgroove~-Info.plist"; INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = DYNAMIC; OTHER_LDFLAGS = "-lflext-max_sd"; OTHER_REZFLAGS = ""; PRODUCT_NAME = "xgroove~"; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = mxo; ZERO_LINK = YES; }; name = Development; }; E9F6F21B0DC4DB5400244EE5 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; FLEXT_SYS = "1 NDEBUG FLEXT_USESIMD"; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = source/prefix.h; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=1", XGROOVE_STANDALONE, ); GENERATE_PKGINFO_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(maxsdk)/max-includes", "$(maxsdk)/msp-includes", ); INFOPLIST_FILE = "source/xgroove~-Info.plist"; INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = DYNAMIC; OTHER_LDFLAGS = "-lflext-max_s"; OTHER_REZFLAGS = ""; PRODUCT_NAME = "xgroove~"; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = mxo; ZERO_LINK = NO; }; name = Deployment; }; E9F6F21C0DC4DB5400244EE5 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; GENERATE_PKGINFO_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(maxsdk)/max-includes", "$(maxsdk)/msp-includes", ); INFOPLIST_FILE = "source/xgroove~-Info.plist"; INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = DYNAMIC; OTHER_CFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = "xgroove~"; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = mxo; }; name = Default; }; E9F6F24B0DC4DC2800244EE5 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = source/prefix.h; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=1", XRECORD_STANDALONE, ); GENERATE_PKGINFO_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(maxsdk)/max-includes", "$(maxsdk)/msp-includes", ); INFOPLIST_FILE = "source/xrecord~-Info.plist"; INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = DYNAMIC; OTHER_LDFLAGS = "-lflext-max_sd"; OTHER_REZFLAGS = ""; PRODUCT_NAME = "xrecord~"; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = mxo; ZERO_LINK = YES; }; name = Development; }; E9F6F24C0DC4DC2800244EE5 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; FLEXT_SYS = "1 NDEBUG FLEXT_USESIMD"; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = source/prefix.h; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", "FLEXT_SYS=1", XRECORD_STANDALONE, ); GENERATE_PKGINFO_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(maxsdk)/max-includes", "$(maxsdk)/msp-includes", ); INFOPLIST_FILE = "source/xrecord~-Info.plist"; INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = DYNAMIC; OTHER_LDFLAGS = "-lflext-max_s"; OTHER_REZFLAGS = ""; PRODUCT_NAME = "xrecord~"; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = mxo; ZERO_LINK = NO; }; name = Deployment; }; E9F6F24D0DC4DC2800244EE5 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; GENERATE_PKGINFO_FILE = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", "$(maxsdk)/max-includes", "$(maxsdk)/msp-includes", ); INFOPLIST_FILE = "source/xrecord~-Info.plist"; INSTALL_PATH = "/Library/Application Support/Cycling 74/externals/flext"; LIBRARY_SEARCH_PATHS = "$(inherited)"; LIBRARY_STYLE = DYNAMIC; OTHER_CFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = "xrecord~"; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = mxo; }; name = Default; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ E907FC2A1ACB4BBA003B821A /* Build configuration list for PBXNativeTarget "xsample pd inline" */ = { isa = XCConfigurationList; buildConfigurations = ( E907FC2B1ACB4BBA003B821A /* Development */, E907FC2C1ACB4BBA003B821A /* Deployment */, E907FC2D1ACB4BBA003B821A /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; E9A5BC8A0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "xsample pd static" */ = { isa = XCConfigurationList; buildConfigurations = ( E9A5BC8B0A33819900AD9F03 /* Development */, E9A5BC8C0A33819900AD9F03 /* Deployment */, E9A5BC8D0A33819900AD9F03 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; E9A5BC8E0A33819900AD9F03 /* Build configuration list for PBXNativeTarget "xsample max static" */ = { isa = XCConfigurationList; buildConfigurations = ( E9A5BC8F0A33819900AD9F03 /* Development */, E9A5BC900A33819900AD9F03 /* Deployment */, E9A5BC910A33819900AD9F03 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; E9A5BC920A33819900AD9F03 /* Build configuration list for PBXProject "xsample" */ = { isa = XCConfigurationList; buildConfigurations = ( E9A5BC930A33819900AD9F03 /* Development */, E9A5BC940A33819900AD9F03 /* Deployment */, E9A5BC950A33819900AD9F03 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; E9F6F2190DC4DB5400244EE5 /* Build configuration list for PBXNativeTarget "xgroove~ max static" */ = { isa = XCConfigurationList; buildConfigurations = ( E9F6F21A0DC4DB5400244EE5 /* Development */, E9F6F21B0DC4DB5400244EE5 /* Deployment */, E9F6F21C0DC4DB5400244EE5 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; E9F6F24A0DC4DC2800244EE5 /* Build configuration list for PBXNativeTarget "xrecord~ max static" */ = { isa = XCConfigurationList; buildConfigurations = ( E9F6F24B0DC4DC2800244EE5 /* Development */, E9F6F24C0DC4DC2800244EE5 /* Deployment */, E9F6F24D0DC4DC2800244EE5 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; /* End XCConfigurationList section */ }; rootObject = 0867D690FE84028FC02AAC07 /* Project object */; } xsample-master/xsample.vcproj0000644000175000017500000005033513014165104017151 0ustar zmoelnigzmoelnig xsample-master/readme.txt0000644000175000017500000001502513014165104016246 0ustar zmoelnigzmoelnigxsample - extended sample objects for Max/MSP and PD (pure data) Copyright (c)2001-2006 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. ---------------------------------------------------------------------------- Maximum care has been taken to prepare a delightful experience for you electronic artists. Donations for further development of the package are HIGHLY APPRECIATED. Visit https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=xsample&no_note=1&tax=0¤cy_code=EUR ---------------------------------------------------------------------------- IMPORTANT INFORMATION for all Max/MSP users: 1) For Mac OSX it is best to put the max-darwin/xsample.mxd file into the folder /Library/Application Support/Cycling '74/externals and the file maxmsp/xsample-objectmappings.txt into the folder /Library/Application Support/Cycling '74/init . For Windows put the max-msvc\xsample.mxe file into the folder C:\program files\common files\Cycling '74\externals (english version) and the file maxmsp/xsample-objectmappings.txt in C:\program files\common files\Cycling '74\init (english version) Put the maxmsp/xsample.help file into the max-help folder. 2) Alternatively (or for OS9) it is advisable to put the xsample.mxd or xsample.mxe file into the "max-startup" folder. Hence it will be loaded at Max startup. ---------------------------------------------------------------------------- IMPORTANT INFORMATION for all PD users: xsample is a library containing several external objects. You should load it at PD startup by adding "-lib xsample" to the PD command line. (If you forgot to do that, you can load the library by creating an [xsample] dummy object. ---------------------------------------------------------------------------- BUILDING XSAMPLE from source ---------------------------- You will need the flext C++ layer for PD and Max/MSP externals to compile this. See http://grrrr.org/ext/flext Download, install and compile the package. Afterwards you can proceed with building xsample. pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW: ---------------------------------------------------------- Start a command shell with your eventual build environment (e.g. run vcvars32.bat for Microsoft Visual Studio) then run ..\flext\build.bat (you would have to substitute ..\flext with the respective path to the flext package) pd/Max - OSX/Linux - GCC: ------------------------- From a shell run bash ../flext/build.sh (you would have to substitute ../flext with the respective path to the flext package) Max - OS9 - Metrowerks CodeWarrior: ----------------------------------- use the "xsample.mcp" project file ---------------------------------------------------------------------------- Goals/features of the package: - portable and effective sample recording/playing objects for pd and Max/MSP - MSP-like groove~ object for PD - message- or signal-triggered recording object with mix-in capability - avoid the various bugs of the original MSP2 objects - multi-channel capability - live update of respective buffer/array content - switchable 4-point or linear interpolation for xplay~/xgroove~ object - cross-fading loop zone for xgroove~ ---------------------------------------------------------------------------- Version history: 0.3.1: - added mixmode=2 to Max/MSP help files - fixed limit consideration for loopmode=0 and 2. - fixed buggy sampling in crossfade zones (and simplified it a lot) - different initialization on buffer absence - renew units and scalemode on buffer change - fixed looped recording bug (thanks to Tatama Suomo) - reconsidered all state changes - more optimizations for interpolation functions - use the new flext build system - use branch hints 0.3.0: - added resources to MaxMSP build - xgroove~, xrecord~: introduced a loop/end bang outlet - added MaxMSP buffer resize recognition - xgroove~: introduced crossfading loop zones - adapted source for flext 0.4.1 - most methods within class scope - introduced attributes - restructured make procedures - corrected names of PD makefile, set help names - fixed scale mode bug with xgroove~ - added validity check for buffers - Max/MSP OSX: new file xsample-objectmappings.txt fixes load of library on finding correct helpfiles! - makefiles for command line MSVC++, BCC, cygwin GCC - better handling of non-existent buffers - fixed flext-related error on setting buffers - xrecord~: mixmode has now 3 states (off, mix-in, add) 0.2.4: - according to flext 0.2.3 changed sample type to t_sample (S) - xrecord~: fixed mix mode bug - fixed argument buffer problem 0.2.3: - using flext 0.2.2 - xsample is now a library under MaxMSP - cleaner gcc makefile - xgroove~, xrecord~: added "all" message to select entire buffer length - xgroove~, xplay~: revisited dsp methods, restructured the code, fixed small interpolation bugs - xgroove~, xplay~: added linear interpolation (message "interp 2") - enabled 0 output channels -> xgroove~: position output only - xgroove~: added bidirectional looping (message "loop 2") 0.2.2: - using flext 0.2.0 - xrecord~ for PD: new flext brings better graphics update behavior - xrecord~: recording position doesn't jump to start when recording length is reached - fixed bug with refresh message (min/max reset) - xgroove~: position (by pos message) isn't sample rounded anymore - reset/refresh messages readjust dsp routines to current buffer format (e.g. channel count) - corrected Max/MSP assist method for multi-channel - fixed xplay~ help method - changed syntax to x*~ [channels=1] [buffer] for future enhancements (MaxMSP only, warning for old syntax) - fixed small bug concerning startup position in xgroove~ and xrecord~ - fixed deadly bug in xplay~ dsp code (only active with template optimization) 0.2.1: - no leftmost float inlet for position setting - use pos method - changed dsp handling for flext 0.1.1 conformance - workarounds for buggy/incomplete compilers - prevent buffer warning message at patcher load (wait for loadbang) - fixed bug: current pos is reset when changing min or max points 0.2.0: - first version for flext --------------------------------------------------------------------------- TODO list: features: - multi-buffer handling (aka multi-channel for pd) - anti-alias filter? (possible?) - delay min/max changes when cur pos in cross-fade zone bugs: - PD: problems with timed buffer redrawing (takes a lot of cpu time) - flext bug? - Max help files aren't correctly opened due to xsample objects residing in a library (FIXED for OSX!!!) xsample-master/pd/0000755000175000017500000000000013014165104014650 5ustar zmoelnigzmoelnigxsample-master/pd/xplay~-help.pd0000644000175000017500000001213313014165104017456 0ustar zmoelnigzmoelnig#N canvas 165 149 716 444 12; #X obj 21 75 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1 -1; #X msg 21 95 stop; #X msg 107 99 reset; #X text 43 72 start; #X text 60 93 stop; #X obj 159 217 *~ 300; #X text 161 239 position signal; #X msg 107 75 help; #N canvas 0 0 450 300 graph7 0; #X array \$0-buf 300 float 1; #A 0 -0.445589 -0.568192 -0.679282 -0.776596 -0.858191 -0.922374 -0.967874 -0.99377 -0.999505 -0.985009 -0.950534 -0.896801 -0.824907 -0.736274 -0.632737 -0.516371 -0.38954 -0.254823 -0.114932 0.0272834 0.168947 0.307184 0.439204 0.562312 0.674031 0.772096 0.854499 0.919606 0.966059 0.992941 0.999714 0.986201 0.952726 0.899931 0.8289 0.741087 0.638231 0.522457 0.396092 0.261698 0.122005 -0.0201642 -0.161923 -0.300402 -0.432789 -0.556415 -0.668753 -0.767544 -0.85079 -0.916775 -0.964202 -0.992074 -0.999845 -0.987371 -0.954858 -0.903018 -0.832869 -0.74584 -0.643712 -0.528517 -0.402624 -0.268571 -0.129073 0.013039 0.154887 0.293596 0.426359 0.550472 0.663443 0.762958 0.847014 0.913919 0.962278 0.991158 0.999942 0.988459 0.956966 0.906048 0.836789 0.75057 0.649134 0.534557 0.409131 0.275422 0.136132 -0.00591801 -0.147849 -0.286781 -0.419902 -0.544521 -0.658091 -0.758339 -0.84321 -0.910993 -0.960333 -0.990181 -0.999986 -0.989519 -0.958993 -0.909055 -0.840666 -0.755257 -0.654544 -0.540557 -0.415628 -0.282266 -0.143188 -0.00120819 0.140795 0.279949 0.413425 0.538524 0.652719 0.753668 0.83936 0.908035 0.958306 0.989179 0.999971 0.99052 0.960994 0.911984 0.844512 0.759903 0.659907 0.54654 0.422089 0.289093 0.150232 0.00832932 -0.133744 -0.273102 -0.406932 -0.532511 -0.647298 -0.748981 -0.835462 -0.90503 -0.956253 -0.988091 -0.999927 -0.991469 -0.962937 -0.914892 -0.848294 -0.764525 -0.665244 -0.55249 -0.428544 -0.295904 -0.157275 -0.015455 0.126676 0.266245 0.400409 0.526467 0.641853 0.744228 0.831539 0.901971 0.954143 0.986978 0.999801 0.992384 0.96483 0.917738 0.852053 0.769085 0.67055 0.558412 0.434962 0.302703 0.164301 0.0225751 -0.11961 -0.25937 -0.393881 -0.520396 -0.636376 -0.739458 -0.827548 -0.898887 -0.951984 -0.985804 -0.99965 -0.993222 -0.966689 -0.920545 -0.855754 -0.773631 -0.675811 -0.564313 -0.441369 -0.309483 -0.171329 -0.0296987 0.112532 0.252482 0.387314 0.514306 0.63086 0.73464 0.823534 0.895727 0.94979 0.984581 0.999431 0.994035 0.968475 0.92331 0.859418 0.778115 0.681053 0.570172 0.447749 0.316248 0.178338 0.0368166 -0.105453 -0.245585 -0.380741 -0.508177 -0.625327 -0.729788 -0.819469 -0.892548 -0.947524 -0.98332 -0.999169 -0.994777 -0.970238 -0.926013 -0.863044 -0.782573 -0.686245 -0.576021 -0.454107 -0.323001 -0.185347 -0.0439363 0.0983649 0.23867 0.374141 0.502032 0.619741 0.724906 0.815363 0.889305 0.945234 0.981988 0.998863 0.99548 0.971926 0.928692 0.866611 0.786989 0.69141 0.581818 0.460448 0.32973 0.19234 0.0510499 -0.0912742 -0.231752 -0.367527 -0.495857 -0.614144 -0.719972 -0.811227 -0.886027 -0.942877 -0.980632 -0.998489 -0.996135 -0.973581 -0.931298 -0.87016 -0.79136 -0.696541 -0.587603 -0.466754 -0.336455 -0.199327 -0.0581653 0.0841763 0.22481 0.360894 0.489656 0.608499 0.715018 0.80703 0.882706 0.940481 0.979199 0.998091 0.996726 0.975184 0.933873 0.873632 0.795706; #X coords 0 1 299 -1 300 200 1; #X restore 370 80 graph; #X obj 162 174 hsl 128 15 1 100 1 1 empty empty speed 0 -8 0 10 -225271 -1 -1 9300 1; #X msg 107 123 print; #X obj 159 194 phasor~ 100; #X obj 180 311 print A; #X obj 37 389 dac~; #X obj 46 358 *~; #X obj 87 360 hsl 128 15 0.0001 1 1 0 empty empty volume -2 -6 0 8 -261689 -1 -1 0 1; #X obj 84 378 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10 -261689 -1 -1 0 256; #X obj 21 10 cnv 15 650 40 empty empty xplay~ 10 22 0 24 -260818 -1 0; #N canvas 0 0 450 300 graph2 0; #X array \$0-scp 300 float 0; #X coords 0 1 299 -1 300 100 1; #X restore 370 294 graph; #N canvas 0 0 265 143 watch 0; #X obj 100 13 loadbang; #X obj 101 39 metro 50; #X obj 22 14 inlet~; #X obj 22 94 tabwrite~ \$0-scp; #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 2 0 3 0; #X restore 90 310 pd watch; #N canvas 33 327 454 231 attributes 0; #X msg 85 60 getattributes; #X obj 22 181 s to; #X text 203 61 dump all attributes; #X msg 85 91 getbuffer; #X text 170 91 get buffer name; #X msg 84 186 getinterp; #X text 165 186 get interpolation mode; #X msg 85 130 getunits; #X text 158 130 get unit setting; #X msg 85 155 getsclmode; #X text 176 155 get scale mode; #X text 21 15 xplay~ attributes; #X connect 0 0 1 0; #X connect 3 0 1 0; #X connect 5 0 1 0; #X connect 7 0 1 0; #X connect 9 0 1 0; #X restore 22 210 pd attributes; #X text 21 192 attributes; #X obj 21 154 s to-p; #X obj 21 250 r to-p; #X obj 81 280 xplay~ \$0-buf; #X text 180 29 http://grrrr.org/ext; #X text 179 11 buffer-based sample player \, (C)2001-2005 Thomas Grill ; #X connect 0 0 22 0; #X connect 1 0 22 0; #X connect 2 0 22 0; #X connect 5 0 24 0; #X connect 7 0 22 0; #X connect 9 0 11 0; #X connect 10 0 22 0; #X connect 11 0 5 0; #X connect 14 0 13 0; #X connect 14 0 13 1; #X connect 15 0 16 0; #X connect 16 0 14 1; #X connect 23 0 24 0; #X connect 24 0 14 0; #X connect 24 0 19 0; #X connect 24 1 12 0; xsample-master/pd/xrecord~-help.pd0000644000175000017500000001152513014165104017773 0ustar zmoelnigzmoelnig#N canvas 58 17 877 659 12; #X obj 18 83 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1 -1; #X msg 17 103 stop; #N canvas 0 0 450 300 graph7 0; #X array \$0-buf 10000 float 0; #X coords 0 1 9999 -1 200 140 1; #X restore 61 477 graph; #X msg 15 137 reset; #X obj 74 355 snapshot~; #X floatatom 76 380 7 0 0 0 - - -; #X obj 22 288 loadbang; #X msg 14 167 help; #X obj 179 164 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1; #X msg 197 161 loop \$1; #X msg 177 104 0; #X msg 213 104 200; #X msg 176 132 draw \$1; #X obj 427 332 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1 -1; #X msg 426 352 stop; #X msg 425 391 reset; #X obj 516 575 snapshot~; #X floatatom 516 605 7 0 0 0 - - -; #X obj 427 503 loadbang; #X obj 553 299 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1; #X msg 572 296 loop \$1; #X msg 468 263 0; #X msg 467 291 draw \$1; #X obj 554 322 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1; #X msg 572 320 sigmode \$1; #X msg 425 417 print; #X obj 579 425 hsl 128 15 -0.001 1 0 1 empty empty empty 20 8 0 8 -225271 -1 -1 2800 1; #X msg 601 347 mixmode \$1; #X floatatom 645 443 8 0 0 0 - - -; #X obj 427 530 metro 30; #X obj 22 315 metro 30; #X obj 681 86 osc~ 10; #X obj 90 146 r~ rec; #X obj 498 396 r~ rec; #X obj 667 149 s~ rec; #X obj 664 113 *~ 1; #X obj 663 90 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1 ; #X obj 760 115 *~ 1; #X obj 759 92 tgl 15 0 empty empty empty 20 8 0 8 -225271 -1 -1 0 1 ; #X obj 777 88 adc~; #X text 266 164 looping on/off; #X text 241 133 display refresh; #X text 56 81 start; #X text 57 103 stop; #X text 30 338 position signal; #X text 635 295 looping on/off; #X text 660 321 signal mode on/off; #X text 714 436 trigger signal; #X text 383 189 <----- message triggered; #X text 187 439 signal triggered ------->; #X text 509 242 click to activate auto update; #X text 448 328 start; #X text 466 352 stop; #X msg 152 239 all; #X msg 504 263 100; #X obj 554 497 line~; #X msg 554 472 \$1 20; #X msg 13 203 getattributes; #X obj 236 281 print A; #X msg 14 231 getbuffer; #X obj 583 116 *~ 1; #X obj 582 93 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 0 1 ; #X obj 602 89 noise~; #X obj 554 349 hradio 15 1 0 3 empty empty empty 0 -6 0 8 -225271 -1 -1 0; #X text 575 366 mixmode (off \, mix-in \, add); #X text 582 396 by the trigger signal; #X text 581 383 the amount of mixing-in is given; #X obj 95 280 xrecord~ \$0-buf; #X obj 516 529 xrecord~ \$0-buf; #X obj 18 12 cnv 15 800 40 empty empty xrecord~ 10 22 0 24 -260818 -1 0; #X text 202 253 min/max points; #X obj 201 241 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -225271 -1 -1 0 256; #X obj 258 241 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -225271 -1 -1 10002 256; #X obj 190 365 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -262131 -1 -1 0 256; #X obj 247 365 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -262131 -1 -1 10000 256; #X text 192 378 min/max points; #X obj 224 321 bng 15 250 50 0 empty empty loop_bang 0 -6 0 8 -262131 -1 -1; #X text 294 284 print attributes; #X obj 617 574 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -262131 -1 -1 0 256; #X obj 674 574 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -262131 -1 -1 10000 256; #X obj 618 500 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -225271 -1 -1 0 256; #X obj 675 500 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -225271 -1 -1 10000 256; #X text 224 31 http://grrrr.org/ext; #X text 224 12 buffer-based signal recorder \, (C)2001-2005 Thomas Grill; #X connect 0 0 67 0; #X connect 1 0 67 0; #X connect 3 0 67 0; #X connect 4 0 5 0; #X connect 6 0 30 0; #X connect 7 0 67 0; #X connect 8 0 9 0; #X connect 9 0 67 0; #X connect 10 0 12 0; #X connect 11 0 12 0; #X connect 12 0 67 0; #X connect 13 0 68 0; #X connect 14 0 68 0; #X connect 15 0 68 0; #X connect 16 0 17 0; #X connect 18 0 29 0; #X connect 19 0 20 0; #X connect 20 0 68 0; #X connect 21 0 22 0; #X connect 22 0 68 0; #X connect 23 0 24 0; #X connect 24 0 68 0; #X connect 25 0 68 0; #X connect 26 0 28 0; #X connect 26 0 56 0; #X connect 27 0 68 0; #X connect 29 0 16 0; #X connect 30 0 4 0; #X connect 31 0 35 0; #X connect 32 0 67 0; #X connect 33 0 68 0; #X connect 35 0 34 0; #X connect 36 0 35 1; #X connect 37 0 34 0; #X connect 38 0 37 1; #X connect 39 0 37 0; #X connect 39 1 37 0; #X connect 53 0 67 0; #X connect 54 0 22 0; #X connect 55 0 68 1; #X connect 56 0 55 0; #X connect 57 0 67 0; #X connect 59 0 67 0; #X connect 60 0 34 0; #X connect 61 0 60 1; #X connect 62 0 60 0; #X connect 63 0 27 0; #X connect 67 0 4 0; #X connect 67 1 73 0; #X connect 67 2 74 0; #X connect 67 3 76 0; #X connect 67 4 58 0; #X connect 68 0 16 0; #X connect 68 1 78 0; #X connect 68 2 79 0; #X connect 71 0 67 2; #X connect 72 0 67 3; #X connect 80 0 68 2; #X connect 81 0 68 3; xsample-master/pd/xgroove~-help.pd0000644000175000017500000001631013014165104020013 0ustar zmoelnigzmoelnig#N canvas 69 62 945 610 12; #X obj 215 253 hsl 128 15 0.001 3 1 1 empty empty speed 0 -8 0 10 -225271 -1 -1 5000 1; #X msg 603 169 loop \$1; #X obj 28 72 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1 -1; #X msg 27 92 stop; #N canvas 0 0 450 300 graph7 0; #X array \$0-buf 10000 float 0; #X coords 0 1 9999 -1 300 150 1; #X restore 573 269 graph; #X obj 17 556 dac~; #X msg 120 73 reset; #X text 299 321 min/max points; #X text 50 69 start; #X text 67 90 stop; #X msg 119 99 help; #X text 280 269 (float or signal); #X msg 749 167 interp \$1; #X msg 237 305 all; #X text 747 94 interpolation; #X text 622 116 once; #X text 768 116 none; #X text 768 148 linear; #X text 224 75 units; #X msg 225 163 units \$1; #X msg 358 163 sclmode \$1; #X text 244 127 ms; #X text 244 142 s; #X text 377 127 buffer; #X text 377 142 loop; #X obj 487 208 bng 15 250 50 0 empty empty empty 0 -6 0 8 -228992 -1 -1; #X obj 335 349 print A; #N canvas 0 0 450 300 graph2 0; #X array \$0-scp 300 float 0; #X coords 0 1 299 -1 300 100 1; #X restore 573 447 graph; #X obj 26 525 *~; #X obj 82 491 hsl 128 15 0.0001 1 1 0 empty empty volume -2 -6 0 8 -261689 -1 -1 0 1; #X obj 79 509 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10 -261689 -1 -1 0.0001 256; #X msg 25 249 pos \$1; #X msg 63 220 200; #X msg 25 221 100; #X obj 507 209 nbx 5 14 0 1e+037 0 1 empty empty frq 0 -6 0 10 -228992 -1 -1 220 256; #N canvas 19 334 427 333 loopzone 0; #X msg 28 84 xzone \$1; #X obj 31 43 hsl 128 15 0 300 0 0 empty empty empty -2 -6 0 8 -262131 -1 -1 0 1; #X floatatom 28 64 5 0 0 0 - - -; #X msg 203 207 xfade \$1; #X obj 203 142 vdl 15 0 0 4 empty empty empty 0 -6 0 8 -262144 -1 -1 0; #X text 202 123 loop zone mode; #X text 222 141 keep loop pos; #X text 222 157 keep loop length; #X text 222 173 keep fade length; #X msg 47 205 xshape \$1; #X obj 48 155 vdl 15 0 0 3 empty empty empty 0 -6 0 8 -262144 -1 -1 0; #X text 45 133 fade zone shape; #X text 67 152 linear; #X text 67 168 quarter sine; #X text 67 184 half sine; #X text 125 67 length of the loop zone; #X text 123 84 (in units); #X text 222 188 zone inside loop; #X text 21 9 xgroove~ crossfading loop zone; #X obj 27 255 s to-g; #X connect 0 0 19 0; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 3 0 19 0; #X connect 4 0 3 0; #X connect 9 0 19 0; #X connect 10 0 9 0; #X restore 23 414 pd loopzone; #X text 64 147 set buffer; #X text 23 383 settings for; #X text 22 395 cross-fading loop zone; #X text 399 349 print attributes; #X obj 357 394 bng 15 250 50 0 empty empty loop_bang 0 -6 0 8 -262131 -1 -1; #X text 357 60 scale mode; #X text 354 75 (pos message and position outlet); #X text 622 148 bidirectional; #X text 244 111 buffer size; #X obj 574 419 hsl 300 15 0 10000 0 0 empty bufpos empty -2 -6 0 8 -262144 -1 -1 10628 1; #X obj 236 527 nbx 5 14 -1e+037 1e+037 0 0 empty empty position 0 -6 0 10 -228992 -1 -1 3554.44 256; #N canvas 0 0 474 324 watch 0; #X obj 163 18 loadbang; #X obj 88 80 snapshot~; #X obj 164 44 metro 50; #X obj 143 109 s bufpos; #X obj 176 196 outlet; #X obj 22 14 inlet~; #X obj 88 14 inlet~; #X obj 22 196 tabwrite~ \$0-scp; #X connect 0 0 2 0; #X connect 1 0 3 0; #X connect 1 0 4 0; #X connect 1 0 7 0; #X connect 2 0 1 0; #X connect 2 0 7 0; #X connect 5 0 7 0; #X connect 6 0 1 0; #X restore 235 492 pd watch; #X text 377 111 units in loop; #N canvas 97 34 266 202 genosc 0; #X obj 38 29 inlet; #X obj 64 94 osc~ 1000; #X obj 38 54 route bang; #X obj 37 134 tabwrite~ \$0-buf; #X obj 158 94 loadbang; #X connect 0 0 2 0; #X connect 1 0 3 0; #X connect 2 0 3 0; #X connect 2 1 1 0; #X connect 4 0 3 0; #X restore 487 229 pd genosc; #X text 600 97 loop mode; #X text 23 201 set position; #X obj 299 426 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -262131 -1 -1 1004 256; #X obj 356 426 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -262131 -1 -1 8996 256; #X obj 298 309 nbx 5 14 0 1e+037 0 1 empty empty min 0 -6 0 10 -225271 -1 -1 1004 256; #X obj 355 309 nbx 5 14 0 1e+037 0 1 empty empty max 0 -6 0 10 -225271 -1 -1 8996 256; #X text 244 95 frames (def.); #X text 377 96 units in buffer (def.); #X text 622 132 forward (def.); #X text 768 132 4-point (def.); #N canvas 12 194 490 407 attributes 0; #X msg 82 74 getattributes; #X msg 138 133 getmax; #X msg 81 133 getmin; #X text 198 75 dump all attributes; #X text 200 135 get min/max positions; #X msg 82 105 getbuffer; #X msg 80 162 getpos; #X text 140 162 get current position; #X text 167 105 get buffer name; #X msg 79 251 getloop; #X msg 79 276 getinterp; #X text 147 251 get loop mode; #X text 160 276 get interpolation mode; #X msg 79 197 getunits; #X text 152 197 get unit setting; #X msg 79 222 getsclmode; #X text 170 222 get scale mode; #X msg 79 315 getxfade; #X msg 78 365 getxshape; #X text 157 315 get crossfade mode; #X msg 79 340 getxzone; #X text 154 340 get crossfade length; #X text 156 367 get crossfade shape; #X text 19 12 xgroove~ attributes; #X obj 19 195 s to-g; #X msg 82 49 getmethods; #X text 174 49 dump all methods; #X connect 0 0 24 0; #X connect 1 0 24 0; #X connect 2 0 24 0; #X connect 5 0 24 0; #X connect 6 0 24 0; #X connect 9 0 24 0; #X connect 10 0 24 0; #X connect 13 0 24 0; #X connect 15 0 24 0; #X connect 17 0 24 0; #X connect 18 0 24 0; #X connect 20 0 24 0; #X connect 25 0 24 0; #X restore 24 343 pd attributes; #X text 23 324 attribute stuff; #X text 484 177 generate; #X obj 26 10 cnv 15 850 40 empty empty xgroove~ 10 22 0 24 -260818 -1 0; #X msg 105 221 1000; #X msg 96 249 posmod \$1; #X text 146 227 modulo; #X text 301 439 min/max points; #X text 299 454 (sample rounded); #X obj 603 120 vradio 15 1 0 3 empty empty empty 0 -6 0 8 -225271 -1 -1 0; #X obj 749 119 vradio 15 1 0 3 empty empty empty 0 -6 0 8 -225271 -1 -1 0; #X obj 225 99 vradio 15 1 0 4 empty empty empty 0 -6 0 8 -225271 -1 -1 0; #X obj 358 99 vradio 15 1 0 4 empty empty empty 0 -6 0 8 -225271 -1 -1 0; #X obj 65 164 s to-g; #X obj 298 197 s to-g; #X obj 61 278 s to-g; #X obj 180 304 r to-g; #X obj 704 201 s to-g; #X obj 191 349 xgroove~ \$0-buf; #X text 227 29 http://grrrr.org/ext; #X obj 79 550 line~; #X msg 79 527 \$1 50; #X obj 212 271 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10 -225271 -1 -1 0.0233854 256; #X text 227 10 varispeed sample player \, (C)2001-2005 Thomas Grill ; #X connect 0 0 82 0; #X connect 1 0 77 0; #X connect 2 0 73 0; #X connect 3 0 73 0; #X connect 6 0 73 0; #X connect 10 0 73 0; #X connect 12 0 77 0; #X connect 13 0 78 0; #X connect 19 0 74 0; #X connect 20 0 74 0; #X connect 25 0 49 0; #X connect 28 0 5 0; #X connect 28 0 5 1; #X connect 29 0 30 0; #X connect 30 0 81 0; #X connect 31 0 75 0; #X connect 32 0 31 0; #X connect 33 0 31 0; #X connect 34 0 49 0; #X connect 47 0 46 0; #X connect 54 0 78 1; #X connect 55 0 78 2; #X connect 64 0 65 0; #X connect 65 0 75 0; #X connect 69 0 1 0; #X connect 70 0 12 0; #X connect 71 0 19 0; #X connect 72 0 20 0; #X connect 76 0 78 0; #X connect 78 0 28 0; #X connect 78 0 47 0; #X connect 78 1 47 1; #X connect 78 2 52 0; #X connect 78 3 53 0; #X connect 78 4 40 0; #X connect 78 5 26 0; #X connect 80 0 28 1; #X connect 81 0 80 0; #X connect 82 0 78 0; xsample-master/license.txt0000644000175000017500000000402713014165104016433 0ustar zmoelnigzmoelnigxsample - extended sample objects for Max/MSP and pd (pure data) Copyright (C) 2001-2005 Thomas Grill This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. In the official xsample distribution, the GNU General Public License is in the file gpl.txt --------------------------------------------------------- OTHER COPYRIGHT NOTICES --------------------------------------------------------- This package uses the flext C++ layer and some code snippets from pd (pure data). See the license texts below: --- flext ---------------------------------------------- flext - C++ layer for Max/MSP and pd (pure data) externals Copyright (C) 2001-2005 Thomas Grill This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. In the official flext distribution, the GNU General Public License is in the file gpl.txt xsample-master/source/0000755000175000017500000000000013014165104015545 5ustar zmoelnigzmoelnigxsample-master/source/inter.cpp0000644000175000017500000000550013014165104017372 0ustar zmoelnigzmoelnig/* xsample - extended sample objects for Max/MSP and pd (pure data) Copyright (c) 2001-2011 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. $LastChangedRevision: 39 $ $LastChangedDate$ $LastChangedBy$ */ #include "main.h" #include #ifdef _MSC_VER #pragma warning (disable:4244) #endif #ifndef TMPLOPT #include "inter.h" #endif void xinter::setup(t_classid c) { FLEXT_CADDBANG(c,0,m_start); FLEXT_CADDMETHOD_(c,0,"start",m_start); FLEXT_CADDMETHOD_(c,0,"stop",m_stop); FLEXT_CADDATTR_VAR_E(c,"interp",interp,m_interp); } void xinter::DoUpdate(unsigned int flags) { xsample::DoUpdate(flags); if(flags&xsc_play) { switch(outchns) { case 1: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,1)); break; case 2: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,2)); break; case 4: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,4)); break; default: SETSIGFUN(zerofun,TMPLFUN(s_play0,-1,-1)); } if(doplay && buf.Ok()) { if(interp == xsi_4p) switch(buf.Channels()*1000+outchns) { case 1001: SETSIGFUN(playfun,TMPLFUN(s_play4,1,1)); break; case 1002: SETSIGFUN(playfun,TMPLFUN(s_play4,1,2)); break; case 2001: SETSIGFUN(playfun,TMPLFUN(s_play4,2,1)); break; case 2002: SETSIGFUN(playfun,TMPLFUN(s_play4,2,2)); break; case 4001: case 4002: case 4003: SETSIGFUN(playfun,TMPLFUN(s_play4,4,-1)); break; case 4004: SETSIGFUN(playfun,TMPLFUN(s_play4,4,4)); break; default: SETSIGFUN(playfun,TMPLFUN(s_play4,-1,-1)); } else if(interp == xsi_lin) switch(buf.Channels()*1000+outchns) { case 1001: SETSIGFUN(playfun,TMPLFUN(s_play2,1,1)); break; case 1002: SETSIGFUN(playfun,TMPLFUN(s_play2,1,2)); break; case 2001: SETSIGFUN(playfun,TMPLFUN(s_play2,2,1)); break; case 2002: SETSIGFUN(playfun,TMPLFUN(s_play2,2,2)); break; case 4001: case 4002: case 4003: SETSIGFUN(playfun,TMPLFUN(s_play2,4,-1)); break; case 4004: SETSIGFUN(playfun,TMPLFUN(s_play2,4,4)); break; default: SETSIGFUN(playfun,TMPLFUN(s_play2,-1,-1)); } else switch(buf.Channels()*1000+outchns) { case 1001: SETSIGFUN(playfun,TMPLFUN(s_play1,1,1)); break; case 1002: SETSIGFUN(playfun,TMPLFUN(s_play1,1,2)); break; case 2001: SETSIGFUN(playfun,TMPLFUN(s_play1,2,1)); break; case 2002: SETSIGFUN(playfun,TMPLFUN(s_play1,2,2)); break; case 4001: case 4002: case 4003: SETSIGFUN(playfun,TMPLFUN(s_play1,4,-1)); break; case 4004: SETSIGFUN(playfun,TMPLFUN(s_play1,4,4)); break; default: SETSIGFUN(playfun,TMPLFUN(s_play1,-1,-1)); } } else SETSIGFUN(playfun,TMPLFUN(s_play0,-1,-1)); } } xsample-master/source/xgroove~-Info.plist0000644000175000017500000000122013014165104021375 0ustar zmoelnigzmoelnig CFBundleDevelopmentRegion English CFBundleExecutable xgroove~ CFBundleIdentifier org.grrrr.xgroove~ CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType iLaX CFBundleSignature ???? CFBundleVersion 1.0 CSResourcesFileMapped yes xsample-master/source/groove.cpp0000644000175000017500000005064713014165104017566 0ustar zmoelnigzmoelnig/* xsample - extended sample objects for Max/MSP and pd (pure data) Copyright (c) 2001-2011 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. $LastChangedRevision: 39 $ $LastChangedDate$ $LastChangedBy$ */ #ifdef _MSC_VER #define _USE_MATH_DEFINES #endif #include "main.h" #include #include #ifdef _MSC_VER #pragma warning (disable:4244) #endif #define XZONE_TABLE 512 class xgroove: public xinter { FLEXT_HEADER_S(xgroove,xinter,setup) public: xgroove(int argc,const t_atom *argv); virtual ~xgroove(); void m_pos(float pos) { setpos(LIKELY(s2u)?pos/s2u:0); Update(xsc_pos,true); } inline void m_posmod(float pos) { setposmod(LIKELY(pos)?pos/s2u:0); } // motivated by Tim Blechmann inline void mg_pos(float &v) const { v = curpos*s2u; } enum xs_fade { xsf_keeplooppos = 0,xsf_keeplooplen,xsf_keepfade,xsf_inside }; enum xs_shape { xss_lin = 0,xss_qsine,xss_hsine }; void ms_xfade(int xf) { if(xf < 0 || xf > xsf_inside) xf = xsf_keeplooppos; xfade = (xs_fade)xf; Update(xsc_fade,true); } void ms_xshape(int sh); void ms_xzone(float xz); void mg_xzone(float &xz) { xz = _xzone*s2u; } void m_loop(xs_loop lp) { loopmode = lp,bidir = 1; Update(xsc_loop,true); } protected: double curpos; // in samples float bidir; // +1 or -1 float _xzone,xzone; long znsmin,znsmax; xs_fade xfade; int xshape; t_sample **znbuf; t_sample *znpos,*znidx; Element *znmul; int pblksz; inline void setpos(double pos) { if(UNLIKELY(pos < znsmin)) curpos = znsmin; else if(UNLIKELY(pos > znsmax)) curpos = znsmax; else curpos = pos; } inline void setposmod(double pos) { if(pos >= 0) curpos = znsmin+fmod(pos,znsmax-znsmin); else curpos = znsmax+fmod(pos,znsmax-znsmin); } virtual void DoReset(); virtual void DoUpdate(unsigned int flags); virtual void CbSignal(); virtual void m_help(); virtual void m_print(); private: static void setup(t_classid c); //! return true if something has changed bool do_xzone(); DEFSIGFUN(s_pos_off); DEFSIGFUN(s_pos_once); DEFSIGFUN(s_pos_loop); DEFSIGFUN(s_pos_loopzn); DEFSIGFUN(s_pos_bidir); DEFSIGCALL(posfun); DEFSTCALL(zonefun); static Element fade_lin[],fade_qsine[],fade_hsine[]; FLEXT_CALLBACK_F(m_pos) FLEXT_CALLBACK_F(m_posmod) FLEXT_CALLBACK_F(m_min) FLEXT_CALLBACK_F(m_max) FLEXT_CALLBACK(m_all) FLEXT_CALLSET_E(m_loop,xs_loop) FLEXT_CALLSET_I(ms_xfade) FLEXT_ATTRGET_I(xfade) FLEXT_CALLSET_I(ms_xshape) FLEXT_ATTRGET_I(xshape) FLEXT_CALLSET_F(ms_xzone) FLEXT_CALLGET_F(mg_xzone) FLEXT_CALLVAR_F(mg_pos,m_pos) FLEXT_CALLSET_F(m_min) FLEXT_CALLSET_F(m_max) }; #ifdef XGROOVE_STANDALONE FLEXT_NEW_DSP_V("xgroove~",xgroove) #else FLEXT_LIB_DSP_V("xgroove~",xgroove) #endif Element xgroove::fade_lin[XZONE_TABLE+1]; Element xgroove::fade_qsine[XZONE_TABLE+1]; Element xgroove::fade_hsine[XZONE_TABLE+1]; void xgroove::setup(t_classid c) { #ifdef XGROOVE_STANDALONE flext::post("-------------------------------"); flext::post(" xgroove~, version " XSAMPLE_VERSION); flext::post(""); flext::post(" (C)2001-2011 Thomas Grill "); #ifdef FLEXT_DEBUG flext::post(""); flext::post("DEBUG BUILD - " __DATE__ " " __TIME__); #endif flext::post("-------------------------------"); #endif DefineHelp(c,"xgroove~"); FLEXT_CADDMETHOD_(c,0,"all",m_all); FLEXT_CADDMETHOD(c,1,m_min); FLEXT_CADDMETHOD(c,2,m_max); FLEXT_CADDATTR_VAR(c,"min",mg_min,m_min); FLEXT_CADDATTR_VAR(c,"max",mg_max,m_max); FLEXT_CADDATTR_VAR(c,"pos",mg_pos,m_pos); FLEXT_CADDMETHOD_(c,0,"posmod",m_posmod); FLEXT_CADDATTR_VAR_E(c,"loop",loopmode,m_loop); FLEXT_CADDATTR_VAR(c,"xfade",xfade,ms_xfade); FLEXT_CADDATTR_VAR(c,"xzone",mg_xzone,ms_xzone); FLEXT_CADDATTR_VAR(c,"xshape",xshape,ms_xshape); // initialize fade tables for(int i = 0; i <= XZONE_TABLE; ++i) { const float x = i*(1.f/XZONE_TABLE); // linear fade_lin[i] = x; // quarter sine wave fade_qsine[i] = sin(x*(M_PI/2)); // half sine wave fade_hsine[i] = (sin(x*M_PI-M_PI/2)+1.f)*0.5f; } } xgroove::xgroove(int argc,const t_atom *argv): curpos(0),bidir(1), _xzone(0),xzone(0), xfade(xsf_keeplooppos),xshape(xss_lin), znpos(NULL),znmul(NULL),znidx(NULL), pblksz(0) { int argi = 0; #if FLEXT_SYS == FLEXT_SYS_MAX if(argc > argi && CanbeInt(argv[argi])) { outchns = GetAInt(argv[argi]); argi++; } #endif if(argc > argi && IsSymbol(argv[argi])) { buf.Set(GetSymbol(argv[argi]),true); argi++; #if FLEXT_SYS == FLEXT_SYS_MAX // old-style command line? if(UNLIKELY(argi == 1 && argc == 2 && CanbeInt(argv[argi]))) { outchns = GetAInt(argv[argi]); argi++; post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName()); } #endif } AddInSignal("Signal of playing speed"); // speed signal AddInFloat("Starting point"); // min play pos AddInFloat("Ending point"); // max play pos for(int ci = 0; ci < outchns; ++ci) { char tmp[30]; STD::sprintf(tmp,"Audio signal channel %i",ci+1); AddOutSignal(tmp); // output } AddOutSignal("Position currently played"); // position AddOutFloat("Starting point (rounded to frame)"); // play min AddOutFloat("Ending point (rounded to frame)"); // play max AddOutBang("Bang on loop end/rollover"); // loop bang // don't know vector size yet -> wait for m_dsp znbuf = new t_sample *[outchns]; for(int i = 0; i < outchns; ++i) znbuf[i] = NULL; // initialize crossfade shape ms_xshape(xshape); } xgroove::~xgroove() { if(znbuf) { for(int i = 0; i < outchns; ++i) if(znbuf[i]) FreeAligned(znbuf[i]); delete[] znbuf; } if(znpos) FreeAligned(znpos); if(znidx) FreeAligned(znidx); } void xgroove::DoReset() { xinter::DoReset(); curpos = 0; bidir = 1; } void xgroove::ms_xzone(float xz) { ChkBuffer(true); _xzone = (UNLIKELY(xz < 0) || UNLIKELY(!s2u))?0:xz/s2u; Update(xsc_fade,true); } void xgroove::ms_xshape(int sh) { if(UNLIKELY(sh < 0) || UNLIKELY(sh > xss_hsine)) sh = xss_lin; xshape = (xs_shape)sh; switch(xshape) { case xss_qsine: znmul = fade_qsine; break; case xss_hsine: znmul = fade_hsine; break; default: post("%s - shape parameter invalid, set to linear",thisName()); case xss_lin: znmul = fade_lin; break; } // no need to recalc the fade zone here } void xgroove::s_pos_off(int n,t_sample *const *invecs,t_sample *const *outvecs) { t_sample *pos = outvecs[outchns]; SetSamples(pos,n,curpos); playfun(n,&pos,outvecs); SetSamples(pos,n,scale(curpos)); } void xgroove::s_pos_once(int n,t_sample *const *invecs,t_sample *const *outvecs) { const t_sample *speed = invecs[0]; t_sample *pos = outvecs[outchns]; bool lpbang = false; const double smin = curmin,smax = curmax,plen = smax-smin; if(LIKELY(plen > 0)) { register double o = curpos; for(int i = 0; i < n; ++i) { const t_sample spd = speed[i]; // must be first because the vector is reused for output! if(UNLIKELY(!(o < smax))) { o = smax; lpbang = true; } else if(UNLIKELY(o < smin)) { o = smin; lpbang = true; } pos[i] = o; o += spd; } // normalize and store current playing position setpos(o); playfun(n,&pos,outvecs); arrscale(n,pos,pos); } else s_pos_off(n,invecs,outvecs); if(UNLIKELY(lpbang)) { doplay = false; ToOutBang(outchns+3); } } void xgroove::s_pos_loop(int n,t_sample *const *invecs,t_sample *const *outvecs) { const t_sample *speed = invecs[0]; t_sample *pos = outvecs[outchns]; bool lpbang = false; #ifdef __VEC__ // prefetch cache vec_dst(speed,GetPrefetchConstant(1,n>>2,0),0); #endif const double smin = curmin,smax = curmax,plen = smax-smin; if(LIKELY(plen > 0)) { register double o = curpos; if(wrap && UNLIKELY(smin < 0) && UNLIKELY(smax >= buf.Frames())) { for(int i = 0; i < n; ++i) { const t_sample spd = speed[i]; // must be first because the vector is reused for output! // normalize offset if(UNLIKELY(!(o < smax))) { // faster than o >= smax o = fmod(o-smin,plen)+smin; lpbang = true; } else if(UNLIKELY(o < smin)) { o = fmod(o-smin,plen)+smax; lpbang = true; } // TODO normalize to 0...buf.Frames() pos[i] = o; o += spd; } } else { /////////////////////////////////// // Most of the time is spent in here /////////////////////////////////// for(int i = 0; i < n; ++i) { const t_sample spd = speed[i]; // must be first because the vector is reused for output! // normalize offset if(UNLIKELY(!(o < smax))) { // faster than o >= smax o = fmod(o-smin,plen)+smin; lpbang = true; } else if(UNLIKELY(o < smin)) { o = fmod(o-smin,plen)+smax; lpbang = true; } pos[i] = o; o += spd; } } // normalize and store current playing position setpos(o); playfun(n,&pos,outvecs); arrscale(n,pos,pos); } else s_pos_off(n,invecs,outvecs); #ifdef __VEC__ vec_dss(0); #endif if(UNLIKELY(lpbang)) ToOutBang(outchns+3); } void xgroove::s_pos_loopzn(int n,t_sample *const *invecs,t_sample *const *outvecs) { const t_sample *speed = invecs[0]; t_sample *pos = outvecs[outchns]; bool lpbang = false; FLEXT_ASSERT(xzone); const float xz = xzone,xf = (float)XZONE_TABLE/xz; // adapt the playing bounds to the current cross-fade zone const long smin = znsmin,smax = znsmax,plen = smax-smin; // temporary storage const long cmin = curmin,cmax = curmax; // hack -> set curmin/curmax to loop extremes so that sampling functions (playfun) don't get confused curmin = smin,curmax = smax; if(LIKELY(plen > 0)) { bool inzn = false; register double o = curpos; // calculate inner cross-fade boundaries const double lmin = smin+xz,lmax = smax-xz,lsh = lmax-lmin+xz; const double lmin2 = lmin-xz/2,lmax2 = lmax+xz/2; for(int i = 0; i < n; ++i) { // normalize offset if(UNLIKELY(o < smin)) { o = fmod(o-smin,plen)+smax; lpbang = true; } else if(UNLIKELY(!(o < smax))) { o = fmod(o-smin,plen)+smin; lpbang = true; } if(UNLIKELY(o < lmin)) { register float inp; if(o < lmin2) { // in first half of early cross-fade zone // this happens only once, then the offset is normalized to the end // of the loop (before mid of late crossfade) o += lsh; // now lmax <= o <= lmax2 lpbang = true; inp = xz-(float)(o-lmax); // 0 <= inp < xz znpos[i] = lmin-inp; } else { // in second half of early cross-fade zone inp = xz+(float)(o-lmin); // 0 <= inp < xz znpos[i] = lmax+inp; } znidx[i] = inp*xf; inzn = true; } else if(UNLIKELY(!(o < lmax))) { register float inp; if(!(o < lmax2)) { // in second half of late cross-fade zone // this happens only once, then the offset is normalized to the beginning // of the loop (after mid of early crossfade) o -= lsh; // now lmin2 <= o <= lmin lpbang = true; inp = xz+(float)(o-lmin); // 0 <= inp < xz znpos[i] = lmax+inp; } else { // in first half of late cross-fade zone inp = xz-(float)(o-lmax); // 0 <= inp < xz znpos[i] = lmin-inp; } znidx[i] = inp*xf; inzn = true; } else znidx[i] = XZONE_TABLE,znpos[i] = 0; const t_sample spd = speed[i]; // must be first because the vector is reused for output! pos[i] = o; o += spd; } // normalize and store current playing position setpos(o); // calculate samples (1st voice) playfun(n,&pos,outvecs); // rescale position vector arrscale(n,pos,pos); if(UNLIKELY(inzn)) { // only if we have touched the cross-fade zone // calculate samples in loop zone (2nd voice) playfun(n,&znpos,znbuf); // calculate counterpart in loop fade arrscale(n,znidx,znpos,XZONE_TABLE,-1); // calculate fade coefficients by sampling from the fade curve zonefun(znmul,0,XZONE_TABLE+1,n,1,1,&znidx,&znidx,false); zonefun(znmul,0,XZONE_TABLE+1,n,1,1,&znpos,&znpos,false); // mix voices for all channels for(int o = 0; o < outchns; ++o) { MulSamples(outvecs[o],outvecs[o],znidx,n); MulSamples(znbuf[o],znbuf[o],znpos,n); AddSamples(outvecs[o],outvecs[o],znbuf[o],n); } } } else s_pos_off(n,invecs,outvecs); curmin = cmin,curmax = cmax; if(UNLIKELY(lpbang)) ToOutBang(outchns+3); } void xgroove::s_pos_bidir(int n,t_sample *const *invecs,t_sample *const *outvecs) { const t_sample *speed = invecs[0]; t_sample *pos = outvecs[outchns]; bool lpbang = false; const int smin = curmin,smax = curmax,plen = smax-smin; if(LIKELY(plen > 0)) { register double o = curpos; register float bd = bidir; for(int i = 0; i < n; ++i) { const t_sample spd = speed[i]; // must be first because the vector is reused for output! // normalize offset // \todo at the moment fmod doesn't take bidirectionality into account!! if(UNLIKELY(!(o < smax))) { o = smax-fmod(o-smax,plen); // mirror the position at smax bd = -bd; lpbang = true; } else if(UNLIKELY(o < smin)) { o = smin+fmod(smin-o,plen); // mirror the position at smin bd = -bd; lpbang = true; } pos[i] = o; o += spd*bd; } // normalize and store current playing position setpos(o); bidir = bd; playfun(n,&pos,outvecs); arrscale(n,pos,pos); } else s_pos_off(n,invecs,outvecs); if(UNLIKELY(lpbang)) ToOutBang(outchns+3); } void xgroove::CbSignal() { int ret = ChkBuffer(true); if(LIKELY(ret)) { FLEXT_ASSERT(buf.Valid()); const lock_t l = Lock(); posfun(Blocksize(),InSig(),OutSig()); Unlock(l); Refresh(); } else zerofun(Blocksize(),InSig(),OutSig()); } void xgroove::DoUpdate(unsigned int flags) { xinter::DoUpdate(flags); if(flags&xsc_range) { // output new range ToOutFloat(outchns+1,curmin*s2u); ToOutFloat(outchns+2,curmax*s2u); } if(flags&(xsc_fade|xsc_range)) if(do_xzone()) flags |= xsc_play; if(flags&(xsc_pos|xsc_range)) // normalize position setpos(curpos); // loop zone must already be set if(flags&xsc_play) { if(doplay) { switch(loopmode) { case xsl_once: SETSIGFUN(posfun,SIGFUN(s_pos_once)); break; case xsl_loop: if(xzone > 0) { const int blksz = Blocksize(); if(pblksz != blksz) { for(int o = 0; o < outchns; ++o) { if(znbuf[o]) FreeAligned(znbuf[o]); znbuf[o] = (t_sample *)NewAligned(blksz*sizeof(t_sample)); } if(znpos) FreeAligned(znpos); znpos = (t_sample *)NewAligned(blksz*sizeof(t_sample)); if(znidx) FreeAligned(znidx); znidx = (t_sample *)NewAligned(blksz*sizeof(t_sample)); pblksz = blksz; } SETSIGFUN(posfun,SIGFUN(s_pos_loopzn)); // linear interpolation should be just ok for fade zone, no? switch(outchns) { case 1: SETSTFUN(zonefun,TMPLSTF(st_play2,1,1)); break; case 2: SETSTFUN(zonefun,TMPLSTF(st_play2,1,2)); break; case 4: SETSTFUN(zonefun,TMPLSTF(st_play2,1,4)); break; default: SETSTFUN(zonefun,TMPLSTF(st_play2,1,-1)); } } else SETSIGFUN(posfun,SIGFUN(s_pos_loop)); break; case xsl_bidir: SETSIGFUN(posfun,SIGFUN(s_pos_bidir)); break; default: ; // just to prevent warning } } else SETSIGFUN(posfun,SIGFUN(s_pos_off)); } } bool xgroove::do_xzone() { // \todo do we really need this? if(UNLIKELY(!s2u)) return false; // this can happen if DSP is off const long frames = buf.Frames(); if(UNLIKELY(!frames)) return false; xzone = _xzone; // make a copy for changing it if(xfade == xsf_inside) { // fade zone goes inside the loop -> loop becomes shorter // \todo what about round-off? const long maxfd = (curmax-curmin)/2; if(xzone > maxfd) xzone = maxfd; znsmin = curmin,znsmax = curmax; } else if(xfade == xsf_keepfade) { // try to keep fade zone // change of loop bounds may happen // restrict xzone to half of buffer const long maxfd = frames/2; if(xzone > maxfd) xzone = maxfd; // \todo what about round-off? const long hzone = CASTINT(xzone/2.f+0.5f); znsmin = curmin-hzone; znsmax = curmax+hzone; // widen loop if xzone doesn't fit into it // \todo check formula long lack = CASTINT(ceil((xzone*2.f-(znsmax-znsmin))/2.f)); if(lack > 0) znsmin -= lack,znsmax += lack; if(!wrap) { // check buffer limits and shift bounds if necessary if(znsmin < 0) { znsmax -= znsmin; znsmin = 0; } if(znsmax > frames) znsmax = frames; } } else if(xfade == xsf_keeplooplen) { // try to keep loop length // shifting of loop bounds may happen const long plen = curmax-curmin; if(xzone > plen) xzone = plen; const long maxfd = frames-plen; if(xzone > maxfd) xzone = maxfd; // \todo what about round-off? const long hzone = CASTINT(xzone/2.f+0.5f); znsmin = curmin-hzone; znsmax = curmax+hzone; if(!wrap) { // check buffer limits and shift bounds if necessary // both cases can't happen because of xzone having been limited above if(znsmin < 0) { znsmax -= znsmin; znsmin = 0; } else if(znsmax > frames) { znsmin -= znsmax-frames; znsmax = frames; } } } else if(xfade == xsf_keeplooppos) { // try to keep loop position and length // restrict fade zone to maximum length const long plen = curmax-curmin; if(xzone > plen) xzone = plen; // \todo what about round-off? const long hzone = CASTINT(xzone/2.f+0.5f); znsmin = curmin-hzone; znsmax = curmax+hzone; long ovr = znsmax-frames; if(-znsmin > ovr) ovr = -znsmin; if(ovr > 0) { znsmin += ovr; znsmax -= ovr; xzone -= ovr*2; } } FLEXT_ASSERT(znsmin <= znsmax && (znsmax-znsmin) >= xzone*2.f); return true; } void xgroove::m_help() { post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName()); post("(C) Thomas Grill, 2001-2010"); #if FLEXT_SYS == FLEXT_SYS_MAX post("Arguments: %s [channels=1] [buffer]",thisName()); #else post("Arguments: %s [buffer]",thisName()); #endif post("Inlets: 1:Messages/Speed signal, 2:Min position, 3:Max position"); post("Outlets: 1:Audio signal, 2:Position signal, 3:Min position (rounded), 4:Max position (rounded)"); post("Methods:"); post("\thelp: shows this help"); post("\tset [name] / @buffer [name]: set buffer or reinit"); post("\tenable 0/1: turn dsp calculation off/on"); post("\treset: reset min/max playing points and playing offset"); post("\tprint: print current settings"); post("\t@loop 0/1/2: sets looping to off/forward/bidirectional"); post("\t@interp 0/1/2: set interpolation to off/4-point/linear"); post("\t@min {unit}: set minimum playing point"); post("\t@max {unit}: set maximum playing point"); post("\tall: select entire buffer length"); post("\tpos {unit}: set playing position (obeying the current scale mode)"); post("\tposmod {unit}: set playing position (modulo into min/max range)"); post("\tbang/start: start playing"); post("\tstop: stop playing"); post("\trefresh: checks buffer and refreshes outlets"); post("\t@units 0/1/2/3: set units to frames/buffer size/ms/s"); post("\t@sclmode 0/1/2/3: set range of position to units/units in loop/buffer/loop"); post("\t@xzone {unit}: length of loop crossfade zone"); post("\t@xfade 0/1/2/3: fade mode (keep loop/keep loop length/keep fade/inside loop)"); post("\t@xshape 0/1/2: shape of crossfade (linear/quarter sine/half sine)"); post(""); } void xgroove::m_print() { static const char *sclmode_txt[] = {"units","units in loop","buffer","loop"}; static const char *interp_txt[] = {"off","4-point","linear"}; static const char *loop_txt[] = {"once","looping","bidir"}; // print all current settings post("%s - current settings:",thisName()); post("bufname = '%s', length = %.3f, channels = %i",buf.Name(),(float)(buf.Frames()*s2u),buf.Channels()); post("out channels = %i, frames/unit = %.3f, scale mode = %s",outchns,(float)(1./s2u),sclmode_txt[sclmode]); post("loop = %s, interpolation = %s",loop_txt[(int)loopmode],interp_txt[interp >= xsi_none && interp <= xsi_lin?interp:xsi_none]); post("loop crossfade zone = %.3f",(float)(xzone*s2u)); post(""); } xsample-master/source/main.cpp0000644000175000017500000001247213014165104017203 0ustar zmoelnigzmoelnig/* xsample - extended sample objects for Max/MSP and pd (pure data) Copyright (c) 2001-2014 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. $LastChangedRevision: 39 $ $LastChangedDate$ $LastChangedBy$ */ #include "main.h" // Initialization function for xsample library static void xsample_main() { flext::post("-------------------------------"); flext::post("xsample objects, version " XSAMPLE_VERSION); flext::post(""); flext::post(" xrecord~, xplay~, xgroove~ "); flext::post(" (C)2001-2014 Thomas Grill "); #ifdef FLEXT_DEBUG flext::post(""); flext::post("DEBUG BUILD - " __DATE__ " " __TIME__); #endif flext::post("-------------------------------"); // call the objects' setup routines FLEXT_DSP_SETUP(xrecord); FLEXT_DSP_SETUP(xplay); FLEXT_DSP_SETUP(xgroove); } #if !defined(XGROOVE_STANDALONE) && !defined(XRECORD_STANDALONE) && !defined(XPLAY_STANDALONE) // setup the library FLEXT_LIB_SETUP(xsample,xsample_main) #endif // ------------------------------ void xsample::setup(t_classid c) { FLEXT_CADDMETHOD_(c,0,"help",m_help); FLEXT_CADDMETHOD_(c,0,"set",m_set); FLEXT_CADDMETHOD_(c,0,"print",m_print); FLEXT_CADDMETHOD_(c,0,"refresh",m_refresh); FLEXT_CADDMETHOD_(c,0,"reset",m_reset); FLEXT_CADDATTR_VAR(c,"buffer",mg_buffer,ms_buffer); FLEXT_CADDATTR_VAR_E(c,"units",unitmode,m_units); FLEXT_CADDATTR_VAR_E(c,"sclmode",sclmode,m_sclmode); FLEXT_CADDATTR_GET(c,"scale",s2u); } xsample::xsample(): #if FLEXT_SYS == FLEXT_SYS_MAX unitmode(xsu_ms), // Max/MSP defaults to milliseconds #else unitmode(xsu_sample), // PD defaults to samples #endif sclmode(xss_unitsinbuf), curmin(0),curmax(1L<<(sizeof(curmax)*8-2)), wrap(false), update(xsc_all) {} xsample::~xsample() {} bool xsample::Finalize() { if(!flext_dsp::Finalize()) return false; // flags have been set in constructor Refresh(); return true; } int xsample::ChkBuffer(bool refresh) { if(!buf.Symbol() || !buf.Valid()) return 0; if(UNLIKELY(buf.Update())) { #ifdef FLEXT_DEBUG post("%s - buffer update!",thisName()); #endif Update(xsc_buffer); if(refresh) { Refresh(); return buf.Ok()?1:0; } else return 1; } else return -1; } /* called after all buffer objects have been created in the patch */ void xsample::CbLoadbang() { ChkBuffer(true); } void xsample::m_set(int argc,const t_atom *argv) { const t_symbol *sym = argc >= 1?GetASymbol(argv[0]):NULL; int r = buf.Set(sym); if(LIKELY(sym) && UNLIKELY(r < 0)) post("%s - can't find buffer %s",thisName(),GetString(sym)); Update(xsc_buffer,true); } void xsample::m_min(float mn) { int ret = ChkBuffer(true); if(LIKELY(ret) && LIKELY(s2u)) { long cmn = CASTINT(mn/s2u+0.5f); // conversion to samples if(UNLIKELY(cmn < 0)) curmin = 0; else if(UNLIKELY(cmn > curmax)) curmin = curmax; else curmin = cmn; Update(xsc_range,true); } } void xsample::m_max(float mx) { int ret = ChkBuffer(true); if(LIKELY(ret) && LIKELY(s2u)) { long cmx = CASTINT(mx/s2u+0.5f); // conversion to samples if(UNLIKELY(cmx > buf.Frames())) curmax = buf.Frames(); else if(UNLIKELY(cmx < curmin)) curmax = curmin; else curmax = cmx; Update(xsc_range,true); } } bool xsample::CbDsp() { // this is hopefully called at change of sample rate ?! #ifdef FLEXT_DEBUG post("%s - DSP reset!",thisName()); #endif // for PD at least this is also called if a table has been deleted... // then we must reset the buffer Update(xsc_srate|xsc_buffer,true); return true; } void xsample::DoReset() { ResetRange(); } void xsample::DoUpdate(unsigned int flags) { if(flags&xsc_buffer) buf.Set(); if(flags&xsc_range && buf.Ok()) { const int f = buf.Frames(); if(!wrap) { // normalize bounds if(curmin < 0) curmin = 0; else if(curmin > f) curmin = f; if(curmax > f) curmax = f; else if(curmax < curmin) curmax = curmin; } else // don't normalize if(curmax < curmin) curmax = curmin; } if(flags&xsc_units) { switch(unitmode) { case xsu_sample: // samples s2u = 1; break; case xsu_buffer: // buffer size s2u = buf.Ok() && buf.Frames()?1.f/buf.Frames():0; break; case xsu_ms: // ms s2u = 1000.f/Samplerate(); break; case xsu_s: // s s2u = 1.f/Samplerate(); break; default: post("%s - Unknown unit mode",thisName()); } switch(sclmode) { case xss_unitsinbuf: // samples/units sclmin = 0; sclmul = s2u; break; case xss_unitsinloop: // samples/units from recmin to recmax sclmin = curmin; sclmul = s2u; break; case xss_buffer: // unity between 0 and buffer size sclmin = 0; sclmul = buf.Ok() && buf.Frames()?1.f/buf.Frames():0; break; case xss_loop: // unity between recmin and recmax sclmin = curmin; sclmul = curmin < curmax?1.f/(curmax-curmin):0; break; default: post("%s - Unknown scale mode",thisName()); } } } xsample-master/source/inter.h0000755000175000017500000003237513014165104017054 0ustar zmoelnigzmoelnig/* xsample - extended sample objects for Max/MSP and pd (pure data) Copyright (c) 2001-2011 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. $LastChangedRevision: 39 $ $LastChangedDate$ $LastChangedBy$ */ #ifndef __INTER_H #define __INTER_H TMPLDEF void xinter::st_play0(const Element *,const int ,const int ,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) { // stopped/invalid buffer -> output zero for(int ci = 0; ci < outchns; ++ci) ZeroSamples(outvecs[ci],n); } TMPLDEF void xinter::st_play1(const Element *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) { SIGCHNS(BCHNS,inchns,OCHNS,outchns); // position info are frame units const t_sample *pos = invecs[0]; t_sample *const *sig = outvecs; // no interpolation // ---------------- if(UNLIKELY(smin == smax)) { // zero loop length -> assume that smin is a valid sample position... int ci; for(ci = 0; ci < OCHNS; ++ci) SetSamples(sig[ci],n,bdt[smin*BCHNS]); // clear rest of output channels (if buffer has less channels) for(; ci < outchns; ++ci) ZeroSamples(sig[ci],n); } else if(OCHNS == 1) { t_sample *sig0 = sig[0]; for(int i = 0; i < n; ++i) { register long oint = CASTINT(*(pos++)); // for xplay oint can be out of bounds -> check if(LIKELY(oint >= smin)) if(LIKELY(oint < smax)) { // normal *(sig0++) = bdt[oint*BCHNS]; } else { // position > last sample ... take only last sample *(sig0++) = bdt[(smax-1)*BCHNS]; } else { // position < 0 ... take only 0th sample *(sig0++) = bdt[smin*BCHNS]; } } } else { for(int i = 0,si = 0; i < n; ++i,++si) { register long oint = CASTINT(*(pos++)); register const Element *fp; // for xplay oint can be out of bounds -> check if(LIKELY(oint >= smin)) if(LIKELY(oint < smax)) { // normal fp = bdt+oint*BCHNS; } else { // position > last sample ... take only last sample fp = bdt+(smax-1)*BCHNS; } else { // position < 0 ... take only 0th sample fp = bdt+smin*BCHNS; } for(int ci = 0; ci < OCHNS; ++ci) sig[ci][si] = fp[ci]; } // clear rest of output channels (if buffer has less channels) for(int ci = OCHNS; ci < outchns; ++ci) ZeroSamples(sig[ci],n); } } TMPLDEF void xinter::st_play2(const Element *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) { const int plen = smax-smin; if(UNLIKELY(plen < 2)) { st_play1 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped); return; } SIGCHNS(BCHNS,inchns,OCHNS,outchns); // position info are frame units const t_sample *pos = invecs[0]; t_sample *const *sig = outvecs; // linear interpolation // -------------------- const int maxo = smax-1; // last sample in buffer if(OCHNS == 1) { t_sample *sig0 = sig[0]; for(int i = 0; i < n; ++i) { const float o = *(pos++); register long oint = CASTINT(o); const float frac = o-oint; t_sample fp0,fp1; if(LIKELY(oint >= smin)) if(LIKELY(oint < maxo)) { // normal interpolation fp0 = bdt[oint*BCHNS]; fp1 = bdt[(oint+1)*BCHNS]; } else { // position is past last sample if(looped) { oint = smin+(oint-smin)%plen; fp0 = bdt[oint*BCHNS]; fp1 = oint >= maxo?t_sample(bdt[smin]):fp0; } else fp0 = fp1 = bdt[maxo*BCHNS]; } else { // position is before first sample if(looped) { oint = smax-(smin-oint)%plen; fp0 = bdt[oint*BCHNS]; fp1 = oint >= maxo?t_sample(bdt[smin]):fp0; } else fp0 = fp1 = bdt[smin*BCHNS]; } *(sig0++) = fp0+frac*(fp1-fp0); } } else { for(int i = 0,si = 0; i < n; ++i,++si) { const float o = *(pos++); register long oint = CASTINT(o); const Element *fp0,*fp1; const float frac = o-oint; if(LIKELY(oint >= smin)) if(LIKELY(oint < maxo)) { // normal interpolation fp0 = bdt+oint*BCHNS; fp1 = fp0+BCHNS; } else { // position is past last sample if(looped) { oint = smin+(oint-smin)%plen; fp0 = bdt+oint*BCHNS; fp1 = oint >= maxo?bdt+smin:fp0; } else fp0 = fp1 = bdt+maxo*BCHNS; } else { // position is before first sample if(looped) { oint = smax-(smin-oint)%plen; fp0 = bdt+oint*BCHNS; fp1 = oint >= maxo?bdt+smin:fp0; } else fp0 = fp1 = bdt+smin*BCHNS; } for(int ci = 0; ci < OCHNS; ++ci) sig[ci][si] = fp0[ci]+frac*(fp1[ci]-fp0[ci]); } // clear rest of output channels (if buffer has less channels) for(int ci = OCHNS; ci < outchns; ++ci) ZeroSamples(sig[ci],n); } } TMPLDEF void xinter::st_play4(const Element *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) { const int plen = smax-smin; //curlen; if(UNLIKELY(plen < 4)) { if(plen < 2) st_play1 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped); else st_play2 TMPLCALL (bdt,smin,smax,n,inchns,outchns,invecs,outvecs,looped); return; } SIGCHNS(BCHNS,inchns,OCHNS,outchns); // position info are frame units const t_sample *pos = invecs[0]; t_sample *const *sig = outvecs; // 4-point interpolation // --------------------- const int maxo = smax-1; // last sample in play region if(OCHNS == 1) { t_sample *sig0 = sig[0]; for(int i = 0; i < n; ++i) { float o = pos[i]; register long oint = CASTINT(o); register t_sample fa,fb,fc,fd; const float frac = o-oint; register const Element *ptr = bdt+oint*BCHNS; if(LIKELY(oint > smin)) { if(LIKELY(oint < maxo-2)) { // normal case fa = ptr[-BCHNS]; fb = ptr[0]; fc = ptr[BCHNS]; fd = ptr[BCHNS*2]; } else { // not enough space at the end if(looped) { // normalize position oint = smin+(oint-smin)%plen; goto looped1; } else { // last sample is outside in any case fd = bdt[maxo*BCHNS]; if(oint-1 >= maxo) // if first is outside, all are outside fa = fb = fc = fd; else { fa = ptr[-BCHNS]; if(oint >= maxo) fb = fc = fd; else { fb = ptr[0]; fc = oint+1 < maxo?static_cast(ptr[BCHNS]):fd; } } } } } else { // not enough space at the beginning if(looped) { // normalize position oint = smax-(smin-oint)%plen; looped1: ptr = bdt+oint*BCHNS; // inside in any case fb = ptr[0]; if(oint < maxo-1) { fa = oint > smin?ptr[-BCHNS]:bdt[maxo*BCHNS]; fc = ptr[BCHNS]; fd = ptr[BCHNS*2]; } else { fa = ptr[-BCHNS]; fc = oint < maxo?ptr[BCHNS]:ptr[(1-plen)*BCHNS]; fd = ptr[(2-plen)*BCHNS]; } } else { // first sample is outside in any case fa = bdt[smin*BCHNS]; if(oint+2 < smin) // if last is outside, all are outside fb = fc = fd = fa; else { fd = ptr[BCHNS*2]; if(oint+1 < smin) fb = fc = fa; else { fc = ptr[BCHNS]; fb = oint < smin?fa:static_cast(ptr[0]); } } } } const float f1 = frac*0.5f-0.5f; const float f3 = frac*3.0f-1.0f; const float amdf = (fa-fd)*frac; const float cmb = fc-fb; const float bma = fb-fa; sig0[i] = fb + frac*( cmb - f1 * ( amdf+bma+cmb*f3 ) ); } } else { for(int i = 0,si = 0; i < n; ++i,++si) { float o = *(pos++); register long oint = CASTINT(o); const float frac = o-oint; register const Element *ptr = bdt+oint*BCHNS; register const Element *fa,*fb,*fc,*fd; if(LIKELY(oint > smin)) if(LIKELY(oint < maxo-2)) { // normal case fb = ptr; fa = fb-BCHNS; fc = fb+BCHNS; fd = fc+BCHNS; } else { // not enough space at the end if(looped) { // normalize position oint = smin+(oint-smin)%plen; goto looped2; } else { // last sample is outside in any case fd = bdt+maxo*BCHNS; if(oint-1 >= maxo) // if first is outside, all are outside fa = fb = fc = fd; else { fa = ptr-BCHNS; if(oint >= maxo) fb = fc = fd; else { fb = ptr; fc = oint+1 < maxo?ptr+BCHNS:fd; } } } } else { // not enough space at the beginning if(looped) { // normalize position oint = smax-(smin-oint)%plen; looped2: // inside in any case fb = bdt+oint*BCHNS; if(oint < maxo-1) { fa = oint > smin?fb-BCHNS:bdt+maxo*BCHNS; fc = fb+BCHNS; fd = fc+BCHNS; } else { fa = fb-BCHNS; fc = oint < maxo?fb+BCHNS:bdt+(oint-plen+1)*BCHNS; fd = bdt+(oint-plen+2)*BCHNS; } } else { // first sample is outside in any case fa = bdt+smin*BCHNS; if(oint+2 < smin) // if last is outside, all are outside fb = fc = fd = fa; else { fd = ptr+BCHNS*2; if(oint+1 < smin) fb = fc = fa; else { fc = ptr+BCHNS; fb = oint < smin?fa:ptr; } } } } const float f1 = 0.5f*(frac-1.0f); const float f3 = frac*3.0f-1.0f; for(int ci = 0; ci < OCHNS; ++ci) { const float amdf = (fa[ci]-fd[ci])*frac; const float cmb = fc[ci]-fb[ci]; const float bma = fb[ci]-fa[ci]; sig[ci][si] = fb[ci] + frac*( cmb - f1 * ( amdf+bma+cmb*f3 ) ); } } // clear rest of output channels (if buffer has less channels) for(int ci = OCHNS; ci < outchns; ++ci) ZeroSamples(sig[ci],n); } } TMPLDEF inline void xinter::s_play0(int n,t_sample *const *invecs,t_sample *const *outvecs) { st_play0 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop); } TMPLDEF inline void xinter::s_play1(int n,t_sample *const *invecs,t_sample *const *outvecs) { st_play1 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop); } TMPLDEF inline void xinter::s_play2(int n,t_sample *const *invecs,t_sample *const *outvecs) { st_play2 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop); } TMPLDEF inline void xinter::s_play4(int n,t_sample *const *invecs,t_sample *const *outvecs) { st_play4 TMPLCALL (buf.Data(),curmin,curmax,n,buf.Channels(),outchns,invecs,outvecs,loopmode == xsl_loop); } #endif xsample-master/source/xrecord~-Info.plist0000644000175000017500000000122013014165104021352 0ustar zmoelnigzmoelnig CFBundleDevelopmentRegion English CFBundleExecutable xrecord~ CFBundleIdentifier org.grrrr.xrecord~ CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType iLaX CFBundleSignature ???? CFBundleVersion 1.0 CSResourcesFileMapped yes xsample-master/source/xsample-Info.plist0000644000175000017500000000122713014165104021166 0ustar zmoelnigzmoelnig CFBundleDevelopmentRegion English CFBundleExecutable xsample CFBundleIdentifier org.grrrr.xsample CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType iLaX CFBundleSignature ???? CFBundleVersion 1.0 CSResourcesFileMapped yes xsample-master/source/play.cpp0000644000175000017500000001006313014165104017216 0ustar zmoelnigzmoelnig/* xsample - extended sample objects for Max/MSP and pd (pure data) Copyright (c) 2001-2011 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. $LastChangedRevision: 39 $ $LastChangedDate$ $LastChangedBy$ */ #include "main.h" #include #ifdef _MSC_VER #pragma warning (disable:4244) #endif class xplay: public xinter { FLEXT_HEADER_S(xplay,xinter,setup) public: xplay(int argc,const t_atom *argv); void m_loop(xs_loop lp) { loopmode = lp; Update(xsc_loop,true); } protected: virtual void CbSignal(); virtual void m_help(); virtual void m_print(); private: static void setup(t_classid c); FLEXT_CALLSET_E(m_loop,xs_loop) }; #ifdef XPLAY_STANDALONE FLEXT_NEW_DSP_V("xplay~",xplay) #else FLEXT_LIB_DSP_V("xplay~",xplay) #endif void xplay::setup(t_classid c) { #ifdef XPLAY_STANDALONE flext::post("-------------------------------"); flext::post(" xplay~, version " XSAMPLE_VERSION); flext::post(""); flext::post(" (C)2001-2010 Thomas Grill "); #ifdef FLEXT_DEBUG flext::post(""); flext::post("DEBUG BUILD - " __DATE__ " " __TIME__); #endif flext::post("-------------------------------"); #endif DefineHelp(c,"xplay~"); FLEXT_CADDATTR_VAR_E(c,"loop",loopmode,m_loop); } xplay::xplay(int argc,const t_atom *argv) { // set the loopmode to non-wrapping (for sample interpolation) loopmode = xsl_once; int argi = 0; #if FLEXT_SYS == FLEXT_SYS_MAX if(argc > argi && CanbeInt(argv[argi])) { outchns = GetAInt(argv[argi]); argi++; } #endif if(argc > argi && IsSymbol(argv[argi])) { buf.Set(GetSymbol(argv[argi]),true); argi++; #if FLEXT_SYS == FLEXT_SYS_MAX // oldstyle command line? if(argi == 1 && argc == 2 && CanbeInt(argv[argi])) { outchns = GetAInt(argv[argi]); argi++; post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName()); } #endif } AddInSignal("Messages and Signal of playing position"); // pos signal for(int ci = 0; ci < outchns; ++ci) { char tmp[30]; STD::sprintf(tmp,"Audio signal channel %i",ci+1); AddOutSignal(tmp); } } void xplay::CbSignal() { int ret = ChkBuffer(true); int n = Blocksize(); const t_sample *const *in = InSig(); t_sample *const *out = OutSig(); // check whether buffer is invalid or changed if(ret) { const lock_t l = Lock(); // convert position units to frames arrmul(n,in[0],out[0]); // call resample routine playfun(n,out,out); Unlock(l); Refresh(); } else zerofun(n,out,out); } void xplay::m_help() { post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName()); #ifdef FLEXT_DEBUG post("compiled on " __DATE__ " " __TIME__); #endif post("(C) Thomas Grill, 2001-2011"); #if FLEXT_SYS == FLEXT_SYS_MAX post("Arguments: %s [channels=1] [buffer]",thisName()); #else post("Arguments: %s [buffer]",thisName()); #endif post("Inlets: 1:Messages/Position signal"); post("Outlets: 1:Audio signal"); post("Methods:"); post("\thelp: shows this help"); post("\tset name: set buffer"); post("\tenable 0/1: turn dsp calculation off/on"); post("\tprint: print current settings"); post("\tbang/start: begin playing"); post("\tstop: stop playing"); post("\treset: checks buffer"); post("\trefresh: checks buffer and refreshes outlets"); post("\t@units 0/1/2/3: set units to samples/buffer size/ms/s"); post("\t@interp 0/1/2: set interpolation to off/4-point/linear"); post("\t@loop 0/1/2: sets looping (interpolation) to off/forward/bidirectional"); post(""); } void xplay::m_print() { const char *interp_txt[] = {"off","4-point","linear"}; // print all current settings post("%s - current settings:",thisName()); post("bufname = '%s', length = %.3f, channels = %i",buf.Name(),(float)(buf.Frames()*s2u),buf.Channels()); post("out channels = %i, samples/unit = %.3f, interpolation = %s",outchns,(float)(1./s2u),interp_txt[interp >= xsi_none && interp <= xsi_lin?interp:xsi_none]); post(""); } xsample-master/source/xsample.rsrc0000755000175000017500000000350713014165104020121 0ustar zmoelnigzmoelnig(This file must be converted with BinHex 4.0) :!!"bFh*M8P0&4!#3#!8hIF-!N!3"!!!!"-!!!!2!!!!!Gb"MEfjdB@PZC@3JE@9 cFf&RC5"TEL"LD@jKFRNJ+Lm0$@KcE'PNCA+j,R*cFQ-#!!)!FR0bBe*6483"!2q 3"!)!FR0bBe*6483"!2q3"!#3%U((pmm!N!B%Z#TLAhC`D@il#3N[+L"`BA4MD'P ZE'9d)'PZ)(4SDA-JF'&dBfKPFLGc)(CTFfpLDL!U,`d*#94&5'&ZC'aP)'*IG'9 S1`Q3"#mU)(4PH(3JC@4TG'pb)'KKEQ4XC5!U,`d*I5"LAh9Z1`ep1`d0,bSJBQp i)'CXB@Gc)#S[$3dMC!!!!1aJ#J!!E8&i6!a#!!"1qJ!`6R8LAb!I,S"R%L"!F!! 3%'!%%1J!!9()rrT#%%l4@8m[,`!)6VVrh#"I)!K1G8j@r[T)j`!`*Qi!#&P2,ca Y3AK-2c`!!DJ1)&mN5#!+Cbi[#NKZr[T)E[lm5'lr!+QS5'lr!%kkrlK)E[m!3IS !,NK3)'X!N!"1N!"2l`!-B!j"qJ!f5&!JD`#3!%k3!&K260m-!%jH6R@%E@&TEJ! !3#9c1L"ZEh3JBACKD@aKBQaP)'C[FL!f1%X!G'KTFb"[BQTPBh3JDA-JEQpd)'& fB@PXB@*XC5"QEh)J0MK,!*!&l'!+!!"Y3AK-$%)!!%lk!$"1G5*I)"mZJ'F5)%" `!"!3B!33k!!"8FMrqN)36Y&C6bm[!!K1Z[rF)&mJ#%je6PEqqNMR!$!QEJ!)@8m [2'e"H%`r2!!"U!iJAb4))!TR,Lm+5'lqqNKZr[a)E[m!UDK)E[m!6VVrZ%KZr`" "qJ!Z5&!JD`#3!%k3!%r[!!aJ$N(k!$C)8#"V!*!!6T!!@%p-h``!6Pj1GB4YB@P Z!!"!*A-k)'j[G#"KGQ&TE'&LE'8JCQpb)$Bi5`"dD'Pc)'pLDQ9MG#"TFb"ZEh3 JBACKD@aKBQaP)'C[FL!f1%X!N!AXB!S!!'e"H%`-3J!!6[S!-%je)PmJ(bk!Ca) J3(!!%""J""$S!!&4b2rk3K"1d9P2,bm!#%kkrp`JAb!)6R919[lk51F!-#CZ!!K C6bmmE8&i6$mm!!'S$L"I*%JJ#QFZ,`T)E[lk5'lqr%KZr`#TU%KZr`"1Z[qi5'l r!%(k!#j)8#"V!*!!6T!!6qm!$'!13IS!0NK3)'X!N!"1N!"B6dcI$!"1ANjeK'e KD@i!!%!PFcSJEQpd)'&fB@PXB@*XC5"QEh)J0MK,!(4SDA-JEf*UC@0d)'Pc)'j [G#"KGQ&TE'&LE'8JCQpb)$Bi5`#3"HaJ#J!!E8&i6!a#!!"1qJ!`6R8LAb!I,S" R%L"!F!!3%'!%%1J!!9()rrT#%%l4@8m[,`!)6VVrh#"I)!K1G8j@r[T)j`!`*Qi !#&P2,caY3AK-2c`!!DJ1)&mN5#!+Cbi[#NKZr[T)E[lm5'lr!+QS5'lr!%kkrlK )E[m!3IS!,NK3)'X!N!"1N!"2l`!-B!j"qJ!f5&!JD`#3!%k3!&K260m-!%jH6R@ %E@&TEJ!!3#9c1L"ZEh3JBACKD@aKBQaP)'C[FL!f1%X!G'KTFb"[BQTPBh3JDA- JEQpd)'&fB@PXB@*XC5"QEh)J0MK,!*!%!3!!!!6!!!!$`!!!!(F9906%"6i!!!! F!&B!!'e"H%`!!`!+(d!!N!B9901`(d%!#!!!!2!9901X(d)!%3!!!H!9901S(d- !'!!!!Y!9901N"hKcB@e`E'8)H'GbEfpfCAi'H("XBAPq#(KbC@0[FQ4qq+N: xsample-master/source/record.cpp0000644000175000017500000003205613014165104017535 0ustar zmoelnigzmoelnig/* xsample - extended sample objects for Max/MSP and pd (pure data) Copyright (c) 2001-2014 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. $LastChangedRevision: 39 $ $LastChangedDate$ $LastChangedBy$ */ #include "main.h" #include #ifdef _MSC_VER #pragma warning (disable:4244) #endif class xrecord: public xsample { FLEXT_HEADER_S(xrecord,xsample,setup) public: xrecord(int argc,const t_atom *argv); void m_pos(float pos) { curpos = LIKELY(pos)?CASTINT(pos/s2u+.5):0; Update(xsc_pos); Refresh(); } inline void mg_pos(float &v) const { v = curpos*s2u; } void m_start(); void m_stop(); inline void m_append(bool app) { appmode = app; Update(xsc_play); if(!appmode) m_pos(0); } void m_draw(int argc,const t_atom *argv); protected: int inchns; bool sigmode,appmode; float drintv; bool dorec,doloop; int mixmode; long curpos; // in samples virtual bool CbMethodResort(int inlet,const t_symbol *s,int argc,const t_atom *argv); virtual void DoReset(); virtual void DoUpdate(unsigned int flags); virtual void CbSignal(); virtual void m_help(); virtual void m_print(); private: static void setup(t_classid c); TMPLSIGFUN(s_rec); DEFSIGCALL(recfun); FLEXT_CALLBACK(m_start) FLEXT_CALLBACK(m_stop) FLEXT_CALLVAR_F(mg_pos,m_pos) FLEXT_CALLBACK(m_all) FLEXT_CALLSET_F(m_min) FLEXT_CALLSET_F(m_max) FLEXT_CALLBACK_F(m_min) FLEXT_CALLBACK_F(m_max) FLEXT_ATTRVAR_B(doloop) FLEXT_ATTRVAR_I(mixmode) FLEXT_ATTRVAR_B(sigmode) FLEXT_CALLSET_B(m_append) FLEXT_ATTRGET_B(appmode) FLEXT_CALLBACK_V(m_draw) }; #ifdef XRECORD_STANDALONE FLEXT_NEW_DSP_V("xrecord~",xrecord) #else FLEXT_LIB_DSP_V("xrecord~",xrecord) #endif void xrecord::setup(t_classid c) { #ifdef XRECORD_STANDALONE flext::post("-------------------------------"); flext::post(" xrecord~, version " XSAMPLE_VERSION); flext::post(""); flext::post(" (C)2001-2010 Thomas Grill "); #ifdef FLEXT_DEBUG flext::post(""); flext::post("DEBUG BUILD - " __DATE__ " " __TIME__); #endif flext::post("-------------------------------"); #endif DefineHelp(c,"xrecord~"); FLEXT_CADDBANG(c,0,m_start); FLEXT_CADDMETHOD_(c,0,"start",m_start); FLEXT_CADDMETHOD_(c,0,"stop",m_stop); FLEXT_CADDATTR_VAR(c,"pos",mg_pos,m_pos); FLEXT_CADDATTR_VAR(c,"min",mg_min,m_min); FLEXT_CADDATTR_VAR(c,"max",mg_max,m_max); FLEXT_CADDMETHOD_(c,0,"all",m_all); FLEXT_CADDMETHOD_(c,0,"draw",m_draw); FLEXT_CADDATTR_VAR1(c,"loop",doloop); FLEXT_CADDATTR_VAR1(c,"mixmode",mixmode); FLEXT_CADDATTR_VAR1(c,"sigmode",sigmode); FLEXT_CADDATTR_VAR(c,"append",appmode,m_append); } xrecord::xrecord(int argc,const t_atom *argv): inchns(1), sigmode(false),appmode(true), drintv(0), dorec(false),doloop(false), mixmode(0) { int argi = 0; #if FLEXT_SYS == FLEXT_SYS_MAX if(argc > argi && CanbeInt(argv[argi])) { inchns = GetAInt(argv[argi]); argi++; } #endif if(argc > argi && IsSymbol(argv[argi])) { buf.Set(GetSymbol(argv[argi]),true); argi++; #if FLEXT_SYS == FLEXT_SYS_MAX // oldstyle command line? if(argi == 1 && argc == 2 && CanbeInt(argv[argi])) { inchns = GetAInt(argv[argi]); argi++; post("%s: old style command line detected - please change to '%s [channels] [buffer]'",thisName(),thisName()); } #endif } for(int ci = 0; ci < inchns; ++ci) { char tmp[40]; STD::sprintf(tmp,ci == 0?"Messages/audio channel %i":"Audio channel %i",ci+1); AddInSignal(tmp); // audio signals } AddInSignal("On/Off/Fade/Mix signal (0..1)"); // on/off signal AddInFloat("Starting point of recording"); // min AddInFloat("Ending point of recording"); // max AddOutSignal("Current position of recording"); // pos signal AddOutFloat("Starting point (rounded to frame)"); // min AddOutFloat("Ending point (rounded to frame)"); // max AddOutBang("Bang on loop end/rollover"); // loop bang } void xrecord::m_start() { ChkBuffer(); if(!sigmode && !appmode) { curpos = 0; Update(xsc_pos); } dorec = true; Update(xsc_startstop); Refresh(); } void xrecord::m_stop() { ChkBuffer(); dorec = false; Update(xsc_startstop); Refresh(); } bool xrecord::CbMethodResort(int inlet,const t_symbol *s,int argc,const t_atom *argv) { if(inlet == inchns+1 && s == sym_float && argc == 1) { m_min(GetAFloat(argv[0])); return true; } else if(inlet == inchns+2 && s == sym_float && argc == 1) { m_max(GetAFloat(argv[0])); return true; } return false; } void xrecord::DoReset() { xsample::DoReset(); curpos = 0; } void xrecord::m_draw(int argc,const t_atom *argv) { if(argc >= 1) { drintv = GetAInt(argv[0]); if(dorec) buf.SetRefrIntv(drintv); } else buf.Dirty(true); } TMPLDEF void xrecord::s_rec(int n,t_sample *const *invecs,t_sample *const *outvecs) { SIGCHNS(BCHNS,buf.Channels(),ICHNS,inchns); const t_sample *const *sig = invecs; register int si = 0; const t_sample *on = invecs[inchns]; t_sample *pos = outvecs[0]; bool lpbang = false; register const float pf = sclmul; register long o = curpos; if(o < curmin) o = curmin; if(dorec && LIKELY(curmax > curmin)) { while(n) { long ncur = curmax-o; // at max to buffer or recording end if(UNLIKELY(ncur <= 0)) { // end of buffer if(doloop) { ncur = curmax-(o = curmin); } else { // loop expired; dorec = false; Update(xsc_startstop); } lpbang = true; } if(UNLIKELY(!dorec)) break; if(UNLIKELY(ncur > n)) ncur = n; register int i; register Element *bf = buf.Data()+o*BCHNS; register float p = scale(o); if(sigmode) { if(appmode) { // append to current position switch(mixmode) { case 0: for(i = 0; i < ncur; ++i,++si) { if(!(*(on++) < 0)) { for(int ci = 0; ci < ICHNS; ++ci) bf[ci] = sig[ci][si]; bf += BCHNS; *(pos++) = p,p += pf,++o; } else *(pos++) = p; } break; case 1: for(i = 0; i < ncur; ++i,++si) { register const t_sample g = *(on++); if(!(g < 0)) { for(int ci = 0; ci < ICHNS; ++ci) bf[ci] = bf[ci]*(1.-g)+sig[ci][si]*g; bf += BCHNS; *(pos++) = p,p += pf,++o; } else *(pos++) = p; } break; case 2: for(i = 0; i < ncur; ++i,++si) { if(!(*(on++) < 0)) { for(int ci = 0; ci < ICHNS; ++ci) bf[ci] += sig[ci][si]; bf += BCHNS; *(pos++) = p,p += pf,++o; } else *(pos++) = p; } break; } } else { // don't append switch(mixmode) { case 0: { for(i = 0; i < ncur; ++i,++si) { if(!(*(on++) < 0)) { for(int ci = 0; ci < ICHNS; ++ci) bf[ci] = sig[ci][si]; bf += BCHNS; *(pos++) = p,p += pf,++o; } else { *(pos++) = p = scale(o = 0); bf = buf.Data(); } } break; } case 1: { for(i = 0; i < ncur; ++i,++si) { register const t_sample g = *(on++); if(!(g < 0)) { for(int ci = 0; ci < ICHNS; ++ci) bf[ci] = bf[ci]*(1.-g)+sig[ci][si]*g; bf += BCHNS; *(pos++) = p,p += pf,++o; } else { *(pos++) = p = scale(o = 0); bf = buf.Data(); } } break; } case 2: { for(i = 0; i < ncur; ++i,++si) { if(!(*(on++) < 0)) { for(int ci = 0; ci < ICHNS; ++ci) bf[ci] += sig[ci][si]; bf += BCHNS; *(pos++) = p,p += pf,++o; } else { *(pos++) = p = scale(o = 0); bf = buf.Data(); } } break; } } } } else { // message mode // \TODO Altivec optimization for that! switch(mixmode) { case 0: { for(int ci = 0; ci < ICHNS; ++ci) { register Element *b = bf+ci; register const t_sample *s = sig[ci]+si; for(i = 0; i < ncur; ++i,b += BCHNS,++s) *b = *s; } si += ncur; break; } case 1: { for(i = 0; i < ncur; ++i,++si) { register const t_sample w = *(on++); for(int ci = 0; ci < ICHNS; ++ci) bf[ci] = bf[ci]*(1.-w)+sig[ci][si]*w; bf += BCHNS; } break; } case 2: { for(int ci = 0; ci < ICHNS; ++ci) { register Element *b = bf+ci; register const t_sample *s = sig[ci]+si; for(i = 0; i < ncur; ++i,b += BCHNS,++s) *b += *s; } si += ncur; break; } } for(i = 0; i < ncur; ++i) { *(pos++) = p,p += pf,++o; } } n -= ncur; } curpos = o; buf.Dirty(); } if(n) { register float p = scale(o); while(n--) *(pos++) = p; } if(lpbang) ToOutBang(3); } void xrecord::CbSignal() { int ret = ChkBuffer(true); if(ret) { // call the appropriate dsp function const lock_t l = Lock(); recfun(Blocksize(),InSig(),OutSig()); Unlock(l); Refresh(); } else // set position signal to zero ZeroSamples(OutSig()[0],Blocksize()); } void xrecord::DoUpdate(unsigned int flags) { xsample::DoUpdate(flags); if(flags&(xsc_pos|xsc_range)) { if(curpos < curmin) curpos = curmin; else if(curpos > curmax) curpos = curmax; } if(flags&xsc_range) { ToOutFloat(1,curmin*s2u); ToOutFloat(2,curmax*s2u); } if(flags&xsc_transport && buf.Ok()) { if(dorec) buf.SetRefrIntv(drintv); else { buf.Dirty(true); buf.SetRefrIntv(0); } } if(flags&xsc_play) { switch(buf.Channels()*1000+inchns) { case 1001: SETSIGFUN(recfun,TMPLFUN(s_rec,1,1)); break; case 1002: SETSIGFUN(recfun,TMPLFUN(s_rec,1,2)); break; case 2001: SETSIGFUN(recfun,TMPLFUN(s_rec,2,1)); break; case 2002: SETSIGFUN(recfun,TMPLFUN(s_rec,2,2)); break; case 4001: case 4002: case 4003: SETSIGFUN(recfun,TMPLFUN(s_rec,4,-1)); break; case 4004: SETSIGFUN(recfun,TMPLFUN(s_rec,4,4)); break; default: SETSIGFUN(recfun,TMPLFUN(s_rec,-1,-1)); break; } } } void xrecord::m_help() { post("%s - part of xsample objects, version " XSAMPLE_VERSION,thisName()); #ifdef FLEXT_DEBUG post("compiled on " __DATE__ " " __TIME__); #endif post("(C) Thomas Grill, 2001-2014"); #if FLEXT_SYS == FLEXT_SYS_MAX post("Arguments: %s [channels=1] [buffer]",thisName()); #else post("Arguments: %s [buffer]",thisName()); #endif post("Inlets: 1:Messages/Audio signal, 2:Trigger signal, 3:Min point, 4: Max point"); post("Outlets: 1:Position signal, 2:Min point, 3:Max point"); post("Methods:"); post("\thelp: shows this help"); post("\tset [name]: set buffer or reinit"); post("\tenable 0/1: turn dsp calculation off/on"); post("\treset: reset min/max recording points and recording offset"); post("\tprint: print current settings"); post("\t@sigmode 0/1: specify message or signal triggered recording"); post("\t@append 0/1: reset recording position or append to current position"); post("\t@loop 0/1: switches looping off/on"); post("\t@mixmode 0/1/2: specify how audio signal should be mixed in (none,mixed,added)"); post("\tmin {unit}: set minimum recording point"); post("\tmax {unit}: set maximum recording point"); post("\tall: select entire buffer length"); post("\tpos {unit}: set recording position (obeying the current scale mode)"); post("\tbang/start: start recording"); post("\tstop: stop recording"); post("\trefresh: checks buffer and refreshes outlets"); post("\t@units 0/1/2/3: set units to frames/buffer size/ms/s"); post("\t@sclmode 0/1/2/3: set range of position to units/units in loop/buffer/loop"); post("\tdraw [{float}]: redraw buffer immediately (arg omitted) or periodic (in ms)"); post(""); } void xrecord::m_print() { static const char sclmode_txt[][20] = {"units","units in loop","buffer","loop"}; // print all current settings post("%s - current settings:",thisName()); post("bufname = '%s', length = %.3f, channels = %i",buf.Name(),(float)(buf.Frames()*s2u),buf.Channels()); post("in channels = %i, frames/unit = %.3f, scale mode = %s",inchns,(float)(1./s2u),sclmode_txt[sclmode]); post("sigmode = %s, append = %s, loop = %s, mixmode = %i",sigmode?"yes":"no",appmode?"yes":"no",doloop?"yes":"no",mixmode); post(""); } xsample-master/source/prefix.h0000644000175000017500000000070013014165104017210 0ustar zmoelnigzmoelnig/* xsample - extended sample objects for Max/MSP and pd (pure data) Copyright (c) 2001-2011 Thomas Grill (xovo@gmx.net) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. $LastChangedRevision: 39 $ $LastChangedDate: 2008-01-04 17:24:49 +0100 (Fr, 04 Jan 2008) $ $LastChangedBy: thomas $ */ #define FLEXT_ATTRIBUTES 1 #include #include xsample-master/source/main.h0000644000175000017500000002766613014165104016663 0ustar zmoelnigzmoelnig/* xsample - extended sample objects for Max/MSP and pd (pure data) Copyright (c) 2001-2011 Thomas Grill (gr@grrrr.org) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. $LastChangedRevision: 39 $ $LastChangedDate$ $LastChangedBy$ */ #ifndef __XSAMPLE_H #define __XSAMPLE_H #include "prefix.h" #if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) #error You need at least flext version 0.5.0 #endif #define XSAMPLE_VERSION "0.3.2pre" extern "C++" { // most compilers are somehow broken - in other words - can't handle all C++ features #if defined(_MSC_VER) // MS VC 6.0 can't handle templates?! -> no optimization // MS VC .NET 2002 just dies with template optimization switched on #if _MSC_VER >= 1310 #define TMPLOPT #endif #elif defined(__BORLANDC__) // handles all optimizations #define TMPLOPT #elif defined(__GNUC__) // GNUC 2.95.2 dies at compile with templates #if __GNUC__ >= 3 #define TMPLOPT // only workable with gcc >= 3.0 #endif #elif defined(__MWERKS__) // CodeWarrior <= 8 can't take address of a template member function #ifndef FLEXT_DEBUG #define TMPLOPT #endif // #define SIGSTATIC // define that for CW6 #elif defined(__MRC__) // Apple MPW - MrCpp // #define TMPLOPT // template optimation for more speed #else // another compiler // #define TMPLOPT // template optimation for more speed (about 10%) //#define SIGSTATIC // another redirection to avoid addresses of class member functions #endif #if defined(__MWERKS__) && !defined(__MACH__) #define STD std #else #define STD #endif #ifdef __ALTIVEC__ #if FLEXT_CPU == FLEXT_CPU_PPC && defined(__MWERKS__) #pragma altivec_model on #include #include #elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUG__) #include #include #endif // this is for the UInt32 prototype (thanks to Jamie) // \TODO we'd rather not use Carbon but some other framework #ifdef __MACH__ #include #endif // Initialize a prefetch constant for use with vec_dst(), vec_dstt(), vec_dstst or vec_dststt // Taken from the "AltiVec tutorial" by Ian Ollmann, Ph.D. inline UInt32 GetPrefetchConstant( int blockSizeInVectors,int blockCount,int blockStride ) { // FLEXT_ASSERT( blockSizeInVectors > 0 && blockSizeInVectors <= 32 ); // FLEXT_ASSERT( blockCount > 0 && blockCount <= 256 ); // FLEXT_ASSERT( blockStride > MIN_SHRT && blockStride <= MAX_SHRT ); return ((blockSizeInVectors << 24) & 0x1F000000) | ((blockCount << 16) && 0x00FF0000) | (blockStride & 0xFFFF); } #endif #if 0 // FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUC__) #include template inline I CASTINT( F f ) { I i; __stfiwx(__fctiwz(f),0,&i); return i; } #elif FLEXT_CPU == FLEXT_CPU_INTEL && defined(_MSC_VER) template inline I CASTINT(F x) { // by Laurent de Soras (http://ldesoras.free.fr) // assert (x > static_cast (INT_MIN / 2) + 1.0); // assert (x < static_cast (INT_MAX / 2) + 1.0); const float round_towards_m_i = -0.5f; I i; __asm { fld x fadd st,st fabs fadd round_towards_m_i fistp i sar i, 1 } if(x < 0) i = -i; return i; } #else template inline I CASTINT(F o) { return static_cast(o); } #endif typedef flext::buffer::Element Element; class xsample: public flext_dsp { FLEXT_HEADER_S(xsample,flext_dsp,setup) public: xsample(); ~xsample(); enum xs_change { xsc__ = 0, xsc_units = 0x0001, xsc_play = 0x0002, xsc_pos = 0x0008, xsc_range = 0x0010, xsc_transport = 0x0020, xsc_fade = 0x0040, xsc_intp = xsc_play, xsc_srate = xsc_play|xsc_units, xsc_chns = xsc_play, xsc_loop = xsc_play, xsc_startstop = xsc_play|xsc_transport, xsc_buffer = xsc_units|xsc_pos|xsc_range|xsc_play, xsc_reset = xsc_buffer, xsc_all = 0xffff }; enum xs_unit { xsu_sample = 0,xsu_buffer,xsu_ms,xsu_s }; enum xs_intp { xsi_none = 0,xsi_4p,xsi_lin }; enum xs_sclmd { xss_unitsinbuf = 0,xss_unitsinloop,xss_buffer,xss_loop }; protected: virtual bool Finalize(); buffer buf; void m_reset() { ChkBuffer(true); DoReset(); Refresh(); } void m_set(int argc,const t_atom *argv); void m_refresh() { Update(xsc_buffer,true); } void m_units(xs_unit mode) { unitmode = mode; Update(xsc_units,true); } void m_sclmode(xs_sclmd mode) { sclmode = mode; Update(xsc_units,true); } void m_all() { ChkBuffer(true); ResetRange(); Refresh(); } void m_wrap(bool w) { wrap = w; Update(xsc_pos|xsc_range,true); } void m_min(float mn); void m_max(float mx); xs_unit unitmode; xs_sclmd sclmode; long curmin,curmax; //,curlen; // in samples long sclmin; // in samples float sclmul; float s2u; // sample to unit conversion factor bool wrap; inline float scale(float smp) const { return (smp-sclmin)*sclmul; } static void arrscale(int n,const t_sample *in,t_sample *out,t_sample add,t_sample mul) { flext::ScaleSamples(out,in,mul,add,n); } inline void arrscale(int n,const t_sample *in,t_sample *out) const { arrscale(n,in,out,-sclmin*sclmul,sclmul); } static void arrmul(int n,const t_sample *in,t_sample *out,t_sample mul) { flext::MulSamples(out,in,mul,n); } inline void arrmul(int n,const t_sample *in,t_sample *out) const { arrmul(n,in,out,(t_sample)(1.f/s2u)); } void mg_buffer(AtomList &l) { if(buf.Symbol()) { l(1); SetSymbol(l[0],buf.Symbol()); } } inline void ms_buffer(const AtomList &l) { m_set(l.Count(),l.Atoms()); } inline void mg_min(float &v) const { v = curmin*s2u; } inline void mg_max(float &v) const { v = curmax*s2u; } void Refresh() { if(update && !Initing()) { DoUpdate(update); update = xsc__; } } void Update(unsigned int f,bool refr = false) { update |= f; if(refr) Refresh(); } //! return 0...invalid, 1...changed, -1...unchanged int ChkBuffer(bool refr = false); typedef flext::buffer::lock_t lock_t; //! Lock buffer (buffer must be checked ok) lock_t Lock() { return buf.Lock(); } //! Unlock buffer (buffer must be checked ok) void Unlock(lock_t l) { buf.Unlock(l); } void ResetRange() { curmin = 0; curmax = buf.Frames(); Update(xsc_range); } virtual void DoReset(); virtual void DoUpdate(unsigned int flags); virtual void CbLoadbang(); virtual bool CbDsp(); virtual void m_help() = 0; virtual void m_print() = 0; private: unsigned int update; static void setup(t_classid c); FLEXT_CALLBACK(m_help) FLEXT_CALLBACK_V(m_set) FLEXT_CALLBACK(m_print) FLEXT_CALLBACK(m_refresh) FLEXT_CALLBACK(m_reset) FLEXT_CALLVAR_V(mg_buffer,ms_buffer) FLEXT_CALLSET_E(m_units,xs_unit) FLEXT_ATTRGET_E(unitmode,xs_unit) FLEXT_CALLSET_E(m_sclmode,xs_sclmd) FLEXT_ATTRGET_E(sclmode,xs_sclmd) FLEXT_ATTRGET_F(s2u) FLEXT_CALLSET_B(m_wrap) FLEXT_ATTRGET_B(wrap) protected: FLEXT_CALLGET_F(mg_min) FLEXT_CALLGET_F(mg_max) }; // defines which are used in the derived classes #ifdef SIGSTATIC #ifdef TMPLOPT #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::st_##FUN #define TMPLSTF(FUN,BCHNS,IOCHNS) &thisType::FUN #define SIGFUN(FUN) &thisType::st_##FUN #define TMPLDEF template #define TMPLCALL <_BCHNS_,_IOCHNS_> #else #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::st_##FUN #define TMPLSTF(FUN,BCHNS,IOCHNS) &thisType::FUN #define SIGFUN(FUN) &thisType::st_##FUN #define TMPLDEF #define TMPLCALL #endif #define DEFSIGFUN(NAME) \ static void st_##NAME(thisType *obj,int n,t_sample *const *in,t_sample *const *out) { obj->NAME (n,in,out); } \ void NAME(int n,t_sample *const *in,t_sample *const *out) #define TMPLSIGFUN(NAME) \ TMPLDEF static void st_##NAME(thisType *obj,int n,t_sample *const *in,t_sample *const *out) { obj->NAME TMPLCALL (n,in,out); } \ TMPLDEF void NAME(int n,t_sample *const *in,t_sample *const *out) #define TMPLSTFUN(NAME) TMPLDEF static void NAME(const Element *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs) #define SETSIGFUN(VAR,FUN) v_##VAR = FUN #define SETSTFUN(VAR,FUN) VAR = FUN #define DEFSIGCALL(NAME) \ inline void NAME(int n,t_sample *const *in,t_sample *const *out) { (*v_##NAME)(this,n,in,out); } \ void (*v_##NAME)(thisType *obj,int n,t_sample *const *in,t_sample *const *out) #define DEFSTCALL(NAME) \ void (*NAME)(const Element *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs) #else #ifdef TMPLOPT #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::FUN #define SIGFUN(FUN) &thisType::FUN #define TMPLDEF template #define TMPLCALL <_BCHNS_,_IOCHNS_> #else #define TMPLFUN(FUN,BCHNS,IOCHNS) &thisType::FUN #define SIGFUN(FUN) &thisType::FUN #define TMPLDEF #define TMPLCALL #endif #define TMPLSTF(FUN,BCHNS,IOCHNS) TMPLFUN(FUN,BCHNS,IOCHNS) #define DEFSIGFUN(NAME) void NAME(int n,t_sample *const *in,t_sample *const *out) #define TMPLSIGFUN(NAME) TMPLDEF void NAME(int n,t_sample *const *in,t_sample *const *out) #define TMPLSTFUN(NAME) TMPLDEF static void NAME(const Element *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) #define SETSIGFUN(VAR,FUN) v_##VAR = FUN #define DEFSIGCALL(NAME) \ inline void NAME(int n,t_sample *const *in,t_sample *const *out) { (this->*v_##NAME)(n,in,out); } \ void (thisType::*v_##NAME)(int n,t_sample *const *invecs,t_sample *const *outvecs) #define SETSTFUN(VAR,FUN) VAR = FUN #define DEFSTCALL(NAME) \ void (*NAME)(const Element *bdt,const int smin,const int smax,const int n,const int inchns,const int outchns,t_sample *const *invecs,t_sample *const *outvecs,bool looped) #endif #ifndef MIN #define MIN(x,y) ((x) < (y)?(x):(y)) #endif // in the signal functions #ifdef TMPLOPT // optimization by using constants for channel numbers #define SIGCHNS(BCHNS,bchns,IOCHNS,iochns) \ const int BCHNS = _BCHNS_ < 0?(bchns):_BCHNS_; \ const int IOCHNS = _IOCHNS_ < 0?MIN(iochns,BCHNS):MIN(_IOCHNS_,BCHNS) #else // no template optimization #if FLEXT_SYS == FLEXT_SYS_PD // only mono buffers #define SIGCHNS(BCHNS,bchns,IOCHNS,iochns) \ const int BCHNS = 1; \ const int IOCHNS = MIN(iochns,BCHNS) #else // MAXMSP #define SIGCHNS(BCHNS,bchns,IOCHNS,iochns) \ const int BCHNS = bchns; \ const int IOCHNS = MIN(iochns,BCHNS) #endif #endif class xinter: public xsample { FLEXT_HEADER_S(xinter,xsample,setup) public: enum xs_loop { xsl_once = 0,xsl_loop,xsl_bidir }; xinter() : outchns(1),doplay(false) , interp(xsi_4p),loopmode(xsl_loop) {} void m_start() { ChkBuffer(); doplay = true; Update(xsc_startstop,true); } void m_stop() { ChkBuffer(); doplay = false; Update(xsc_startstop,true); } void m_interp(xs_intp mode) { interp = mode; Update(xsc_intp,true); } protected: int outchns; bool doplay; xs_intp interp; xs_loop loopmode; TMPLSIGFUN(s_play0); TMPLSIGFUN(s_play1); TMPLSIGFUN(s_play2); TMPLSIGFUN(s_play4); TMPLSTFUN(st_play0); TMPLSTFUN(st_play1); TMPLSTFUN(st_play2); TMPLSTFUN(st_play4); DEFSIGCALL(playfun); DEFSIGCALL(zerofun); virtual void DoUpdate(unsigned int flags); FLEXT_CALLBACK(m_start) FLEXT_CALLBACK(m_stop) FLEXT_CALLSET_E(m_interp,xs_intp) FLEXT_ATTRGET_E(interp,xs_intp) FLEXT_ATTRGET_E(loopmode,xs_loop) private: static void setup(t_classid c); }; #ifdef TMPLOPT #include "inter.h" #endif } #endif xsample-master/package.txt0000644000175000017500000000127113014165104016402 0ustar zmoelnigzmoelnig# xsample - extended sample objects for Max/MSP and PD (pure data) # # Copyright (c)2001-2005 Thomas Grill (gr@grrrr.org) # For information on usage and redistribution, and for a DISCLAIMER OF ALL # WARRANTIES, see the file, "license.txt," in this distribution. # # more information on http://grrrr.org/ext # ------------------------------------------------------------------------ # # This file contains information for the building process # # DO NOT EDIT!! # # ------------------------------------------------------------------------ NAME=xsample SRCDIR=source PRECOMPILE=prefix.h SRCS=main.cpp play.cpp groove.cpp record.cpp inter.cpp HDRS=prefix.h main.h inter.h xsample-master/pd-ex/0000755000175000017500000000000013014165104015262 5ustar zmoelnigzmoelnigxsample-master/pd-ex/xsampledemo.pd0000644000175000017500000000407113014165104020127 0ustar zmoelnigzmoelnig#N canvas 242 109 742 690 12; #X text 13 3 xsample~ demo; #N canvas 0 22 452 302 graph5 0; #X array loop1 440000 float 0; #X coords 0 0.2 439999 -0.2 200 140 1; #X restore 516 184 graph; #X obj 244 262 xrecord~ loop1; #X msg 74 233 start; #X msg 75 265 stop; #X obj 111 108 adc~; #X msg 225 158 help; #X msg 237 184 print; #X msg 165 122 append 0; #X obj 246 297 snapshot~; #X obj 165 96 loadbang; #X floatatom 245 328 10 0 0 1 looplength - -; #X text 4 214 Click to start recording; #X text 273 156 Click help prints info; #X text 236 98 start from the beginning of the array each time; #X obj 147 579 xgroove~ loop1; #X msg 121 449 print; #X msg 135 472 help; #X msg 15 536 start; #X msg 16 565 stop; #X floatatom 172 526 8 0 0 2 speed - -; #X floatatom 208 624 8 0 0 3 startsample - -; #X floatatom 311 623 10 0 0 3 endsample - -; #X obj 134 631 dac~; #X obj 185 448 loadbang; #X msg 188 470 1; #X text 2 515 play the loop; #X text 244 525 negative numbers play sample backwards; #X text 259 356 The xrecord object puts out the current position so we take a snapshot of it when we stop recording to get the number of samples we have recorded.; #X text 262 556 use the last sample number as the max position so loop is played the right length; #X text 78 23 This demo records sound coming from your sound card input (e.g. microphone). It stores the sample in the array "loop1". The array has 440000 elements so it can store a max of 10 seconds \, recording at 44khz.; #X text 285 182 print current status; #X text 25 428 Playback of the sample stored in loop1 using the xgroove object:; #X text 136 4 (by Glenn Meader); #X text 20 314; #X connect 2 0 9 0; #X connect 3 0 2 0; #X connect 4 0 2 0; #X connect 5 0 2 0; #X connect 6 0 2 0; #X connect 7 0 2 0; #X connect 8 0 2 0; #X connect 9 0 11 0; #X connect 10 0 8 0; #X connect 10 0 9 0; #X connect 11 0 15 2; #X connect 15 0 23 0; #X connect 15 0 23 1; #X connect 15 2 21 0; #X connect 15 3 22 0; #X connect 16 0 15 0; #X connect 17 0 15 0; #X connect 18 0 15 0; #X connect 19 0 15 0; #X connect 20 0 15 0; #X connect 24 0 25 0; #X connect 25 0 20 0; xsample-master/pd-ex/xplaydemo.pd0000644000175000017500000000451613014165104017617 0ustar zmoelnigzmoelnig#N canvas 126 119 739 716 12; #N canvas 0 0 450 300 graph2 0; #X array loop1 220000 float 0; #X coords 0 0.5 219999 -0.5 200 140 1; #X restore 449 285 graph; #N canvas 0 0 450 300 graph3 0; #X array loop2 220000 float 0; #X coords 0 0.5 219999 -0.5 200 140 1; #X restore 450 429 graph; #X obj 131 309 xplay~ loop1; #X obj 151 459 xplay~ loop2; #X obj 32 697 dac~; #X msg 16 240 start; #X msg 15 267 stop; #N canvas 0 0 450 300 graph1 0; #X array loop3 220000 float 0; #X coords 0 0.5 219999 -0.5 200 140 1; #X restore 450 575 graph; #X obj 242 623 xplay~ loop3; #X msg 103 232 print; #X msg 161 232 help; #X msg 13 364 start; #X msg 13 390 stop; #X msg 9 498 start; #X msg 11 524 stop; #X obj 180 136 xrecord~ loop1; #X msg 126 60 set loop2; #X msg 42 60 set loop1; #X msg 48 108 start; #X msg 49 136 stop; #X msg 209 60 set loop3; #X msg 305 57 append 0; #X obj 306 33 loadbang; #X text 5 -59 Demo of xplay~ to play synchronized loops; #X text 40 43 Click to choose loop to record; #X obj 333 95 adc~; #X obj 289 264 *~ 220000; #X obj 290 226 phasor~ 0.2; #X text 156 692 each loop array holds 220000 samples recorded at 44khz ; #X text 5 91 record; #X text 78 -34 Record something in each of the three loop arrays. Choose (set) the loop to record \, then press start. There's room for up to 5 seconds in each loop.; #X text 17 183 After you have recorded something into each loop \, you can play them selectively using the start/stop controls; #X text 389 224 <= this generates the position signal that xplay requires at the proper rate for this sample size.; #X text 379 48 <= We record from the beginning of the array each time. ; #X text 370 96 <= Audio will be recorded from your sound card input (e.g. microphone); #X text 350 -60 (by Glenn Meader); #X connect 2 0 4 0; #X connect 2 0 4 1; #X connect 3 0 4 1; #X connect 3 0 4 0; #X connect 5 0 2 0; #X connect 6 0 2 0; #X connect 8 0 4 0; #X connect 8 0 4 1; #X connect 9 0 2 0; #X connect 10 0 2 0; #X connect 11 0 3 0; #X connect 12 0 3 0; #X connect 13 0 8 0; #X connect 14 0 8 0; #X connect 16 0 15 0; #X connect 17 0 15 0; #X connect 18 0 15 0; #X connect 19 0 15 0; #X connect 20 0 15 0; #X connect 21 0 15 0; #X connect 22 0 21 0; #X connect 25 0 15 0; #X connect 26 0 2 0; #X connect 26 0 3 0; #X connect 26 0 8 0; #X connect 27 0 26 0; xsample-master/gpl.txt0000644000175000017500000004313113014165104015572 0ustar zmoelnigzmoelnig GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. xsample-master/maxmsp/0000755000175000017500000000000013014165104015552 5ustar zmoelnigzmoelnigxsample-master/maxmsp/xsample.help0000755000175000017500000004537213014165104020113 0ustar zmoelnigzmoelnigpmaxqv2r#NsvpatcherPWt#PuoriginVPtvwindowwsetfontxSans Serif$Ars[Qatyhiddenzinlet _Ptvwx$Atv{linecountPt|message7 }posmod~$1tflonum'YPPPSPPPPPPtvwx$@At1commentM  1attributest1LT 1crossfading1loop1zonetvwx$ At1W 1crossfade1shapetvwx$At1newexNN 1prepend1xshapet1user1umenuNd'Q@Q1#X1add1linear111quarter1 sine111!half1 tvwx$ At1\ 11"modetvwx$At1NH 11#xfadet11Nd'Q@Q111$keep1111$11%length111$1&fade1%111'inside1t|N"; 1(getmethodstvwx$ At1"d 1)list1*all1+methodstvwx$@At1x 1,part1-of1.the1/xsample10collection11(c)122001-200513Thomas14Grilltvwx$At1'] 15help16file17by18honst11&.$S@6Q119setrgbRPHPPP111:licenset1|P 1;(01getscalet1SX 1?getter1@messages1Afor1*1t|6 1Bgetxshapet|0 1Cgetxfadet|N1 1Dgetxzonety1  1Et1Fst|NL3 1Ggetbuffert|_& 1Hgetpost|}; 1Igetsclmodet|N- 1Jgetunitst|yr2 1Kgetinterpt|Nr) 1Lgetloopt|w_* 1Mgetmaxt|N_' 1Ngetmint|K 11Obuffer1Punits1Qsclmode1Rscale1Sinterp1Tminp1Upos11#1Vxzone1t1WbuttonPt1K= 11Xsett|N4D 1Ygetattributest1}6 1Z(in1[units)tNk1YPPPSPPPPPPt|N}1 1V~t1; 1\Arguments:1]first1^argument1_(int)1`specifies1anr1-1bchannels1c;1dsecond1^1esets1.1finitial1O1gnamet1y2 1h(so1idont1jblame1kt.grill1A1lerrors1m:-)ty14# 1E1nopenty14- 1opcontrolrsItuPRtyz[_Ptvwx$At1' 1pThis1qpackage1ruses1.1sflext1tC++1ulayer1vand1wsome1xcode1ysnippets1zfrom1{pd1|(pure1}data).1~See1.1:1texts1below:1#B1color\t11} 1p1program1is1free1software1c1you1can1redistribute1it1and/or1modify11under1.1terms1-1.1GNU1General1Public1License1as1published171.1Free1Software1Foundation1c1either1versionR1-1.11,1or1(at1your1option)1any1later1version.1p111distributed1in1.1hope1that11will1be1useful11but1WITHOUT1ANY1WARRANTY1c1without1even1.1implied1warranty1-1MERCHANTABILITY11FITNESS1FOR1A1PARTICULAR1PURPOSE.1~1.11111A1more1details.1You1should1have1received1a1copy1-1.11111along1with1this11c1if1not11write1to1.11111Inc.1;1Temple1Place1-1SuiteJ11Boston11MA102111-130711USA.1In1.1official1/1distribution11.1111111.161gpl.txtt1{ 1/11extended1sample1objects1A1Max/MSP1v1{1|1data)1Copyright1(C)12131411\t1' 1OTHER1COPYRIGHT1NOTICES11\t1 1s11t1u1A11v1{1|11externals1112001-13141p11111c111111111.11-1.111111171.1111c11R1-1.1111111111p11111.111111111111c111.111-11111111~1.11111A111111111-1.111111111c111111.111111;1111J111111111.11s111.1111111.161Ҡt1 1---1s1----------------------------------------------t1popty1newobj5D 1p1GPL1:t1(. 1read1.t1GN 1current1positiont1EF 1reset1t|  1UPt1m- 1minimum1v1maximum1playing1points11P1(=11111mode)t1GS 1start1playback1att1D 11Tp11v11offsett17 1select1entire1O1%t16 11"t1d R1..11interpolation1(saves1cpu1load)t1d Q114-point11(default)t1d_ P11no1t1d_ 11type:ty|^ Qty1- 1loadbangt|W' 1X1buft1Am 2print12settings1pvt1$ 1T1vp112corrected112accuracy.t15P 22load11Ԡt|E 2stopt|A 2startwindowt1F 2dac~t1E 212 audiotvwx$At12 xgroove~tvwx$At11 2 Variable-rate2 looping111z12 buffer~t11Y'Q Q112one-shot112forward112bidirectionalt11='Q Q112none111111t|2 1S~t|! 1*t1L 1X2buffernamet|l 2t|& 1U~t|!  1t|G) 2replacet(YPPPSPPPPPPt|# 2t|) 1~t1 k 112(based2on1R1t1 1R1"1A12outlett|' 111^t1R 11Qt11d'Q@Q111P111P11111O2(0.-1.)1112t'YPPPSPPPPPPt1iD 11Pt11Wd'Q@gQ112samples111O2size112ms111Ft12number~^YSSR$$P$d$PPPPPPtsEYPPPSPPPPPPt%LYPPPSPPPPPPtRHYPPPSPPPPPPtoRKYPPPSPPPPPPt1' 2sig~$?t|Y 15t|, 1X2foot1Z\ 2 1't1Y 1P1A2min/max1v11t1; 1X11Z1[t1T 12speedt1>Yq 2 get151pvr2!picture2"#K2D2"1XP~3 3P ,3 neGave .P(. od .n se to +serp tetisonoi+ PPBݒPQPPPPPG~r jP:qPP t2#vpictureBt1lm 1%1-1#1t14d 1)1*1t1B 2$bang2112%play2&endt1d 1t1mF 2'see2(also:21t1f 2)(Max/MSP2*defaults12+ms)t12,panelFP12-brgbŠ12.frgbPPP12/borderP120roundedP121shadowP122donet12,F12-12.PPP12/P120P121P122t1' 23modulot12,Ui12-12.PPP12/P120P121P122t24backgroundt12,P12-12.PPP12/P120P121P122t24t12,212-H12.PPP12/P120P121P122t24t12,Q(Ƞ12-Š12.PPP12/P120P121P122t24tv{Qt1mv 2 R125@loopQ11^t26connect'PPty26rPPPty27fastenmPPPS??""ty27jPPPS??""ty27]PPP%hhty26-PPPty26,PPPty26)PPPty26(PPPty26PPPty26PPPty26PPPty26 PPPty26!PPPty26$PPPty26%PPPty26*PPPty269PPPty26EPPPty27NPPPS??""t27PPP!!t26PP3Pt275P3PJt274P3P$ty26;P&Pt26&PPt26PQ3Qty26:P;Pt26PRPt26PPt26P Pt26.P-Pt26/P$Pt27PSPE*t27PPQtgGgt27PTPxt26P)Pt26PUSPty26dPKPty26KPJPt26qPrPt27PPRggty26JPIPty26hP]Pty26`P]Pty26_P]Pty26^P]Pty26[P]Pty26VP]Pty26XP]Pty26ZP]Pty26YP]Pty26WP]Pty26UP]Pty26\P]Pty26QP]Pty26bP]Pt27PVRPPt26RPTPt26OPNPt26iPjPt26lPmPt1ty1/ 128groovety1- 1orsFtyzs_Ptvwx$At|h! 1t12Q!YSSR$$P$$PPPPPPt11X0.$S@@Q119RPHPPP111:t|.Q- 1>t1O 2211Ԡt1-4X 1?1@1A1*1ty1A 1E29lt|+3 1Gt|Q; 1It|Q- 1Jt|>2 1Kt| 11O1P1Q1R1St1q= 11Xt|D 1Yt1d 1)1*1t1yd 1t12, 12-12.PPP12/P120P121P122t|6 P1Qt1| 2112:typet1| 2112;(if2<enabled)t1{D 211Pt11F'Q Q112112=buffersize112111Ft|- 1P~t1|W 22>enable2?/2@disable1t13 S11Ft13 R12t1K Q11O2t1D P12t|6 P1Qt|H 1Pt|[ P1't|U P1''t1 2Aline~t1F 2Bxplay~12Ctypically2Dused12Eline11112D112Fsignal12Ggenerates12Hchanging12Ivalue.t|' 1X1t1 2121pvt1'L 1X1O1gt| 2t| 15t|4 1X2Jbuf1t1q 2 151pvt1 R111111t1 Q1111t1_ P111t11='Q Q112111111t|2 1S~t1k 1\1]1^1_1`1a1-1b1c1d1^1e1.1f1O1gt19 1h1i1j1k1A1l1mty12B# 1E1nty1WB- 1ors7jtuPWtyz[_Ptvwx$At1' 1p1q1r1.1s1t1u1v1w1x1y1z1{1|1}1~1.1:1111\t12} 1p11111c111111111.11-1.111111171.1111c11R1-1.1111111111p11111.111111111111c111.111-11111111~1.11111A111111111-1.111111111c111111.111111;1111J111111111.11/111.1111111.161Ҡt1{ 1/11111A11v1{1|11112131411\t1' 111ܠ11\t1 1s11t1u1A11v1{1|1111113141p11111c111111111.11-1.111111171.1111c11R1-1.1111111111p11111.111111111111c111.111-11111111~1.11111A111111111-1.111111111c111111.111111;1111J111111111.11s111.1111111.161Ҡt1  11s1t1ty1CD 111:t102. 11.tvwx$@At10l 1,1-1.1/1011121314tvwx$At1G/Q 15161718t|Dd 2t|SA 2t1N 2t1CE 212 tvwx$At1V2Btvwx$At15 2KSample12Lbased212Mwithin12 t1B 2%111Pt|) 2tvwx$@At|' 2t|+ 111^tvwx$At1U 2 1tvwx$@At1M 2BR12N@interpR11^t12,?12-12.PPP12/P120P121P122t12,R12-H12.PPP12/P120P121P122tvwx$At128 2Oupdate2t26WPTPt26TQDPt26/P.Pt27$PSP//t27DPSPm00ty26>PSPty26VPSPty26UPSPt27PSP00t26.PSPt27]P\P#zzt27^P\PIzzt26SP\Pt26SQ\Qt27(P$P t27%P$P t27&P$P t27'P$P t273P$Pt26$PCPty26BPPty26PPty26PPt26PPty26P>Pty26P>Pty26P>Pty26"P>Pty267P>Pty26=P>Pty26;P>Pty26Pty26:P>Pty26AP>Pt27SR8Pfft268P9Pt1ty1a! 12%ty1a- 1ors$RtyzO_Ptvwx$Atv{Pt|! 1UPt1Wi7Pt16F 2$2112Precord2&t|5 2Qgetappendt|y; 2Rgetsigmodet|- 1>t1X 1?1@1A1*1ty1 1E1Ft|N3 1Gt|& 1Ht|}; 1It|N- 1Jt|? 2Sgetmixmodet|N) 1Lt|w* 1Mt|N' 1Nt|B 1PRt1Bp= 11Xt|NrD 1Yt1rd 1)1*1t1xd 1t12,Elo12-12.PPP12/P120P121P122t|i 2t|CA 2t1BsE 212 t1# 2rs<7=+t2_Ptz _Ptvwx$At|Y 1t1:X 2At|:FH P1t1oF 2B2Trecmet26TPSPt27RPPP?kkt26SPPPt26PPUPt26TPQPt26QPRPt1t1# 12%t2UtoggleqPt1r> 2Vmetrot1 Nc 2WIt2Xworks2Ymostly2Zliket1C5 1h1i1j1k1A1l1mty1?# 1E1nty1?- 1ors\bKtuPRtyzR_Ptvwx$At1' 1p1q1r1.1s1t1u1v1w1x1y1z1{1|1}1~1.1:1111\t1/} 1p11111c111111111.11-1.111111171.1111c11R1-1.1111111111p11111.111111111111c111.111-11111111~1.11111A111111111-1.111111111c111111.111111;1111J111111111.11/111.1111111.161Ҡt1{ 1/11111A11v1{1|11112131411\t1' 111ܠ11\t1 1s11t1u1A11v1{1|1111113141p11111c111111111.11-1.111111171.1111c11R1-1.1111111111p11111.111111111111c111.111-11111111~1.11111A111111111-1.111111111c111111.111111;1111J111111111.11s111.1111111.161Ҡt1 11s1t1ty1@D 111:t11,-$S@>ty| 1XQty1- 1ty11@ 1E2]brsFrtzt=_Pt1ty1_U0 12^dummyty|DBA 152_record~ty11U- 1ors5^tuNPtvwx$AtzH9YPPPSPPPPPPt@H9YPPPSPPPPPPt12H7WYSSR$$P$$PPPPPPt11)K'Q@9Q112`off112amix-in111t1& 2?$Bty|^ Qty1- 1t12buslider]kQPt#YPPPSPPPPPPty|  ty1 - 1t1 2cvalue12damount1-2emixing12a1"t1s 2f>=0...2grecording12hrunning1Z2isigmode)t1f 2j<0...2g12kstopped1Z2it2U_Ptyz*._Ptvwx$@At|l" 2t|D& 111^tvwx$At|  1UPt|;? 2lmixmode~t1) 2mSelect2e2ninto2obuffer.2pAmount12qcontrolled172F$@2rMixmode12sOFF172tdefault.t1' 2$t2U_Pt|) 1~t|8 2usigmode~t1#( 2vadc~Qt8YPPPSPPPPPPt4YPPPSPPPPPPt1FO 22wstart/stop2gt1P 1T1vp2g2xpointt1 2yHints:12w2zmust2{always12|sent12w2g2}(also12F2~mode!)12output212are2011.2next11t1S 2trigger12e2signal:ty1:/& 2^t1x 2signalmode1A12accurate2recording:12g12arm2xrecord~12actual2g2starts2when22F2(inlet22)12>P1v2stops22triggersignal2=$2click2"stop"12unarm2t12,$%012-Š12.PPP12/P120P121P122t12,sO12-12.PPP12/P120P121P122t12,Ot12-12.PPP12/P120P121P122t12,g12-12.PPP12/P120P121P122tvwx$@Atv{Qt1, 22T2@sigmodeQ11Uty26 P!Pty26!PPty26P_Pty26!PPt26P^Pty26!P#Pt26#PPt26PP$Pt27PPPqݠt27PPPIݠt26_PPPt27PPPfft26^PPPt26]PPPt26PPPt26PQ%Pt26PPQt26PR&Pt26[PPRt26P"Pt26"PPty26P\Pt26\PPSt27"PPt26PPt1t1Ui 12u2&2lt1WSt11T'Q@Q111P111P1'1111O21112t|; 1Q~t1 2m2unit1A2starting/sync12M1.21t|:& 1U~t11K'Q@Q112111O2112111Ft|- 1P~t1 2m2time21A2positional2information2eg.212.222tvwx$@At|" 2t|& 111^tvwx$At1@xj 22currend2t|x 2t|g 15t19 1T1vp2g12112t'GYPPPSPPPPPPt'CYPPPSPPPPPPt12P'6YSSR$$P$2$PPPPPPt2U_Pt|: 2append~t2U_Pt|) 1~t|  1t|R 1X2nutherbuffert1P. 2vtGYPPPSPPPPPPtC?YPPPSPPPPPPt1m 2 2TRt1 1\21st1^1_1`1a1-1b1c22nd1^1e1.1f1O1gt129k 2Sync212reports1111.2selected2units.t1s| 22w2gt1D 1T1vp2g2x11Ptvwx$At1 _t2tvwx$At1 / 2Record12F2n12 t1 B 22records12F2n12 2object.t1E 22%1Ԡt1TC 2input2sourcet1r 1X2 2you're2g2nt1 22double212'2gt1@ 1X12P2n11Ԡt1 2Enable/disable12recording.2Looping12s172t2222222t1 222mode.2Append12ON172t2222222t1;g 22extensive152text1pvt1< 1X2g1U12nr.1-1P2222t1N 112few2extensions.t11L-$S@\Q119RPHPPP112_t12,ˠ12-Š12.PPP12/P120P121P122t12,`M12-12.PPP12/P120P121P122t12,^T12-H12.PPP12/P120P121P122t1y 1X112beginningtvwx$@Atv{Qt1P% 2R2T11Uty269P;Pty26;P:Pty26:P2Pty268P Pt26 PPt26PPt26,P+Pt260P/Pt26PPty26=P>Pt27IPHPoot261PJPt26JPKPt26JPKQt26HP1Pt1ty1-0 12Ptvwx$@At1Q 2 2 11t11X0S@Q119RPPPP112http://grrrr.org/exttvwx$Aty|< 1nty|k 1nty| 1nty1-- 1otvwx$`At1$11121314tvwx$At1Z]1/112library1-111ՠtvwx$@Atv{Ut1^RM 2Click1.111n1.2respective152filestv{Qt1YY 2Find1.2latest1/11v2other11t12ubuttonbMNPPt12bmMPPt12bMPPtvwx$`At1bMN2 11^t1bmN2B11^t1bM211^tvwx$@At1 2Signal2recorder12a2capabilityt1q 2K12L21t12,ZEl12- 12.PPP12/P120P121P122ty26P]Pty26]PPty26VPPty26_PPty26PPty26WP_Pty26^PPty26PPty26XP^Pt1xsample-master/maxmsp/xsample-objectmappings.txt0000755000175000017500000000026713014165104022777 0ustar zmoelnigzmoelnigmax objectfile xgroove~ xsample; max objectfile xplay~ xsample; max objectfile xrecord~ xsample; max oblist xsample xgroove~; max oblist xsample xplay~; max oblist xsample xrecord~; xsample-master/xsample.mcp0000755000175000017500000157262113014165104016440 0ustar zmoelnigzmoelnigcool(aЉ%CodeWarrior ProjectMSL C.PPC.LibInterfaceLibMathLibMSL RuntimePPC.LibMSL SIOUX.PPC.LibSimpleAlert.rsrcSimpleAlert.cxMacOS Toolbox PPC DebugMacOS Toolbox PPC Final:a.outLib Import PPCRezBalloon HelpMW C/C++ PPCPPCAsmXCOFF Import PPCPEF Import PPCMacOS PPC LinkerSource TreesAccess PathsDebugger RuntimeTarget SettingsFile MappingsBuild ExtrasDebugger TargetCustom KeywordsC/C++ CompilerC/C++ WarningsOutput FlagsPackager PanelPPC CodeGenPPC DisassemblerPPC Global OptimizerPPC LinkerPPC PEFPPC ProjectPPCAsm PanelRez Compiler:MacOS Toolbox PPC Debug:MacOS Toolbox PPC Final.cMaxLibMSL ShLibRuntime.mcpMSL ShLibRuntime::Libs:MSL ShLibRuntime.LibTemplatePPC:myobjectMSL ShLibRuntime.LibTemplategroove.cppmain.cppplay.cpprecord.cpp:groovyMax objectmain.hMaxAudioLib:xrecord~play~xrecord~xplay~:xplay~xgroove~:xgroove~resourcesbasic_c_strings.c_cpp.cpp_cpp.hMSL RuntimeAltiVec.Libmax-pd.hbaseext.hbaseext.cpp_cppext.h_cppext.cppmax-pd.cppxgroove~ debug:xgroove-d~xgroove-d~xrecord~ debug:xrecord-d~buffer.cppcw-max.hflext.out::maxmsp:xplay~::maxmsp:xgroove~::maxmsp:xrecord~::maxmsp:xgroove-d~::maxmsp:xrecord-d~flext-d.outMSL StdCRuntimeAltiVec.LibMSL SIOUX_WASTE.PPC.Libxplay~ debug::maxmsp:xplay-d~:xplay-d~::CW:xrecord~::CW:xplay~::CW:xgroove~flext_d.outxsample::CW:xsamplexsample-d:xsampleinter.cppxsample.rsrc::max-os9:xsampleflextMax OSXMax OS9MaxLib.stubCycling74MaxAudioLib.stubCarbonLibCycling74 OSXMSL C++.PPC.Lib::max-osx:xsample:max-osx:xsample:max-os9:xsampleMSL_Runtime_PPC.LibMSL_C_PPC.LibMSL_C++_PPC.LibProperty ListMSL_C_Carbon.Libinter.hMax OSX debugmax-osx/xsamplemax-test/xsamplePD OSXxsample.pd_darwinMachO ImporterMW C/C++ PPC Mac OS XProperty List CompilerCopy To PackagePerl ToolShell ToolOS X VolumePDMSL_C_Mach-O.libMSL_C++_Mach-O.libMSL_C++/MSL_MacOS/Lib/PPC/MSL_C++_PPC.LibMSL_All_Carbon.LibLibraries/Runtime/Libs/MSL_All_Carbon.LibMSL_All_PPC.Libflext.libMacOS X PPC LinkerPPC CodeGen Mach-OPPC Mac OS X LinkerPPC Mac OS X ProjectLib Import Mach-OMW C/C++ MachPPCMach-O PPC LinkerPPC Mach-O LinkerPPC Mach-O TargetMSL_C++_Mach-O.aMSL_All_Mach-O.libSystem.frameworkvecLib.frameworkpd.libpd.app.libpd.exeMax OS9 G3max-os9/xsampleMax OSX G3First Segmenta.outflext_g3.outmax-osx-g3/xsamplemax-os9-g3/xsample max-osx/xsample.mxdmax-test/xsample.mxdmax-osx-g3/xsample.mxdsource/xsample.rsrcMax OSX Mach-O.mxo/Contents/MacOS/.mxomax-darwin/xsample.mxdml} FD(ppñ(pp    H K JavaClasses.jarZIP MWZPr(pp456789=?@AFG     KJavaClasses.jarZIP MWZP  O (ppJavaClasses.jarZIP MWZP(ppJavaClasses.jarZIP MWZP I@ JavaClasses.jarZIP MWZP_xsample_setup 5 6 7 8 9 = B D E F G H I K 4 5 6 7 8 9 = D E F G H I J K  J @ 4 5 6 7 8 9 E H Lstart(pp(pp@  !"#$% &z'_xsample_setup flcwmax.h flcwmax.h    4 5 6 7 8 9 ? @ A B G Hstart456789=DEFGHIJ startmainrtJavaClasses.jarZIP MWZPstarta.out????MBND@a.out????MBND@a`_d-isWU]TXV 6'(ut/M@^>P:f) HGBQpRnqjYSb2g{  387lk|}KF~9o*mrE,0+[Zxzwv4; !"#$%y5A &1.N?L=\<OcehCDJI ROOT GRUP Max OS9FILE=FILEHFILEFILEFILEFFILEGGRUPMax OSXFILE BFILEHFILE HFILE =FILE =FILE IFILE HGRUP Mac LibrariesFILE FFILE GFILEAFILE DFILEFILE DGRUP PD OSXFILE HFILE LFILE KFILE 5FILE 6FILE 7FILE 8FILE 9FILE Emainrt`dfP mainrt flcwmax-x.h flcwmax-x.hstart@ flcwmax.h flcwmax.hmainrt a.out????APPLX????__startstart@ a.out????APPLX???? a.out????APPLX????__start hYJ   456789=BDEFGHImain__start%Ip 1 V ~    Cg Fq 1U~ !"#7$\%&'()*?+g,-./0&1O2|3456708R9|:;<= > >? h@ A B C D *E JF nG H I J K L IM tN O P Q R <S iT U V W X (Y QZ ~[ \ ] ^ _$`Aa]bwcdefghi.jOkfl~mnopqrs4tLuevwxyz{|)}@~Tl0G_u/H]w,C_t9M^s"6Kc{-H_{#@Yw'Ccy @`v0BXj2K]p );Nav   $ > Wn.BWo ! #" <# W$ m% & ' ( ) * +! ,!"-!8.!P/!e0!1!2!3!4!5!6" 7"$8";9"P:"d;"{<"=">"?"@"A#B#C#%D#;E#QF#_G#pH#I#J#K#L#M#N$O$#P$9Q$LR$dS$T$U$V$W$X$Y$Z%[%\%9]%U^%g_%z`%a%b%c%d%e&f&g&5h&Ji&cj&xk&l&m&n&o&p' q'r',s'Gt'^u'zv'w'x'y'z'{(|(}(6~(T(h(y((((()))=)Q)f)))))**5*Q*l****+++@+[+w++++, ,,,P,j,,,,,- ---Q-u-----..*.B.].u...../ /&/D/[/s/////0000F0Y0p000001 1-1C1Z1v11112 2)2E2`222223343O3k333344 4D4^4u444455!5E5i555556 6(6B6_6y66666778 7X 7q 7 7 7778848V8n8888899#9E9g999 9!9"9#: $:%:6&:K':_(:w):*:+:,:-:.;/;0;+1;C2;]3;r4;5;6;7;8;9;:< ;<<<4=<_?Q>.R>FS>cT>yU>V>W>X>Y>Z? [?'\?F]?[^?m_?`?a?b?c?d?e@f@9g@Nh@di@yj@k@l@m@n@oApAqA+rACsAZtAquAvAwAxAyAzA{B|B)}B>~BUBiBBBBBBCCC+CDCaC~CCCCCDDD+DCDXDlDDDDDDEE#E8EPEjEEEEEEFFF,FAFXFlFFFFFFG$G?G[GxGGGGGHH,HHHeHHHHHHII3IOIjIIIIIJJ-JMJjJJJJK K'KGKbKKKKKLL7LZLzLLLLMMM9MSMjMMMMNNN*NBNYNnNNNNNNOOO-OCOXO~OOOOO P P P, PF P^PzPPPPPQQQ+Q@QTQjQ}QQQQQ R!R"R2#RN$Ri%R&R'R(R)R*R+S,S3-SH.Se/S0S1S2S3S4T5T*6TG7T_8Ty9T:T;T<T=U>U?U?@U\AUyBUCUDUEUFUGVHVIV1JVMKVmLVMVNVOVPVQWRW!SW:TWRUWmVWWWXWYWZW[X\X]X7^XP_Xz`XaXbXcXdXeYfY1gYHhYfiYjYkYlYmYnZoZ1pZDqZ[rZssZtZuZvZwZx[y[%z[E{[[|[r}[~[[[\\"\A\]\x\\\\] ]+]H]v]]]]^^+^I^d^^^^__+_L_m_____``-`E`e```   IJK !"#OPQRSTU/0123(%,456.)-+789:;<=>?&@LABCMNDEF$G'*VWXYZ[\!(%*+)"&$,-/01234567.89:;<=>?@ABCD'E #FGHIJKLMOVSXYWPTRZ[]^_`abcde\fghijklmnopqrUsNQtuvwxyz{}~|ipmrsqjnltuvwxyz{|}~ohk     Hghijk^eblmnf_caopqrstuvwxyz{|}~d]`ijklm`gdnophaecqrstuvwxyz{|}~f_b     >?@AB5<9CDE=6:8FGHIJKLMNOPQRSTUV;W47XYZ[\]^    !"#$%&'()*+,  -./0123DKHMNLEIGOPQRSTUVWXYZ[\]^_J`CFabcdefg&#()' $"*+,-./0123456789:%;!<=>?@AB465365798h94=qBTD{E|FyGHpIn Ji >n ?pMSIEhttp://java.sun.com/products/jdk/1.1/docs/api/start@ flcwmax-x.h flcwmax-x.hmainrtO1O:Op MacOS PPC LinkerMax OS9:  start flcwpd-x.h flcwpd-x.h@x465365798h94=T?|@yAF+G:Hi'SMachO ImporterC/C++MWCD`RSRC`TEXT.arrTEXT.axpTEXT.expMacHeaders.cMacOS_Carbon_C++_Macros.hTE7"7"6ؠ".`o@@o@o@o@*o@*io@ ho@*go@)eo@3o@+o@o@+Po@+0o@+p o@* o@+ o@ o@o@oo@)o@)o@)`o@*o@*07startJavaClasses.jarZIP MWZPstart/Applications/MaxMSP 4.3/MaxMSP Runtime 4.3O1O:Opmain.⼐prefo ⼀pref`!ppref"`pref #Ppref $@pref+start/usr/local/pd/bin/pd -lib xsampleO1O:Op MacOS X PPC LinkerPD OSX: MacOS PPC LinkerMax OSX debugax-osxMain-ClassAuto-Generated|@|p@|@{@{p@{@z@y@w@@w`@v@u@u0@t@s@r@q@p@o@n@m@mp@k@P@@p@@ @p@p@`@@0@@@@ @@@0@@@@@@@@ @0@@@0@p@@@@`@@@@@@ @@#6HYgi 0@N[k{ !"#$%&' (9)R*a+h,}-./0123456789 :,;6<<=E>L?T@]AgBqCDEFGHIJKLMNOPQ+R6S?TIUYVkW}XYZ[\]^_ `a'b5cAdIeVf`gihsijklmnopqrst uv+w?xMy]zk{||}~"-9<M`0BSew    " / B V j     mvէl L} =  ..gbJx flcwmax-x.h flcwmax-x.hmain @::max-osx:k@:MacOS Support:@:MSL:@:max-includes:r@:msp-includes:r@:source:k@/Applications/MaxMSP 4.2/MaxMSP 4.2O1O:Op MacOS PPC LinkerMax OSX:MacOS PPC LinkerAPPL`Appl`MMLBLib Import PPCMPLFLib Import PPCMWCD`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C++TEXT.ccMW C/C++ PPCC/C++TEXT.cpMW C/C++ PPCC/C++TEXT.cppMW C/C++ PPCC/C++TEXT.expTEXT.hMW C/C++ PPCC/C++TEXT.pchMW C/C++ PPCC/C++TEXT.pch++MW C/C++ PPCC/C++TEXT.rRezRezTEXT.sPPCAsmBalloon HelpXCOFXCOFF Import PPCdocu`rsrcRez`shlbPEF Import PPCstubPEF Import PPC.docP.oXCOFF Import PPC.ppob`.rsrcRez`NoneMMPr@Java Linker RSRCTEXT.htmlJavaTEXT.javaMW JavaJavaTEXT.mfJavarsrc.auJAR Importer@.classMW Java.gifJAR Importer@.jarMW Java.zipMW JavaMacOS 68K LinkerAPPL`Appl`MMLBLib Import 68KMPLFLib Import 68KMWCD`OBJ MPW Import 68KPLob`RSRC`TEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezRezTEXT.segdocu`rsrc`shlbPEF Import 68KstubPEF Import 68K.docP.oMPW Import 68K.ppob`.rsrc`MacOS MergeAPPL`Appl`RSRC`TEXT.rRezRezappe`rsrc`shlbMach-O PPC LinkerAPPL`Appl`MLIBLib Import Mach-OMMLBLib Import Mach-OMPLFLib Import Mach-OMWCD`RSRC`TEXT.cMW C/C++ MachPPCC/C++TEXT.c++MW C/C++ MachPPCC/C++TEXT.ccMW C/C++ MachPPCC/C++TEXT.cpMW C/C++ MachPPCC/C++TEXT.cppMW C/C++ MachPPCC/C++TEXT.expTEXT.hMW C/C++ MachPPCC/C++TEXT.pchMW C/C++ MachPPCC/C++TEXT.pch++MW C/C++ MachPPCC/C++TEXT.rRezRezdocu`rsrc`.docPWin32 x86 LinkerTEXT.cMW C/C++ x86C/C++TEXT.c++MW C/C++ x86C/C++TEXT.ccMW C/C++ x86C/C++TEXT.cpMW C/C++ x86C/C++TEXT.cppMW C/C++ x86C/C++TEXT.defTEXT.hMW C/C++ x86C/C++TEXT.h++MW C/C++ x86C/C++TEXT.hppMW C/C++ x86C/C++TEXT.ordTEXT.pchMW C/C++ x86C/C++TEXT.pch++MW C/C++ x86C/C++TEXT.rcMW WinRCBalloon HelpiLIBLib Import x86iOBJObj Import x86.aLib Import x86.docP.libLib Import x86.oObj Import x86.objObj Import x86.resWinRes ImportMacOS X PPC Linker0APPL`Appl`MDYLMachO ImporterC/C++MLIBMachO ImporterC/C++MMLBMachO ImporterC/C++MPLFMachO ImporterC/C++MWCD`RSRC`TEXT.arrTEXT.axpTEXT.cMW C/C++ PPC Mac OS XC/C++TEXT.c++MW C/C++ PPC Mac OS XC/C++TEXT.ccMW C/C++ PPC Mac OS XC/C++TEXT.cpMW C/C++ PPC Mac OS XC/C++TEXT.cppMW C/C++ PPC Mac OS XC/C++TEXT.expTEXT.hMW C/C++ PPC Mac OS XC/C++TEXT.h++MW C/C++ PPC Mac OS XC/C++TEXT.hppMW C/C++ PPC Mac OS XC/C++TEXT.lcfTEXT.mMW C/C++ PPC Mac OS XC/C++TEXT.mmMW C/C++ PPC Mac OS XC/C++TEXT.pchMW C/C++ PPC Mac OS XC/C++TEXT.pch++MW C/C++ PPC Mac OS XC/C++TEXT.pchmMW C/C++ PPC Mac OS XC/C++TEXT.pchmmMW C/C++ PPC Mac OS XC/C++TEXT.plcProperty List CompilerProperty ListTEXT.plocProperty List CompilerProperty ListTEXT.rRezRezTEXT.wkedocu`rsrc`.aMachO ImporterC/C++.docP.dylibMachO ImporterC/C++.gifCopy To PackageP.icnsCopy To PackageP.jpgCopy To PackageP.libMachO ImporterC/C++.nibCopy To PackageP.plPerl ToolPerl.plistCopy To Package.ppob`.pshShell Tool.rsrc`.shShell Tool.stringsCopy To Package.tiffCopy To PackageP`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C+MacHeaders.cMacOS_Carbon_C++_Macros.hmainno connections availabled DefaultSourcCNt(MediaIdleDTuneSetSofterFCompressPictureFiletTextMediaSetTextProcMusicSetPartSoundLocalizationGraphicsExportGetMetaDataQSGGetIndChannelESGChangedSourceSetTrackGWorld5SpriteMediaSetSpriteP@:MSIEhttp://java.sun.com/products/jdk/1.1/docs/api/   @.⼐prefo ⼀pref`!ppref"`pref #Ppref $@pref+ Merge Out????APPLDLGXckidProjWSPC`bmstrh0mstlg%mstnhmtflgmtfs????APPLa.rsrcmtfpgmtfd`prefW ppref^`prefP pref@prefgz07K pref۵pref`preftP prefq pref5 pref  pref ⽰:pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{@DLGXckidProjWSPCPC.⼐prefo ⼀pref`!ppref"`pref #Ppref $@pref+ @::max-os9:k@MAX includeso@:MSP includes:o@:MacOS Support:@:MSL:@:source:k@MacOS PPC LinkerAPPL`Appl`MMLBLib Import PPCMPLFLib Import PPCMWCD`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C++TEXT.ccMW C/C++ PPCC/C++TEXT.cpMW C/C++ PPCC/C++TEXT.cppMW C/C++ PPCC/C++TEXT.expTEXT.hMW C/C++ PPCC/C++TEXT.pchMW C/C++ PPCC/C++TEXT.pch++MW C/C++ PPCC/C++TEXT.rRezRezTEXT.sPPCAsmBalloon HelpXCOFXCOFF Import PPCdocu`rsrcRez`shlbPEF Import PPCstubPEF Import PPC.docP.oXCOFF Import PPC.ppob`.rsrcRez`NoneMMPr@Java Linker RSRCTEXT.htmlJavaTEXT.javaMW JavaJavaTEXT.mfJavarsrc.auJAR Importer@.classMW Java.gifJAR Importer@.jarMW Java.zipMW JavaMacOS 68K LinkerAPPL`Appl`MMLBLib Import 68KMPLFLib Import 68KMWCD`OBJ MPW Import 68KPLob`RSRC`TEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezRezTEXT.segdocu`rsrc`shlbPEF Import 68KstubPEF Import 68K.docP.oMPW Import 68K.ppob`.rsrc`MacOS MergeAPPL`Appl`RSRC`TEXT.rRezRezappe`rsrc`shlbMach-O PPC LinkerAPPL`Appl`MLIBLib Import Mach-OMMLBLib Import Mach-OMPLFLib Import Mach-OMWCD`RSRC`TEXT.cMW C/C++ MachPPCC/C++TEXT.c++MW C/C++ MachPPCC/C++TEXT.ccMW C/C++ MachPPCC/C++TEXT.cpMW C/C++ MachPPCC/C++TEXT.cppMW C/C++ MachPPCC/C++TEXT.expTEXT.hMW C/C++ MachPPCC/C++TEXT.pchMW C/C++ MachPPCC/C++TEXT.pch++MW C/C++ MachPPCC/C++TEXT.rRezRezdocu`rsrc`.docPWin32 x86 LinkerTEXT.cMW C/C++ x86C/C++TEXT.c++MW C/C++ x86C/C++TEXT.ccMW C/C++ x86C/C++TEXT.cpMW C/C++ x86C/C++TEXT.cppMW C/C++ x86C/C++TEXT.defTEXT.hMW C/C++ x86C/C++TEXT.h++MW C/C++ x86C/C++TEXT.hppMW C/C++ x86C/C++TEXT.ordTEXT.pchMW C/C++ x86C/C++TEXT.pch++MW C/C++ x86C/C++TEXT.rcMW WinRCBalloon HelpiLIBLib Import x86iOBJObj Import x86.aLib Import x86.docP.libLib Import x86.oObj Import x86.objObj Import x86.resWinRes ImportMacOS X PPC Linker0APPL`Appl`MDYLMachO ImporterC/C++MLIBMachO ImporterC/C++MMLBMachO ImporterC/C++MPLFMachO ImporterC/C++MWCD`RSRC`TEXT.arrTEXT.axpTEXT.cMW C/C++ PPC Mac OS XC/C++TEXT.c++MW C/C++ PPC Mac OS XC/C++TEXT.ccMW C/C++ PPC Mac OS XC/C++TEXT.cpMW C/C++ PPC Mac OS XC/C++TEXT.cppMW C/C++ PPC Mac OS XC/C++TEXT.expTEXT.hMW C/C++ PPC Mac OS XC/C++TEXT.h++MW C/C++ PPC Mac OS XC/C++TEXT.hppMW C/C++ PPC Mac OS XC/C++TEXT.lcfTEXT.mMW C/C++ PPC Mac OS XC/C++TEXT.mmMW C/C++ PPC Mac OS XC/C++TEXT.pchMW C/C++ PPC Mac OS XC/C++TEXT.pch++MW C/C++ PPC Mac OS XC/C++TEXT.pchmMW C/C++ PPC Mac OS XC/C++TEXT.pchmmMW C/C++ PPC Mac OS XC/C++TEXT.plcProperty List CompilerProperty ListTEXT.plocProperty List CompilerProperty ListTEXT.rRezRezTEXT.wkedocu`rsrc`.aMachO ImporterC/C++.docP.dylibMachO ImporterC/C++.gifCopy To PackageP.icnsCopy To PackageP.jpgCopy To PackageP.libMachO ImporterC/C++.nibCopy To PackageP.plPerl ToolPerl.plistCopy To Package.ppob`.pshShell Tool.rsrc`.shShell Tool.stringsCopy To Package.tiffCopy To PackagePtrumentCNCd DefaultSourcCNt(MediaIdleDTuneSetSofterFCompressPictureFiletTextMediaSetTextProcMusicSetPartSoundLocalizationGraphicsExportGetMetaDataQSGGetIndChannelESGChangedSourceSetTrackGWorld5SpriteMediaSetSpriteP@Max OS9J %MRJApplicationWARZmacosxmacosx Merge Out????APPLDLGXckidProjWSPC0b????APPLa.rsrcMax OS9: ?<DLGXckidProjWSPC????APPLsr@MWCD`OBJ MPW Import 68KPLob`RSCRez`TEXT.bhBalloon HelpTEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezTEXT.segdocu`rsrcRez`shlbPEF Import 68KstubPEF Import 68K.doc :max-os9:xsamplemax2iLaF:????:max-os9:xsampleP'CODE' 'DATA' 'PICT'@ noname.exeMain-ClassAuto-Generated|@|p@|@{@{p@{@z@y@w@@w`@v@u@u0@t@s@r@q@p@o@n@m@mp@k@P@@p@@ @p@p@`@@0@@@@ @@@0@@@@@@@@ @0@@@0@p@@@@`@@@@@@ @@ Executable????MEXE@Executable.rsrc:./Aa.exe????MEXE@a.rsrc:./\g%f5{0ۀ[ ۀԻۀכpۀכۀ!ׄױ 5{`ۀ;@ۀ+Pۀ;Info.plists;F@!+Pۀ5{ۀ5{ۀkۀ;@HՋ[ {PP;@  6ۀ *ۀ[ >7P`@ۀՋۀۀ{;@[6)9B@9B@@sڰ 40[ @:cswpcnb0b82؃LP<8;؄4؃05{09ۀ5+P0wind6hiobPetrgcntl"#acce %G,`000@0P0P00׀ 00000i0h0g0e0p3000@0 0` 0 0` 0 000p00@plst000Show Da[{[l+Pl  9T  ] P'CODE' 'DATA' 'PICT'mainrtstartmainmainrt 53 65 79 8h 94 =q BT D{ E| Fy G Hp In K6 Ji >n ?p flcwmax.h flcwmax.hMRJApplication.⼐prefo ⼀pref`!ppref"`pref #Ppref $@pref+start7"7"6ؠ".`o@@o@o@o@*o@*io@ ho@*go@)eo@3o@+o@o@+Po@+0o@+p o@* o@+ o@ o@o@oo@)o@)o@)`o@*o@*07MSIEhttp://java.sun.com/products/jdk/1.1/docs/api/mainP'CODE' 'DATA' 'PICT'P'CODE' 'DATA' 'PICT'trumentCNCd DefaultSourcCNt(MediaIdleDTuneSetSofterFCompressPictureFiletTextMediaSetTextProcMusicSetPartSoundLocalizationGraphicsExportGetMetaDataQSGGetIndChannelESGChangedSourceSetTrackGWorld5SpriteMediaSetSpriteP@:WARZmacosxmacosx@ noname.exe.⼐prefo ⼀pref`!ppref"`pref #Ppref $@pref+@`@@@@@@ @@ 46 53 65 79 8h 94 =q D{ E| F@ G@ Hc@ Ip@ Jn@ K Hc@ ?p   x 46 53 65 79 8h 94 ?| @y A B G+ H: Ii'SMSIEhttp://java.sun.com/products/jdk/1.1/docs/api/ @::max-osx:k@:MacOS Support:@:MSL:@:max-includes:r@:msp-includes:r@:source:k@MacOS PPC LinkerAPPL`Appl`MMLBLib Import PPCMPLFLib Import PPCMWCD`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C++TEXT.ccMW C/C++ PPCC/C++TEXT.cpMW C/C++ PPCC/C++TEXT.cppMW C/C++ PPCC/C++TEXT.expTEXT.hMW C/C++ PPCC/C++TEXT.pchMW C/C++ PPCC/C++TEXT.pch++MW C/C++ PPCC/C++TEXT.rRezRezTEXT.sPPCAsmBalloon HelpXCOFXCOFF Import PPCdocu`rsrcRez`shlbPEF Import PPCstubPEF Import PPC.docP.oXCOFF Import PPC.ppob`.rsrcRez`NoneMMPr@Java Linker RSRCTEXT.htmlJavaTEXT.javaMW JavaJavaTEXT.mfJavarsrc.auJAR Importer@.classMW Java.gifJAR Importer@.jarMW Java.zipMW JavaMacOS 68K LinkerAPPL`Appl`MMLBLib Import 68KMPLFLib Import 68KMWCD`OBJ MPW Import 68KPLob`RSRC`TEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezRezTEXT.segdocu`rsrc`shlbPEF Import 68KstubPEF Import 68K.docP.oMPW Import 68K.ppob`.rsrc`MacOS MergeAPPL`Appl`RSRC`TEXT.rRezRezappe`rsrc`shlbMach-O PPC LinkerAPPL`Appl`MLIBLib Import Mach-OMMLBLib Import Mach-OMPLFLib Import Mach-OMWCD`RSRC`TEXT.cMW C/C++ MachPPCC/C++TEXT.c++MW C/C++ MachPPCC/C++TEXT.ccMW C/C++ MachPPCC/C++TEXT.cpMW C/C++ MachPPCC/C++TEXT.cppMW C/C++ MachPPCC/C++TEXT.expTEXT.hMW C/C++ MachPPCC/C++TEXT.pchMW C/C++ MachPPCC/C++TEXT.pch++MW C/C++ MachPPCC/C++TEXT.rRezRezdocu`rsrc`.docPWin32 x86 LinkerTEXT.cMW C/C++ x86C/C++TEXT.c++MW C/C++ x86C/C++TEXT.ccMW C/C++ x86C/C++TEXT.cpMW C/C++ x86C/C++TEXT.cppMW C/C++ x86C/C++TEXT.defTEXT.hMW C/C++ x86C/C++TEXT.h++MW C/C++ x86C/C++TEXT.hppMW C/C++ x86C/C++TEXT.ordTEXT.pchMW C/C++ x86C/C++TEXT.pch++MW C/C++ x86C/C++TEXT.rcMW WinRCBalloon HelpiLIBLib Import x86iOBJObj Import x86.aLib Import x86.docP.libLib Import x86.oObj Import x86.objObj Import x86.resWinRes ImportMacOS X PPC Linker0APPL`Appl`MDYLMachO ImporterC/C++MLIBMachO ImporterC/C++MMLBMachO ImporterC/C++MPLFMachO ImporterC/C++MWCD`RSRC`TEXT.arrTEXT.axpTEXT.cMW C/C++ PPC Mac OS XC/C++TEXT.c++MW C/C++ PPC Mac OS XC/C++TEXT.ccMW C/C++ PPC Mac OS XC/C++TEXT.cpMW C/C++ PPC Mac OS XC/C++TEXT.cppMW C/C++ PPC Mac OS XC/C++TEXT.expTEXT.hMW C/C++ PPC Mac OS XC/C++TEXT.h++MW C/C++ PPC Mac OS XC/C++TEXT.hppMW C/C++ PPC Mac OS XC/C++TEXT.lcfTEXT.mMW C/C++ PPC Mac OS XC/C++TEXT.mmMW C/C++ PPC Mac OS XC/C++TEXT.pchMW C/C++ PPC Mac OS XC/C++TEXT.pch++MW C/C++ PPC Mac OS XC/C++TEXT.pchmMW C/C++ PPC Mac OS XC/C++TEXT.pchmmMW C/C++ PPC Mac OS XC/C++TEXT.plcProperty List CompilerProperty ListTEXT.plocProperty List CompilerProperty ListTEXT.rRezRezTEXT.wkedocu`rsrc`.aMachO ImporterC/C++.docP.dylibMachO ImporterC/C++.gifCopy To PackageP.icnsCopy To PackageP.jpgCopy To PackageP.libMachO ImporterC/C++.nibCopy To PackageP.plPerl ToolPerl.plistCopy To Package.ppob`.pshShell Tool.rsrc`.shShell Tool.stringsCopy To Package.tiffCopy To PackageP`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C+MacHeaders.cMacOS_Carbon_C++_Macros.htrumentCNCd DefaultSourcCNt(MediaIdleDTuneSetSofterFCompressPictureFiletTextMediaSetTextProcMusicSetPartSoundLocalizationGraphicsExportGetMetaDataQSGGetIndChannelESGChangedSourceSetTrackGWorld5SpriteMediaSetSpriteP@:MRJApplicationWARZmacosxmacosx Merge Out????APPLDLGXckidProjWSPC`bmstrh0mstlg%mstnhmtflgmtfs????APPLa.rsrcmtfpgmtfd`prefW ppref^`prefP pref@prefgz07K pref۵pref`preftP prefq pref5 pref  pref ⽰:pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{@DLGXckidProjWSPC????APPLsr@MWCD`OBJ MPW Import 68KPLob`RSCRez`TEXT.bhBalloon HelpTEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezTEXT.segdocu`rsrcRez`shlbPEF Import 68KstubPEF Import 68K.doc Executable????MEXE@Executable.rsrc:./Aa.exe????MEXE@a.rsrc:./ :max-test:xsample.mxdmax2iLaF:????:max-test:xsample.mxdmstr]mstl^mstnhmstrh0mstlg%mstnhmtflgmtfsInfo.plistgmtfpgmtfd`prefW ppref^`prefP pref@prefgz0pref7K pref۵pref`preftP prefq pref5 pref  pref:⽰pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{plst@pref⼰prefRN⼠pref3⼐prefo ⼀pref`!ppref"`pref #Ppr@ noname.exeP'CODE' 'DATA' 'PICT'P'CODE' 'DATA' 'PICT'Main-ClassAuto-Generated|@|p@|@{@{p@{@z@y@w@@w`@v@u@u0@t@s@r@q@p@o@n@m@mp@k@P@@p@@ @p@p@`@@0@@@@ @@@0@@@@@@@@ @0@@@0@p@@@@`@@@@@@ @@ @::max-os9:k@max-includesr@msp-includesr@MAX includeso@:MacOS Support:@:MSL:@:MAX includes:o@:MSP includes:o@:source:k@O1O:Op MacOS PPC LinkerMax OS9 G3:MachO ImporterC/C++MWCD`RSRC`TEXT.arrTEXT.axpTEXT.expMacHeaders.cMacOS_Carbon_C++_Macros.hTE @&::max-osx:k@MSL/MSL_C/MSL_MacOS/Lib/Mach-O@!MSL/MSL_C++/MSL_MacOS/Lib/Mach-O@"pd-darwink@#MacOS Support/Libraries/Runtime/Libs@$bin@%:MacOS Support:@:MSL:@MacOS X SupportMacHeaders Mach-O@/usr/include@/usr/lib@:source:k@src@ MacOS PPC LinkerAPPL`Appl`MMLBLib Import PPCMPLFLib Import PPCMWCD`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C++TEXT.ccMW C/C++ PPCC/C++TEXT.cpMW C/C++ PPCC/C++TEXT.cppMW C/C++ PPCC/C++TEXT.expTEXT.hMW C/C++ PPCC/C++TEXT.pchMW C/C++ PPCC/C++TEXT.pch++MW C/C++ PPCC/C++TEXT.rRezRezTEXT.sPPCAsmBalloon HelpXCOFXCOFF Import PPCdocu`rsrcRez`shlbPEF Import PPCstubPEF Import PPC.docP.oXCOFF Import PPC.ppob`.rsrcRez`NoneMMPr@Java Linker RSRCTEXT.htmlJavaTEXT.javaMW JavaJavaTEXT.mfJavarsrc.auJAR Importer@.classMW Java.gifJAR Importer@.jarMW Java.zipMW JavaMacOS 68K LinkerAPPL`Appl`MMLBLib Import 68KMPLFLib Import 68KMWCD`OBJ MPW Import 68KPLob`RSRC`TEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezRezTEXT.segdocu`rsrc`shlbPEF Import 68KstubPEF Import 68K.docP.oMPW Import 68K.ppob`.rsrc`MacOS MergeAPPL`Appl`RSRC`TEXT.rRezRezappe`rsrc`shlbMach-O PPC LinkerAPPL`Appl`MLIBLib Import Mach-OMMLBLib Import Mach-OMPLFLib Import Mach-OMWCD`RSRC`TEXT.cMW C/C++ MachPPCC/C++TEXT.c++MW C/C++ MachPPCC/C++TEXT.ccMW C/C++ MachPPCC/C++TEXT.cpMW C/C++ MachPPCC/C++TEXT.cppMW C/C++ MachPPCC/C++TEXT.expTEXT.hMW C/C++ MachPPCC/C++TEXT.pchMW C/C++ MachPPCC/C++TEXT.pch++MW C/C++ MachPPCC/C++TEXT.rRezRezdocu`rsrc`.docPWin32 x86 LinkerTEXT.cMW C/C++ x86C/C++TEXT.c++MW C/C++ x86C/C++TEXT.ccMW C/C++ x86C/C++TEXT.cpMW C/C++ x86C/C++TEXT.cppMW C/C++ x86C/C++TEXT.defTEXT.hMW C/C++ x86C/C++TEXT.h++MW C/C++ x86C/C++TEXT.hppMW C/C++ x86C/C++TEXT.ordTEXT.pchMW C/C++ x86C/C++TEXT.pch++MW C/C++ x86C/C++TEXT.rcMW WinRCBalloon HelpiLIBLib Import x86iOBJObj Import x86.aLib Import x86.docP.libLib Import x86.oObj Import x86.objObj Import x86.resWinRes ImportMacOS X PPC Linker1APPL`Appl`MDYLMachO ImporterC/C++MLIBMachO ImporterC/C++MMLBMachO ImporterC/C++MPLFMachO ImporterC/C++MWCD`RSRC`TEXT.arrTEXT.axpTEXT.cMW C/C++ PPC Mac OS XC/C++TEXT.c++MW C/C++ PPC Mac OS XC/C++TEXT.ccMW C/C++ PPC Mac OS XC/C++TEXT.cpMW C/C++ PPC Mac OS XC/C++TEXT.cppMW C/C++ PPC Mac OS XC/C++TEXT.expTEXT.hMW C/C++ PPC Mac OS XC/C++TEXT.h++MW C/C++ PPC Mac OS XC/C++TEXT.hppMW C/C++ PPC Mac OS XC/C++TEXT.lcfTEXT.mMW C/C++ PPC Mac OS XC/C++TEXT.mmMW C/C++ PPC Mac OS XC/C++TEXT.pchMW C/C++ PPC Mac OS XC/C++TEXT.pch++MW C/C++ PPC Mac OS XC/C++TEXT.pchmMW C/C++ PPC Mac OS XC/C++TEXT.pchmmMW C/C++ PPC Mac OS XC/C++TEXT.plcProperty List CompilerProperty ListTEXT.plocProperty List CompilerProperty ListTEXT.rRezRezTEXT.wkedocu`rsrc`.aMachO ImporterC/C++.docP.dylibMachO ImporterC/C++.exe*W+@ "Yn"ZMachO Importerc!Pk$"+@8`.gifCopy To PackageP.icnsCopy To PackageP.jpgCopy To PackageP.libMachO ImporterC/C++.nibCopy To PackageP.plPerl ToolPerl.plistCopy To Package.ppob`.pshShell Tool.rsrc`.shShell Tool.stringsCopy To Package.tiffCopy To PackageP`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C+MacHeaders.cMacOS_Carbon_C++_Macros.hMRJApplicationWARZmacosxmacosxMSIEhttp://java.sun.com/products/jdk/1.1/docs/api/ Merge Out????APPLDLGXckidProjWSPC`bmstrh0mstlg%mstnhmtflgmtfs????APPLa.rsrcmtfpgmtfd`prefW ppref^`prefP pref@prefgz07K pref۵pref`preftP prefq pref5 pref  pref ⽰:pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{@DLGXckidProjWSPC????APPLsr@MWCD`OBJ MPW Import 68KPLob`RSCRez`TEXT.bhBalloon HelpTEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezTEXT.segdocu`rsrcRez`shlbPEF Import 68KstubPEF Import 68K.docxsample.pd_darwinib????MDYL@SharedLibrary.rsrc:./Axsample.pd_darwinxsample.pd_darwinib????MDYL@SharedLibrary.rsrc:./xsample.pd_darwin :max-osx:xsamplemax2iLaF:????:max-osx:xsamplemstr]mstl^mstnhmstrh0mstlg%mstnhmtflgmtfsInfo.plistgmtfpgmtfd`prefW ppref^`prefP pref@prefgz0pref7K pref۵pref`preftP prefq pref5 pref  pref:⽰pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{plst@pref⼰prefRN⼠pref3⼐prefo ⼀pref`!ppref"`pref #Ppr????APPLsr@MWCD`OBJ MPW Import 68KPLob`RSCRez`TEXT.bhBalloon HelpTEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezTEXT.segdocu`rsrcRez`shlbPEF Import 68KstubPEF Import 68K.docPEF Import 68K.doc@ noname.exeP'CODE' 'DATA' 'PICT' 46 53 65 79 8h 94 E| H L O O G E| E| E| >n ?p :max-darwin:xsample.mxdmax2iLaF:????:max-darwin:xsample.mxdMain-ClassAuto-Generated|@|p@|@{@{p@{@z@y@w@@w`@v@u@u0@t@s@r@q@p@o@n@m@mp@k@P@@p@@ @p@p@`@@0@@@@ @@@0@@@@@@@@ @0@@@0@p@@@@`@@@@@@ @@trumentCNCd DefaultSourcCNt(MediaIdleDTuneSetSofterFCompressPictureFiletTextMediaSetTextProcMusicSetPartSoundLocalizationGraphicsExportGetMetaDataQSGGetIndChannelESGChangedSourceSetTrackGWorld5SpriteMediaSetSpriteP@Max OS9J % @::max-osx:k@:MacOS Support:@:MSL:@:max-includes:r@:msp-includes:r@:source:k@/Applications/MaxMSP 4.2/MaxMSP 4.2O1O:Op MacOS PPC LinkerMax OSX G3:`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C+MacHeaders.cMacOS_Carbon_C++_Macros.hmainno connections availabled DefaultSourcCNt(MediaIdleDTuneSetSofterFCompressPictureFiletTextMediaSetTextProcMusicSetPartSoundLocalizationGraphicsExportGetMetaDataQSGGetIndChannelESGChangedSourceSetTrackGWorld5SpriteMediaSetSpriteP@:Main-ClassAuto-Generated|@|p@|@{@{p@{@z@y@w@@w`@v@u@u0@t@s@r@q@p@o@n@m@mp@k@P@@p@@ @p@p@`@@0@@@@ @@@0@@@@@@@@ @0@@@0@p@@@@`@@@@@@ @@MRJApplicationMSIEhttp://java.sun.com/products/jdk/1.1/docs/api/http://java.sun.com/products/jdk/1.1/docs/api/MacOS PPC LinkerAPPL`Appl`MMLBLib Import PPCMPLFLib Import PPCMWCD`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C++TEXT.ccMW C/C++ PPCC/C++TEXT.cpMW C/C++ PPCC/C++TEXT.cppMW C/C++ PPCC/C++TEXT.expTEXT.hMW C/C++ PPCC/C++TEXT.pchMW C/C++ PPCC/C++TEXT.pch++MW C/C++ PPCC/C++TEXT.rRezRezTEXT.sPPCAsmBalloon HelpXCOFXCOFF Import PPCdocu`rsrcRez`shlbPEF Import PPCstubPEF Import PPC.docP.oXCOFF Import PPC.ppob`.rsrcRez`NoneMMPr@Java Linker RSRCTEXT.htmlJavaTEXT.javaMW JavaJavaTEXT.mfJavarsrc.auJAR Importer@.classMW Java.gifJAR Importer@.jarMW Java.zipMW JavaMacOS 68K LinkerAPPL`Appl`MMLBLib Import 68KMPLFLib Import 68KMWCD`OBJ MPW Import 68KPLob`RSRC`TEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezRezTEXT.segdocu`rsrc`shlbPEF Import 68KstubPEF Import 68K.docP.oMPW Import 68K.ppob`.rsrc`MacOS MergeAPPL`Appl`RSRC`TEXT.rRezRezappe`rsrc`shlbMach-O PPC LinkerAPPL`Appl`MLIBLib Import Mach-OMMLBLib Import Mach-OMPLFLib Import Mach-OMWCD`RSRC`TEXT.cMW C/C++ MachPPCC/C++TEXT.c++MW C/C++ MachPPCC/C++TEXT.ccMW C/C++ MachPPCC/C++TEXT.cpMW C/C++ MachPPCC/C++TEXT.cppMW C/C++ MachPPCC/C++TEXT.expTEXT.hMW C/C++ MachPPCC/C++TEXT.pchMW C/C++ MachPPCC/C++TEXT.pch++MW C/C++ MachPPCC/C++TEXT.rRezRezdocu`rsrc`.docPWin32 x86 LinkerTEXT.cMW C/C++ x86C/C++TEXT.c++MW C/C++ x86C/C++TEXT.ccMW C/C++ x86C/C++TEXT.cpMW C/C++ x86C/C++TEXT.cppMW C/C++ x86C/C++TEXT.defTEXT.hMW C/C++ x86C/C++TEXT.h++MW C/C++ x86C/C++TEXT.hppMW C/C++ x86C/C++TEXT.ordTEXT.pchMW C/C++ x86C/C++TEXT.pch++MW C/C++ x86C/C++TEXT.rcMW WinRCBalloon HelpiLIBLib Import x86iOBJObj Import x86.aLib Import x86.docP.libLib Import x86.oObj Import x86.objObj Import x86.resWinRes ImportMacOS X PPC Linker0APPL`Appl`MDYLMachO ImporterC/C++MLIBMachO ImporterC/C++MMLBMachO ImporterC/C++MPLFMachO ImporterC/C++MWCD`RSRC`TEXT.arrTEXT.axpTEXT.cMW C/C++ PPC Mac OS XC/C++TEXT.c++MW C/C++ PPC Mac OS XC/C++TEXT.ccMW C/C++ PPC Mac OS XC/C++TEXT.cpMW C/C++ PPC Mac OS XC/C++TEXT.cppMW C/C++ PPC Mac OS XC/C++TEXT.expTEXT.hMW C/C++ PPC Mac OS XC/C++TEXT.h++MW C/C++ PPC Mac OS XC/C++TEXT.hppMW C/C++ PPC Mac OS XC/C++TEXT.lcfTEXT.mMW C/C++ PPC Mac OS XC/C++TEXT.mmMW C/C++ PPC Mac OS XC/C++TEXT.pchMW C/C++ PPC Mac OS XC/C++TEXT.pch++MW C/C++ PPC Mac OS XC/C++TEXT.pchmMW C/C++ PPC Mac OS XC/C++TEXT.pchmmMW C/C++ PPC Mac OS XC/C++TEXT.plcProperty List CompilerProperty ListTEXT.plocProperty List CompilerProperty ListTEXT.rRezRezTEXT.wkedocu`rsrc`.aMachO ImporterC/C++.docP.dylibMachO ImporterC/C++.gifCopy To PackageP.icnsCopy To PackageP.jpgCopy To PackageP.libMachO ImporterC/C++.nibCopy To PackageP.plPerl ToolPerl.plistCopy To Package.ppob`.pshShell Tool.rsrc`.shShell Tool.stringsCopy To Package.tiffCopy To PackagePMain-ClassAuto-Generated|@|p@|@{@{p@{@z@y@w@@w`@v@u@u0@t@s@r@q@p@o@n@m@mp@k@P@@p@@ @p@p@`@@0@@@@ @@@0@@@@@@@@ @0@@@0@p@@@@`@@@@@@ @@MRJApplicationWARZmacosxmacosx Merge Out????APPLDLGXckidProjWSPC0b????APPLa.rsrcMax OS9: ?<DLGXckidProjWSPC????APPLsr@MWCD`OBJ MPW Import 68KPLob`RSCRez`TEXT.bhBalloon HelpTEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezTEXT.segdocu`rsrcRez`shlbPEF Import 68KstubPEF Import 68K.doc Executable????MEXE@Executable.rsrc:./Aa.exe????MEXE@a.rsrc:./ Merge Out????APPLDLGXckidProjWSPC`bmstrh0mstlg%mstnhmtflgmtfs????APPLa.rsrcmtfpgmtfd`prefW ppref^`prefP pref@prefgz07K pref۵pref`preftP prefq pref5 pref  pref ⽰:pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{@DLGXckidProjWSPC Executable????MEXE@Executable.rsrc:./Amstr]mstl^mstnhmstrh0mstlg%mstnhmtflgmtfsInfo.plistgmtfpgmtfd`prefW ppref^`prefP pref@prefgz0pref7K pref۵pref`preftP prefq pref5 pref  pref:⽰pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{plst@pref⼰prefRN⼠pref3⼐prefo ⼀pref`!ppref"`pref #Pprprefo ⼀pref`!ppref"`pref #Ppr @::max-osx:k@:MacOS Support:@:MSL:@:max-includes:r@:msp-includes:r@:source:k@/Applications/MaxMSP 4.5/MaxMSP 4.5O1O:Op MacOS X PPC LinkerMax OSX Mach-O:`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C+MacHeaders.cMacOS_Carbon_C++_Macros.hmainno connections availabled DefaultSourcCNt(MediaIdleDTuneSetSofterFCompressPictureFiletTextMediaSetTextProcMusicSetPartSoundLocalizationGraphicsExportGetMetaDataQSGGetIndChannelESGChangedSourceSetTrackGWorld5SpriteMediaSetSpriteP@:Main-ClassAuto-Generated|@|p@|@{@{p@{@z@y@w@@w`@v@u@u0@t@s@r@q@p@o@n@m@mp@k@P@@p@@ @p@p@`@@0@@@@ @@@0@@@@@@@@ @0@@@0@p@@@@`@@@@@@ @@MRJApplicationMSIEhttp://java.sun.com/products/jdk/1.1/docs/api/MacOS PPC LinkerAPPL`Appl`MMLBLib Import PPCMPLFLib Import PPCMWCD`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C++TEXT.ccMW C/C++ PPCC/C++TEXT.cpMW C/C++ PPCC/C++TEXT.cppMW C/C++ PPCC/C++TEXT.expTEXT.hMW C/C++ PPCC/C++TEXT.pchMW C/C++ PPCC/C++TEXT.pch++MW C/C++ PPCC/C++TEXT.rRezRezTEXT.sPPCAsmBalloon HelpXCOFXCOFF Import PPCdocu`rsrcRez`shlbPEF Import PPCstubPEF Import PPC.docP.oXCOFF Import PPC.ppob`.rsrcRez`NoneMMPr@Java Linker RSRCTEXT.htmlJavaTEXT.javaMW JavaJavaTEXT.mfJavarsrc.auJAR Importer@.classMW Java.gifJAR Importer@.jarMW Java.zipMW JavaMacOS 68K LinkerAPPL`Appl`MMLBLib Import 68KMPLFLib Import 68KMWCD`OBJ MPW Import 68KPLob`RSRC`TEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezRezTEXT.segdocu`rsrc`shlbPEF Import 68KstubPEF Import 68K.docP.oMPW Import 68K.ppob`.rsrc`MacOS MergeAPPL`Appl`RSRC`TEXT.rRezRezappe`rsrc`shlbMach-O PPC LinkerAPPL`Appl`MLIBLib Import Mach-OMMLBLib Import Mach-OMPLFLib Import Mach-OMWCD`RSRC`TEXT.cMW C/C++ MachPPCC/C++TEXT.c++MW C/C++ MachPPCC/C++TEXT.ccMW C/C++ MachPPCC/C++TEXT.cpMW C/C++ MachPPCC/C++TEXT.cppMW C/C++ MachPPCC/C++TEXT.expTEXT.hMW C/C++ MachPPCC/C++TEXT.pchMW C/C++ MachPPCC/C++TEXT.pch++MW C/C++ MachPPCC/C++TEXT.rRezRezdocu`rsrc`.docPWin32 x86 LinkerTEXT.cMW C/C++ x86C/C++TEXT.c++MW C/C++ x86C/C++TEXT.ccMW C/C++ x86C/C++TEXT.cpMW C/C++ x86C/C++TEXT.cppMW C/C++ x86C/C++TEXT.defTEXT.hMW C/C++ x86C/C++TEXT.h++MW C/C++ x86C/C++TEXT.hppMW C/C++ x86C/C++TEXT.ordTEXT.pchMW C/C++ x86C/C++TEXT.pch++MW C/C++ x86C/C++TEXT.rcMW WinRCBalloon HelpiLIBLib Import x86iOBJObj Import x86.aLib Import x86.docP.libLib Import x86.oObj Import x86.objObj Import x86.resWinRes ImportMacOS X PPC Linker0APPL`Appl`MDYLMachO ImporterC/C++MLIBMachO ImporterC/C++MMLBMachO ImporterC/C++MPLFMachO ImporterC/C++MWCD`RSRC`TEXT.arrTEXT.axpTEXT.cMW C/C++ PPC Mac OS XC/C++TEXT.c++MW C/C++ PPC Mac OS XC/C++TEXT.ccMW C/C++ PPC Mac OS XC/C++TEXT.cpMW C/C++ PPC Mac OS XC/C++TEXT.cppMW C/C++ PPC Mac OS XC/C++TEXT.expTEXT.hMW C/C++ PPC Mac OS XC/C++TEXT.h++MW C/C++ PPC Mac OS XC/C++TEXT.hppMW C/C++ PPC Mac OS XC/C++TEXT.lcfTEXT.mMW C/C++ PPC Mac OS XC/C++TEXT.mmMW C/C++ PPC Mac OS XC/C++TEXT.pchMW C/C++ PPC Mac OS XC/C++TEXT.pch++MW C/C++ PPC Mac OS XC/C++TEXT.pchmMW C/C++ PPC Mac OS XC/C++TEXT.pchmmMW C/C++ PPC Mac OS XC/C++TEXT.plcProperty List CompilerProperty ListTEXT.plocProperty List CompilerProperty ListTEXT.rRezRezTEXT.wkedocu`rsrc`.aMachO ImporterC/C++.docP.dylibMachO ImporterC/C++.gifCopy To PackageP.icnsCopy To PackageP.jpgCopy To PackageP.libMachO ImporterC/C++.nibCopy To PackageP.plPerl ToolPerl.plistCopy To Package.ppob`.pshShell Tool.rsrc`.shShell Tool.stringsCopy To Package.tiffCopy To PackagePWARZmacosxmacosx????APPLsr@MWCD`OBJ MPW Import 68KPLob`RSCRez`TEXT.bhBalloon HelpTEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezTEXT.segdocu`rsrcRez`shlbPEF Import 68KstubPEF Import 68K.doc Executable????MEXE@Executable.rsrc:./Aa.exe????MEXE@a.rsrc:./ :max-osx-g3:xsample.mxdmax2iLaF:????:max-osx-g3:xsample.mxdmstr]mstl^mstnhmstrh0mstlg%mstnhmtflgmtfsInfo.plistgmtfpgmtfd`prefW ppref^`prefP pref@prefgz0pref7K pref۵pref`preftP prefq pref5 pref  pref:⽰pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{plst@pref⼰prefRN⼠pref3⼐prefo ⼀pref`!ppref"`pref #Ppr@ noname.exe Merge Out????APPLDLGXckidProjWSPC`bmstrh0mstlg%mstnhmtflgmtfs????APPLa.rsrcmtfpgmtfd`prefW ppref^`prefP pref@prefgz07K pref۵pref`preftP prefq pref5 pref  pref ⽰:pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{@DLGXckidProjWSPC\g%f5{0ۀ[ ۀԻۀכpۀכۀ!ׄױ 5{`ۀ;@ۀ+Pۀ;Info.plists;F@!+Pۀ5{ۀ5{ۀkۀ;@HՋ[ {PP;@  6ۀ *ۀ[ >7P`@ۀՋۀۀ{;@[6)9B@9B@@sڰ 40[ @:cswpcnb0b82؃LP<8;؄4؃05{09ۀ5+P0wind6hiobPetrgcntl"#acce %G,`000@0P0P00׀ 00000i0h0g0e0p3000@0 0` 0 0` 0 000p00@plst000Show Da[{[l+Pl  9T  ] 465365798h94=qD{E|FyGHIpJnKi >n ?p :max-os9-g3:xsample max2iLaF:????:max-os9-g3:xsample @ noname.exeMacOS Toolbox PPC Debug:Remote DebugMacOS Toolbox PPC Debug:Auto-targetMacOS Toolbox PPC Debug:Packager PanelMacOS Toolbox PPC Debug:Source TreesMacOS Toolbox PPC Debug:Access PathsMacOS Toolbox PPC Debug:Debugger RuntimeMacOS Toolbox PPC Debug:Target SettingsMacOS Toolbox PPC Debug:File MappingsMacOS Toolbox PPC Debug:Build ExtrasMacOS Toolbox PPC Debug:Debugger TargetMacOS Toolbox PPC Debug:Custom KeywordsMacOS Toolbox PPC Debug:68K CodeGenMacOS Toolbox PPC Debug:68K DisassemblerMacOS Toolbox PPC Debug:68K Global OptimizerMacOS Toolbox PPC Debug:68K LinkerMacOS Toolbox PPC Debug:68K ProjectMacOS Toolbox PPC Debug:C/C++ CompilerMacOS Toolbox PPC Debug:C/C++ WarningsMacOS Toolbox PPC Debug:CFM68KMacOS Toolbox PPC Debug:FTP PanelMacOS Toolbox PPC Debug:Java Command LineMacOS Toolbox PPC Debug:Java LanguageMacOS Toolbox PPC Debug:Java MRJAppBuilderMacOS Toolbox PPC Debug:Java OutputMacOS Toolbox PPC Debug:Java ProjectMacOS Toolbox PPC Debug:JavaDoc ProjectMacOS Toolbox PPC Debug:MacOS Merge PanelMacOS Toolbox PPC Debug:Output FlagsMacOS Toolbox PPC Debug:PPC CodeGenMacOS Toolbox PPC Debug:PPC DisassemblerMacOS Toolbox PPC Debug:PPC Global OptimizerMacOS Toolbox PPC Debug:PPC LinkerMacOS Toolbox PPC Debug:PPC PEFMacOS Toolbox PPC Debug:PPC ProjectMacOS Toolbox PPC Debug:PPCAsm PanelMacOS Toolbox PPC Debug:Rez CompilerMacOS Toolbox PPC Final:Remote DebugMacOS Toolbox PPC Final:Auto-targetMacOS Toolbox PPC Final:Packager PanelMacOS Toolbox PPC Final:Source TreesMacOS Toolbox PPC Final:Access PathsMacOS Toolbox PPC Final:Debugger RuntimeMacOS Toolbox PPC Final:Target SettingsMacOS Toolbox PPC Final:File MappingsMacOS Toolbox PPC Final:Build ExtrasMacOS Toolbox PPC Final:Debugger TargetMacOS Toolbox PPC Final:Custom KeywordsMacOS Toolbox PPC Final:68K CodeGenMacOS Toolbox PPC Final:68K DisassemblerMacOS Toolbox PPC Final:68K Global OptimizerMacOS Toolbox PPC Final:68K LinkerMacOS Toolbox PPC Final:68K ProjectMacOS Toolbox PPC Final:C/C++ CompilerMacOS Toolbox PPC Final:C/C++ WarningsMacOS Toolbox PPC Final:CFM68KMacOS Toolbox PPC Final:FTP PanelMacOS Toolbox PPC Final:Java Command LineMacOS Toolbox PPC Final:Java LanguageMacOS Toolbox PPC Final:Java MRJAppBuilderMacOS Toolbox PPC Final:Java OutputMacOS Toolbox PPC Final:Java ProjectMacOS Toolbox PPC Final:JavaDoc ProjectMacOS Toolbox PPC Final:MacOS Merge PanelMacOS Toolbox PPC Final:Output FlagsMacOS Toolbox PPC Final:PPC CodeGenMacOS Toolbox PPC Final:PPC DisassemblerMacOS Toolbox PPC Final:PPC Global OptimizerMacOS Toolbox PPC Final:PPC LinkerMacOS Toolbox PPC Final:PPC PEFMacOS Toolbox PPC Final:PPC ProjectMacOS Toolbox PPC Final:PPCAsm PanelMacOS Toolbox PPC Final:Rez CompilerProject File ListMacOS Toolbox PPC Debug:PPC CodeGen Mach-OMacOS Toolbox PPC Debug:PPC Mach-O LinkerMacOS Toolbox PPC Debug:PPC Mach-O TargetMacOS Toolbox PPC Final:PPC CodeGen Mach-OMacOS Toolbox PPC Final:PPC Mach-O LinkerMacOS Toolbox PPC Final:PPC Mach-O TargetMacOS Toolbox PPC Debug:WinRC CompilerMacOS Toolbox PPC Debug:x86 CodeGenMacOS Toolbox PPC Debug:x86 DisassemblerMacOS Toolbox PPC Debug:x86 Exceptions PanelMacOS Toolbox PPC Debug:x86 Global OptimizerMacOS Toolbox PPC Debug:x86 LinkerMacOS Toolbox PPC Debug:x86 ProjectMacOS Toolbox PPC Final:WinRC CompilerMacOS Toolbox PPC Final:x86 CodeGenMacOS Toolbox PPC Final:x86 DisassemblerMacOS Toolbox PPC Final:x86 Exceptions PanelMacOS Toolbox PPC Final:x86 Global OptimizerMacOS Toolbox PPC Final:x86 LinkerMacOS Toolbox PPC Final:x86 ProjectTemplatePPC:Source TreesTemplatePPC:Access PathsTemplatePPC:Debugger RuntimeTemplatePPC:Target SettingsTemplatePPC:File MappingsTemplatePPC:Build ExtrasTemplatePPC:Debugger TargetTemplatePPC:Remote DebugTemplatePPC:Auto-targetTemplatePPC:Custom KeywordsTemplatePPC:68K CodeGenTemplatePPC:68K DisassemblerTemplatePPC:68K Global OptimizerTemplatePPC:68K LinkerTemplatePPC:68K ProjectTemplatePPC:C/C++ CompilerTemplatePPC:C/C++ WarningsTemplatePPC:CFM68KTemplatePPC:FTP PanelTemplatePPC:Java Command LineTemplatePPC:Java LanguageTemplatePPC:Java MRJAppBuilderTemplatePPC:Java OutputTemplatePPC:Java ProjectTemplatePPC:JavaDoc ProjectTemplatePPC:MacOS Merge PanelTemplatePPC:Output FlagsTemplatePPC:Packager PanelTemplatePPC:PPC CodeGenTemplatePPC:PPC DisassemblerTemplatePPC:PPC Global OptimizerTemplatePPC:PPC LinkerTemplatePPC:PPC PEFTemplatePPC:PPC ProjectTemplatePPC:PPCAsm PanelTemplatePPC:Rez CompilerTemplatePPC:WinRC CompilerTemplatePPC:x86 CodeGenTemplatePPC:x86 DisassemblerTemplatePPC:x86 Exceptions PanelTemplatePPC:x86 Global OptimizerTemplatePPC:x86 LinkerTemplatePPC:x86 ProjectTemplate:Source TreesTemplate:Access PathsTemplate:Debugger RuntimeTemplate:Target SettingsTemplate:File MappingsTemplate:Build ExtrasTemplate:Debugger TargetTemplate:Remote DebugTemplate:Auto-targetTemplate:Custom KeywordsTemplate:68K CodeGenTemplate:68K DisassemblerTemplate:68K Global OptimizerTemplate:68K LinkerTemplate:68K ProjectTemplate:C/C++ CompilerTemplate:C/C++ WarningsTemplate:CFM68KTemplate:FTP PanelTemplate:Java Command LineTemplate:Java LanguageTemplate:Java MRJAppBuilderTemplate:Java OutputTemplate:Java ProjectTemplate:JavaDoc ProjectTemplate:MacOS Merge PanelTemplate:Output FlagsTemplate:Packager PanelTemplate:PPC CodeGenTemplate:PPC DisassemblerTemplate:PPC Global OptimizerTemplate:PPC LinkerTemplate:PPC PEFTemplate:PPC ProjectTemplate:PPCAsm PanelTemplate:Rez CompilerTemplate:WinRC CompilerTemplate:x86 CodeGenTemplate:x86 DisassemblerTemplate:x86 Exceptions PanelTemplate:x86 Global OptimizerTemplate:x86 LinkerTemplate:x86 ProjectMax object:Source TreesMax object:Access PathsMax object:Debugger RuntimeMax object:Target SettingsMax object:File MappingsMax object:Build ExtrasMax object:Debugger TargetMax object:Remote DebugMax object:Auto-targetMax object:Custom KeywordsMax object:68K CodeGenMax object:68K DisassemblerMax object:68K Global OptimizerMax object:68K LinkerMax object:68K ProjectMax object:C/C++ CompilerMax object:C/C++ WarningsMax object:CFM68KMax object:FTP PanelMax object:Java Command LineMax object:Java LanguageMax object:Java MRJAppBuilderMax object:Java OutputMax object:Java ProjectMax object:JavaDoc ProjectMax object:MacOS Merge PanelMax object:Output FlagsMax object:Packager PanelMax object:PPC CodeGenMax object:PPC DisassemblerMax object:PPC Global OptimizerMax object:PPC LinkerMax object:PPC PEFMax object:PPC ProjectMax object:PPCAsm PanelMax object:Rez CompilerMax object:WinRC CompilerMax object:x86 CodeGenMax object:x86 DisassemblerMax object:x86 Exceptions PanelMax object:x86 Global OptimizerMax object:x86 LinkerMax object:x86 Projectplay~:Source Treesplay~:Access Pathsplay~:Debugger Runtimeplay~:Target Settingsplay~:File Mappingsplay~:Build Extrasplay~:Debugger Targetplay~:Remote Debugplay~:Auto-targetplay~:Custom Keywordsplay~:68K CodeGenplay~:68K Disassemblerplay~:68K Global Optimizerplay~:68K Linkerplay~:68K Projectplay~:C/C++ Compilerplay~:C/C++ Warningsplay~:CFM68Kplay~:FTP Panelplay~:Java Command Lineplay~:Java Languageplay~:Java MRJAppBuilderplay~:Java Outputplay~:Java Projectplay~:JavaDoc Projectplay~:MacOS Merge Panelplay~:Output Flagsplay~:Packager Panelplay~:PPC CodeGenplay~:PPC Disassemblerplay~:PPC Global Optimizerplay~:PPC Linkerplay~:PPC PEFplay~:PPC Projectplay~:PPCAsm Panelplay~:Rez Compilerplay~:WinRC Compilerplay~:x86 CodeGenplay~:x86 Disassemblerplay~:x86 Exceptions Panelplay~:x86 Global Optimizerplay~:x86 Linkerplay~:x86 Projectxrecord~:Source Treesxrecord~:Access Pathsxrecord~:Debugger Runtimexrecord~:Target Settingsxrecord~:File Mappingsxrecord~:Build Extrasxrecord~:Debugger Targetxrecord~:Remote Debugxrecord~:Auto-targetxrecord~:Custom Keywordsxrecord~:68K CodeGenxrecord~:68K Disassemblerxrecord~:68K Global Optimizerxrecord~:68K Linkerxrecord~:68K Projectxrecord~:C/C++ Compilerxrecord~:C/C++ Warningsxrecord~:CFM68Kxrecord~:FTP Panelxrecord~:Java Command Linexrecord~:Java Languagexrecord~:Java MRJAppBuilderxrecord~:Java Outputxrecord~:Java Projectxrecord~:JavaDoc Projectxrecord~:MacOS Merge Panelxrecord~:Output Flagsxrecord~:Packager Panelxrecord~:PPC CodeGenxrecord~:PPC Disassemblerxrecord~:PPC Global Optimizerxrecord~:PPC Linkerxrecord~:PPC PEFxrecord~:PPC Projectxrecord~:PPCAsm Panelxrecord~:Rez Compilerxrecord~:WinRC Compilerxrecord~:x86 CodeGenxrecord~:x86 Disassemblerxrecord~:x86 Exceptions Panelxrecord~:x86 Global Optimizerxrecord~:x86 Linkerxrecord~:x86 Projectxplay~:Source Treesxplay~:Access Pathsxplay~:Debugger Runtimexplay~:Target Settingsxplay~:File Mappingsxplay~:Build Extrasxplay~:Debugger Targetxplay~:Remote Debugxplay~:Auto-targetxplay~:Custom Keywordsxplay~:68K CodeGenxplay~:68K Disassemblerxplay~:68K Global Optimizerxplay~:68K Linkerxplay~:68K Projectxplay~:C/C++ Compilerxplay~:C/C++ Warningsxplay~:CFM68Kxplay~:FTP Panelxplay~:Java Command Linexplay~:Java Languagexplay~:Java MRJAppBuilderxplay~:Java Outputxplay~:Java Projectxplay~:JavaDoc Projectxplay~:MacOS Merge Panelxplay~:Output Flagsxplay~:Packager Panelxplay~:PPC CodeGenxplay~:PPC Disassemblerxplay~:PPC Global Optimizerxplay~:PPC Linkerxplay~:PPC PEFxplay~:PPC Projectxplay~:PPCAsm Panelxplay~:Rez Compilerxplay~:WinRC Compilerxplay~:x86 CodeGenxplay~:x86 Disassemblerxplay~:x86 Exceptions Panelxplay~:x86 Global Optimizerxplay~:x86 Linkerxplay~:x86 Projectxgroove~:Source Treesxgroove~:Access Pathsxgroove~:Debugger Runtimexgroove~:Target Settingsxgroove~:File Mappingsxgroove~:Build Extrasxgroove~:Debugger Targetxgroove~:Remote Debugxgroove~:Auto-targetxgroove~:Custom Keywordsxgroove~:68K CodeGenxgroove~:68K Disassemblerxgroove~:68K Global Optimizerxgroove~:68K Linkerxgroove~:68K Projectxgroove~:C/C++ Compilerxgroove~:C/C++ Warningsxgroove~:CFM68Kxgroove~:FTP Panelxgroove~:Java Command Linexgroove~:Java Languagexgroove~:Java MRJAppBuilderxgroove~:Java Outputxgroove~:Java Projectxgroove~:JavaDoc Projectxgroove~:MacOS Merge Panelxgroove~:Output Flagsxgroove~:Packager Panelxgroove~:PPC CodeGenxgroove~:PPC Disassemblerxgroove~:PPC Global Optimizerxgroove~:PPC Linkerxgroove~:PPC PEFxgroove~:PPC Projectxgroove~:PPCAsm Panelxgroove~:Rez Compilerxgroove~:WinRC Compilerxgroove~:x86 CodeGenxgroove~:x86 Disassemblerxgroove~:x86 Exceptions Panelxgroove~:x86 Global Optimizerxgroove~:x86 Linkerxgroove~:x86 Projectxgroove~ debug:Source Treesxgroove~ debug:Access Pathsxgroove~ debug:Debugger Runtimexgroove~ debug:Target Settingsxgroove~ debug:File Mappingsxgroove~ debug:Build Extrasxgroove~ debug:Debugger Targetxgroove~ debug:Remote Debugxgroove~ debug:Auto-targetxgroove~ debug:Custom Keywordsxgroove~ debug:C/C++ Compilerxgroove~ debug:C/C++ Warningsxgroove~ debug:FTP Panelxgroove~ debug:Java Command Linexgroove~ debug:Java Languagexgroove~ debug:Java MRJAppBuilderxgroove~ debug:Java Outputxgroove~ debug:Java Projectxgroove~ debug:JavaDoc Projectxgroove~ debug:MacOS Merge Panelxgroove~ debug:Output Flagsxgroove~ debug:Packager Panelxgroove~ debug:PPC CodeGenxgroove~ debug:PPC Disassemblerxgroove~ debug:PPC Global Optimizerxgroove~ debug:PPC Linkerxgroove~ debug:PPC PEFxgroove~ debug:PPC Projectxgroove~ debug:PPCAsm Panelxgroove~ debug:Rez Compilerxgroove~ debug:WinRC Compilerxgroove~ debug:x86 CodeGenxgroove~ debug:x86 Disassemblerxgroove~ debug:x86 Exceptions Panelxgroove~ debug:x86 Global Optimizerxgroove~ debug:x86 Linkerxgroove~ debug:x86 Projectxgroove-d~:Source Treesxgroove-d~:Access Pathsxgroove-d~:Debugger Runtimexgroove-d~:Target Settingsxgroove-d~:File Mappingsxgroove-d~:Build Extrasxgroove-d~:Debugger Targetxgroove-d~:Remote Debugxgroove-d~:Auto-targetxgroove-d~:Custom Keywordsxgroove-d~:C/C++ Compilerxgroove-d~:C/C++ Warningsxgroove-d~:FTP Panelxgroove-d~:Java Command Linexgroove-d~:Java Languagexgroove-d~:Java MRJAppBuilderxgroove-d~:Java Outputxgroove-d~:Java Projectxgroove-d~:JavaDoc Projectxgroove-d~:MacOS Merge Panelxgroove-d~:Output Flagsxgroove-d~:Packager Panelxgroove-d~:PPC CodeGenxgroove-d~:PPC Disassemblerxgroove-d~:PPC Global Optimizerxgroove-d~:PPC Linkerxgroove-d~:PPC PEFxgroove-d~:PPC Projectxgroove-d~:PPCAsm Panelxgroove-d~:Rez Compilerxgroove-d~:WinRC Compilerxgroove-d~:x86 CodeGenxgroove-d~:x86 Disassemblerxgroove-d~:x86 Exceptions Panelxgroove-d~:x86 Global Optimizerxgroove-d~:x86 Linkerxgroove-d~:x86 Projectxrecord~ debug:Source Treesxrecord~ debug:Access Pathsxrecord~ debug:Debugger Runtimexrecord~ debug:Target Settingsxrecord~ debug:File Mappingsxrecord~ debug:Build Extrasxrecord~ debug:Debugger Targetxrecord~ debug:Remote Debugxrecord~ debug:Auto-targetxrecord~ debug:Custom Keywordsxrecord~ debug:C/C++ Compilerxrecord~ debug:C/C++ Warningsxrecord~ debug:FTP Panelxrecord~ debug:Java Command Linexrecord~ debug:Java Languagexrecord~ debug:Java MRJAppBuilderxrecord~ debug:Java Outputxrecord~ debug:Java Projectxrecord~ debug:JavaDoc Projectxrecord~ debug:MacOS Merge Panelxrecord~ debug:Output Flagsxrecord~ debug:Packager Panelxrecord~ debug:PPC CodeGenxrecord~ debug:PPC Disassemblerxrecord~ debug:PPC Global Optimizerxrecord~ debug:PPC Linkerxrecord~ debug:PPC PEFxrecord~ debug:PPC Projectxrecord~ debug:PPCAsm Panelxrecord~ debug:Rez Compilerxrecord~ debug:WinRC Compilerxrecord~ debug:x86 CodeGenxrecord~ debug:x86 Disassemblerxrecord~ debug:x86 Exceptions Panelxrecord~ debug:x86 Global Optimizerxrecord~ debug:x86 Linkerxrecord~ debug:x86 Projectxplay~ debug:Source Treesxplay~ debug:Access Pathsxplay~ debug:Debugger Runtimexplay~ debug:Target Settingsxplay~ debug:File Mappingsxplay~ debug:Build Extrasxplay~ debug:Debugger Targetxplay~ debug:Remote Debugxplay~ debug:Auto-targetxplay~ debug:Custom Keywordsxplay~ debug:C/C++ Compilerxplay~ debug:C/C++ Warningsxplay~ debug:FTP Panelxplay~ debug:Java Command Linexplay~ debug:Java Languagexplay~ debug:Java MRJAppBuilderxplay~ debug:Java Outputxplay~ debug:Java Projectxplay~ debug:JavaDoc Projectxplay~ debug:MacOS Merge Panelxplay~ debug:Output Flagsxplay~ debug:Packager Panelxplay~ debug:PPC CodeGenxplay~ debug:PPC Disassemblerxplay~ debug:PPC Global Optimizerxplay~ debug:PPC Linkerxplay~ debug:PPC PEFxplay~ debug:PPC Projectxplay~ debug:PPCAsm Panelxplay~ debug:Rez Compilerxplay~ debug:WinRC Compilerxplay~ debug:x86 CodeGenxplay~ debug:x86 Disassemblerxplay~ debug:x86 Exceptions Panelxplay~ debug:x86 Global Optimizerxplay~ debug:x86 Linkerxplay~ debug:x86 Projectxsample:Source Treesxsample:Access Pathsxsample:Debugger Runtimexsample:Target Settingsxsample:File Mappingsxsample:Build Extrasxsample:Debugger Targetxsample:Remote Debugxsample:Auto-targetxsample:Custom Keywordsxsample:C/C++ Compilerxsample:C/C++ Warningsxsample:FTP Panelxsample:Java Command Linexsample:Java Languagexsample:Java MRJAppBuilderxsample:Java Outputxsample:Java Projectxsample:JavaDoc Projectxsample:MacOS Merge Panelxsample:Output Flagsxsample:Packager Panelxsample:PPC CodeGenxsample:PPC Disassemblerxsample:PPC Global Optimizerxsample:PPC Linkerxsample:PPC PEFxsample:PPC Projectxsample:PPCAsm Panelxsample:Rez Compilerxsample:WinRC Compilerxsample:x86 CodeGenxsample:x86 Disassemblerxsample:x86 Exceptions Panelxsample:x86 Global Optimizerxsample:x86 Linkerxsample:x86 Projectxsample-d:Source Treesxsample-d:Access Pathsxsample-d:Debugger Runtimexsample-d:Target Settingsxsample-d:File Mappingsxsample-d:Build Extrasxsample-d:Debugger Targetxsample-d:Remote Debugxsample-d:Auto-targetxsample-d:Custom Keywordsxsample-d:C/C++ Compilerxsample-d:C/C++ Warningsxsample-d:FTP Panelxsample-d:Java Command Linexsample-d:Java Languagexsample-d:Java MRJAppBuilderxsample-d:Java Outputxsample-d:Java Projectxsample-d:JavaDoc Projectxsample-d:MacOS Merge Panelxsample-d:Output Flagsxsample-d:Packager Panelxsample-d:PPC CodeGenxsample-d:PPC Disassemblerxsample-d:PPC Global Optimizerxsample-d:PPC Linkerxsample-d:PPC PEFxsample-d:PPC Projectxsample-d:PPCAsm Panelxsample-d:Rez Compilerxsample-d:WinRC Compilerxsample-d:x86 CodeGenxsample-d:x86 Disassemblerxsample-d:x86 Exceptions Panelxsample-d:x86 Global Optimizerxsample-d:x86 Linkerxsample-d:x86 ProjectMax OSX:Source TreesMax OSX:Access PathsMax OSX:Debugger RuntimeMax OSX:Target SettingsMax OSX:File MappingsMax OSX:Build ExtrasMax OSX:Debugger TargetMax OSX:Remote DebugMax OSX:Auto-targetMax OSX:Custom KeywordsMax OSX:C/C++ CompilerMax OSX:C/C++ WarningsMax OSX:FTP PanelMax OSX:Java Command LineMax OSX:Java LanguageMax OSX:Java MRJAppBuilderMax OSX:Java OutputMax OSX:Java ProjectMax OSX:JavaDoc ProjectMax OSX:MacOS Merge PanelMax OSX:Output FlagsMax OSX:Packager PanelMax OSX:PPC CodeGenMax OSX:PPC DisassemblerMax OSX:PPC Global OptimizerMax OSX:PPC LinkerMax OSX:PPC PEFMax OSX:PPC ProjectMax OSX:PPCAsm PanelMax OSX:Rez CompilerMax OSX:WinRC CompilerMax OSX:x86 CodeGenMax OSX:x86 DisassemblerMax OSX:x86 Exceptions PanelMax OSX:x86 Global OptimizerMax OSX:x86 LinkerMax OSX:x86 ProjectMax OS9:Source TreesMax OS9:Access PathsMax OS9:Debugger RuntimeMax OS9:Target SettingsMax OS9:File MappingsMax OS9:Build ExtrasMax OS9:Debugger TargetMax OS9:Remote DebugMax OS9:Auto-targetMax OS9:Custom KeywordsMax OS9:C/C++ CompilerMax OS9:C/C++ WarningsMax OS9:FTP PanelMax OS9:Java Command LineMax OS9:Java LanguageMax OS9:Java MRJAppBuilderMax OS9:Java OutputMax OS9:Java ProjectMax OS9:JavaDoc ProjectMax OS9:MacOS Merge PanelMax OS9:Output FlagsMax OS9:Packager PanelMax OS9:PPC CodeGenMax OS9:PPC DisassemblerMax OS9:PPC Global OptimizerMax OS9:PPC LinkerMax OS9:PPC PEFMax OS9:PPC ProjectMax OS9:PPCAsm PanelMax OS9:Rez CompilerMax OS9:WinRC CompilerMax OS9:x86 CodeGenMax OS9:x86 DisassemblerMax OS9:x86 Exceptions PanelMax OS9:x86 Global OptimizerMax OS9:x86 LinkerMax OS9:x86 ProjectMax OS9:PJavaDebuggingMax OS9:Java Manifest-JAD Setting InfoMax OS9:PPC CodeGen Mach-OMax OS9:PPC Mac OS X LinkerMax OS9:PPC Mac OS X ProjectMax OS9:PPC Mach-O LinkerMax OS9:PPC Mach-O TargetMax OS9:Property ListMax OS9:x86 COFFMax OSX:PJavaDebuggingMax OSX:Java Manifest-JAD Setting InfoMax OSX:PPC CodeGen Mach-OMax OSX:PPC Mac OS X LinkerMax OSX:PPC Mac OS X ProjectMax OSX:PPC Mach-O LinkerMax OSX:PPC Mach-O TargetMax OSX:Property ListMax OSX:x86 COFFMax OSX debug:Source TreesMax OSX debug:Access PathsMax OSX debug:Debugger RuntimeMax OSX debug:Target SettingsMax OSX debug:File MappingsMax OSX debug:Build ExtrasMax OSX debug:Debugger TargetMax OSX debug:Remote DebugMax OSX debug:Auto-targetMax OSX debug:Custom KeywordsMax OSX debug:C/C++ CompilerMax OSX debug:C/C++ WarningsMax OSX debug:FTP PanelMax OSX debug:Java Command LineMax OSX debug:PJavaDebuggingMax OSX debug:Java LanguageMax OSX debug:Java Manifest-JAD Setting InfoMax OSX debug:Java MRJAppBuilderMax OSX debug:Java OutputMax OSX debug:Java ProjectMax OSX debug:JavaDoc ProjectMax OSX debug:MacOS Merge PanelMax OSX debug:Output FlagsMax OSX debug:Packager PanelMax OSX debug:PPC CodeGenMax OSX debug:PPC CodeGen Mach-OMax OSX debug:PPC DisassemblerMax OSX debug:PPC Global OptimizerMax OSX debug:PPC LinkerMax OSX debug:PPC Mac OS X LinkerMax OSX debug:PPC Mac OS X ProjectMax OSX debug:PPC Mach-O LinkerMax OSX debug:PPC Mach-O TargetMax OSX debug:PPC PEFMax OSX debug:PPC ProjectMax OSX debug:PPCAsm PanelMax OSX debug:Property ListMax OSX debug:Rez CompilerMax OSX debug:WinRC CompilerMax OSX debug:x86 CodeGenMax OSX debug:x86 COFFMax OSX debug:x86 DisassemblerMax OSX debug:x86 Exceptions PanelMax OSX debug:x86 Global OptimizerMax OSX debug:x86 LinkerMax OSX debug:x86 ProjectPD OSX:Source TreesPD OSX:Access PathsPD OSX:Debugger RuntimePD OSX:Target SettingsPD OSX:File MappingsPD OSX:Build ExtrasPD OSX:Debugger TargetPD OSX:Remote DebugPD OSX:Auto-targetPD OSX:Custom KeywordsPD OSX:C/C++ CompilerPD OSX:C/C++ WarningsPD OSX:FTP PanelPD OSX:Java Command LinePD OSX:PJavaDebuggingPD OSX:Java LanguagePD OSX:Java Manifest-JAD Setting InfoPD OSX:Java MRJAppBuilderPD OSX:Java OutputPD OSX:Java ProjectPD OSX:JavaDoc ProjectPD OSX:MacOS Merge PanelPD OSX:Output FlagsPD OSX:Packager PanelPD OSX:PPC CodeGenPD OSX:PPC CodeGen Mach-OPD OSX:PPC DisassemblerPD OSX:PPC Global OptimizerPD OSX:PPC LinkerPD OSX:PPC Mac OS X LinkerPD OSX:PPC Mac OS X ProjectPD OSX:PPC Mach-O LinkerPD OSX:PPC Mach-O TargetPD OSX:PPC PEFPD OSX:PPC ProjectPD OSX:PPCAsm PanelPD OSX:Property ListPD OSX:Rez CompilerPD OSX:WinRC CompilerPD OSX:x86 CodeGenPD OSX:x86 COFFPD OSX:x86 DisassemblerPD OSX:x86 Exceptions PanelPD OSX:x86 Global OptimizerPD OSX:x86 LinkerPD OSX:x86 ProjectMax OS9 G3:Source TreesMax OS9 G3:Access PathsMax OS9 G3:Debugger RuntimeMax OS9 G3:Target SettingsMax OS9 G3:File MappingsMax OS9 G3:Build ExtrasMax OS9 G3:Debugger TargetMax OS9 G3:Remote DebugMax OS9 G3:Auto-targetMax OS9 G3:Custom KeywordsMax OS9 G3:C/C++ CompilerMax OS9 G3:C/C++ WarningsMax OS9 G3:FTP PanelMax OS9 G3:Java Command LineMax OS9 G3:PJavaDebuggingMax OS9 G3:Java LanguageMax OS9 G3:Java Manifest-JAD Setting InfoMax OS9 G3:Java MRJAppBuilderMax OS9 G3:Java OutputMax OS9 G3:Java ProjectMax OS9 G3:JavaDoc ProjectMax OS9 G3:MacOS Merge PanelMax OS9 G3:Output FlagsMax OS9 G3:Packager PanelMax OS9 G3:PPC CodeGenMax OS9 G3:PPC CodeGen Mach-OMax OS9 G3:PPC DisassemblerMax OS9 G3:PPC Global OptimizerMax OS9 G3:PPC LinkerMax OS9 G3:PPC Mac OS X LinkerMax OS9 G3:PPC Mac OS X ProjectMax OS9 G3:PPC Mach-O LinkerMax OS9 G3:PPC Mach-O TargetMax OS9 G3:PPC PEFMax OS9 G3:PPC ProjectMax OS9 G3:PPCAsm PanelMax OS9 G3:Property ListMax OS9 G3:Rez CompilerMax OS9 G3:WinRC CompilerMax OS9 G3:x86 CodeGenMax OS9 G3:x86 COFFMax OS9 G3:x86 DisassemblerMax OS9 G3:x86 Exceptions PanelMax OS9 G3:x86 Global OptimizerMax OS9 G3:x86 LinkerMax OS9 G3:x86 ProjectMax OSX G3:Source TreesMax OSX G3:Access PathsMax OSX G3:Debugger RuntimeMax OSX G3:Target SettingsMax OSX G3:File MappingsMax OSX G3:Build ExtrasMax OSX G3:Debugger TargetMax OSX G3:Remote DebugMax OSX G3:Auto-targetMax OSX G3:Custom KeywordsMax OSX G3:C/C++ CompilerMax OSX G3:C/C++ WarningsMax OSX G3:FTP PanelMax OSX G3:Java Command LineMax OSX G3:PJavaDebuggingMax OSX G3:Java LanguageMax OSX G3:Java Manifest-JAD Setting InfoMax OSX G3:Java MRJAppBuilderMax OSX G3:Java OutputMax OSX G3:Java ProjectMax OSX G3:JavaDoc ProjectMax OSX G3:MacOS Merge PanelMax OSX G3:Output FlagsMax OSX G3:Packager PanelMax OSX G3:PPC CodeGenMax OSX G3:PPC CodeGen Mach-OMax OSX G3:PPC DisassemblerMax OSX G3:PPC Global OptimizerMax OSX G3:PPC LinkerMax OSX G3:PPC Mac OS X LinkerMax OSX G3:PPC Mac OS X ProjectMax OSX G3:PPC Mach-O LinkerMax OSX G3:PPC Mach-O TargetMax OSX G3:PPC PEFMax OSX G3:PPC ProjectMax OSX G3:PPCAsm PanelMax OSX G3:Property ListMax OSX G3:Rez CompilerMax OSX G3:WinRC CompilerMax OSX G3:x86 CodeGenMax OSX G3:x86 COFFMax OSX G3:x86 DisassemblerMax OSX G3:x86 Exceptions PanelMax OSX G3:x86 Global OptimizerMax OSX G3:x86 LinkerMax OSX G3:x86 ProjectMax OSX Mach-O:Source TreesMax OSX Mach-O:Access PathsMax OSX Mach-O:Debugger RuntimeMax OSX Mach-O:Target SettingsMax OSX Mach-O:File MappingsMax OSX Mach-O:Build ExtrasMax OSX Mach-O:Debugger TargetMax OSX Mach-O:Remote DebugMax OSX Mach-O:Auto-targetMax OSX Mach-O:Custom KeywordsMax OSX Mach-O:C/C++ CompilerMax OSX Mach-O:C/C++ WarningsMax OSX Mach-O:FTP PanelMax OSX Mach-O:Java Command LineMax OSX Mach-O:PJavaDebuggingMax OSX Mach-O:Java LanguageMax OSX Mach-O:Java Manifest-JAD Setting InfoMax OSX Mach-O:Java MRJAppBuilderMax OSX Mach-O:Java OutputMax OSX Mach-O:Java ProjectMax OSX Mach-O:JavaDoc ProjectMax OSX Mach-O:MacOS Merge PanelMax OSX Mach-O:Output FlagsMax OSX Mach-O:Packager PanelMax OSX Mach-O:PPC CodeGenMax OSX Mach-O:PPC CodeGen Mach-OMax OSX Mach-O:PPC DisassemblerMax OSX Mach-O:PPC Global OptimizerMax OSX Mach-O:PPC LinkerMax OSX Mach-O:PPC Mac OS X LinkerMax OSX Mach-O:PPC Mac OS X ProjectMax OSX Mach-O:PPC Mach-O LinkerMax OSX Mach-O:PPC Mach-O TargetMax OSX Mach-O:PPC PEFMax OSX Mach-O:PPC ProjectMax OSX Mach-O:PPCAsm PanelMax OSX Mach-O:Property ListMax OSX Mach-O:Rez CompilerMax OSX Mach-O:WinRC CompilerMax OSX Mach-O:x86 CodeGenMax OSX Mach-O:x86 COFFMax OSX Mach-O:x86 DisassemblerMax OSX Mach-O:x86 Exceptions PanelMax OSX Mach-O:x86 Global OptimizerMax OSX Mach-O:x86 LinkerMax OSX Mach-O:x86 ProjectMacOS PPC LinkerAPPL`Appl`MMLBLib Import PPCMPLFLib Import PPCMWCD`RSRCRez`TEXT.arrTEXT.bhBalloon HelpBalloon HelpTEXT.cMW C/C++ PPCC/C++TEXT.c++MW C/C++ PPCC/C++TEXT.ccMW C/C++ PPCC/C++TEXT.cpMW C/C++ PPCC/C++TEXT.cppMW C/C++ PPCC/C++TEXT.expTEXT.hMW C/C++ PPCC/C++TEXT.pchMW C/C++ PPCC/C++TEXT.pch++MW C/C++ PPCC/C++TEXT.rRezRezTEXT.sPPCAsmBalloon HelpXCOFXCOFF Import PPCdocu`rsrcRez`shlbPEF Import PPCstubPEF Import PPC.docP.oXCOFF Import PPC.ppob`.rsrcRez`NoneMMPr@Java Linker RSRCTEXT.htmlJavaTEXT.javaMW JavaJavaTEXT.mfJavarsrc.auJAR Importer@.classMW Java.gifJAR Importer@.jarMW Java.zipMW JavaMacOS 68K LinkerAPPL`Appl`MMLBLib Import 68KMPLFLib Import 68KMWCD`OBJ MPW Import 68KPLob`RSRC`TEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezRezTEXT.segdocu`rsrc`shlbPEF Import 68KstubPEF Import 68K.docP.oMPW Import 68K.ppob`.rsrc`MacOS MergeAPPL`Appl`RSRC`TEXT.rRezRezappe`rsrc`shlbMach-O PPC LinkerAPPL`Appl`MLIBLib Import Mach-OMMLBLib Import Mach-OMPLFLib Import Mach-OMWCD`RSRC`TEXT.cMW C/C++ MachPPCC/C++TEXT.c++MW C/C++ MachPPCC/C++TEXT.ccMW C/C++ MachPPCC/C++TEXT.cpMW C/C++ MachPPCC/C++TEXT.cppMW C/C++ MachPPCC/C++TEXT.expTEXT.hMW C/C++ MachPPCC/C++TEXT.pchMW C/C++ MachPPCC/C++TEXT.pch++MW C/C++ MachPPCC/C++TEXT.rRezRezdocu`rsrc`.docPWin32 x86 LinkerTEXT.cMW C/C++ x86C/C++TEXT.c++MW C/C++ x86C/C++TEXT.ccMW C/C++ x86C/C++TEXT.cpMW C/C++ x86C/C++TEXT.cppMW C/C++ x86C/C++TEXT.defTEXT.hMW C/C++ x86C/C++TEXT.h++MW C/C++ x86C/C++TEXT.hppMW C/C++ x86C/C++TEXT.ordTEXT.pchMW C/C++ x86C/C++TEXT.pch++MW C/C++ x86C/C++TEXT.rcMW WinRCBalloon HelpiLIBLib Import x86iOBJObj Import x86.aLib Import x86.docP.libLib Import x86.oObj Import x86.objObj Import x86.resWinRes ImportMacOS X PPC Linker0APPL`Appl`MDYLMachO ImporterC/C++MLIBMachO ImporterC/C++MMLBMachO ImporterC/C++MPLFMachO ImporterC/C++MWCD`RSRC`TEXT.arrTEXT.axpTEXT.cMW C/C++ PPC Mac OS XC/C++TEXT.c++MW C/C++ PPC Mac OS XC/C++TEXT.ccMW C/C++ PPC Mac OS XC/C++TEXT.cpMW C/C++ PPC Mac OS XC/C++TEXT.cppMW C/C++ PPC Mac OS XC/C++TEXT.expTEXT.hMW C/C++ PPC Mac OS XC/C++TEXT.h++MW C/C++ PPC Mac OS XC/C++TEXT.hppMW C/C++ PPC Mac OS XC/C++TEXT.lcfTEXT.mMW C/C++ PPC Mac OS XC/C++TEXT.mmMW C/C++ PPC Mac OS XC/C++TEXT.pchMW C/C++ PPC Mac OS XC/C++TEXT.pch++MW C/C++ PPC Mac OS XC/C++TEXT.pchmMW C/C++ PPC Mac OS XC/C++TEXT.pchmmMW C/C++ PPC Mac OS XC/C++TEXT.plcProperty List CompilerProperty ListTEXT.plocProperty List CompilerProperty ListTEXT.rRezRezTEXT.wkedocu`rsrc`.aMachO ImporterC/C++.docP.dylibMachO ImporterC/C++.gifCopy To PackageP.icnsCopy To PackageP.jpgCopy To PackageP.libMachO ImporterC/C++.nibCopy To PackageP.plPerl ToolPerl.plistCopy To Package.ppob`.pshShell Tool.rsrc`.shShell Tool.stringsCopy To Package.tiffCopy To PackagePWARZmacosxmacosx????APPLsr@MWCD`OBJ MPW Import 68KPLob`RSCRez`TEXT.bhBalloon HelpTEXT.cMW C/C++ 68KTEXT.c++MW C/C++ 68KTEXT.ccMW C/C++ 68KTEXT.cpMW C/C++ 68KTEXT.cppMW C/C++ 68KTEXT.expTEXT.hMW C/C++ 68KTEXT.pchMW C/C++ 68KTEXT.pch++MW C/C++ 68KTEXT.rRezTEXT.segdocu`rsrcRez`shlbPEF Import 68KstubPEF Import 68K.doc.mxodlebundle????BNDL@Bundle.rsrc:./A.mxodlea.exe????MEXE@a.rsrc:./ :max-osx:xsample.mxdmax2iLaF:????:max-osx:xsample.mxdmstr]mstl^mstnhmstrh0mstlg%mstnhmtflgmtfsInfo.plistgmtfpgmtfd`prefW ppref^`prefP pref@prefgz0pref7K pref۵pref`preftP prefq pref5 pref  pref:⽰pref⽠pref⽐pref$⽀pref*wpprefe`pref;PprefL@pref0prefN pref prefBpref6pref+prefpref{plst@pref⼰prefRN⼠pref3⼐prefo ⼀pref`!ppref"`pref #Ppr@ noname.exea.exe????MEXE@a.rsrc:./dmstrE-mstlrmstn( mstr mstl$mstnGmtgl ('moti'\PLst"I9!,mpsi O(msti+(msti& mall$maplprefG6J!^prefGK$'prefH>L"prefGߏM#%^prefG5N#prefHQO[prefw pref$o pref{pref1_prefU2epref<!prefߓ? pref@! pref-}A#prefB6AprefEC7GprefQF#pref35j7 prefmkA preflMpref_m4prefEnC9prefqq mtsl#mtpl mtps:mtpi5-prefF2prefCprefR%pref"prefӕ|\prefpref lprefȝpref{ pref/)2pref mtsl bmtpl <'mtps mtpi 8mtlo prefp?prefgOprefR pref ~Bpref"pref߆ prefprefUpreff[mpreff/O@pref-prefyU!prefկprefypref"AIprefǿprefBڷprefj6prefZ8 pref@pref]&preft4;Mprefb=pref]"pref}"pref5< pref pref}0pref\prefSpref1-lpref?preflapref V+prefllprefpref+IE prefH"pref|jprefs?.2pref pref|pref*.M prefB]pref> prefY mtsl #mtpl nmtps mtpi X$mtlo prefFUdprefMpref0!yprefns1C\pref"preftC prefMwprefMprefl5 prefE@prefR2prefprefb=prefJ@pref̿pref$=pref TEpref~6pref;D! prefprefd&prefU.wpref# pref] ^"pref) "pref2  prefz 4 prefj"pref \prefprefalprefdprefW`7prefpref,YaOprefa?prefd~G prefz@"pref_bpref52prefQpref?[iprefI prefMwApref5pref  mtsl gmtpl %mtps %mtpi pref'?Slprefw@pref2A>prefiB pref|.C?prefhDprefE prefF4"pref*G5pref9H2pref;IprefJ-prefEK prefLKQpref/Mpref:N mtsl mtpl^mtpsmtpi8mtloprefO5pref-LPDUprefQIeprefWR`BprefXOSOy"prefTW pref-UZprefVprefWprefrX@prefhYprefZ`prefq[fYpref\pref,]mpref^kapref_oipref`6pref>Ta prefbEprefGc}&prefO d<prefneprefcf5"prefx7g6"pref%h pref0i-w prefzj5prefk\pref%l5pref m=lpref!n!prefzoKprefPp prefX}qa1pref0rprefYgs") pref!tB"prefu.Yprefav2pref$wCprefxprefy- pref z>pref{pref| w mtslmtplmtpsmtpi<8mtlo pref}7prefM~!prefL'pref UBpref-"pref59 pref68Yprefprefr9pref4+@pref"pref~Q>iprefCprefd+-prefz\3pref*HprefzMprefi6pref*{ pref\pref^ӽ&prefsf_-prefprefA'"pref"pref prefo prefIpref?YG\prefYprefOlprefdpref:pref;pref;pref0prefQ prefP y"prefpreft`2prefprefc&pref& pref[lprefpref4