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 }
// 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 }
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 }