mirror of
https://github.com/onyx-and-iris/voicemeeter.git
synced 2024-11-15 17:40:51 +00:00
76e6d3cba7
Kind fields/methods now exported vmRem renamed vm in examples/tests. prefer short variable name. minor version bump
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package voicemeeter
|
|
|
|
// levels represents the levels field for a channel
|
|
type levels struct {
|
|
iRemote
|
|
k *kind
|
|
init int
|
|
offset int
|
|
id string
|
|
}
|
|
|
|
// returns true if any levels value for a strip/bus have been updated
|
|
func (l *levels) IsDirty() bool {
|
|
var vals []bool
|
|
if l.id == "strip" {
|
|
vals = _levelCache.stripComp[l.init : l.init+l.offset]
|
|
} else if l.id == "bus" {
|
|
vals = _levelCache.busComp[l.init : l.init+l.offset]
|
|
}
|
|
return !allTrue(vals, l.offset)
|
|
}
|
|
|
|
var _levelCache *levelCache
|
|
|
|
// levelCache defines level slices used by the pooler to track updates
|
|
type levelCache struct {
|
|
stripMode int
|
|
stripLevels []float32
|
|
busLevels []float32
|
|
stripLevelsBuff []float32
|
|
busLevelsBuff []float32
|
|
stripComp []bool
|
|
busComp []bool
|
|
}
|
|
|
|
// newLevelCache returns a levelCache struct address
|
|
func newLevelCache(k *kind) *levelCache {
|
|
stripLevels := make([]float32, (2*k.PhysIn)+(8*k.VirtIn))
|
|
busLevels := make([]float32, 8*k.NumBus())
|
|
stripComp := make([]bool, (2*k.PhysIn)+(8*k.VirtIn))
|
|
busComp := make([]bool, 8*k.NumBus())
|
|
if _levelCache == nil {
|
|
_levelCache = &levelCache{stripMode: 0, stripLevels: stripLevels, busLevels: busLevels, stripComp: stripComp, busComp: busComp}
|
|
}
|
|
return _levelCache
|
|
}
|