├── .gitmodules
├── olaoutput
├── olaoutput.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ ├── xcuserdata
│ │ │ └── David.xcuserdatad
│ │ │ │ ├── UserInterfaceState.xcuserstate
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata
│ │ │ ├── vidi.xccheckout
│ │ │ ├── imp.ltc.xccheckout
│ │ │ ├── olaoutput.xccheckout
│ │ │ └── vidibuild.xccheckout
│ ├── xcuserdata
│ │ └── David.xcuserdatad
│ │ │ ├── xcdebugger
│ │ │ └── Breakpoints_v2.xcbkptlist
│ │ │ └── xcschemes
│ │ │ ├── xcschememanagement.plist
│ │ │ └── olaoutput.xcscheme
│ └── project.pbxproj
├── olaoutput.cpp
└── olaoutput.maxhelp
├── README.md
├── propertysheets
├── olaoutput_extern_x86.props
├── olaoutput_extern_x64.props
└── olaoutput_extern_common.props
└── xcodeconfig
├── Info.plist
└── maxmspsdk.xcconfig
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "max6-sdk"]
2 | path = max6-sdk
3 | url = git://github.com/Cycling74/max6-sdk
4 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/project.xcworkspace/xcuserdata/David.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenLightingProject/olaoutput/HEAD/olaoutput/olaoutput.xcodeproj/project.xcworkspace/xcuserdata/David.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/project.xcworkspace/xcuserdata/David.xcuserdatad/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges
6 |
7 | SnapshotAutomaticallyBeforeSignificantChanges
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | olaoutput is an object for Cycling 74's Max visual programming environment which enables the
2 | transmission of data to OLA (Open Lighting Architecture), a service allowing transmission and
3 | receiving of DMX information via a variety of hardware (Entec DMX USB Pro, uDMX, DMX King) and
4 | IP protocols (Art-Net, sACN, ShowNet).
5 |
6 | olaoutput currently works with Max 5 and 6 (32-bit and 64-bit) on OS X. OLA is required at development
7 | and runtime. Cycling 74's Max SDK is required for development only.
8 |
9 | See the https://wiki.openlighting.org/index.php/OlaOutput_Max_External for usage information.
10 |
--------------------------------------------------------------------------------
/propertysheets/olaoutput_extern_x86.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <_ProjectFileVersion>10.0.40219.1
5 | .mxe
6 |
7 |
8 |
9 | $(C74SUPPORT)\max-includes;$(C74SUPPORT)\msp-includes;$(C74SUPPORT)\jit-includes;%(AdditionalLibraryDirectories)
10 |
11 |
12 | VER_TARGETEXT=\".mxe\";%(PreprocessorDefinitions)
13 |
14 |
15 |
--------------------------------------------------------------------------------
/propertysheets/olaoutput_extern_x64.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <_ProjectFileVersion>10.0.40219.1
5 | .mxe64
6 |
7 |
8 |
9 | $(C74SUPPORT)\max-includes\x64;$(C74SUPPORT)\msp-includes\x64;$(C74SUPPORT)\jit-includes\x64;%(AdditionalLibraryDirectories)
10 |
11 |
12 | VER_TARGETEXT=\".mxe64\";%(PreprocessorDefinitions)
13 |
14 |
15 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/xcuserdata/David.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
8 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/xcuserdata/David.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | olaoutput.xcscheme
8 |
9 | orderHint
10 | 4
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 2FBBEAD608F335360078DB84
16 |
17 | primary
18 |
19 |
20 | 63FE36EE1950740D00B07A04
21 |
22 | primary
23 |
24 |
25 | 63FE36F81950740F00B07A04
26 |
27 | primary
28 |
29 |
30 | 63FE37021950741000B07A04
31 |
32 | primary
33 |
34 |
35 | 63FE3711195074A100B07A04
36 |
37 | primary
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/xcodeconfig/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${PRODUCT_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | com.cycling74.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | ${PRODUCT_VERSION}
15 | CFBundlePackageType
16 | iLaX
17 | CFBundleSignature
18 | max2
19 | CFBundleVersion
20 | 1.0
21 |
22 | CFBundleVersion
23 | ${PRODUCT_VERSION}
24 | CFBundleShortVersionString
25 | ${PRODUCT_VERSION}
26 | CFBundleLongVersionString
27 | ${PRODUCT_NAME} ${PRODUCT_VERSION}, Copyright 2013 Cycling '74
28 |
29 | CSResourcesFileMapped
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/propertysheets/olaoutput_extern_common.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(MSBuildThisFileDirectory)..\max6-sdk\c74support\
5 |
6 |
7 | <_ProjectFileVersion>10.0.40219.1
8 | $(C74SUPPORT)..\..\..\olaoutput_build\$(Configuration)_$(PlatformName)\$(SolutionName)\
9 | $(C74SUPPORT)..\..\..\olaoutput_inter\$(Configuration)_$(PlatformName)\$(SolutionName)\$(ProjectName)\
10 | false
11 |
12 |
13 |
14 | MaxAPI.lib;MaxAudio.lib;jitlib.lib;%(AdditionalDependencies)
15 |
16 |
17 | VER_TARGETNAME=\"$(TargetName)\";%(PreprocessorDefinitions)
18 |
19 |
20 | _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
21 |
22 |
23 | $(IntDir)$(TargetName).manifest
24 |
25 |
26 |
27 |
28 | $(C74SUPPORT)
29 |
30 |
31 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/project.xcworkspace/xcshareddata/vidi.xccheckout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDESourceControlProjectFavoriteDictionaryKey
6 |
7 | IDESourceControlProjectIdentifier
8 | 5B064C09-B00F-4334-BA0C-9CA15A7F6229
9 | IDESourceControlProjectName
10 | vidi
11 | IDESourceControlProjectOriginsDictionary
12 |
13 | BD74B562-5E13-42B8-8D35-BF626209237E
14 | https://github.com/impsnldavid/impmaxobjects.git
15 |
16 | IDESourceControlProjectPath
17 | imp.ltc/vidi.xcodeproj/project.xcworkspace
18 | IDESourceControlProjectRelativeInstallPathDictionary
19 |
20 | BD74B562-5E13-42B8-8D35-BF626209237E
21 | ../../..
22 |
23 | IDESourceControlProjectURL
24 | https://github.com/impsnldavid/impmaxobjects.git
25 | IDESourceControlProjectVersion
26 | 110
27 | IDESourceControlProjectWCCIdentifier
28 | BD74B562-5E13-42B8-8D35-BF626209237E
29 | IDESourceControlProjectWCConfigurations
30 |
31 |
32 | IDESourceControlRepositoryExtensionIdentifierKey
33 | public.vcs.git
34 | IDESourceControlWCCIdentifierKey
35 | BD74B562-5E13-42B8-8D35-BF626209237E
36 | IDESourceControlWCCName
37 | impmaxobjects
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/project.xcworkspace/xcshareddata/imp.ltc.xccheckout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDESourceControlProjectFavoriteDictionaryKey
6 |
7 | IDESourceControlProjectIdentifier
8 | 8BB9D4FF-D4C6-42C7-953F-8CA7AAB1A969
9 | IDESourceControlProjectName
10 | imp.ltc
11 | IDESourceControlProjectOriginsDictionary
12 |
13 | 58089FBD-D60C-47F7-B8AF-CDF499BDFE4A
14 | https://github.com/impsnldavid/impmaxobjects.git
15 | D9379814-0D5F-4732-A7A6-EA627AD11589
16 | https://github.com/Cycling74/max6-sdk
17 |
18 | IDESourceControlProjectPath
19 | imp.msc/imp.ltc.xcodeproj/project.xcworkspace
20 | IDESourceControlProjectRelativeInstallPathDictionary
21 |
22 | 58089FBD-D60C-47F7-B8AF-CDF499BDFE4A
23 | ../../..
24 | D9379814-0D5F-4732-A7A6-EA627AD11589
25 | ../../../max6-sdk
26 |
27 | IDESourceControlProjectURL
28 | https://github.com/impsnldavid/impmaxobjects.git
29 | IDESourceControlProjectVersion
30 | 110
31 | IDESourceControlProjectWCCIdentifier
32 | 58089FBD-D60C-47F7-B8AF-CDF499BDFE4A
33 | IDESourceControlProjectWCConfigurations
34 |
35 |
36 | IDESourceControlRepositoryExtensionIdentifierKey
37 | public.vcs.git
38 | IDESourceControlWCCIdentifierKey
39 | 58089FBD-D60C-47F7-B8AF-CDF499BDFE4A
40 | IDESourceControlWCCName
41 | impmaxobjects
42 |
43 |
44 | IDESourceControlRepositoryExtensionIdentifierKey
45 | public.vcs.git
46 | IDESourceControlWCCIdentifierKey
47 | D9379814-0D5F-4732-A7A6-EA627AD11589
48 | IDESourceControlWCCName
49 | max6-sdk
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/project.xcworkspace/xcshareddata/olaoutput.xccheckout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDESourceControlProjectFavoriteDictionaryKey
6 |
7 | IDESourceControlProjectIdentifier
8 | 8566A0F9-89BD-49BE-A3ED-3391CC275956
9 | IDESourceControlProjectName
10 | olaoutput
11 | IDESourceControlProjectOriginsDictionary
12 |
13 | 432D987CF0E487D0F8961CB5FDD6233842994479
14 | https://github.com/OpenLightingProject/olaoutput.git
15 | 43DDD4A1012A81E5C2F5DA96FCA0DABF5263B8FC
16 | git://github.com/Cycling74/max6-sdk
17 |
18 | IDESourceControlProjectPath
19 | olaoutput/olaoutput.xcodeproj
20 | IDESourceControlProjectRelativeInstallPathDictionary
21 |
22 | 432D987CF0E487D0F8961CB5FDD6233842994479
23 | ../../..
24 | 43DDD4A1012A81E5C2F5DA96FCA0DABF5263B8FC
25 | ../../..max6-sdk
26 |
27 | IDESourceControlProjectURL
28 | https://github.com/OpenLightingProject/olaoutput.git
29 | IDESourceControlProjectVersion
30 | 111
31 | IDESourceControlProjectWCCIdentifier
32 | 432D987CF0E487D0F8961CB5FDD6233842994479
33 | IDESourceControlProjectWCConfigurations
34 |
35 |
36 | IDESourceControlRepositoryExtensionIdentifierKey
37 | public.vcs.git
38 | IDESourceControlWCCIdentifierKey
39 | 432D987CF0E487D0F8961CB5FDD6233842994479
40 | IDESourceControlWCCName
41 | olaoutput
42 |
43 |
44 | IDESourceControlRepositoryExtensionIdentifierKey
45 | public.vcs.git
46 | IDESourceControlWCCIdentifierKey
47 | 43DDD4A1012A81E5C2F5DA96FCA0DABF5263B8FC
48 | IDESourceControlWCCName
49 | olaoutputmax6-sdk
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/project.xcworkspace/xcshareddata/vidibuild.xccheckout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDESourceControlProjectFavoriteDictionaryKey
6 |
7 | IDESourceControlProjectIdentifier
8 | 1D54D857-07A2-40F1-BA3C-BDE0DE940195
9 | IDESourceControlProjectName
10 | vidibuild
11 | IDESourceControlProjectOriginsDictionary
12 |
13 | D8645BCF-D60F-471B-A30E-C1B05A40E6D2
14 | svn+ssh://tech.green-hippo.com/repositories/vidi/trunk
15 |
16 | IDESourceControlProjectPath
17 | Max Objects/vidibuild.xcodeproj/project.xcworkspace
18 | IDESourceControlProjectRelativeInstallPathDictionary
19 |
20 | D8645BCF-D60F-471B-A30E-C1B05A40E6D2
21 | ../../..
22 |
23 | IDESourceControlProjectRepositoryRootDictionary
24 |
25 | D8645BCF-D60F-471B-A30E-C1B05A40E6D2
26 | svn+ssh://tech.green-hippo.com/repositories/vidi
27 |
28 | IDESourceControlProjectURL
29 | svn+ssh://tech.green-hippo.com/repositories/vidi/trunk/Max%20Objects/vidibuild.xcodeproj
30 | IDESourceControlProjectVersion
31 | 110
32 | IDESourceControlProjectWCCIdentifier
33 | D8645BCF-D60F-471B-A30E-C1B05A40E6D2
34 | IDESourceControlProjectWCConfigurations
35 |
36 |
37 | IDESourceControlRepositoryBranchesRelativeLocationKey
38 | branches
39 | IDESourceControlRepositoryExtensionIdentifierKey
40 | public.vcs.subversion
41 | IDESourceControlRepositoryTagsRelativeLocationKey
42 | tags
43 | IDESourceControlRepositoryTrunkRelativeLocationKey
44 | trunk
45 | IDESourceControlWCCIdentifierKey
46 | D8645BCF-D60F-471B-A30E-C1B05A40E6D2
47 | IDESourceControlWCCName
48 | vidi
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/xcodeconfig/maxmspsdk.xcconfig:
--------------------------------------------------------------------------------
1 | // Xcode target configuration settings for the Max 6 SDK
2 | // Used as the basis for Xcode projects to build Max externals.
3 | //
4 | // Changes to the settings in this file will be applied to all SDK examples
5 | // To change settings for only one of the examples, override the settings using
6 | // Xcode's target inspector.
7 | //
8 | // by Timothy Place
9 | // Copyright © 2012, Cycling '74
10 |
11 |
12 | // Name & Version
13 | PRODUCT_NAME = $(PROJECT_NAME)
14 | PRODUCT_VERSION = 6.1.4
15 | ARCHS = i386 x86_64
16 |
17 |
18 | // Paths
19 | C74SUPPORT = $(SRCROOT)/../max6-sdk/c74support
20 | HEADER_SEARCH_PATHS = "$(C74SUPPORT)/max-includes" "$(C74SUPPORT)/msp-includes" "$(C74SUPPORT)/jit-includes"
21 | FRAMEWORK_SEARCH_PATHS = "$(C74SUPPORT)/max-includes" "$(C74SUPPORT)/msp-includes" "$(C74SUPPORT)/jit-includes"
22 | DSTROOT = $(SRCROOT)/../../olaoutput_build
23 | // (This next path is relative to DSTROOT)
24 | INSTALL_PATH = /
25 |
26 |
27 | // Special Files
28 | GCC_PREFIX_HEADER = $(C74SUPPORT)/max-includes/macho-prefix.pch
29 | INFOPLIST_FILE = $(SRCROOT)/../Info.plist
30 |
31 |
32 | // Architecture and Deployment
33 | ARCHS = i386 x86_64
34 |
35 | // The following section sets the Mac SDK version to be used.
36 | // For most projects this has little to no impact because there are no direct dependencies on OS function calls.
37 | // In those projects with OS function calls, it should be okay to use the most recent SDK version because the
38 | // MACOSX_DEPLOYMENT_TARGET will disable functionality that is unavailable in the older target OS.
39 | // For this reason, the SDKROOT variable is commented out, telling Xcode to use the default (which is the most recent SDK).
40 | //
41 | // If you do need to define the SDKROOT, different versions of Xcode have varying syntax and varying versions of the SDK present.
42 |
43 | // Xcode 3.x
44 | // SDKROOT = $(DEVELOPER_DIR)/SDKs/MacOSX10.5.sdk
45 |
46 | // Xcode 4.0 - Xcode 4.2
47 | // SDKROOT = $(DEVELOPER_DIR)/SDKs/MacOSX10.6.sdk
48 |
49 | // Xcode 4.3+
50 | // SDKROOT = macosx10.6
51 |
52 | MACOSX_DEPLOYMENT_TARGET = 10.7
53 |
54 |
55 | // Compiler Version -- leave them all commented out to get the default version provided by Xcode
56 | // GCC_VERSION = 4.2
57 | // GCC_VERSION = com.apple.compilers.llvmgcc42
58 | // GCC_VERSION = com.apple.compilers.llvm.clang.1_0
59 |
60 |
61 | // Preprocessor Defines
62 | GCC_PREPROCESSOR_DEFINITIONS = "DENORM_WANT_FIX = 1" "NO_TRANSLATION_SUPPORT = 1"
63 |
64 |
65 | // Static Configuration (don't change these)
66 | WRAPPER_EXTENSION = mxo;
67 | WARNING_CFLAGS = -Wmost -Wno-four-char-constants -Wno-unknown-pragmas
68 | DEPLOYMENT_LOCATION = YES
69 | GENERATE_PKGINFO_FILE = YES
70 |
71 |
72 | // Flags to enforce some build-time checks for the symbols used while not actually performing a hard link
73 | C74_SYM_LINKER_FLAGS = @$(C74SUPPORT)/max-includes/c74_linker_flags.txt
74 |
75 |
76 | // hide all symbols by default
77 | // mark a function to be exported with the C74_EXPORT macro -- most likely this will only apply to the main() function
78 | OTHER_CFLAGS = -fvisibility=hidden
79 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/xcuserdata/David.xcuserdatad/xcschemes/olaoutput.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
42 |
45 |
46 |
47 |
53 |
54 |
55 |
56 |
57 |
58 |
64 |
65 |
71 |
72 |
73 |
74 |
76 |
77 |
80 |
81 |
82 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 63E33AD41AF3BAAF00818335 /* libola.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 63E33AD31AF3BAAF00818335 /* libola.1.dylib */; };
11 | 63E33AD61AF3BAE900818335 /* libolacommon.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 63E33AD51AF3BAE900818335 /* libolacommon.0.dylib */; };
12 | 63F3D3371AF3B9C50081102E /* olaoutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63F3D3361AF3B9C50081102E /* olaoutput.cpp */; };
13 | 63FE3733195078FA00B07A04 /* commonsyms.c in Sources */ = {isa = PBXBuildFile; fileRef = 63FE3732195078FA00B07A04 /* commonsyms.c */; };
14 | /* End PBXBuildFile section */
15 |
16 | /* Begin PBXFileReference section */
17 | 2FBBEAE508F335360078DB84 /* olaoutput.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = olaoutput.mxo; sourceTree = BUILT_PRODUCTS_DIR; };
18 | 63E33AD31AF3BAAF00818335 /* libola.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libola.1.dylib; path = ../../../../../opt/local/lib/libola.1.dylib; sourceTree = ""; };
19 | 63E33AD51AF3BAE900818335 /* libolacommon.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libolacommon.0.dylib; path = ../../../../../opt/local/lib/libolacommon.0.dylib; sourceTree = ""; };
20 | 63F3D3361AF3B9C50081102E /* olaoutput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = olaoutput.cpp; sourceTree = ""; };
21 | 63FE36D6195073C400B07A04 /* maxmspsdk.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = maxmspsdk.xcconfig; path = ../xcodeconfig/maxmspsdk.xcconfig; sourceTree = ""; };
22 | 63FE3732195078FA00B07A04 /* commonsyms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = commonsyms.c; path = "../max6-sdk/c74support/max-includes/common/commonsyms.c"; sourceTree = ""; };
23 | /* End PBXFileReference section */
24 |
25 | /* Begin PBXFrameworksBuildPhase section */
26 | 2FBBEADC08F335360078DB84 /* Frameworks */ = {
27 | isa = PBXFrameworksBuildPhase;
28 | buildActionMask = 2147483647;
29 | files = (
30 | 63E33AD61AF3BAE900818335 /* libolacommon.0.dylib in Frameworks */,
31 | 63E33AD41AF3BAAF00818335 /* libola.1.dylib in Frameworks */,
32 | );
33 | runOnlyForDeploymentPostprocessing = 0;
34 | };
35 | /* End PBXFrameworksBuildPhase section */
36 |
37 | /* Begin PBXGroup section */
38 | 089C166AFE841209C02AAC07 /* iterator */ = {
39 | isa = PBXGroup;
40 | children = (
41 | 63E33AD51AF3BAE900818335 /* libolacommon.0.dylib */,
42 | 63E33AD31AF3BAAF00818335 /* libola.1.dylib */,
43 | 63FE36D6195073C400B07A04 /* maxmspsdk.xcconfig */,
44 | 63FE370D1950748600B07A04 /* Max Objects */,
45 | 63FE3731195078E200B07A04 /* Max SDK */,
46 | 19C28FB4FE9D528D11CA2CBB /* Products */,
47 | );
48 | name = iterator;
49 | sourceTree = "";
50 | };
51 | 19C28FB4FE9D528D11CA2CBB /* Products */ = {
52 | isa = PBXGroup;
53 | children = (
54 | 2FBBEAE508F335360078DB84 /* olaoutput.mxo */,
55 | );
56 | name = Products;
57 | sourceTree = "";
58 | };
59 | 63FE370D1950748600B07A04 /* Max Objects */ = {
60 | isa = PBXGroup;
61 | children = (
62 | 63F3D3361AF3B9C50081102E /* olaoutput.cpp */,
63 | );
64 | name = "Max Objects";
65 | sourceTree = "";
66 | };
67 | 63FE3731195078E200B07A04 /* Max SDK */ = {
68 | isa = PBXGroup;
69 | children = (
70 | 63FE3732195078FA00B07A04 /* commonsyms.c */,
71 | );
72 | name = "Max SDK";
73 | sourceTree = "";
74 | };
75 | /* End PBXGroup section */
76 |
77 | /* Begin PBXHeadersBuildPhase section */
78 | 2FBBEAD708F335360078DB84 /* Headers */ = {
79 | isa = PBXHeadersBuildPhase;
80 | buildActionMask = 2147483647;
81 | files = (
82 | );
83 | runOnlyForDeploymentPostprocessing = 0;
84 | };
85 | /* End PBXHeadersBuildPhase section */
86 |
87 | /* Begin PBXNativeTarget section */
88 | 2FBBEAD608F335360078DB84 /* olaoutput */ = {
89 | isa = PBXNativeTarget;
90 | buildConfigurationList = 2FBBEAE008F335360078DB84 /* Build configuration list for PBXNativeTarget "olaoutput" */;
91 | buildPhases = (
92 | 2FBBEAD708F335360078DB84 /* Headers */,
93 | 2FBBEAD808F335360078DB84 /* Resources */,
94 | 2FBBEADA08F335360078DB84 /* Sources */,
95 | 2FBBEADC08F335360078DB84 /* Frameworks */,
96 | 2FBBEADF08F335360078DB84 /* Rez */,
97 | );
98 | buildRules = (
99 | );
100 | dependencies = (
101 | );
102 | name = olaoutput;
103 | productName = iterator;
104 | productReference = 2FBBEAE508F335360078DB84 /* olaoutput.mxo */;
105 | productType = "com.apple.product-type.bundle";
106 | };
107 | /* End PBXNativeTarget section */
108 |
109 | /* Begin PBXProject section */
110 | 089C1669FE841209C02AAC07 /* Project object */ = {
111 | isa = PBXProject;
112 | attributes = {
113 | LastUpgradeCheck = 0630;
114 | };
115 | buildConfigurationList = 2FBBEACF08F335010078DB84 /* Build configuration list for PBXProject "olaoutput" */;
116 | compatibilityVersion = "Xcode 3.2";
117 | developmentRegion = English;
118 | hasScannedForEncodings = 1;
119 | knownRegions = (
120 | en,
121 | );
122 | mainGroup = 089C166AFE841209C02AAC07 /* iterator */;
123 | projectDirPath = "";
124 | projectRoot = "";
125 | targets = (
126 | 2FBBEAD608F335360078DB84 /* olaoutput */,
127 | );
128 | };
129 | /* End PBXProject section */
130 |
131 | /* Begin PBXResourcesBuildPhase section */
132 | 2FBBEAD808F335360078DB84 /* Resources */ = {
133 | isa = PBXResourcesBuildPhase;
134 | buildActionMask = 2147483647;
135 | files = (
136 | );
137 | runOnlyForDeploymentPostprocessing = 0;
138 | };
139 | /* End PBXResourcesBuildPhase section */
140 |
141 | /* Begin PBXRezBuildPhase section */
142 | 2FBBEADF08F335360078DB84 /* Rez */ = {
143 | isa = PBXRezBuildPhase;
144 | buildActionMask = 2147483647;
145 | files = (
146 | );
147 | runOnlyForDeploymentPostprocessing = 0;
148 | };
149 | /* End PBXRezBuildPhase section */
150 |
151 | /* Begin PBXSourcesBuildPhase section */
152 | 2FBBEADA08F335360078DB84 /* Sources */ = {
153 | isa = PBXSourcesBuildPhase;
154 | buildActionMask = 2147483647;
155 | files = (
156 | 63FE3733195078FA00B07A04 /* commonsyms.c in Sources */,
157 | 63F3D3371AF3B9C50081102E /* olaoutput.cpp in Sources */,
158 | );
159 | runOnlyForDeploymentPostprocessing = 0;
160 | };
161 | /* End PBXSourcesBuildPhase section */
162 |
163 | /* Begin XCBuildConfiguration section */
164 | 2FBBEAD008F335010078DB84 /* Development */ = {
165 | isa = XCBuildConfiguration;
166 | buildSettings = {
167 | MACOSX_DEPLOYMENT_TARGET = 10.7;
168 | };
169 | name = Development;
170 | };
171 | 2FBBEAD108F335010078DB84 /* Deployment */ = {
172 | isa = XCBuildConfiguration;
173 | buildSettings = {
174 | MACOSX_DEPLOYMENT_TARGET = 10.7;
175 | };
176 | name = Deployment;
177 | };
178 | 2FBBEAE108F335360078DB84 /* Development */ = {
179 | isa = XCBuildConfiguration;
180 | baseConfigurationReference = 63FE36D6195073C400B07A04 /* maxmspsdk.xcconfig */;
181 | buildSettings = {
182 | CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
183 | CLANG_CXX_LIBRARY = "libc++";
184 | COMBINE_HIDPI_IMAGES = YES;
185 | COPY_PHASE_STRIP = NO;
186 | FRAMEWORK_SEARCH_PATHS = (
187 | "$(inherited)",
188 | "/Users/David/LocalDev/impmaxobjects/max6-sdk/c74support/msp-includes",
189 | );
190 | GCC_OPTIMIZATION_LEVEL = 0;
191 | GCC_SYMBOLS_PRIVATE_EXTERN = YES;
192 | HEADER_SEARCH_PATHS = (
193 | "\"$(C74SUPPORT)/max-includes\"",
194 | "\"$(C74SUPPORT)/msp-includes\"",
195 | "\"$(C74SUPPORT)/jit-includes\"",
196 | /opt/local/include/,
197 | );
198 | INFOPLIST_FILE = ../xcodeconfig/Info.plist;
199 | LIBRARY_SEARCH_PATHS = (
200 | /opt/local/lib/,
201 | /opt/local/lib,
202 | );
203 | OTHER_LDFLAGS = "$(C74_SYM_LINKER_FLAGS)";
204 | };
205 | name = Development;
206 | };
207 | 2FBBEAE208F335360078DB84 /* Deployment */ = {
208 | isa = XCBuildConfiguration;
209 | baseConfigurationReference = 63FE36D6195073C400B07A04 /* maxmspsdk.xcconfig */;
210 | buildSettings = {
211 | CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
212 | CLANG_CXX_LIBRARY = "libc++";
213 | COMBINE_HIDPI_IMAGES = YES;
214 | COPY_PHASE_STRIP = YES;
215 | FRAMEWORK_SEARCH_PATHS = (
216 | "$(inherited)",
217 | "/Users/David/LocalDev/impmaxobjects/max6-sdk/c74support/msp-includes",
218 | );
219 | GCC_SYMBOLS_PRIVATE_EXTERN = YES;
220 | HEADER_SEARCH_PATHS = (
221 | "\"$(C74SUPPORT)/max-includes\"",
222 | "\"$(C74SUPPORT)/msp-includes\"",
223 | "\"$(C74SUPPORT)/jit-includes\"",
224 | /opt/local/include/,
225 | );
226 | INFOPLIST_FILE = ../xcodeconfig/Info.plist;
227 | LIBRARY_SEARCH_PATHS = (
228 | /opt/local/lib/,
229 | /opt/local/lib,
230 | );
231 | OTHER_LDFLAGS = "$(C74_SYM_LINKER_FLAGS)";
232 | };
233 | name = Deployment;
234 | };
235 | /* End XCBuildConfiguration section */
236 |
237 | /* Begin XCConfigurationList section */
238 | 2FBBEACF08F335010078DB84 /* Build configuration list for PBXProject "olaoutput" */ = {
239 | isa = XCConfigurationList;
240 | buildConfigurations = (
241 | 2FBBEAD008F335010078DB84 /* Development */,
242 | 2FBBEAD108F335010078DB84 /* Deployment */,
243 | );
244 | defaultConfigurationIsVisible = 0;
245 | defaultConfigurationName = Development;
246 | };
247 | 2FBBEAE008F335360078DB84 /* Build configuration list for PBXNativeTarget "olaoutput" */ = {
248 | isa = XCConfigurationList;
249 | buildConfigurations = (
250 | 2FBBEAE108F335360078DB84 /* Development */,
251 | 2FBBEAE208F335360078DB84 /* Deployment */,
252 | );
253 | defaultConfigurationIsVisible = 0;
254 | defaultConfigurationName = Development;
255 | };
256 | /* End XCConfigurationList section */
257 | };
258 | rootObject = 089C1669FE841209C02AAC07 /* Project object */;
259 | }
260 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | MAX OLA Output Plugin
3 | OlaOutput.cpp
4 |
5 | Copyright (c) Daniel Edgar, Simon Newton and David Butler
6 |
7 | This program is free software; you can redistribute it and/or
8 | modify it under the terms of the GNU General Public License
9 | Version 2 as published by the Free Software Foundation.
10 |
11 | This program is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details. The license is
15 | in the file "COPYING".
16 |
17 | You should have received a copy of the GNU General Public License
18 | along with this program; if not, write to the Free Software
19 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 | */
21 |
22 | /**
23 | @file
24 | OlaOutput - Sends MAX list data to the OLA Daemon
25 |
26 | @ingroup examples
27 | */
28 |
29 | #include "ext.h"
30 | #include "ext_obex.h"
31 |
32 | #include
33 | #include
34 | #include
35 | #include
36 |
37 | using ola::StreamingClient;
38 | using ola::DmxBuffer;
39 |
40 | // object structure
41 | typedef struct _olaoutput
42 | {
43 | t_object object;
44 |
45 | void *outletDump;
46 | void *outletConnectionState;
47 |
48 | StreamingClient *client;
49 | DmxBuffer olaBuffer;
50 |
51 | t_uint8 buffer[512];
52 |
53 | t_atom_long universe;
54 |
55 | t_bool isBlackout;
56 | t_bool isConnected;
57 |
58 | } t_olaoutput;
59 |
60 |
61 | // prototypes
62 | void *olaoutput_new(t_symbol *s, long argc, t_atom *argv);
63 | void olaoutput_free(t_olaoutput* x);
64 | void olaoutput_assist(t_olaoutput *x, void *b, long io, long index, char *s);
65 |
66 | void olaoutput_list(t_olaoutput *x, t_symbol *msg, long argc, t_atom *argv);
67 | void olaoutput_int(t_olaoutput *x, t_atom_long value);
68 | void olaoutput_float(t_olaoutput *x, double dmxValue);
69 | void olaoutput_channel(t_olaoutput *x, t_symbol *msg, long argc, t_atom *argv);
70 |
71 | void olaoutput_connect(t_olaoutput* x);
72 | void olaoutput_send(t_olaoutput *x);
73 |
74 | t_max_err olaoutput_universe_set(t_olaoutput *x, t_object *attr, long argc, t_atom *argv);
75 | t_max_err olaoutput_blackout_set(t_olaoutput *x, t_object *attr, long argc, t_atom *argv);
76 |
77 | // The class structure for this plugin
78 | static t_class *olaoutput_class = NULL;
79 |
80 |
81 | // ******************************************************************************************************************
82 |
83 | /*
84 | * The entry point to this plugin. This sets up the global s_ola_output_class
85 | * object which tells MAX how to create objects of type Ola Output.
86 | */
87 | int C74_EXPORT main(void)
88 | {
89 | // turn on OLA logging
90 | ola::InitLogging(ola::OLA_LOG_WARN, ola::OLA_LOG_STDERR);
91 |
92 | common_symbols_init();
93 |
94 | t_class *c = class_new("olaoutput",
95 | (method) olaoutput_new,
96 | (method) olaoutput_free,
97 | sizeof(t_olaoutput),
98 | (method) NULL,
99 | A_GIMME,
100 | 0);
101 |
102 | class_addmethod(c, (method) olaoutput_list, "list", A_GIMME, 0);
103 | class_addmethod(c, (method) olaoutput_int, "int", A_LONG, 0);
104 | class_addmethod(c, (method) olaoutput_float, "float", A_FLOAT, 0);
105 | class_addmethod(c, (method) olaoutput_channel, "channel", A_GIMME, 0);
106 | class_addmethod(c, (method) olaoutput_connect, "connect", 0);
107 |
108 | class_addmethod(c, (method) olaoutput_assist, "assist", A_CANT, 0);
109 |
110 | CLASS_ATTR_LONG(c, "universe", 0, t_olaoutput, universe);
111 | CLASS_ATTR_ACCESSORS(c, "universe", NULL, olaoutput_universe_set);
112 | CLASS_ATTR_LABEL(c, "universe", 0, "OLA Universe");
113 | CLASS_ATTR_CATEGORY(c, "universe", 0, "Settings");
114 | CLASS_ATTR_ORDER(c, "universe", 0, "1");
115 | CLASS_ATTR_SAVE(c, "universe", 0);
116 |
117 | CLASS_ATTR_CHAR(c, "blackout", 0, t_olaoutput, isBlackout);
118 | CLASS_ATTR_ACCESSORS(c, "blackout", NULL, olaoutput_blackout_set);
119 | CLASS_ATTR_STYLE_LABEL(c, "blackout", 0, "onoff", "Blackout");
120 | CLASS_ATTR_CATEGORY(c, "blackout", 0, "Settings");
121 | CLASS_ATTR_ORDER(c, "blackout", 0, "2");
122 |
123 | class_register(CLASS_BOX, c);
124 | olaoutput_class = c;
125 |
126 | post("olaoutput Version 0.9");
127 |
128 | return 0;
129 | }
130 |
131 | // ******************************************************************************************************************
132 |
133 | /*
134 | * Create a new OlaOutput object.
135 | * @param t_symbol
136 | * @param long number of arguments
137 | * @param argv argument atoms
138 | */
139 | void *olaoutput_new(t_symbol *s, long argc, t_atom *argv)
140 | {
141 |
142 | t_olaoutput *x = (t_olaoutput*) object_alloc(olaoutput_class);
143 |
144 | if (x) {
145 |
146 | x->outletDump = outlet_new((t_object*)x, NULL);
147 | x->outletConnectionState = outlet_new((t_object*)x, NULL);
148 |
149 | x->isConnected = false;
150 | x->isBlackout = false;
151 |
152 | // connect to ola
153 | x->client = new StreamingClient();
154 |
155 | if (argc > 0 && atom_gettype(argv) == A_LONG)
156 | object_attr_setlong(x, gensym("universe"), atom_getlong(argv));
157 | else
158 | x->universe = 0;
159 |
160 | attr_args_process(x, argc, argv);
161 | }
162 |
163 | return x;
164 | }
165 |
166 |
167 |
168 | /*
169 | * Cleanup this OlaOutput object
170 | * @param t_olaoutput the object to destroy
171 | */
172 | void olaoutput_free(t_olaoutput *x)
173 | {
174 | if (x->client) {
175 | delete x->client;
176 | x->client = NULL;
177 | }
178 | }
179 |
180 |
181 |
182 | /*
183 | * To show descriptions of your object’s inlets and outlets while editing a patcher,
184 | * this method can respond to the assist message with a function that copies the text to a string.
185 | * @param t_olaoutput a pointer to a t_olaoutput struct
186 | * @param b
187 | * @param io
188 | * @param index
189 | * @param s
190 | */
191 | void olaoutput_assist(t_olaoutput *x, void *b, long io, long index, char *s)
192 | {
193 | switch (io) {
194 | case 1:
195 | strncpy_zero(s, "olaoutput", 512);
196 | break;
197 | case 2:
198 | switch (index) {
199 | case 0:
200 | strncpy_zero(s, "connection state", 512);
201 | break;
202 | case 1:
203 | strncpy_zero(s, "dump outlet", 512);
204 | break;
205 | }
206 | break;
207 | }
208 | }
209 |
210 | // ******************************************************************************************************************
211 |
212 | /*
213 | * Write a list of values to the local buffer
214 | * @param t_olaoutput a pointer to a t_olaoutput struct
215 | * @param msg the name of the message received
216 | * @param argc the number of atoms
217 | * @param argv a pointer to the head of a list of atoms
218 | */
219 | void olaoutput_list(t_olaoutput *x, t_symbol *msg, long argc, t_atom *argv)
220 | {
221 | t_atom_long dmxValue;
222 |
223 | for (int i = 0; i < argc && i < 512; i++) {
224 |
225 | switch (atom_gettype(argv+i)) {
226 | case A_LONG:
227 | dmxValue = atom_getlong(argv+i);
228 | dmxValue = std::min((t_atom_long)255, dmxValue);
229 | dmxValue = std::max((t_atom_long)0, dmxValue);
230 | x->buffer[i] = dmxValue;
231 | break;
232 |
233 | case A_FLOAT:
234 | dmxValue = (t_atom_long)floor(atom_getfloat(argv+i) + 0.5);
235 | dmxValue = std::min((t_atom_long)255, dmxValue);
236 | dmxValue = std::max((t_atom_long)0, dmxValue);
237 | x->buffer[i] = dmxValue;
238 | break;
239 |
240 | default:
241 | break;
242 | }
243 | }
244 |
245 | olaoutput_send(x);
246 | }
247 |
248 |
249 | /*
250 | * Writes a single int value to the local buffer
251 | * @param t_olaoutput a pointer to a t_olaoutput struct
252 | */
253 | void olaoutput_int(t_olaoutput *x, t_atom_long dmxValue)
254 | {
255 | dmxValue = std::min((t_atom_long)255, dmxValue);
256 | dmxValue = std::max((t_atom_long)0, dmxValue);
257 | x->buffer[0] = dmxValue;
258 |
259 | olaoutput_send(x);
260 | }
261 |
262 |
263 | /*
264 | * Write a single float value to the local buffer
265 | * @param t_olaoutput a pointer to a t_olaoutput struct
266 | */
267 | void olaoutput_float(t_olaoutput *x, double dmxValue)
268 | {
269 | olaoutput_int(x, (t_atom_long)floor(dmxValue + 0.5));
270 | }
271 |
272 |
273 |
274 | /*
275 | * Called to send data starting on a particular channel
276 | * @param t_olaoutput a pointer to a t_olaoutput struct
277 | * @param msg the name of the message received
278 | * @param argc the number of atoms
279 | * @param argv a pointer to the head of a list of atoms
280 | */
281 | void olaoutput_channel(t_olaoutput *x, t_symbol *msg, long argc, t_atom *argv)
282 | {
283 | if (atom_gettype(argv) == A_LONG) {
284 |
285 | t_atom_long channel = atom_getlong(argv);
286 |
287 | if (channel >= 1 && channel <= 512) {
288 |
289 | t_atom_long dmxValue;
290 |
291 | for (int i = 1; i < argc && i < 513; i++) {
292 |
293 | switch (atom_gettype(argv+i)) {
294 |
295 | case A_LONG:
296 | dmxValue = atom_getlong(argv+i);
297 | dmxValue = std::min((t_atom_long)255, dmxValue);
298 | dmxValue = std::max((t_atom_long)0, dmxValue);
299 | x->buffer[i+(channel-1)] = dmxValue;
300 | break;
301 |
302 | case A_FLOAT:
303 | dmxValue = (t_atom_long)floor(atom_getfloat(argv+i) + 0.5);
304 | dmxValue = std::min((t_atom_long)255, dmxValue);
305 | dmxValue = std::max((t_atom_long)0, dmxValue);
306 | x->buffer[i+(channel-1)] = dmxValue;
307 | break;
308 |
309 | default:
310 | break;
311 | }
312 | }
313 |
314 | olaoutput_send(x);
315 | return;
316 |
317 | } else {
318 | object_error((t_object*)x, "Channel must be between 1 and 512 inclusive");
319 | return;
320 | }
321 |
322 | } else {
323 | object_error((t_object*)x, "Channel must be an integer");
324 | return;
325 | }
326 |
327 | }
328 | // ******************************************************************************************************************
329 |
330 | /*
331 | * Initiates the connection to OLA
332 | * @param t_olaoutput a pointer to a t_olaoutput struct
333 | */
334 | void olaoutput_connect(t_olaoutput *x)
335 | {
336 | if (x->isConnected == false || x->client == NULL) {
337 |
338 | //initiate the connection to ola
339 | if (x->client->Setup()) {
340 |
341 | x->isConnected = true;
342 | object_post((t_object*)x, "Connected to OLA");
343 |
344 | } else {
345 |
346 | x->isConnected = false;
347 | object_post((t_object*)x, "OLA connection failed. olad must be running to send data.");
348 |
349 | }
350 | }
351 |
352 | outlet_int(x->outletConnectionState, x->isConnected);
353 | }
354 |
355 |
356 | /*
357 | * Sends data in the local buffer to OLA
358 | * @param t_olaoutput a pointer to a t_olaoutput struct
359 | */
360 | void olaoutput_send(t_olaoutput *x)
361 | {
362 | if (x->isConnected == false)
363 | olaoutput_connect(x);
364 |
365 | if (x->isBlackout)
366 | x->olaBuffer.Blackout();
367 | else
368 | x->olaBuffer.Set(x->buffer, 512);
369 |
370 | if (!x->client->SendDmx(x->universe, x->olaBuffer)) {
371 |
372 | if (x->isConnected) {
373 | x->isConnected = false;
374 | outlet_int(x->outletConnectionState, x->isConnected);
375 | object_error((t_object*)x, "Connection to OLA lost");
376 | } else {
377 | object_error((t_object*)x, "Not connected to OLA");
378 | }
379 | }
380 | }
381 |
382 | // ******************************************************************************************************************
383 |
384 | /*
385 | * Sets the value of the universe attribute
386 | * @param t_olaoutput a pointer to a t_olaoutput struct
387 | * @param attr
388 | * @param argc
389 | * @param argv
390 | */
391 | t_max_err olaoutput_universe_set(t_olaoutput *x, t_object *attr, long argc, t_atom *argv)
392 | {
393 | t_atom_long universe = atom_getlong(argv);
394 |
395 | if (universe >= 0 && universe <= 4294967295) {
396 | x->universe = universe;
397 | olaoutput_send(x);
398 | }
399 |
400 | return MAX_ERR_NONE;
401 | }
402 |
403 |
404 |
405 | /*
406 | * Sets the value of the blackout attribute
407 | * @param t_olaoutput a pointer to a t_olaoutput struct
408 | * @param attr
409 | * @param argc
410 | * @param argv
411 | */
412 | t_max_err olaoutput_blackout_set(t_olaoutput *x, t_object *attr, long argc, t_atom *argv)
413 | {
414 | t_atom_long blackout = atom_getlong(argv);
415 |
416 | if (blackout > 0)
417 | x->isBlackout = true;
418 | else
419 | x->isBlackout = false;
420 |
421 | olaoutput_send(x);
422 |
423 | return MAX_ERR_NONE;
424 | }
425 |
426 |
427 |
428 |
429 |
--------------------------------------------------------------------------------
/olaoutput/olaoutput.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 6,
6 | "minor" : 1,
7 | "revision" : 2,
8 | "architecture" : "x86"
9 | }
10 | ,
11 | "rect" : [ 447.0, 201.0, 507.0, 551.0 ],
12 | "bglocked" : 0,
13 | "openinpresentation" : 0,
14 | "default_fontsize" : 12.0,
15 | "default_fontface" : 0,
16 | "default_fontname" : "Arial",
17 | "gridonopen" : 0,
18 | "gridsize" : [ 10.0, 10.0 ],
19 | "gridsnaponopen" : 0,
20 | "statusbarvisible" : 2,
21 | "toolbarvisible" : 1,
22 | "boxanimatetime" : 200,
23 | "imprint" : 0,
24 | "enablehscroll" : 1,
25 | "enablevscroll" : 1,
26 | "devicewidth" : 0.0,
27 | "description" : "",
28 | "digest" : "",
29 | "tags" : "",
30 | "boxes" : [ {
31 | "box" : {
32 | "fontname" : "Arial",
33 | "fontsize" : 12.0,
34 | "frgb" : 0.0,
35 | "id" : "obj-31",
36 | "linecount" : 5,
37 | "maxclass" : "comment",
38 | "numinlets" : 1,
39 | "numoutlets" : 0,
40 | "patching_rect" : [ 330.0, 246.0, 171.0, 74.0 ],
41 | "text" : "OlaOutput connects to OLA automatically on loading. If you need to manually reconnect to OLA, send this message."
42 | }
43 |
44 | }
45 | , {
46 | "box" : {
47 | "fontname" : "Arial",
48 | "fontsize" : 12.0,
49 | "frgb" : 0.0,
50 | "id" : "obj-27",
51 | "linecount" : 2,
52 | "maxclass" : "comment",
53 | "numinlets" : 1,
54 | "numoutlets" : 0,
55 | "patching_rect" : [ 252.0, 435.0, 225.0, 33.0 ],
56 | "text" : "outlet for OLA connection state. 1=connected, 0=disconnected."
57 | }
58 |
59 | }
60 | , {
61 | "box" : {
62 | "fontname" : "Arial",
63 | "fontsize" : 12.0,
64 | "frgb" : 0.0,
65 | "id" : "obj-20",
66 | "linecount" : 2,
67 | "maxclass" : "comment",
68 | "numinlets" : 1,
69 | "numoutlets" : 0,
70 | "patching_rect" : [ 319.0, 198.0, 183.0, 33.0 ],
71 | "text" : "Queries for OLA connection state and outputs"
72 | }
73 |
74 | }
75 | , {
76 | "box" : {
77 | "fontname" : "Arial",
78 | "fontsize" : 12.0,
79 | "id" : "obj-12",
80 | "maxclass" : "message",
81 | "numinlets" : 2,
82 | "numoutlets" : 1,
83 | "outlettype" : [ "" ],
84 | "patching_rect" : [ 274.0, 254.0, 53.0, 18.0 ],
85 | "text" : "connect"
86 | }
87 |
88 | }
89 | , {
90 | "box" : {
91 | "fontname" : "Arial",
92 | "fontsize" : 12.0,
93 | "id" : "obj-11",
94 | "maxclass" : "message",
95 | "numinlets" : 2,
96 | "numoutlets" : 1,
97 | "outlettype" : [ "" ],
98 | "patching_rect" : [ 278.0, 201.0, 37.0, 18.0 ],
99 | "text" : "state"
100 | }
101 |
102 | }
103 | , {
104 | "box" : {
105 | "fontname" : "Arial",
106 | "fontsize" : 12.0,
107 | "id" : "obj-9",
108 | "maxclass" : "newobj",
109 | "numinlets" : 1,
110 | "numoutlets" : 0,
111 | "patching_rect" : [ 185.0, 436.0, 63.0, 20.0 ],
112 | "text" : "print state"
113 | }
114 |
115 | }
116 | , {
117 | "box" : {
118 | "fontname" : "Arial",
119 | "fontsize" : 12.0,
120 | "frgb" : 0.0,
121 | "id" : "obj-6",
122 | "maxclass" : "comment",
123 | "numinlets" : 1,
124 | "numoutlets" : 0,
125 | "patching_rect" : [ 310.0, 332.0, 175.0, 20.0 ],
126 | "text" : "2nd inlet sets current universe."
127 | }
128 |
129 | }
130 | , {
131 | "box" : {
132 | "fontname" : "Arial",
133 | "fontsize" : 12.754705,
134 | "frgb" : 0.0,
135 | "id" : "obj-2",
136 | "maxclass" : "comment",
137 | "numinlets" : 1,
138 | "numoutlets" : 0,
139 | "patching_rect" : [ 420.0, 10.0, 80.0, 21.0 ],
140 | "text" : "Version 0.8",
141 | "textcolor" : [ 0.93, 0.93, 0.97, 1.0 ],
142 | "varname" : "autohelp_top_digest[1]"
143 | }
144 |
145 | }
146 | , {
147 | "box" : {
148 | "fontface" : 1,
149 | "fontname" : "Arial",
150 | "fontsize" : 12.0,
151 | "frgb" : 0.0,
152 | "id" : "obj-29",
153 | "linecount" : 6,
154 | "maxclass" : "comment",
155 | "numinlets" : 1,
156 | "numoutlets" : 0,
157 | "patching_rect" : [ 10.0, 100.0, 126.0, 87.0 ],
158 | "text" : "OLAD MUST BE STARTED MANUALLY BEFORE THIS OBJECT WILL FUNCTION."
159 | }
160 |
161 | }
162 | , {
163 | "box" : {
164 | "fontname" : "Arial",
165 | "fontsize" : 12.0,
166 | "frgb" : 0.0,
167 | "id" : "obj-28",
168 | "linecount" : 2,
169 | "maxclass" : "comment",
170 | "numinlets" : 1,
171 | "numoutlets" : 0,
172 | "patching_rect" : [ 20.0, 468.0, 150.0, 33.0 ],
173 | "text" : "Click to launch the OLA HTML configuration page."
174 | }
175 |
176 | }
177 | , {
178 | "box" : {
179 | "fontname" : "Arial",
180 | "fontsize" : 12.0,
181 | "id" : "obj-26",
182 | "linecount" : 2,
183 | "maxclass" : "message",
184 | "numinlets" : 2,
185 | "numoutlets" : 1,
186 | "outlettype" : [ "" ],
187 | "patching_rect" : [ 20.0, 508.0, 240.0, 31.0 ],
188 | "text" : ";\rmax launchbrowser \\\"http://localhost:9090\\\""
189 | }
190 |
191 | }
192 | , {
193 | "box" : {
194 | "fontface" : 1,
195 | "fontname" : "Arial",
196 | "fontsize" : 14.0,
197 | "frgb" : 0.0,
198 | "id" : "obj-25",
199 | "linecount" : 3,
200 | "maxclass" : "comment",
201 | "numinlets" : 1,
202 | "numoutlets" : 0,
203 | "patching_rect" : [ 370.0, 486.0, 128.0, 53.0 ],
204 | "text" : "Object by Daniel Edgar and Simon Newton.",
205 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ]
206 | }
207 |
208 | }
209 | , {
210 | "box" : {
211 | "fontname" : "Arial",
212 | "fontsize" : 12.0,
213 | "frgb" : 0.0,
214 | "id" : "obj-24",
215 | "linecount" : 9,
216 | "maxclass" : "comment",
217 | "numinlets" : 1,
218 | "numoutlets" : 0,
219 | "patching_rect" : [ 10.0, 210.0, 132.0, 127.0 ],
220 | "text" : "1st inlet accepts integer list data.Values outside the range 0 to 255 will be read as 0 or 255 if they are below or above respectively.\nFloat values will be truncated."
221 | }
222 |
223 | }
224 | , {
225 | "box" : {
226 | "fontname" : "Arial",
227 | "fontsize" : 12.0,
228 | "frgb" : 0.0,
229 | "id" : "obj-23",
230 | "maxclass" : "comment",
231 | "numinlets" : 1,
232 | "numoutlets" : 0,
233 | "patching_rect" : [ 190.0, 170.0, 303.0, 20.0 ],
234 | "text" : "Toggle to send random values on the first six channels."
235 | }
236 |
237 | }
238 | , {
239 | "box" : {
240 | "id" : "obj-22",
241 | "maxclass" : "toggle",
242 | "numinlets" : 1,
243 | "numoutlets" : 1,
244 | "outlettype" : [ "int" ],
245 | "parameter_enable" : 0,
246 | "patching_rect" : [ 170.0, 170.0, 20.0, 20.0 ]
247 | }
248 |
249 | }
250 | , {
251 | "box" : {
252 | "fontname" : "Arial",
253 | "fontsize" : 12.0,
254 | "id" : "obj-21",
255 | "maxclass" : "newobj",
256 | "numinlets" : 1,
257 | "numoutlets" : 1,
258 | "outlettype" : [ "" ],
259 | "patcher" : {
260 | "fileversion" : 1,
261 | "appversion" : {
262 | "major" : 6,
263 | "minor" : 1,
264 | "revision" : 2,
265 | "architecture" : "x86"
266 | }
267 | ,
268 | "rect" : [ 25.0, 69.0, 492.0, 208.0 ],
269 | "bglocked" : 0,
270 | "openinpresentation" : 0,
271 | "default_fontsize" : 12.0,
272 | "default_fontface" : 0,
273 | "default_fontname" : "Arial",
274 | "gridonopen" : 0,
275 | "gridsize" : [ 10.0, 10.0 ],
276 | "gridsnaponopen" : 0,
277 | "statusbarvisible" : 2,
278 | "toolbarvisible" : 1,
279 | "boxanimatetime" : 200,
280 | "imprint" : 0,
281 | "enablehscroll" : 1,
282 | "enablevscroll" : 1,
283 | "devicewidth" : 0.0,
284 | "description" : "",
285 | "digest" : "",
286 | "tags" : "",
287 | "boxes" : [ {
288 | "box" : {
289 | "fontname" : "Arial",
290 | "fontsize" : 12.0,
291 | "id" : "obj-16",
292 | "maxclass" : "newobj",
293 | "numinlets" : 6,
294 | "numoutlets" : 1,
295 | "outlettype" : [ "" ],
296 | "patching_rect" : [ 10.0, 140.0, 418.5, 20.0 ],
297 | "text" : "pak i i i i i i"
298 | }
299 |
300 | }
301 | , {
302 | "box" : {
303 | "fontname" : "Arial",
304 | "fontsize" : 12.0,
305 | "id" : "obj-15",
306 | "maxclass" : "newobj",
307 | "numinlets" : 3,
308 | "numoutlets" : 2,
309 | "outlettype" : [ "", "" ],
310 | "patching_rect" : [ 410.0, 110.0, 69.0, 20.0 ],
311 | "text" : "line 0 1000"
312 | }
313 |
314 | }
315 | , {
316 | "box" : {
317 | "fontname" : "Arial",
318 | "fontsize" : 12.0,
319 | "id" : "obj-14",
320 | "maxclass" : "newobj",
321 | "numinlets" : 3,
322 | "numoutlets" : 2,
323 | "outlettype" : [ "", "" ],
324 | "patching_rect" : [ 330.0, 110.0, 69.0, 20.0 ],
325 | "text" : "line 0 1000"
326 | }
327 |
328 | }
329 | , {
330 | "box" : {
331 | "fontname" : "Arial",
332 | "fontsize" : 12.0,
333 | "id" : "obj-13",
334 | "maxclass" : "newobj",
335 | "numinlets" : 3,
336 | "numoutlets" : 2,
337 | "outlettype" : [ "", "" ],
338 | "patching_rect" : [ 250.0, 110.0, 69.0, 20.0 ],
339 | "text" : "line 0 1000"
340 | }
341 |
342 | }
343 | , {
344 | "box" : {
345 | "fontname" : "Arial",
346 | "fontsize" : 12.0,
347 | "id" : "obj-12",
348 | "maxclass" : "newobj",
349 | "numinlets" : 3,
350 | "numoutlets" : 2,
351 | "outlettype" : [ "", "" ],
352 | "patching_rect" : [ 170.0, 110.0, 69.0, 20.0 ],
353 | "text" : "line 0 1000"
354 | }
355 |
356 | }
357 | , {
358 | "box" : {
359 | "fontname" : "Arial",
360 | "fontsize" : 12.0,
361 | "id" : "obj-11",
362 | "maxclass" : "newobj",
363 | "numinlets" : 3,
364 | "numoutlets" : 2,
365 | "outlettype" : [ "", "" ],
366 | "patching_rect" : [ 90.0, 110.0, 69.0, 20.0 ],
367 | "text" : "line 0 1000"
368 | }
369 |
370 | }
371 | , {
372 | "box" : {
373 | "fontname" : "Arial",
374 | "fontsize" : 12.0,
375 | "id" : "obj-10",
376 | "maxclass" : "newobj",
377 | "numinlets" : 3,
378 | "numoutlets" : 2,
379 | "outlettype" : [ "", "" ],
380 | "patching_rect" : [ 10.0, 110.0, 69.0, 20.0 ],
381 | "text" : "line 0 1000"
382 | }
383 |
384 | }
385 | , {
386 | "box" : {
387 | "fontname" : "Arial",
388 | "fontsize" : 12.0,
389 | "id" : "obj-9",
390 | "maxclass" : "newobj",
391 | "numinlets" : 2,
392 | "numoutlets" : 1,
393 | "outlettype" : [ "int" ],
394 | "patching_rect" : [ 410.0, 80.0, 75.0, 20.0 ],
395 | "text" : "random 256"
396 | }
397 |
398 | }
399 | , {
400 | "box" : {
401 | "fontname" : "Arial",
402 | "fontsize" : 12.0,
403 | "id" : "obj-8",
404 | "maxclass" : "newobj",
405 | "numinlets" : 2,
406 | "numoutlets" : 1,
407 | "outlettype" : [ "int" ],
408 | "patching_rect" : [ 330.0, 80.0, 75.0, 20.0 ],
409 | "text" : "random 256"
410 | }
411 |
412 | }
413 | , {
414 | "box" : {
415 | "fontname" : "Arial",
416 | "fontsize" : 12.0,
417 | "id" : "obj-7",
418 | "maxclass" : "newobj",
419 | "numinlets" : 2,
420 | "numoutlets" : 1,
421 | "outlettype" : [ "int" ],
422 | "patching_rect" : [ 250.0, 80.0, 75.0, 20.0 ],
423 | "text" : "random 256"
424 | }
425 |
426 | }
427 | , {
428 | "box" : {
429 | "fontname" : "Arial",
430 | "fontsize" : 12.0,
431 | "id" : "obj-6",
432 | "maxclass" : "newobj",
433 | "numinlets" : 2,
434 | "numoutlets" : 1,
435 | "outlettype" : [ "int" ],
436 | "patching_rect" : [ 170.0, 80.0, 75.0, 20.0 ],
437 | "text" : "random 256"
438 | }
439 |
440 | }
441 | , {
442 | "box" : {
443 | "fontname" : "Arial",
444 | "fontsize" : 12.0,
445 | "id" : "obj-5",
446 | "maxclass" : "newobj",
447 | "numinlets" : 2,
448 | "numoutlets" : 1,
449 | "outlettype" : [ "int" ],
450 | "patching_rect" : [ 90.0, 80.0, 75.0, 20.0 ],
451 | "text" : "random 256"
452 | }
453 |
454 | }
455 | , {
456 | "box" : {
457 | "fontname" : "Arial",
458 | "fontsize" : 12.0,
459 | "id" : "obj-4",
460 | "maxclass" : "newobj",
461 | "numinlets" : 2,
462 | "numoutlets" : 1,
463 | "outlettype" : [ "int" ],
464 | "patching_rect" : [ 10.0, 80.0, 75.0, 20.0 ],
465 | "text" : "random 256"
466 | }
467 |
468 | }
469 | , {
470 | "box" : {
471 | "fontname" : "Arial",
472 | "fontsize" : 12.0,
473 | "id" : "obj-3",
474 | "maxclass" : "newobj",
475 | "numinlets" : 2,
476 | "numoutlets" : 1,
477 | "outlettype" : [ "bang" ],
478 | "patching_rect" : [ 220.0, 40.0, 71.0, 20.0 ],
479 | "text" : "metro 1000"
480 | }
481 |
482 | }
483 | , {
484 | "box" : {
485 | "comment" : "",
486 | "id" : "obj-2",
487 | "maxclass" : "outlet",
488 | "numinlets" : 1,
489 | "numoutlets" : 0,
490 | "patching_rect" : [ 10.0, 170.0, 25.0, 25.0 ]
491 | }
492 |
493 | }
494 | , {
495 | "box" : {
496 | "comment" : "",
497 | "id" : "obj-1",
498 | "maxclass" : "inlet",
499 | "numinlets" : 0,
500 | "numoutlets" : 1,
501 | "outlettype" : [ "int" ],
502 | "patching_rect" : [ 220.0, 10.0, 25.0, 25.0 ]
503 | }
504 |
505 | }
506 | ],
507 | "lines" : [ {
508 | "patchline" : {
509 | "destination" : [ "obj-3", 0 ],
510 | "disabled" : 0,
511 | "hidden" : 0,
512 | "source" : [ "obj-1", 0 ]
513 | }
514 |
515 | }
516 | , {
517 | "patchline" : {
518 | "destination" : [ "obj-16", 0 ],
519 | "disabled" : 0,
520 | "hidden" : 0,
521 | "source" : [ "obj-10", 0 ]
522 | }
523 |
524 | }
525 | , {
526 | "patchline" : {
527 | "destination" : [ "obj-16", 1 ],
528 | "disabled" : 0,
529 | "hidden" : 0,
530 | "source" : [ "obj-11", 0 ]
531 | }
532 |
533 | }
534 | , {
535 | "patchline" : {
536 | "destination" : [ "obj-16", 2 ],
537 | "disabled" : 0,
538 | "hidden" : 0,
539 | "source" : [ "obj-12", 0 ]
540 | }
541 |
542 | }
543 | , {
544 | "patchline" : {
545 | "destination" : [ "obj-16", 3 ],
546 | "disabled" : 0,
547 | "hidden" : 0,
548 | "source" : [ "obj-13", 0 ]
549 | }
550 |
551 | }
552 | , {
553 | "patchline" : {
554 | "destination" : [ "obj-16", 4 ],
555 | "disabled" : 0,
556 | "hidden" : 0,
557 | "source" : [ "obj-14", 0 ]
558 | }
559 |
560 | }
561 | , {
562 | "patchline" : {
563 | "destination" : [ "obj-16", 5 ],
564 | "disabled" : 0,
565 | "hidden" : 0,
566 | "source" : [ "obj-15", 0 ]
567 | }
568 |
569 | }
570 | , {
571 | "patchline" : {
572 | "destination" : [ "obj-2", 0 ],
573 | "disabled" : 0,
574 | "hidden" : 0,
575 | "source" : [ "obj-16", 0 ]
576 | }
577 |
578 | }
579 | , {
580 | "patchline" : {
581 | "destination" : [ "obj-4", 0 ],
582 | "disabled" : 0,
583 | "hidden" : 0,
584 | "source" : [ "obj-3", 0 ]
585 | }
586 |
587 | }
588 | , {
589 | "patchline" : {
590 | "destination" : [ "obj-5", 0 ],
591 | "disabled" : 0,
592 | "hidden" : 0,
593 | "source" : [ "obj-3", 0 ]
594 | }
595 |
596 | }
597 | , {
598 | "patchline" : {
599 | "destination" : [ "obj-6", 0 ],
600 | "disabled" : 0,
601 | "hidden" : 0,
602 | "source" : [ "obj-3", 0 ]
603 | }
604 |
605 | }
606 | , {
607 | "patchline" : {
608 | "destination" : [ "obj-7", 0 ],
609 | "disabled" : 0,
610 | "hidden" : 0,
611 | "source" : [ "obj-3", 0 ]
612 | }
613 |
614 | }
615 | , {
616 | "patchline" : {
617 | "destination" : [ "obj-8", 0 ],
618 | "disabled" : 0,
619 | "hidden" : 0,
620 | "source" : [ "obj-3", 0 ]
621 | }
622 |
623 | }
624 | , {
625 | "patchline" : {
626 | "destination" : [ "obj-9", 0 ],
627 | "disabled" : 0,
628 | "hidden" : 0,
629 | "source" : [ "obj-3", 0 ]
630 | }
631 |
632 | }
633 | , {
634 | "patchline" : {
635 | "destination" : [ "obj-10", 0 ],
636 | "disabled" : 0,
637 | "hidden" : 0,
638 | "source" : [ "obj-4", 0 ]
639 | }
640 |
641 | }
642 | , {
643 | "patchline" : {
644 | "destination" : [ "obj-11", 0 ],
645 | "disabled" : 0,
646 | "hidden" : 0,
647 | "source" : [ "obj-5", 0 ]
648 | }
649 |
650 | }
651 | , {
652 | "patchline" : {
653 | "destination" : [ "obj-12", 0 ],
654 | "disabled" : 0,
655 | "hidden" : 0,
656 | "source" : [ "obj-6", 0 ]
657 | }
658 |
659 | }
660 | , {
661 | "patchline" : {
662 | "destination" : [ "obj-13", 0 ],
663 | "disabled" : 0,
664 | "hidden" : 0,
665 | "source" : [ "obj-7", 0 ]
666 | }
667 |
668 | }
669 | , {
670 | "patchline" : {
671 | "destination" : [ "obj-14", 0 ],
672 | "disabled" : 0,
673 | "hidden" : 0,
674 | "source" : [ "obj-8", 0 ]
675 | }
676 |
677 | }
678 | , {
679 | "patchline" : {
680 | "destination" : [ "obj-15", 0 ],
681 | "disabled" : 0,
682 | "hidden" : 0,
683 | "source" : [ "obj-9", 0 ]
684 | }
685 |
686 | }
687 | ]
688 | }
689 | ,
690 | "patching_rect" : [ 170.0, 200.0, 85.0, 20.0 ],
691 | "saved_object_attributes" : {
692 | "default_fontface" : 0,
693 | "default_fontname" : "Arial",
694 | "default_fontsize" : 12.0,
695 | "description" : "",
696 | "digest" : "",
697 | "fontface" : 0,
698 | "fontname" : "Arial",
699 | "fontsize" : 12.0,
700 | "globalpatchername" : "",
701 | "tags" : ""
702 | }
703 | ,
704 | "text" : "p testmachine"
705 | }
706 |
707 | }
708 | , {
709 | "box" : {
710 | "fontname" : "Arial",
711 | "fontsize" : 12.0,
712 | "id" : "obj-18",
713 | "maxclass" : "number",
714 | "numinlets" : 1,
715 | "numoutlets" : 2,
716 | "outlettype" : [ "int", "bang" ],
717 | "parameter_enable" : 0,
718 | "patching_rect" : [ 440.0, 110.0, 50.0, 20.0 ]
719 | }
720 |
721 | }
722 | , {
723 | "box" : {
724 | "fontname" : "Arial",
725 | "fontsize" : 12.0,
726 | "id" : "obj-19",
727 | "maxclass" : "number",
728 | "numinlets" : 1,
729 | "numoutlets" : 2,
730 | "outlettype" : [ "int", "bang" ],
731 | "parameter_enable" : 0,
732 | "patching_rect" : [ 380.0, 110.0, 50.0, 20.0 ]
733 | }
734 |
735 | }
736 | , {
737 | "box" : {
738 | "fontname" : "Arial",
739 | "fontsize" : 12.0,
740 | "id" : "obj-16",
741 | "maxclass" : "number",
742 | "numinlets" : 1,
743 | "numoutlets" : 2,
744 | "outlettype" : [ "int", "bang" ],
745 | "parameter_enable" : 0,
746 | "patching_rect" : [ 320.0, 110.0, 50.0, 20.0 ]
747 | }
748 |
749 | }
750 | , {
751 | "box" : {
752 | "fontname" : "Arial",
753 | "fontsize" : 12.0,
754 | "id" : "obj-17",
755 | "maxclass" : "number",
756 | "numinlets" : 1,
757 | "numoutlets" : 2,
758 | "outlettype" : [ "int", "bang" ],
759 | "parameter_enable" : 0,
760 | "patching_rect" : [ 260.0, 110.0, 50.0, 20.0 ]
761 | }
762 |
763 | }
764 | , {
765 | "box" : {
766 | "fontname" : "Arial",
767 | "fontsize" : 12.0,
768 | "id" : "obj-15",
769 | "maxclass" : "newobj",
770 | "numinlets" : 6,
771 | "numoutlets" : 1,
772 | "outlettype" : [ "" ],
773 | "patching_rect" : [ 140.0, 140.0, 318.5, 20.0 ],
774 | "text" : "pak i i i i i i"
775 | }
776 |
777 | }
778 | , {
779 | "box" : {
780 | "fontname" : "Arial",
781 | "fontsize" : 12.0,
782 | "id" : "obj-14",
783 | "maxclass" : "number",
784 | "numinlets" : 1,
785 | "numoutlets" : 2,
786 | "outlettype" : [ "int", "bang" ],
787 | "parameter_enable" : 0,
788 | "patching_rect" : [ 200.0, 110.0, 50.0, 20.0 ]
789 | }
790 |
791 | }
792 | , {
793 | "box" : {
794 | "fontname" : "Arial",
795 | "fontsize" : 12.0,
796 | "id" : "obj-13",
797 | "maxclass" : "number",
798 | "numinlets" : 1,
799 | "numoutlets" : 2,
800 | "outlettype" : [ "int", "bang" ],
801 | "parameter_enable" : 0,
802 | "patching_rect" : [ 140.0, 110.0, 50.0, 20.0 ]
803 | }
804 |
805 | }
806 | , {
807 | "box" : {
808 | "fontname" : "Arial",
809 | "fontsize" : 12.0,
810 | "frgb" : 0.0,
811 | "id" : "obj-10",
812 | "maxclass" : "comment",
813 | "numinlets" : 1,
814 | "numoutlets" : 0,
815 | "patching_rect" : [ 230.0, 395.0, 257.0, 20.0 ],
816 | "text" : "Argument sets initial universe (otherwise 1)."
817 | }
818 |
819 | }
820 | , {
821 | "box" : {
822 | "fontname" : "Arial",
823 | "fontsize" : 12.0,
824 | "id" : "obj-8",
825 | "maxclass" : "number",
826 | "numinlets" : 1,
827 | "numoutlets" : 2,
828 | "outlettype" : [ "int", "bang" ],
829 | "parameter_enable" : 0,
830 | "patching_rect" : [ 257.0, 333.0, 50.0, 20.0 ]
831 | }
832 |
833 | }
834 | , {
835 | "box" : {
836 | "fontface" : 3,
837 | "fontname" : "Arial",
838 | "fontsize" : 20.871338,
839 | "frgb" : 0.0,
840 | "id" : "obj-3",
841 | "maxclass" : "comment",
842 | "numinlets" : 1,
843 | "numoutlets" : 0,
844 | "patching_rect" : [ 10.0, 10.0, 130.0, 30.0 ],
845 | "text" : "olaoutput",
846 | "textcolor" : [ 0.93, 0.93, 0.97, 1.0 ],
847 | "varname" : "autohelp_top_title"
848 | }
849 |
850 | }
851 | , {
852 | "box" : {
853 | "fontname" : "Arial",
854 | "fontsize" : 12.754705,
855 | "frgb" : 0.0,
856 | "id" : "obj-4",
857 | "maxclass" : "comment",
858 | "numinlets" : 1,
859 | "numoutlets" : 0,
860 | "patching_rect" : [ 10.0, 38.0, 485.0, 21.0 ],
861 | "text" : "Send DMX data to OLA (Open Lighting Architecture)",
862 | "textcolor" : [ 0.93, 0.93, 0.97, 1.0 ],
863 | "varname" : "autohelp_top_digest"
864 | }
865 |
866 | }
867 | , {
868 | "box" : {
869 | "fontname" : "Arial",
870 | "fontsize" : 11.595187,
871 | "frgb" : 0.0,
872 | "id" : "obj-5",
873 | "linecount" : 2,
874 | "maxclass" : "comment",
875 | "numinlets" : 1,
876 | "numoutlets" : 0,
877 | "patching_rect" : [ 10.0, 60.0, 493.0, 32.0 ],
878 | "text" : "olaoutput sends recieves a list of integers in the range 0-255 and sends them to OLA for transmission via IP or hardware. NOTE: olaoutput .8 requires OLA .8.28 or above",
879 | "varname" : "autohelp_top_description"
880 | }
881 |
882 | }
883 | , {
884 | "box" : {
885 | "color" : [ 0.945098, 0.913725, 0.407843, 1.0 ],
886 | "fontname" : "Arial",
887 | "fontsize" : 12.0,
888 | "id" : "obj-1",
889 | "maxclass" : "newobj",
890 | "numinlets" : 2,
891 | "numoutlets" : 1,
892 | "outlettype" : [ "int" ],
893 | "patching_rect" : [ 140.0, 395.0, 70.0, 20.0 ],
894 | "text" : "olaoutput 0"
895 | }
896 |
897 | }
898 | , {
899 | "box" : {
900 | "background" : 1,
901 | "grad1" : [ 0.27, 0.35, 0.47, 1.0 ],
902 | "grad2" : [ 0.85, 0.85, 0.85, 1.0 ],
903 | "id" : "obj-30",
904 | "maxclass" : "panel",
905 | "mode" : 1,
906 | "numinlets" : 1,
907 | "numoutlets" : 0,
908 | "patching_rect" : [ 370.0, 483.0, 130.0, 60.0 ],
909 | "varname" : "autohelp_top_panel[1]"
910 | }
911 |
912 | }
913 | , {
914 | "box" : {
915 | "background" : 1,
916 | "grad1" : [ 0.27, 0.35, 0.47, 1.0 ],
917 | "grad2" : [ 0.85, 0.85, 0.85, 1.0 ],
918 | "id" : "obj-7",
919 | "maxclass" : "panel",
920 | "mode" : 1,
921 | "numinlets" : 1,
922 | "numoutlets" : 0,
923 | "patching_rect" : [ 5.0, 7.0, 495.0, 52.0 ],
924 | "varname" : "autohelp_top_panel"
925 | }
926 |
927 | }
928 | ],
929 | "lines" : [ {
930 | "patchline" : {
931 | "destination" : [ "obj-9", 0 ],
932 | "disabled" : 0,
933 | "hidden" : 0,
934 | "source" : [ "obj-1", 0 ]
935 | }
936 |
937 | }
938 | , {
939 | "patchline" : {
940 | "destination" : [ "obj-1", 0 ],
941 | "disabled" : 0,
942 | "hidden" : 0,
943 | "source" : [ "obj-11", 0 ]
944 | }
945 |
946 | }
947 | , {
948 | "patchline" : {
949 | "destination" : [ "obj-1", 0 ],
950 | "disabled" : 0,
951 | "hidden" : 0,
952 | "source" : [ "obj-12", 0 ]
953 | }
954 |
955 | }
956 | , {
957 | "patchline" : {
958 | "destination" : [ "obj-15", 0 ],
959 | "disabled" : 0,
960 | "hidden" : 0,
961 | "source" : [ "obj-13", 0 ]
962 | }
963 |
964 | }
965 | , {
966 | "patchline" : {
967 | "destination" : [ "obj-15", 1 ],
968 | "disabled" : 0,
969 | "hidden" : 0,
970 | "source" : [ "obj-14", 0 ]
971 | }
972 |
973 | }
974 | , {
975 | "patchline" : {
976 | "destination" : [ "obj-1", 0 ],
977 | "disabled" : 0,
978 | "hidden" : 0,
979 | "source" : [ "obj-15", 0 ]
980 | }
981 |
982 | }
983 | , {
984 | "patchline" : {
985 | "destination" : [ "obj-15", 3 ],
986 | "disabled" : 0,
987 | "hidden" : 0,
988 | "source" : [ "obj-16", 0 ]
989 | }
990 |
991 | }
992 | , {
993 | "patchline" : {
994 | "destination" : [ "obj-15", 2 ],
995 | "disabled" : 0,
996 | "hidden" : 0,
997 | "source" : [ "obj-17", 0 ]
998 | }
999 |
1000 | }
1001 | , {
1002 | "patchline" : {
1003 | "destination" : [ "obj-15", 5 ],
1004 | "disabled" : 0,
1005 | "hidden" : 0,
1006 | "source" : [ "obj-18", 0 ]
1007 | }
1008 |
1009 | }
1010 | , {
1011 | "patchline" : {
1012 | "destination" : [ "obj-15", 4 ],
1013 | "disabled" : 0,
1014 | "hidden" : 0,
1015 | "source" : [ "obj-19", 0 ]
1016 | }
1017 |
1018 | }
1019 | , {
1020 | "patchline" : {
1021 | "destination" : [ "obj-1", 0 ],
1022 | "disabled" : 0,
1023 | "hidden" : 0,
1024 | "source" : [ "obj-21", 0 ]
1025 | }
1026 |
1027 | }
1028 | , {
1029 | "patchline" : {
1030 | "destination" : [ "obj-21", 0 ],
1031 | "disabled" : 0,
1032 | "hidden" : 0,
1033 | "source" : [ "obj-22", 0 ]
1034 | }
1035 |
1036 | }
1037 | , {
1038 | "patchline" : {
1039 | "destination" : [ "obj-1", 1 ],
1040 | "disabled" : 0,
1041 | "hidden" : 0,
1042 | "source" : [ "obj-8", 0 ]
1043 | }
1044 |
1045 | }
1046 | ],
1047 | "dependency_cache" : [ {
1048 | "name" : "OLAOutput.mxo",
1049 | "type" : "iLaX"
1050 | }
1051 | ]
1052 | }
1053 |
1054 | }
1055 |
--------------------------------------------------------------------------------