Go bindings for Jack Audio Connection Kit
Go C Makefile
Switch branches/tags
Nothing to show
Clone or download
xthexder Merge pull request #11 from andrepxx/master
Modifications to make this work better under Windows.
Latest commit 62cc22f Jun 16, 2018
Permalink
Failed to load latest commit information.
example
.gitignore
LICENSE
README.md
callbacks.go
errno.h
errors.go
jack.go Modifications to make this work better under Windows. Jun 12, 2018

README.md

go-jack GoDoc

Go bindings for Jack Audio Connection Kit

Usage

For a working passthrough example see example/passthrough.go

Import the package:

import "github.com/xthexder/go-jack"

Connect to an existing jack server:

client, _ := jack.ClientOpen("Example Client", jack.NoStartServer)
if client == nil {
	fmt.Println("Could not connect to jack server.")
	return
}
defer client.Close()

Add a processing callback:

func process(nframes uint32) int {
	// Do processing here
	return 0
}

/* ... */

if code := client.SetProcessCallback(process); code != 0 {
	fmt.Println("Failed to set process callback.")
	return
}

Activate the client:

if code := client.Activate(); code != 0 {
	fmt.Println("Failed to activate client.")
	return
}

Add an output port:

port := client.PortRegister("out_1", jack.DEFAULT_AUDIO_TYPE, jack.PortIsOutput, 0)

Output a sine wave:

var Port *jack.Port

func process(nframes uint32) int {
	samples := Port.GetBuffer(nframes)
	nsamples := float64(len(samples))
	for i := range samples {
		samples[i] = jack.AudioSample(math.Sin(float64(i)*math.Pi*20/nsamples) / 2)
	}
	return 0
}

Implemented Bindings

  • jack_client_t jack_client_open(client_name, options, *status)
  • int jack_client_close()
  • int jack_client_name_size()
  • char* jack_get_client_name(client)
  • jack_nframes_t jack_get_sample_rate(client)
  • void jack_on_shutdown(client, callback, arg)
  • int jack_set_process_callback(client, callback, arg)
  • jack_port_t jack_port_register(client, name, type, flags, buffer_size)
  • int jack_port_unregister(client, port)
  • void* jack_port_get_buffer(port, nframes)
  • int jack_midi_event_get(event, port_buffer, event_index)
  • void jack_midi_clear_buffer(port_buffer)
  • int jack_midi_event_write(port_buffer, time, data, data_size)
  • void jack_set_error_function(callback)
  • void jack_set_info_function(callback)

See Official Jack API for detailed documentation on each of these functions.