func (e *Encoder) ID3TagSetGenre(value string) error {
	cstr := C.CString(value)
	defer C.free(unsafe.Pointer(cstr))
	errcode := C.id3tag_set_genre(e.lgf, cstr)
	switch errcode {
	case -1:
		return fmt.Errorf("id3 genre number out of range")
	case -2:
		return fmt.Errorf("id3 v1 tag set to 'other'")
	default:
		return nil
	}
}
ID3TagSetGenre sets id3 genre
package lame
import "C"
import (
	"fmt"
	"unsafe"
)
const (
	tagBufferSizeInitial = 32768
)
func (e *Encoder) InitID3Tag() {
	C.id3tag_init(e.lgf)
}
func (e *Encoder) ID3TagAddV2() {
	C.id3tag_add_v2(e.lgf)
}
func (e *Encoder) ID3TagV1Only() {
	C.id3tag_v1_only(e.lgf)
}
func (e *Encoder) ID3TagV2Only() {
	C.id3tag_v2_only(e.lgf)
}
func (e *Encoder) ID3TagSpaceV1() {
	C.id3tag_space_v1(e.lgf)
}
func (e *Encoder) ID3TagPadV2() {
	C.id3tag_pad_v2(e.lgf)
}
func (e *Encoder) ID3TagSetPad(n int) {
	C.id3tag_set_pad(e.lgf, C.size_t(n))
}
func (e *Encoder) ID3TagSetTitle(value string) {
	cstr := C.CString(value)
	defer C.free(unsafe.Pointer(cstr))
	C.id3tag_set_title(e.lgf, cstr)
}
func (e *Encoder) ID3TagSetArtist(value string) {
	cstr := C.CString(value)
	defer C.free(unsafe.Pointer(cstr))
	C.id3tag_set_artist(e.lgf, cstr)
}
func (e *Encoder) ID3TagSetAlbum(value string) {
	cstr := C.CString(value)
	defer C.free(unsafe.Pointer(cstr))
	C.id3tag_set_album(e.lgf, cstr)
}
func (e *Encoder) ID3TagSetYear(value string) {
	cstr := C.CString(value)
	defer C.free(unsafe.Pointer(cstr))
	C.id3tag_set_year(e.lgf, cstr)
}
func (e *Encoder) ID3TagSetComment(value string) {
	cstr := C.CString(value)
	defer C.free(unsafe.Pointer(cstr))
	C.id3tag_set_comment(e.lgf, cstr)
}
func (e *Encoder) ID3TagSetTrack(value string) error {
	cstr := C.CString(value)
	defer C.free(unsafe.Pointer(cstr))
	errcode := C.id3tag_set_track(e.lgf, cstr)
	if errcode == -1 {
		return fmt.Errorf("id3 track value out of range")
	}
	return nil
}