SALSA LipSync Logo

SALSA Code Examples


Salsa is distributed as compiled dll's so you can write code for Salsa in your favorite unity supported language.
Include the SALSA namespace at the top of your script before you can interact with SALSA programmatically.

C#:

using CrazyMinnow.SALSA; // Import the SALSA namespace so you can refer to SALSA classes by name
 
JavaScript:
import CrazyMinnow.SALSA; // Import the SALSA namespace so you can refer to SALSA classes by name

Create a public Salsa2D or Salsa3D variable in your script:

C#:
public Salsa2D salsa;
public Salsa3D salsa;
 
JavaScript:
public var salsa : Salsa2D; 
public var salsa : Salsa3D;

 


Use GetComponent to get reference to a Salsa2D or Salsa3D instance just like you would any other component:

C#:
salsa = GameObject.Find("GameObjectWithSalsaComponent").GetComponent();
salsa = GameObject.Find("GameObjectWithSalsaComponent").GetComponent();
 
JavaScript:
salsa = GameObject.Find("GameObjectWithSalsaComponent").GetComponent();
salsa = GameObject.Find("GameObjectWithSalsaComponent").GetComponent();

 


Use FindObjectOfType or FindObjectsOfType to get reference to one or more Salsa2D or Salsa3D instances just like you would any other component:

C#:
salsa = (Salsa2D)FindObjectOfType(typeof(Salsa2D));
salsa = (Salsa3D)FindObjectOfType(typeof(Salsa3D));
Salsa2D[] salsa = (Salsa2D)FindObjectsOfType(typeof(Salsa2D));
Salsa3D[] salsa = (Salsa3D)FindObjectsOfType(typeof(Salsa3D));
 
JavaScript:
salsa = FindObjectOfType(Salsa2D);
salsa = FindObjectOfType(Salsa3D);
salsa : Salsa2D[] = FindObjectsOfType(Salsa2D);
salsa : Salsa3D[] = FindObjectsOfType(Salsa3D);

 


Once you have reference to your Salsa2D or Salsa3D instance, you can use that instance to access the properties and public functions detailed above. Examples are listed below, and you can see the CM_Salsa2D_Functions and CM_Salsa3D_Functions scripts in Crazy Minnow Studio/Examples/Scripts for documented code examples. Both C# and JavaScript examples are included.

C# (Salsa2D Syntax example only):
using UnityEngine;
using System.Collections;

using CrazyMinnow.SALSA; // Import SALSA from the CrazyMinnow namespace

public class YourScript : MonoBehavior 
{
	public Salsa2D salsa; // Public reference to Salsa2D
	void Start()
	{
		// Get reference to the Salsa2D component
		salsa = GameObject.Find("GameObjectWithSalsaComponent").GetComponent();

		salsa.SetAudioClip(SOMEAUDIOCLIP); // Set the SALSA audio clip	

 		salsa.Play(); // Play the audio clip
		salsa.Pause(); // Pause the audio clip
		salsa.Stop(); // Stop the audio clip
		
		salsa.saySmallTrigger = 0.001f; // Adjust the small trigger value
		salsa.sayMediumTrigger = 0.002f; // Adjust the medium trigger value
		salsa.sayLargeTrigger = 0.004f; // Adjust the large trigger value

		salsa.broadcast = true; // Set broadcasting to true
		salsa.broadcastReceiversCount = 1; // Setup one receiver slot
		salsa.broadcastReceivers = new GameObject[salsa.broadcastReceiversCount]; // Setup array length
		salsa.broadcastReceivers[0] = SOMEGAMEOBJECT; // Bind some game obejct to the receiver
		salsa.propagateToChildren = true; // Propagate broadcasts to SOMEGAMEOBJECT's children
		
		salsa.audioUpdateDelay = 0.08f; // The duration between audio sample updates

	}
}
 
C# (Salsa3D Syntax example only):
using UnityEngine;
using System.Collections;

using CrazyMinnow.SALSA; // Import SALSA from the CrazyMinnow namespace

public class YourScript : MonoBehavior 
{
	public Salsa3D salsa; // Public reference to Salsa2D

