Example #1
0
func (client *Client) PortRegister(portName, portType string, flags, bufferSize uint64) *Port {
	cname := C.CString(portName)
	defer C.free(unsafe.Pointer(cname))
	ctype := C.CString(portType)
	defer C.free(unsafe.Pointer(ctype))

	cport := C.jack_port_register(client.handler, cname, ctype, C.ulong(flags), C.ulong(bufferSize))
	if cport != nil {
		return &Port{cport}
	}
	return nil
}
Example #2
0
// New: Create a new jack client with the given name and the given number
// of input and output ports.
func New(name string, numInputs, numOutputs int) (*JackClient, error) {
	jc := new(JackClient)
	jc.name = name

	// Create jack client.
	jc.client = C.wrap_jack_client_open(C.CString(name))
	if jc.client == nil {
		return nil, errors.New("Failed to initialize jack client.")
	}

	// Create ports.
	for i := 0; i < numInputs; i++ {
		port := C.jack_port_register(
			jc.client,
			C.CString(fmt.Sprintf("in_%d", i)),
			C.CString(C.JACK_DEFAULT_AUDIO_TYPE),
			C.JackPortIsInput, 0)
		jc.jackIn = append(jc.jackIn, port)
	}

	for i := 0; i < numOutputs; i++ {
		port := C.jack_port_register(
			jc.client,
			C.CString(fmt.Sprintf("out_%d", i)),
			C.CString(C.JACK_DEFAULT_AUDIO_TYPE),
			C.JackPortIsOutput, 0)
		jc.jackOut = append(jc.jackOut, port)
	}

	// Create buffers.
	jc.bufIn = make([][]float32, numInputs)
	jc.bufOut = make([][]float32, numOutputs)

	// Register jack callback.
	C.register_callback(jc.client, unsafe.Pointer(jc))
	C.jack_activate(jc.client)

	// Done.
	return jc, nil
}
Example #3
0
func (this *Client) NewPort(name string, portType string, flags PortFlags, bufferSize int) (*Port, error) {
	nameCStr := C.CString(name)
	portTypeCStr := C.CString(portType)
	defer C.free(unsafe.Pointer(nameCStr))
	defer C.free(unsafe.Pointer(portTypeCStr))
	jackPort := C.jack_port_register(this.jackClient, nameCStr, portTypeCStr, C.ulong(flags), C.ulong(bufferSize))
	if jackPort == nil {
		return nil, errors.New("jack_port_register failed for port '" + name + "', client '" + this.GetName() + "'")
	}

	port := &Port{client: this, jackPort: jackPort}
	this.ports = append(this.ports, port)
	return port, nil
}