[![Go Reference](https://pkg.go.dev/badge/github.com/onyx-and-iris/voicemeeter-api-go.svg)](https://pkg.go.dev/github.com/onyx-and-iris/voicemeeter-api-go)
# A Go Wrapper for Voicemeeter API
This package offers a Go interface for the Voicemeeter Remote C API.
For an outline of past/future changes refer to: [CHANGELOG](CHANGELOG.md)
## Tested against
- Basic 1.0.8.4
- Banana 2.0.6.4
- Potato 3.0.2.4
## Requirements
- [Voicemeeter](https://voicemeeter.com/)
- Go 1.18 or greater
## Installation
#### GO GET
Install voicemeeter-api-go package from your console to download the latest version.
`go get github.com/onyx-and-iris/voicemeeter-api-go`
or add it to your `go.mod` file.
## `Use`
#### `main.go`
```go
package main
import (
"fmt"
"log"
"github.com/onyx-and-iris/voicemeeter-api-go"
)
func main() {
kindId := "banana"
vm, err := voicemeeter.NewRemote(kindId)
if err != nil {
log.Fatal(err)
}
err = vm.Login()
if err != nil {
log.Fatal(err)
}
defer vm.Logout()
vm.Strip[0].SetLabel("rode podmic")
vm.Strip[0].SetMute(true)
fmt.Printf("Strip 0 (%s) mute was set to %v\n", vm.Strip[0].GetLabel(), vm.Strip[0].GetMute())
}
```
## `kindId`
Pass the kind of Voicemeeter as an argument. kindId may be:
- `basic`
- `banana`
- `potato`
## `Remote Type`
#### `vm.Strip`
[]t_strip slice containing both physicalStrip and virtualStrip types
#### `vm.Bus`
[]t_bus slice containing both physicalBus and virtualBus types
#### `vm.Button`
[]button slice containing button types, one for each macrobutton
#### `vm.Command`
pointer to command type, represents action type functions
#### `vm.Vban`
pointer to vban type, containing both vbanInStream and vbanOutStream slices
#### `vm.Device`
pointer to device type, represents physical input/output hardware devices
#### `vm.Recorder`
pointer to recorder type, represents the recorder
#### `vm.Midi`
pointer to midi type, represents a connected midi device
#### `vm.Type()`
returns the type of Voicemeeter as a string
#### `vm.Version()`
returns the version of Voicemeeter as a string
#### `vm.GetFloat()`
gets a float parameter value
#### `vm.SetFloat(, )`
sets a float parameter value eg. vm.SetFloat("strip[0].mute", 1)
#### `vm.GetString()`
gets a string parameter value
#### `vm.SetString(, )`
sets a string parameter value eg. vm.SetString("strip[0].label", "podmic")
#### `vm.SendText(