mirror of
https://github.com/vsariola/sointu.git
synced 2025-06-04 01:28:45 -04:00
further drafting
This commit is contained in:
parent
bd20440661
commit
964b2adbab
@ -28,8 +28,8 @@ func (NullContext) BPM() (bpm float64, ok bool) {
|
|||||||
return 0, false
|
return 0, false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (NullContext) Params() (ret tracker.ExtParamArray, ok bool) {
|
func (NullContext) Params() (ret tracker.ExtValueArray, ok bool) {
|
||||||
return tracker.ExtParamArray{}, false
|
return tracker.ExtValueArray{}, false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (NullContext) SetParams(params tracker.ExtParamArray) bool {
|
func (NullContext) SetParams(params tracker.ExtParamArray) bool {
|
||||||
|
@ -53,19 +53,27 @@ func (c *VSTIProcessContext) BPM() (bpm float64, ok bool) {
|
|||||||
return timeInfo.Tempo, true
|
return timeInfo.Tempo, true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *VSTIProcessContext) Params() (ret tracker.ExtParamArray, ok bool) {
|
func (c *VSTIProcessContext) Params() (ret tracker.ExtValueArray, ok bool) {
|
||||||
for i, p := range c.parameters {
|
for i, p := range c.parameters {
|
||||||
ret[i] = p.Value
|
ret[i] = p.Value
|
||||||
}
|
}
|
||||||
return ret, true
|
return ret, true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *VSTIProcessContext) SetParams(val tracker.ExtParamArray) bool {
|
func (c *VSTIProcessContext) SetParams(a tracker.ExtParamArray) bool {
|
||||||
changed := false
|
changed := false
|
||||||
for i, p := range c.parameters {
|
for i, p := range c.parameters {
|
||||||
if p.Value != val[i] {
|
i := i
|
||||||
p.Value = val[i]
|
name := a[i].Param.Name
|
||||||
p.Name = fmt.Sprintf("P%f", val[i])
|
if name == "" {
|
||||||
|
name = "---"
|
||||||
|
}
|
||||||
|
if p.Value != a[i].Val || p.Name != name {
|
||||||
|
p.Value = a[i].Val
|
||||||
|
p.Name = name
|
||||||
|
p.GetValueFunc = func(value float32) float32 {
|
||||||
|
return float32(a[i].Param.MinValue) + value*float32(a[i].Param.MaxValue-a[i].Param.MinValue)
|
||||||
|
}
|
||||||
changed = true
|
changed = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -101,15 +109,8 @@ func init() {
|
|||||||
for i := 0; i < tracker.ExtParamCount; i++ {
|
for i := 0; i < tracker.ExtParamCount; i++ {
|
||||||
parameters = append(parameters,
|
parameters = append(parameters,
|
||||||
&vst2.Parameter{
|
&vst2.Parameter{
|
||||||
Name: fmt.Sprintf("P%d", i),
|
Name: "---",
|
||||||
NotAutomated: true,
|
NotAutomated: true,
|
||||||
Unit: "foobar",
|
|
||||||
GetValueFunc: func(value float32) float32 {
|
|
||||||
return float32(int(value*128 + 1))
|
|
||||||
},
|
|
||||||
GetValueLabelFunc: func(value float32) string {
|
|
||||||
return fmt.Sprintf("%d", int(value))
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
context := VSTIProcessContext{host: h, parameters: parameters}
|
context := VSTIProcessContext{host: h, parameters: parameters}
|
||||||
|
@ -118,7 +118,11 @@ type (
|
|||||||
ParamName string
|
ParamName string
|
||||||
}
|
}
|
||||||
|
|
||||||
ExtParamArray [ExtParamCount]float32
|
ExtValueArray [ExtParamCount]float32
|
||||||
|
ExtParamArray [ExtParamCount]struct {
|
||||||
|
Val float32
|
||||||
|
Param sointu.UnitParameter
|
||||||
|
}
|
||||||
|
|
||||||
IsPlayingMsg struct{ bool }
|
IsPlayingMsg struct{ bool }
|
||||||
StartPlayMsg struct{ sointu.SongPos }
|
StartPlayMsg struct{ sointu.SongPos }
|
||||||
@ -374,8 +378,8 @@ func (m *Model) ProcessPlayerMessage(msg PlayerMsg) {
|
|||||||
m.Alerts().AddAlert(e)
|
m.Alerts().AddAlert(e)
|
||||||
case IsPlayingMsg:
|
case IsPlayingMsg:
|
||||||
m.playing = e.bool
|
m.playing = e.bool
|
||||||
case ExtParamArray:
|
case ExtValueArray:
|
||||||
m.SetExtParams(e)
|
m.SetExtValues(e)
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -410,7 +414,7 @@ func (m *Model) Instrument(index int) sointu.Instrument {
|
|||||||
return m.d.Song.Patch[index].Copy()
|
return m.d.Song.Patch[index].Copy()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Model) ExtParams() (ret ExtParamArray) {
|
func (m *Model) ExtParams() (params ExtParamArray) {
|
||||||
for i, l := range m.d.ExtParamLinks {
|
for i, l := range m.d.ExtParamLinks {
|
||||||
instrIndex, unitIndex, err := m.d.Song.Patch.FindUnit(l.UnitID)
|
instrIndex, unitIndex, err := m.d.Song.Patch.FindUnit(l.UnitID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -420,7 +424,8 @@ func (m *Model) ExtParams() (ret ExtParamArray) {
|
|||||||
if up, ok := sointu.UnitTypes[unit.Type]; ok {
|
if up, ok := sointu.UnitTypes[unit.Type]; ok {
|
||||||
for _, p := range up {
|
for _, p := range up {
|
||||||
if p.Name == l.ParamName && p.CanSet && p.MaxValue > p.MinValue {
|
if p.Name == l.ParamName && p.CanSet && p.MaxValue > p.MinValue {
|
||||||
ret[i] = float32(unit.Parameters[l.ParamName]-p.MinValue) / float32(p.MaxValue-p.MinValue)
|
params[i].Val = float32(unit.Parameters[l.ParamName]-p.MinValue) / float32(p.MaxValue-p.MinValue)
|
||||||
|
params[i].Param = p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -428,8 +433,8 @@ func (m *Model) ExtParams() (ret ExtParamArray) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Model) SetExtParams(params ExtParamArray) {
|
func (m *Model) SetExtValues(vals ExtValueArray) {
|
||||||
defer m.change("SetParamValue", PatchChange, MinorChange)()
|
defer m.change("SetExtValues", PatchChange, MinorChange)()
|
||||||
changed := false
|
changed := false
|
||||||
for i, l := range m.d.ExtParamLinks {
|
for i, l := range m.d.ExtParamLinks {
|
||||||
instrIndex, unitIndex, err := m.d.Song.Patch.FindUnit(l.UnitID)
|
instrIndex, unitIndex, err := m.d.Song.Patch.FindUnit(l.UnitID)
|
||||||
@ -440,7 +445,7 @@ func (m *Model) SetExtParams(params ExtParamArray) {
|
|||||||
if up, ok := sointu.UnitTypes[unit.Type]; ok {
|
if up, ok := sointu.UnitTypes[unit.Type]; ok {
|
||||||
for _, p := range up {
|
for _, p := range up {
|
||||||
if p.Name == l.ParamName && p.CanSet && p.MaxValue > p.MinValue {
|
if p.Name == l.ParamName && p.CanSet && p.MaxValue > p.MinValue {
|
||||||
newVal := int(math.Round(float64(params[i])*float64(p.MaxValue-p.MinValue))) + p.MinValue
|
newVal := int(math.Round(float64(vals[i])*float64(p.MaxValue-p.MinValue))) + p.MinValue
|
||||||
if unit.Parameters[l.ParamName] != newVal {
|
if unit.Parameters[l.ParamName] != newVal {
|
||||||
unit.Parameters[l.ParamName] = newVal
|
unit.Parameters[l.ParamName] = newVal
|
||||||
changed = true
|
changed = true
|
||||||
|
@ -21,8 +21,8 @@ func (NullContext) BPM() (bpm float64, ok bool) {
|
|||||||
return 0, false
|
return 0, false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (NullContext) Params() (params tracker.ExtParamArray, ok bool) {
|
func (NullContext) Params() (params tracker.ExtValueArray, ok bool) {
|
||||||
return tracker.ExtParamArray{}, false
|
return tracker.ExtValueArray{}, false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (NullContext) SetParams(params tracker.ExtParamArray) bool {
|
func (NullContext) SetParams(params tracker.ExtParamArray) bool {
|
||||||
|
@ -25,7 +25,7 @@ type (
|
|||||||
voiceLevels [vm.MAX_VOICES]float32 // a level that can be used to visualize the volume of each voice
|
voiceLevels [vm.MAX_VOICES]float32 // a level that can be used to visualize the volume of each voice
|
||||||
voices [vm.MAX_VOICES]voice
|
voices [vm.MAX_VOICES]voice
|
||||||
loop Loop
|
loop Loop
|
||||||
extParamValues ExtParamArray
|
extParamValues ExtValueArray
|
||||||
|
|
||||||
recState recState // is the recording off; are we waiting for a note; or are we recording
|
recState recState // is the recording off; are we waiting for a note; or are we recording
|
||||||
recording Recording // the recorded MIDI events and BPM
|
recording Recording // the recorded MIDI events and BPM
|
||||||
@ -40,7 +40,7 @@ type (
|
|||||||
PlayerProcessContext interface {
|
PlayerProcessContext interface {
|
||||||
NextEvent() (event MIDINoteEvent, ok bool)
|
NextEvent() (event MIDINoteEvent, ok bool)
|
||||||
BPM() (bpm float64, ok bool)
|
BPM() (bpm float64, ok bool)
|
||||||
Params() (params ExtParamArray, ok bool)
|
Params() (params ExtValueArray, ok bool)
|
||||||
SetParams(params ExtParamArray) bool
|
SetParams(params ExtParamArray) bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user