//Connect components to eachother - called in audio engine public void createConnection(CoreComponent input, CoreComponent output, CoreSocketCasing inputSocket, CoreSocketCasing outputSocket) { if (inputSocket is AudioInputSocketCasing && outputSocket is AudioOutputSocketCasing) { AudioSocketComponent inSocComp = audioInputs[inputSocket.getSocketNum()]; AudioSocketComponent outSocComp = output.io.audioOutputs[outputSocket.getSocketNum()]; inSocComp.connect(outSocComp); inSocComp.setSocketNum(inputSocket.getSocketNum()); outSocComp.connect(inSocComp); outSocComp.setSocketNum(outputSocket.getSocketNum()); } else if (inputSocket is DataInputSocketCasing && outputSocket is DataOutputSocketCasing) { DataSocketComponent inSocComp = dataInputs[inputSocket.getSocketNum()]; DataSocketComponent outSocComp = output.io.dataOutputs[outputSocket.getSocketNum()]; DataSocketCasing dataInputSocket = inputSocket as DataSocketCasing; DataSocketCasing dataOutputSocket = outputSocket as DataSocketCasing; inSocComp.connect(outSocComp); inSocComp.setSocketNum(dataInputSocket.getSocketNum()); inSocComp.setControlNum(dataInputSocket.getControlNum()); outSocComp.connect(inSocComp); outSocComp.setSocketNum(dataOutputSocket.getSocketNum()); outSocComp.setControlNum(dataOutputSocket.getControlNum()); } }
//Push the data from to the next block public void push() { AudioSocketComponent connectedAudioSocket = connectedSocket as AudioSocketComponent; if (connectedAudioSocket != null) { connectedAudioSocket.buffer = buffer; } }
protected override void processBuffer() { bool firstConnectedSocketFound = false; float[] output = io.audioOutputs[0].getBuffer(); if (output != null) { for (int i = 0; i < io.audioInputs.Count; i++) { AudioSocketComponent input = io.audioInputs[i]; float[] tempBuffer = input.getBuffer(); if (tempBuffer != null) { if (!firstConnectedSocketFound) { firstConnectedSocketFound = true; tempBuffer.CopyTo(output, 0); for (int n = 0; n < bufferLength; n++) { output[n] *= channelVolumes[i]; } } else { for (int n = 0; n < bufferLength; n++) { output[n] += tempBuffer[n] * channelVolumes[i]; } } } } for (int n = 0; n < bufferLength; n++) { output[n] *= outputVolume; } if (!firstConnectedSocketFound) { for (int n = 0; n < bufferLength; n++) { output[n] = 0; } } io.audioOutputs[0].setBuffer(output); } io.audioOutputs[0].push(); }
public float[] getBuffer() { AudioSocketComponent connectedAudioSocket = connectedSocket as AudioSocketComponent; if (connectedAudioSocket != null) { return(buffer); } else { return(null); } }