	void Start()
	{
		// Get reference to the Salsa3D component
		salsa = GameObject.Find("GameObjectWithSalsaComponent").GetComponent();

		salsa.SetAudioClip(SOMEAUDIOCLIP); // Set the SALSA audio clip	

 		salsa.Play(); // Play the audio clip
		salsa.Pause(); // Pause the audio clip
		salsa.Stop(); // Stop the audio clip
		
		salsa.saySmallTrigger = 0.001f; // Adjust the small trigger value
		salsa.sayMediumTrigger = 0.002f; // Adjust the medium trigger value
		salsa.sayLargeTrigger = 0.004f; // Adjust the large trigger value

		salsa.broadcast = true; // Set broadcasting to true
		salsa.broadcastReceiversCount = 1; // Setup one receiver slot
		salsa.broadcastReceivers = new GameObject[salsa.broadcastReceiversCount]; // Setup array length
		salsa.broadcastReceivers[0] = SOMEGAMEOBJECT; // Bind some game obejct to the receiver
		salsa.propagateToChildren = true; // Propagate broadcasts to SOMEGAMEOBJECT's children
		
		salsa.audioUpdateDelay = 0.08f; // The duration between audio sample updates

		salsa.blendSpeed = 10; // Shape key transition duration
		salsa.SetRangeOfMotion(85); // The percentage of total range of motion allowed

	}
}
 
JavaScript (Salsa2D Syntax example only):
#pragma strict
import CrazyMinnow.SALSA; // Import SALSA from the CrazyMinnow namespace

public class YourScript extends MoonoBehavior {
	public var salsa : CrazyMinnow.SALSA.Salsa2D; // Public reference to Salsa2D

	function Start() {
		// Get reference to the Salsa2D component
		salsa = GameObject.Find("GameObjectWithSalsaComponent").GetComponent(Salsa2D);

		salsa.SetAudioClip(SOMEAUDIOCLIP); // Set the SALSA audio clip	

		salsa.Play(); // Play the audio clip
		salsa.Pause(); // Pause the audio clip
		salsa.Stop(); // Stop the audio clip
			
		salsa.saySmallTrigger = 0.001; // Adjust the small trigger value
		salsa.sayMediumTrigger = 0.002; // Adjust the medium trigger value
		salsa.sayLargeTrigger = 0.004; // Adjust the large trigger value

		salsa.broadcast = true; // Set broadcasting to true
		salsa.broadcastReceiversCount = 1; // Setup one receiver slot
		salsa.broadcastReceivers = new GameObject[salsa.broadcastReceiversCount]; // Setup array length
		salsa.broadcastReceivers[0] = SOMEGAMEOBJECT; // Bind some game obejct to the receiver
		salsa.propagateToChildren = true; // Propagate broadcasts to SOMEGAMEOBJECT's children

		salsa.audioUpdateDelay = 0.08; // The duration between audio sample updates
	}
}
 
JavaScript (Salsa3D Syntax example only):
#pragma strict
import CrazyMinnow.SALSA; // Import SALSA from the CrazyMinnow namespace

public class YourScript extends MoonoBehavior {
	public var salsa : CrazyMinnow.SALSA.Salsa3D; // Public reference to Salsa3D

	function Start() {
		// Get reference to the Salsa3D component
		salsa = GameObject.Find("GameObjectWithSalsaComponent").GetComponent(Salsa3D);

		salsa.SetAudioClip(SOMEAUDIOCLIP); // Set the SALSA audio clip	

		salsa.Play(); // Play the audio clip
		salsa.Pause(); // Pause the audio clip
		salsa.Stop(); // Stop the audio clip
			
		salsa.saySmallTrigger = 0.001; // Adjust the small trigger value
		salsa.sayMediumTrigger = 0.002; // Adjust the medium trigger value
		salsa.sayLargeTrigger = 0.004; // Adjust the large trigger value

		salsa.broadcast = true; // Set broadcasting to true
		salsa.broadcastReceiversCount = 1; // Setup one receiver slot
		salsa.broadcastReceivers = new GameObject[salsa.broadcastReceiversCount]; // Setup array length
		salsa.broadcastReceivers[0] = SOMEGAMEOBJECT; // Bind some game obejct to the receiver
		salsa.propagateToChildren = true; // Propagate broadcasts to SOMEGAMEOBJECT's children

		salsa.audioUpdateDelay = 0.08; // The duration between audio sample updates

		salsa.blendSpeed = 10; // Shape key transition duration
		salsa.SetRangeOfMotion(85); // The percentage of total range of motion allowed

	}
}

 

 


 
SALSA Lip-Sync Unity Asset Logo