beta
cables is under heavy development.
There might be one or another bug, please let us know about it!
cables DocumentationHow To UseWorking with filesKeyboard ShortcutsUser Interface WalkthroughBeginner TutorialBeginner 1: Drawing A CircleBeginner 2: TransformationsBeginner 3: ColorMore TransformationsintermediateImage CompositionsPost-Processing 3D Scenescommunicationcables APICommunication with an Arduino via SerialCommunicating with Arduino over MQTTExporting And EmbeddingHow to serve files externally and fix CORS headersEmbedding PatchesExternal triggers / functionsEmbedding PatchesPreviewing / uploading exported cables patchescoding opsCreating AttachmentsGeneral op/Port CallbacksPortsDynamic PortsArray PortsBoolean portsInteger Number PortsObject PortsString portsTrigger PortsFloating Point Number PortsGUI/UI attributesHello Op - Part 1LibrariesDeveloping OpsGuidelinesObject PortsWriting ShadersWeb Audio Op DevelopmentHTML and CSS in cablesLightingLightsShadowsWorking with audioBasic Audio SetupWorking with EffectsReal-Time Audio Analyzation & Audio VisualizationOffline Audio Visualization & AnalyzationFAQEmbeddingHow to integrate my cables patch into my CMS (webflow/wix/squarespace/...)?How to remove grey rectangles on touch (mobile)?Why doesn't the DownloadTexture op work on iOS?How to disable page scrolling on mobile?Mobile tippsTransparent CanvasFeatures and SupportWill there be support for (animated) GIFs?Hot to report a bug in cablesGeneral questionsLicences and paymentWhat licence do i need to use cables?Will I have to pay for it in the future?How is my work licenced when using cables?Does cables support midi and OSC?ShadertoyTechnical questionsUI / EditorGuide to VR in cablesWebGL1 and WebGL2

Object Ports

Object ports can accept any kind of object, e.g.:

{
  'foo': 'bar',
  'baz': 123
}

These objects can be as complex as necessary.

Every op using object ports must regulate which ports it can link to on its own to make sure there are no incompatible connections. A simple way to do this when working with JavaScript classes is the following:

var port = op.inObject("MonoSynth");
port.shouldLink = function() {
  if(p1 == this && p2 instanceof MonoSynth) return true;
    if(p2 == this && p1 instanceof MonoSynth) return true;
    return false; // no MonoSynth object
};

This way when trying to connect another port with this port it will be checked if the object on the other port is of type MonoSynth.

If you don’t implement the shouldLink method in your port every object-port can connect to it, which will most likely lead to errors.

TODO: Explain how to set the rejection message


help cables get better and edit this file on github