diff --git a/4klang.go b/4klang.go index af22de6..3cf8140 100644 --- a/4klang.go +++ b/4klang.go @@ -320,7 +320,7 @@ func read4klangVCO(vals [15]byte, version int) []Unit { func read4klangVCF(vals [15]byte, _ int) []Unit { flags := vals[2] - var stereo, lowpass, bandpass, highpass, neghighpass int + var stereo, lowpass, bandpass, highpass int if flags&0x01 == 0x01 { lowpass = 1 } @@ -332,7 +332,7 @@ func read4klangVCF(vals [15]byte, _ int) []Unit { } if flags&0x08 == 0x08 { lowpass = 1 - neghighpass = 1 + highpass = -1 } if flags&0x10 == 0x10 { stereo = 1 @@ -340,14 +340,12 @@ func read4klangVCF(vals [15]byte, _ int) []Unit { return []Unit{{ Type: "filter", Parameters: map[string]int{ - "stereo": stereo, - "frequency": int(vals[0]), - "resonance": int(vals[1]), - "lowpass": lowpass, - "bandpass": bandpass, - "highpass": highpass, - "negbandpass": 0, - "neghighpass": neghighpass, + "stereo": stereo, + "frequency": int(vals[0]), + "resonance": int(vals[1]), + "lowpass": lowpass, + "bandpass": bandpass, + "highpass": highpass, }}, } } diff --git a/examples/patches/physics_girl_st.yml b/examples/patches/physics_girl_st.yml index b5d4d66..048edf9 100644 --- a/examples/patches/physics_girl_st.yml +++ b/examples/patches/physics_girl_st.yml @@ -49,7 +49,7 @@ patch: parameters: {stereo: 0} - type: filter id: 10 - parameters: {bandpass: 0, frequency: 0, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 58, stereo: 0} + parameters: {bandpass: 0, frequency: 0, highpass: 0, lowpass: 1, resonance: 58, stereo: 0} - type: delay id: 4 parameters: {damp: 0, dry: 128, feedback: 96, notetracking: 2, pregain: 40, stereo: 0} @@ -87,7 +87,7 @@ patch: parameters: {color: 59, detune: 73, gain: 35, phase: 26, shape: 70, stereo: 0, transpose: 57, type: 2, unison: 3} - type: filter id: 31 - parameters: {bandpass: 0, frequency: 37, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 60, stereo: 0} + parameters: {bandpass: 0, frequency: 37, highpass: 0, lowpass: 1, resonance: 60, stereo: 0} - type: mulp id: 24 parameters: {stereo: 0} @@ -198,7 +198,7 @@ patch: parameters: {panning: 64, stereo: 0} - type: filter id: 76 - parameters: {bandpass: 0, frequency: 32, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 1} + parameters: {bandpass: 0, frequency: 32, highpass: 0, lowpass: 1, resonance: 64, stereo: 1} - type: outaux id: 73 parameters: {auxgain: 64, outgain: 64, stereo: 1} diff --git a/patch.go b/patch.go index 59ca734..92894b4 100644 --- a/patch.go +++ b/patch.go @@ -6,6 +6,8 @@ import ( "math" "sort" "strconv" + + "gopkg.in/yaml.v3" ) type ( @@ -39,7 +41,7 @@ type ( // an oscillator, unit.Type == "oscillator" and unit.Parameters["attack"] // could be 64. Most parameters are either limites to 0 and 1 (e.g. stereo // parameters) or between 0 and 128, inclusive. - Parameters map[string]int `yaml:",flow"` + Parameters ParamMap `yaml:",flow"` // VarArgs is a list containing the variable number arguments that some // units require, most notably the DELAY units. For example, for a DELAY @@ -57,11 +59,14 @@ type ( Comment string `yaml:",omitempty"` } + ParamMap map[string]int + // UnitParameter documents one parameter that an unit takes UnitParameter struct { Name string // thould be found with this name in the Unit.Parameters map MinValue int // minimum value of the parameter, inclusive MaxValue int // maximum value of the parameter, inclusive + Neutral int // neutral value of the parameter CanSet bool // if this parameter can be set before hand i.e. through the gui CanModulate bool // if this parameter can be modulated i.e. has a port number in "send" unit DisplayFunc UnitParameterDisplayFunc @@ -90,7 +95,7 @@ var UnitTypes = map[string]([]UnitParameter){ "xch": []UnitParameter{{Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}}, "distort": []UnitParameter{ {Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "drive", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}}, + {Name: "drive", MinValue: 0, Neutral: 64, MaxValue: 128, CanSet: true, CanModulate: true}}, "hold": []UnitParameter{ {Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, {Name: "holdfreq", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}}, @@ -105,20 +110,18 @@ var UnitTypes = map[string]([]UnitParameter){ {Name: "invgain", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}}, "dbgain": []UnitParameter{ {Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "decibels", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true, DisplayFunc: func(v int) (string, string) { return formatFloat(40 * (float64(v)/64 - 1)), "dB" }}}, + {Name: "decibels", MinValue: 0, Neutral: 64, MaxValue: 128, CanSet: true, CanModulate: true, DisplayFunc: func(v int) (string, string) { return formatFloat(40 * (float64(v)/64 - 1)), "dB" }}}, "filter": []UnitParameter{ {Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, {Name: "frequency", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true, DisplayFunc: filterFrequencyDispFunc}, {Name: "resonance", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}, {Name: "lowpass", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "bandpass", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "highpass", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "negbandpass", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "neghighpass", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}}, + {Name: "bandpass", MinValue: -1, MaxValue: 1, CanSet: true, CanModulate: false}, + {Name: "highpass", MinValue: -1, MaxValue: 1, CanSet: true, CanModulate: false}}, "clip": []UnitParameter{{Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}}, "pan": []UnitParameter{ {Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "panning", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}}, + {Name: "panning", MinValue: 0, Neutral: 64, MaxValue: 128, CanSet: true, CanModulate: true}}, "delay": []UnitParameter{ {Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, {Name: "pregain", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}, @@ -152,7 +155,7 @@ var UnitTypes = map[string]([]UnitParameter){ {Name: "channel", MinValue: 0, MaxValue: 6, CanSet: true, CanModulate: false, DisplayFunc: arrDispFunc(channelNames[:])}}, "send": []UnitParameter{ {Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "amount", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true, DisplayFunc: func(v int) (string, string) { return formatFloat(float64(v)/64 - 1), "" }}, + {Name: "amount", MinValue: 0, Neutral: 64, MaxValue: 128, CanSet: true, CanModulate: true, DisplayFunc: func(v int) (string, string) { return formatFloat(float64(v)/64 - 1), "" }}, {Name: "voice", MinValue: 0, MaxValue: 32, CanSet: true, CanModulate: false, DisplayFunc: sendVoiceDispFunc}, {Name: "target", MinValue: 0, MaxValue: math.MaxInt32, CanSet: true, CanModulate: false}, {Name: "port", MinValue: 0, MaxValue: 7, CanSet: true, CanModulate: false}, @@ -166,15 +169,15 @@ var UnitTypes = map[string]([]UnitParameter){ {Name: "gain", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}}, "noise": []UnitParameter{ {Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "shape", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}, + {Name: "shape", MinValue: 0, Neutral: 64, MaxValue: 128, CanSet: true, CanModulate: true}, {Name: "gain", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}}, "oscillator": []UnitParameter{ {Name: "stereo", MinValue: 0, MaxValue: 1, CanSet: true, CanModulate: false}, - {Name: "transpose", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true, DisplayFunc: oscillatorTransposeDispFunc}, - {Name: "detune", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true, DisplayFunc: func(v int) (string, string) { return formatFloat(float64(v-64) / 64), "st" }}, + {Name: "transpose", MinValue: 0, Neutral: 64, MaxValue: 128, CanSet: true, CanModulate: true, DisplayFunc: oscillatorTransposeDispFunc}, + {Name: "detune", MinValue: 0, Neutral: 64, MaxValue: 128, CanSet: true, CanModulate: true, DisplayFunc: func(v int) (string, string) { return formatFloat(float64(v-64) / 64), "st" }}, {Name: "phase", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}, {Name: "color", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}, - {Name: "shape", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}, + {Name: "shape", MinValue: 0, Neutral: 64, MaxValue: 128, CanSet: true, CanModulate: true}, {Name: "gain", MinValue: 0, MaxValue: 128, CanSet: true, CanModulate: true}, {Name: "frequency", MinValue: 0, MaxValue: -1, CanSet: false, CanModulate: true}, {Name: "type", MinValue: int(Sine), MaxValue: int(Sample), CanSet: true, CanModulate: false, DisplayFunc: arrDispFunc(oscTypes[:])}, @@ -196,6 +199,30 @@ var UnitTypes = map[string]([]UnitParameter){ "sync": []UnitParameter{}, } +// compile errors if interface is not implemented. +var _ yaml.Unmarshaler = &ParamMap{} + +func (a *ParamMap) UnmarshalYAML(value *yaml.Node) error { + var m map[string]int + if err := value.Decode(&m); err != nil { + return err + } + // Backwards compatibility hack: if the patch was saved with an older + // version of Sointu, it might have used the negbandpass and neghighpass + // parameters, which now correspond to having bandpass as value -1 and + // highpass as value -1. + if n, ok := m["negbandpass"]; ok { + m["bandpass"] = m["bandpass"] - n + delete(m, "negbandpass") + } + if n, ok := m["neghighpass"]; ok { + m["highpass"] = m["highpass"] - n + delete(m, "neghighpass") + } + *a = m + return nil +} + var channelNames = [...]string{"left", "right", "aux1 left", "aux1 right", "aux2 left", "aux2 right", "aux3 left", "aux3 right"} var noteTrackingNames = [...]string{"fixed", "pitch", "BPM"} var oscTypes = [...]string{"sine", "trisaw", "pulse", "gate", "sample"} @@ -238,12 +265,10 @@ func compressorTimeDispFunc(v int) (string, string) { func oscillatorTransposeDispFunc(v int) (string, string) { relvalue := v - 64 - octaves := relvalue / 12 - semitones := relvalue % 12 - if semitones == 0 { - return strconv.Itoa(octaves), "oct" + if relvalue%12 == 0 { + return strconv.Itoa(relvalue / 12), "oct" } - return strconv.Itoa(semitones), "st" + return strconv.Itoa(relvalue), "st" } func sendVoiceDispFunc(v int) (string, string) { diff --git a/tests/test_delay_notetracking.yml b/tests/test_delay_notetracking.yml index 01342d9..2981036 100644 --- a/tests/test_delay_notetracking.yml +++ b/tests/test_delay_notetracking.yml @@ -19,12 +19,12 @@ patch: - type: mulp parameters: {stereo: 0} - type: filter - parameters: {bandpass: 1, frequency: 32, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 32, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: delay parameters: {damp: 16, dry: 128, feedback: 128, notetracking: 1, pregain: 128, stereo: 0} varargs: [10787] - type: filter - parameters: {bandpass: 1, frequency: 24, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 24, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: mulp parameters: {stereo: 0} - type: pan diff --git a/tests/test_delay_notetracking_modulation.yml b/tests/test_delay_notetracking_modulation.yml index 9e8e99b..137ee6d 100644 --- a/tests/test_delay_notetracking_modulation.yml +++ b/tests/test_delay_notetracking_modulation.yml @@ -19,7 +19,7 @@ patch: parameters: {gain: 64, shape: 64, stereo: 0} - type: filter id: 12 - parameters: {bandpass: 0, frequency: 39, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 39, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: delay id: 11 parameters: {damp: 0, dry: 71, feedback: 114, notetracking: 1, pregain: 128, stereo: 0} diff --git a/tests/test_filter_band.yml b/tests/test_filter_band.yml index c37d66d..b2c64ff 100644 --- a/tests/test_filter_band.yml +++ b/tests/test_filter_band.yml @@ -17,7 +17,7 @@ patch: - type: mulp parameters: {stereo: 0} - type: filter - parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, resonance: 64, stereo: 0} - type: pan parameters: {panning: 64, stereo: 0} - type: out diff --git a/tests/test_filter_freqmod.yml b/tests/test_filter_freqmod.yml index 895601d..3797f94 100644 --- a/tests/test_filter_freqmod.yml +++ b/tests/test_filter_freqmod.yml @@ -17,7 +17,7 @@ patch: - type: mulp parameters: {stereo: 0} - type: filter - parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, resonance: 64, stereo: 0} id: 1 - type: pan parameters: {panning: 64, stereo: 0} diff --git a/tests/test_filter_high.yml b/tests/test_filter_high.yml index 2931a90..00155a5 100644 --- a/tests/test_filter_high.yml +++ b/tests/test_filter_high.yml @@ -17,7 +17,7 @@ patch: - type: mulp parameters: {stereo: 0} - type: filter - parameters: {bandpass: 0, frequency: 32, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + parameters: {bandpass: 0, frequency: 32, highpass: 1, lowpass: 0, resonance: 64, stereo: 0} - type: pan parameters: {panning: 64, stereo: 0} - type: out diff --git a/tests/test_filter_low.yml b/tests/test_filter_low.yml index 0f75f52..4229546 100644 --- a/tests/test_filter_low.yml +++ b/tests/test_filter_low.yml @@ -17,7 +17,7 @@ patch: - type: mulp parameters: {stereo: 0} - type: filter - parameters: {bandpass: 0, frequency: 32, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + parameters: {bandpass: 0, frequency: 32, highpass: 0, lowpass: 1, resonance: 64, stereo: 0} - type: pan parameters: {panning: 64, stereo: 0} - type: out diff --git a/tests/test_filter_peak.yml b/tests/test_filter_peak.yml index d3e190b..addf09e 100644 --- a/tests/test_filter_peak.yml +++ b/tests/test_filter_peak.yml @@ -17,7 +17,7 @@ patch: - type: mulp parameters: {stereo: 0} - type: filter - parameters: {bandpass: 0, frequency: 32, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 64, stereo: 0} + parameters: {bandpass: 0, frequency: 32, highpass: -1, lowpass: 1, resonance: 64, stereo: 0} - type: pan parameters: {panning: 64, stereo: 0} - type: out diff --git a/tests/test_filter_resmod.yml b/tests/test_filter_resmod.yml index a967164..3909b3f 100644 --- a/tests/test_filter_resmod.yml +++ b/tests/test_filter_resmod.yml @@ -17,7 +17,7 @@ patch: - type: mulp parameters: {stereo: 0} - type: filter - parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, resonance: 64, stereo: 0} id: 1 - type: pan parameters: {panning: 64, stereo: 0} diff --git a/tests/test_filter_stereo.yml b/tests/test_filter_stereo.yml index 6ba4be4..dbb3b1d 100644 --- a/tests/test_filter_stereo.yml +++ b/tests/test_filter_stereo.yml @@ -19,6 +19,6 @@ patch: - type: pan parameters: {panning: 64, stereo: 0} - type: filter - parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 1} + parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, resonance: 64, stereo: 1} - type: out parameters: {gain: 128, stereo: 1} diff --git a/tracker/gioui/knob.go b/tracker/gioui/knob.go index 13b33c2..9014d0b 100644 --- a/tracker/gioui/knob.go +++ b/tracker/gioui/knob.go @@ -12,11 +12,13 @@ import ( "gioui.org/io/key" "gioui.org/io/pointer" "gioui.org/layout" + "gioui.org/op" "gioui.org/op/clip" "gioui.org/op/paint" "gioui.org/unit" "gioui.org/x/stroke" "github.com/vsariola/sointu/tracker" + "golang.org/x/exp/shiny/materialdesign/icons" ) type ( @@ -58,8 +60,87 @@ type ( Hint string Scroll bool } + + SwitchStyle struct { + Neutral struct { + Fg color.NRGBA + Bg color.NRGBA + } + Pos struct { + Fg color.NRGBA + Bg color.NRGBA + } + Neg struct { + Fg color.NRGBA + Bg color.NRGBA + } + Width unit.Dp + Height unit.Dp + Outline unit.Dp + Handle unit.Dp + Icon unit.Dp + } + + SwitchWidget struct { + Theme *Theme + Value tracker.Parameter + State *KnobState + Style *SwitchStyle + Hint string + Scroll bool + } ) +// KnobState + +func (s *KnobState) update(gtx C, param tracker.Parameter, scroll bool) { + for { + p, ok := s.drag.Update(gtx.Metric, gtx.Source, gesture.Both) + if !ok { + break + } + switch p.Kind { + case pointer.Press: + s.dragStartPt = p.Position + s.dragStartVal = param.Value() + case pointer.Drag: + // update the value based on the drag amount + m := param.Range() + d := p.Position.Sub(s.dragStartPt) + amount := float32(d.X-d.Y) / float32(gtx.Dp(128)) + newValue := int(float32(s.dragStartVal) + amount*float32(m.Max-m.Min)) + param.SetValue(newValue) + s.tipArea.Appear(gtx.Now) + } + } + for { + g, ok := s.click.Update(gtx.Source) + if !ok { + break + } + if g.Kind == gesture.KindClick && g.NumClicks > 1 { + param.Reset() + } + } + for scroll { + e, ok := gtx.Event(pointer.Filter{ + Target: s, + Kinds: pointer.Scroll, + ScrollY: pointer.ScrollRange{Min: -1e6, Max: 1e6}, + }) + if !ok { + break + } + if ev, ok := e.(pointer.Event); ok && ev.Kind == pointer.Scroll { + delta := -int(math.Min(math.Max(float64(ev.Scroll.Y), -1), 1)) + param.Add(delta, ev.Modifiers.Contain(key.ModShortcut)) + s.tipArea.Appear(gtx.Now) + } + } +} + +// Knob + func Knob(v tracker.Parameter, th *Theme, state *KnobState, hint string, scroll bool) KnobWidget { return KnobWidget{ Theme: th, @@ -72,7 +153,7 @@ func Knob(v tracker.Parameter, th *Theme, state *KnobState, hint string, scroll } func (k *KnobWidget) Layout(gtx C) D { - k.update(gtx) + k.State.update(gtx, k.Value, k.Scroll) knob := func(gtx C) D { m := k.Value.Range() amount := float32(k.Value.Value()-m.Min) / float32(m.Max-m.Min) @@ -82,8 +163,21 @@ func (k *KnobWidget) Layout(gtx C) D { event.Op(gtx.Ops, k.State) k.State.drag.Add(gtx.Ops) k.State.click.Add(gtx.Ops) - k.strokeKnobArc(gtx, k.Style.Pos.Bg, sw, d, amount, 1) - k.strokeKnobArc(gtx, k.Style.Pos.Color, sw, d, 0, amount) + middle := float32(k.Value.Neutral()-m.Min) / float32(m.Max-m.Min) + pos := max(amount, middle) + neg := min(amount, middle) + if middle > 0 { + k.strokeKnobArc(gtx, k.Style.Neg.Bg, sw, d, 0, neg) + } + if middle < 1 { + k.strokeKnobArc(gtx, k.Style.Pos.Bg, sw, d, pos, 1) + } + if pos > middle { + k.strokeKnobArc(gtx, k.Style.Pos.Color, sw, d, middle, pos) + } + if neg < middle { + k.strokeKnobArc(gtx, k.Style.Neg.Color, sw, d, neg, middle) + } k.strokeIndicator(gtx, amount) return D{Size: image.Pt(d, d)} } @@ -104,52 +198,6 @@ func (k *KnobWidget) Layout(gtx C) D { return w(gtx) } -func (k *KnobWidget) update(gtx C) { - for { - p, ok := k.State.drag.Update(gtx.Metric, gtx.Source, gesture.Both) - if !ok { - break - } - switch p.Kind { - case pointer.Press: - k.State.dragStartPt = p.Position - k.State.dragStartVal = k.Value.Value() - case pointer.Drag: - // update the value based on the drag amount - m := k.Value.Range() - d := p.Position.Sub(k.State.dragStartPt) - amount := float32(d.X-d.Y) / float32(gtx.Dp(k.Style.Diameter)) / 4 - newValue := int(float32(k.State.dragStartVal) + amount*float32(m.Max-m.Min)) - k.Value.SetValue(newValue) - k.State.tipArea.Appear(gtx.Now) - } - } - for { - g, ok := k.State.click.Update(gtx.Source) - if !ok { - break - } - if g.Kind == gesture.KindClick && g.NumClicks > 1 { - k.Value.Reset() - } - } - for k.Scroll { - e, ok := gtx.Event(pointer.Filter{ - Target: k.State, - Kinds: pointer.Scroll, - ScrollY: pointer.ScrollRange{Min: -1e6, Max: 1e6}, - }) - if !ok { - break - } - if ev, ok := e.(pointer.Event); ok && ev.Kind == pointer.Scroll { - delta := -int(math.Min(math.Max(float64(ev.Scroll.Y), -1), 1)) - k.Value.Add(delta, ev.Modifiers.Contain(key.ModShortcut)) - k.State.tipArea.Appear(gtx.Now) - } - } -} - func (k *KnobWidget) strokeKnobArc(gtx C, color color.NRGBA, strokeWidth, diameter int, start, end float32) { rad := float32(diameter) / 2 end = min(max(end, 0), 1) @@ -197,3 +245,77 @@ func (k *KnobWidget) strokeIndicator(gtx C, amount float32) { } paint.FillShape(gtx.Ops, k.Style.Indicator.Color, s.Op(gtx.Ops)) } + +// Switch + +func Switch(v tracker.Parameter, th *Theme, state *KnobState, hint string, scroll bool) SwitchWidget { + return SwitchWidget{ + Theme: th, + Value: v, + State: state, + Style: &th.Switch, + Hint: hint, + Scroll: scroll, + } +} + +func (s *SwitchWidget) Layout(gtx C) D { + s.State.update(gtx, s.Value, s.Scroll) + width := gtx.Dp(s.Style.Width) + height := gtx.Dp(s.Style.Height) + var fg, bg color.NRGBA + o := 0 + switch { + case s.Value.Value() < 0: + fg = s.Style.Neg.Fg + bg = s.Style.Neg.Bg + case s.Value.Value() == 0: + fg = s.Style.Neutral.Fg + bg = s.Style.Neutral.Bg + o = gtx.Dp(s.Style.Outline) + case s.Value.Value() > 0: + fg = s.Style.Pos.Fg + bg = s.Style.Pos.Bg + } + r := min(width, height) / 2 + fillRoundRect := func(ops *op.Ops, rect image.Rectangle, r int, c color.NRGBA) { + defer clip.UniformRRect(rect, r).Push(ops).Pop() + paint.ColorOp{Color: c}.Add(ops) + paint.PaintOp{}.Add(ops) + } + if o > 0 { + fillRoundRect(gtx.Ops, image.Rect(0, 0, width, height), r, fg) + } + fillRoundRect(gtx.Ops, image.Rect(o, o, width-o, height-o), r-o, bg) + a := r + b := width - r + p := a + (b-a)*(s.Value.Value()-s.Value.Range().Min)/(s.Value.Range().Max-s.Value.Range().Min) + circle := func(x, y, r int) clip.Op { + b := image.Rectangle{ + Min: image.Pt(x-r, y-r), + Max: image.Pt(x+r, y+r), + } + return clip.Ellipse(b).Op(gtx.Ops) + } + paint.FillShape(gtx.Ops, fg, circle(p, height/2, gtx.Dp(s.Style.Handle)/2)) + defer clip.Rect(image.Rectangle{Max: image.Pt(width, height)}).Push(gtx.Ops).Pop() + event.Op(gtx.Ops, s.State) + s.State.drag.Add(gtx.Ops) + s.State.click.Add(gtx.Ops) + icon := icons.NavigationClose + if s.Value.Range().Min < 0 { + if s.Value.Value() < 0 { + icon = icons.ImageExposureNeg1 + } else if s.Value.Value() > 0 { + icon = icons.ImageExposurePlus1 + } + } else if s.Value.Value() > 0 { + icon = icons.NavigationCheck + } + w := s.Theme.Icon(icon) + i := gtx.Dp(s.Style.Icon) + defer op.Offset(image.Pt(p-i/2, (height-i)/2)).Push(gtx.Ops).Pop() + gtx.Constraints = layout.Exact(image.Pt(i, i)) + w.Layout(gtx, bg) + return D{Size: image.Pt(width, height)} +} diff --git a/tracker/gioui/signal_rail.go b/tracker/gioui/signal_rail.go index d5fc88b..a2d8315 100644 --- a/tracker/gioui/signal_rail.go +++ b/tracker/gioui/signal_rail.go @@ -67,8 +67,9 @@ func (s SignalRailWidget) Layout(gtx C) D { } if s.Signal.Send { for i := range min(len(s.Signal.StackUse.Inputs), maxSignalsDrawn-s.Signal.PassThrough) { + d := gtx.Dp(8) from := f32.Pt(float32((i+s.Signal.PassThrough)*sw+center), float32(h/2)) - to := f32.Pt(float32(gtx.Constraints.Max.X), float32(h)-float32(sw/2)) + to := f32.Pt(float32(gtx.Constraints.Max.X), float32(h)-float32(d)) ctrl := f32.Pt(from.X, to.Y) path.MoveTo(from) path.QuadTo(ctrl, to) diff --git a/tracker/gioui/theme.go b/tracker/gioui/theme.go index 7104d5c..3d97691 100644 --- a/tracker/gioui/theme.go +++ b/tracker/gioui/theme.go @@ -114,6 +114,7 @@ type Theme struct { Split SplitStyle ScrollBar ScrollBarStyle Knob KnobStyle + Switch SwitchStyle SignalRail SignalRailStyle Port PortStyle diff --git a/tracker/gioui/theme.yml b/tracker/gioui/theme.yml index 9c83e2e..034dec3 100644 --- a/tracker/gioui/theme.yml +++ b/tracker/gioui/theme.yml @@ -239,3 +239,18 @@ port: diameter: 36 strokewidth: 4 color: { r: 32, g: 55, b: 58, a: 255 } +switch: + width: 36 + height: 20 + handle: 16 + neutral: + fg: { r: 147, g: 143, b: 153, a: 255 } + bg: { r: 54, g: 52, b: 59, a: 255 } + pos: + fg: *white + bg: { r: 125, g: 87, b: 128, a: 255 } + neg: + fg: *white + bg: { r: 70, g: 128, b: 131, a: 255 } + icon: 10 + outline: 1 diff --git a/tracker/gioui/unit_editor.go b/tracker/gioui/unit_editor.go index 251cb55..d9c075c 100644 --- a/tracker/gioui/unit_editor.go +++ b/tracker/gioui/unit_editor.go @@ -11,14 +11,12 @@ import ( "gioui.org/f32" "gioui.org/io/clipboard" "gioui.org/io/key" - "gioui.org/io/pointer" "gioui.org/layout" "gioui.org/op" "gioui.org/op/clip" "gioui.org/op/paint" "gioui.org/text" "gioui.org/widget" - "gioui.org/widget/material" "github.com/vsariola/sointu" "github.com/vsariola/sointu/tracker" "golang.org/x/exp/shiny/materialdesign/icons" @@ -103,12 +101,19 @@ func (pe *UnitEditor) update(gtx C, t *Tracker) { e, ok := gtx.Event( key.Filter{Focus: pe.searchList, Name: key.NameEnter}, key.Filter{Focus: pe.searchList, Name: key.NameReturn}, + key.Filter{Focus: pe.searchList, Name: key.NameEscape}, ) if !ok { break } if e, ok := e.(key.Event); ok && e.State == key.Press { - pe.ChooseUnitType(t) + switch e.Name { + case key.NameEscape: + t.UnitSearching().SetValue(false) + pe.paramTable.RowTitleList.Focus() + case key.NameEnter, key.NameReturn: + pe.ChooseUnitType(t) + } } } for { @@ -135,12 +140,28 @@ func (pe *UnitEditor) update(gtx C, t *Tracker) { } } for { - e, ok := gtx.Event(key.Filter{Focus: pe.paramTable.RowTitleList, Name: key.NameLeftArrow}) + e, ok := gtx.Event( + key.Filter{Focus: pe.paramTable.RowTitleList, Name: key.NameEnter}, + key.Filter{Focus: pe.paramTable.RowTitleList, Name: key.NameReturn}, + key.Filter{Focus: pe.paramTable.RowTitleList, Name: key.NameLeftArrow}, + ) if !ok { break } if e, ok := e.(key.Event); ok && e.State == key.Press { - t.PatchPanel.unitList.dragList.Focus() + switch e.Name { + case key.NameLeftArrow: + t.PatchPanel.unitList.dragList.Focus() + case key.NameDeleteBackward: + t.UnitSearch().SetValue("") + t.UnitSearching().SetValue(true) + pe.searchList.Focus() + case key.NameEnter, key.NameReturn: + t.Model.AddUnit(e.Modifiers.Contain(key.ModCtrl)).Do() + t.UnitSearch().SetValue("") + t.UnitSearching().SetValue(true) + pe.searchList.Focus() + } } } } @@ -148,7 +169,7 @@ func (pe *UnitEditor) update(gtx C, t *Tracker) { func (pe *UnitEditor) ChooseUnitType(t *Tracker) { if ut, ok := t.SearchResults().Item(pe.searchList.TrackerList.Selected()); ok { t.Units().SetSelectedType(ut) - t.PatchPanel.unitList.dragList.Focus() + pe.paramTable.RowTitleList.Focus() } } @@ -259,7 +280,7 @@ func (pe *UnitEditor) drawBackGround(gtx C) { func (pe *UnitEditor) drawRemoteSendSignal(gtx C, wire tracker.Wire, col, row int) { sy := wire.From - row t := TrackerFromContext(gtx) - defer op.Offset(image.Pt(0, (sy+1)*gtx.Dp(t.Theme.UnitEditor.Height)-gtx.Dp(16))).Push(gtx.Ops).Pop() + defer op.Offset(image.Pt(gtx.Dp(5), (sy+1)*gtx.Dp(t.Theme.UnitEditor.Height)-gtx.Dp(16))).Push(gtx.Ops).Pop() Label(t.Theme, &t.Theme.UnitEditor.WireHint, wire.Hint).Layout(gtx) } @@ -300,7 +321,7 @@ func (pe *UnitEditor) drawSignal(gtx C, wire tracker.Wire, col, row int) { c := float32(diam) / 2 / float32(math.Sqrt2) width := float32(gtx.Dp(t.Theme.UnitEditor.Width)) height := float32(gtx.Dp(t.Theme.UnitEditor.Height)) - from := f32.Pt(0, float32((sy+1)*gtx.Dp(t.Theme.UnitEditor.Height))-float32(gtx.Dp(t.Theme.SignalRail.SignalWidth)/2)) + from := f32.Pt(0, float32((sy+1)*gtx.Dp(t.Theme.UnitEditor.Height))-float32(gtx.Dp(8))) corner := f32.Pt(1, 1) if ex > 0 { corner.X = -corner.X @@ -438,18 +459,8 @@ func (p ParameterStyle) Layout(gtx C) D { k := Knob(p.Parameter, p.Theme, &p.State.knobState, p.Parameter.Hint().Label, p.Focus) return k.Layout(gtx) case tracker.BoolParameter: - ra := p.Parameter.Range() - p.State.boolWidget.Value = p.Parameter.Value() > ra.Min - boolStyle := material.Switch(&p.Theme.Material, &p.State.boolWidget, "Toggle boolean parameter") - boolStyle.Color.Disabled = p.Theme.Material.Fg - defer pointer.PassOp{}.Push(gtx.Ops).Pop() - dims := layout.Center.Layout(gtx, boolStyle.Layout) - if p.State.boolWidget.Value { - p.Parameter.SetValue(ra.Max) - } else { - p.Parameter.SetValue(ra.Min) - } - return dims + s := Switch(p.Parameter, p.Theme, &p.State.knobState, p.Parameter.Hint().Label, p.Focus) + return s.Layout(gtx) case tracker.IDParameter: btn := ActionBtn(t.ChooseSendSource(p.Parameter.UnitID()), t.Theme, &p.State.clickable, "Set", p.Parameter.Hint().Label) return btn.Layout(gtx) diff --git a/tracker/params.go b/tracker/params.go index e0bd0d3..85e9aea 100644 --- a/tracker/params.go +++ b/tracker/params.go @@ -104,6 +104,15 @@ func (p *Parameter) Range() IntRange { } return p.vtable.Range(p) } +func (p *Parameter) Neutral() int { + if p.vtable == nil { + return 0 + } + if p.up != nil { + return p.up.Neutral + } + return 0 +} func (p *Parameter) Type() ParameterType { if p.vtable == nil { return NoParameter @@ -231,12 +240,15 @@ func (n *namedParameter) Type(p *Parameter) ParameterType { if p.unit.Type == "send" && p.up.Name == "target" { return IDParameter } - if p.up.MinValue == 0 && p.up.MaxValue == 1 { + if p.up.MinValue >= -1 && p.up.MaxValue <= 1 { return BoolParameter } return IntegerParameter } func (n *namedParameter) Name(p *Parameter) string { + if p.up.Name == "notetracking" { + return "tracking" // notetracking does not fit in the UI + } return p.up.Name } func (n *namedParameter) Hint(p *Parameter) ParameterHint { @@ -249,11 +261,10 @@ func (n *namedParameter) Hint(p *Parameter) ParameterHint { return ParameterHint{label, true} } func (n *namedParameter) RoundToGrid(p *Parameter, val int, up bool) int { - grid := 16 if p.up.Name == "transpose" { - grid = 12 + return roundToGrid(val-64, 12, up) + 64 } - return roundToGrid(val, grid, up) + return roundToGrid(val, 16, up) } func (n *namedParameter) Reset(p *Parameter) { v, ok := defaultUnits[p.unit.Type].Parameters[p.up.Name] @@ -315,8 +326,8 @@ func (g *gmDlsEntryParameter) Reset(p *Parameter) {} var delayNoteTrackGrid, delayBpmTrackGrid []int func init() { - for st := -48; st <= 48; st++ { - gridVal := int(math.Exp2(-float64(st)/12)*10787 + 0.5) + for st := -30; st <= 30; st++ { + gridVal := int(math.Exp2(float64(st)/12)*10787 + 0.5) delayNoteTrackGrid = append(delayNoteTrackGrid, gridVal) } for i := 0; i < 16; i++ { diff --git a/tracker/presets.go b/tracker/presets.go index beed73d..87ea855 100644 --- a/tracker/presets.go +++ b/tracker/presets.go @@ -66,7 +66,7 @@ var defaultUnits = map[string]sointu.Unit{ "clip": {Type: "clip", Parameters: map[string]int{"stereo": 0}}, "hold": {Type: "hold", Parameters: map[string]int{"stereo": 0, "holdfreq": 64}}, "distort": {Type: "distort", Parameters: map[string]int{"stereo": 0, "drive": 64}}, - "filter": {Type: "filter", Parameters: map[string]int{"stereo": 0, "frequency": 64, "resonance": 64, "lowpass": 1, "bandpass": 0, "highpass": 0, "negbandpass": 0, "neghighpass": 0}}, + "filter": {Type: "filter", Parameters: map[string]int{"stereo": 0, "frequency": 64, "resonance": 64, "lowpass": 1, "bandpass": 0, "highpass": 0}}, "out": {Type: "out", Parameters: map[string]int{"stereo": 1, "gain": 64}}, "outaux": {Type: "outaux", Parameters: map[string]int{"stereo": 1, "outgain": 64, "auxgain": 64}}, "aux": {Type: "aux", Parameters: map[string]int{"stereo": 1, "gain": 64, "channel": 2}}, diff --git a/tracker/presets/BA/House Bass Organ.yml b/tracker/presets/BA/House Bass Organ.yml index da34092..89f0362 100644 --- a/tracker/presets/BA/House Bass Organ.yml +++ b/tracker/presets/BA/House Bass Organ.yml @@ -18,10 +18,10 @@ units: parameters: {stereo: 0} - type: filter id: 218 - parameters: {bandpass: 0, frequency: 0, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 0, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 219 - parameters: {bandpass: 0, frequency: 66, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 66, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: distort id: 215 parameters: {drive: 86, stereo: 0} @@ -36,7 +36,7 @@ units: parameters: {stereo: 0} - type: filter id: 225 - parameters: {bandpass: 0, frequency: 71, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 81, stereo: 0} + parameters: {bandpass: -1, frequency: 71, highpass: 0, lowpass: 1, resonance: 81, stereo: 0} - type: addp id: 224 parameters: {stereo: 0} diff --git a/tracker/presets/BA/SlapBass.yml b/tracker/presets/BA/SlapBass.yml index 5070d7d..a2f611d 100644 --- a/tracker/presets/BA/SlapBass.yml +++ b/tracker/presets/BA/SlapBass.yml @@ -27,7 +27,7 @@ units: parameters: {color: 67, detune: 64, gain: 128, looplength: 905, loopstart: 6513, phase: 0, samplestart: 1252819, shape: 105, stereo: 0, transpose: 93, type: 4, unison: 0} - type: filter id: 1035 - parameters: {bandpass: 0, frequency: 50, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 100, stereo: 0} + parameters: {bandpass: 0, frequency: 50, highpass: -1, lowpass: 1, resonance: 100, stereo: 0} - type: addp id: 1032 parameters: {stereo: 0} @@ -36,10 +36,10 @@ units: parameters: {stereo: 0} - type: filter id: 170 - parameters: {bandpass: 0, frequency: 28, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 65, stereo: 0} + parameters: {bandpass: 0, frequency: 28, highpass: 0, lowpass: 1, resonance: 65, stereo: 0} - type: filter id: 1062 - parameters: {bandpass: 0, frequency: 57, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: -1, frequency: 57, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: pan id: 18 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/BA/bass-adam.yml b/tracker/presets/BA/bass-adam.yml index 7716552..f240241 100644 --- a/tracker/presets/BA/bass-adam.yml +++ b/tracker/presets/BA/bass-adam.yml @@ -25,10 +25,10 @@ units: parameters: {stereo: 0} - type: filter id: 221 - parameters: {bandpass: 0, frequency: 13, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 13, highpass: 1, lowpass: 0, resonance: 128, stereo: 0} - type: filter id: 1 - parameters: {bandpass: 0, frequency: 25, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 104, stereo: 0} + parameters: {bandpass: 0, frequency: 25, highpass: 0, lowpass: 1, resonance: 104, stereo: 0} - type: pan id: 222 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/BA/bass-punch.yml b/tracker/presets/BA/bass-punch.yml index 657100c..6f5c3a4 100644 --- a/tracker/presets/BA/bass-punch.yml +++ b/tracker/presets/BA/bass-punch.yml @@ -27,10 +27,10 @@ units: parameters: {amount: 96, port: 0, sendpop: 1, target: 11} - type: filter id: 10 - parameters: {bandpass: 0, frequency: 39, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 74, stereo: 0} + parameters: {bandpass: 0, frequency: 39, highpass: 0, lowpass: 1, resonance: 74, stereo: 0} - type: filter id: 11 - parameters: {bandpass: 0, frequency: 11, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 11, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 12 parameters: {stereo: 0} diff --git a/tracker/presets/BA/bass.yml b/tracker/presets/BA/bass.yml index 0cca19d..4257248 100644 --- a/tracker/presets/BA/bass.yml +++ b/tracker/presets/BA/bass.yml @@ -30,10 +30,10 @@ units: parameters: {stereo: 0} - type: filter id: 11 - parameters: {bandpass: 0, frequency: 18, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 64, stereo: 0} + parameters: {bandpass: 0, frequency: 18, highpass: -1, lowpass: 1, resonance: 64, stereo: 0} - type: filter id: 12 - parameters: {bandpass: 0, frequency: 32, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 48, stereo: 0} + parameters: {bandpass: 0, frequency: 32, highpass: 0, lowpass: 1, resonance: 48, stereo: 0} - type: distort id: 13 parameters: {drive: 88, stereo: 0} diff --git a/tracker/presets/BA/dark.yml b/tracker/presets/BA/dark.yml index 60e1f63..dc868b8 100644 --- a/tracker/presets/BA/dark.yml +++ b/tracker/presets/BA/dark.yml @@ -21,7 +21,7 @@ units: parameters: {stereo: 0} - type: filter id: 182 - parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 48, stereo: 0} + parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, resonance: 48, stereo: 0} - type: mulp id: 183 parameters: {stereo: 0} diff --git a/tracker/presets/BA/deepness.yml b/tracker/presets/BA/deepness.yml index ef99ca9..aa08b7c 100644 --- a/tracker/presets/BA/deepness.yml +++ b/tracker/presets/BA/deepness.yml @@ -33,10 +33,10 @@ units: parameters: {stereo: 0} - type: filter id: 12 - parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 88, stereo: 0} + parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, resonance: 88, stereo: 0} - type: filter id: 13 - parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 88, stereo: 0} + parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, resonance: 88, stereo: 0} - type: mulp id: 14 parameters: {stereo: 0} diff --git a/tracker/presets/BA/mid bass.yml b/tracker/presets/BA/mid bass.yml index 5024ffe..1c8b218 100644 --- a/tracker/presets/BA/mid bass.yml +++ b/tracker/presets/BA/mid bass.yml @@ -33,10 +33,10 @@ units: parameters: {stereo: 0} - type: filter id: 13 - parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 14 - parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, resonance: 64, stereo: 0} - type: mulp id: 15 parameters: {stereo: 0} diff --git a/tracker/presets/BA/not-from-this-world.yml b/tracker/presets/BA/not-from-this-world.yml index fe48ad0..e1c0d64 100644 --- a/tracker/presets/BA/not-from-this-world.yml +++ b/tracker/presets/BA/not-from-this-world.yml @@ -36,19 +36,19 @@ units: parameters: {stereo: 0} - type: filter id: 13 - parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, resonance: 64, stereo: 0} - type: xch id: 14 parameters: {stereo: 0} - type: filter id: 15 - parameters: {bandpass: 1, frequency: 96, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 79, stereo: 0} + parameters: {bandpass: 1, frequency: 96, highpass: 0, lowpass: 0, resonance: 79, stereo: 0} - type: addp id: 16 parameters: {stereo: 0} - type: filter id: 17 - parameters: {bandpass: 0, frequency: 19, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 37, stereo: 0} + parameters: {bandpass: 0, frequency: 19, highpass: 1, lowpass: 0, resonance: 37, stereo: 0} - type: mulp id: 18 parameters: {stereo: 0} diff --git a/tracker/presets/DR/Hihat generator.yml b/tracker/presets/DR/Hihat generator.yml index e79fd8f..69a66fe 100644 --- a/tracker/presets/DR/Hihat generator.yml +++ b/tracker/presets/DR/Hihat generator.yml @@ -22,10 +22,10 @@ units: parameters: {stereo: 0} - type: filter id: 12 - parameters: {bandpass: 0, frequency: 110, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 110, highpass: 1, lowpass: 0, resonance: 128, stereo: 0} - type: filter id: 331 - parameters: {bandpass: 0, frequency: 94, highpass: 0, lowpass: 0, negbandpass: 1, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: -1, frequency: 94, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: pan id: 5 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/DR/Kick (sample).yml b/tracker/presets/DR/Kick (sample).yml index 259dfdd..f5ef652 100644 --- a/tracker/presets/DR/Kick (sample).yml +++ b/tracker/presets/DR/Kick (sample).yml @@ -12,10 +12,10 @@ units: parameters: {stereo: 0} - type: filter id: 1042 - parameters: {bandpass: 0, frequency: 10, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 57, stereo: 0} + parameters: {bandpass: 0, frequency: 10, highpass: -1, lowpass: 1, resonance: 57, stereo: 0} - type: filter id: 1043 - parameters: {bandpass: 1, frequency: 70, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 23, stereo: 0} + parameters: {bandpass: 1, frequency: 70, highpass: -1, lowpass: 1, resonance: 23, stereo: 0} - type: pan id: 1040 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/DR/Kick 2.yml b/tracker/presets/DR/Kick 2.yml index 8280923..16989f7 100644 --- a/tracker/presets/DR/Kick 2.yml +++ b/tracker/presets/DR/Kick 2.yml @@ -16,7 +16,7 @@ units: parameters: {color: 128, damp: 0, detune: 64, dry: 128, feedback: 96, gain: 128, notetracking: 2, phase: 0, pregain: 40, shape: 76, stereo: 0, transpose: 64, type: 0} - type: filter id: 281 - parameters: {bandpass: 1, frequency: 86, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 1, panning: 64, resonance: 54, stereo: 0} + parameters: {bandpass: 1, frequency: 86, highpass: -1, lowpass: 0, panning: 64, resonance: 54, stereo: 0} - type: mulp id: 263 parameters: {auxgain: 64, outgain: 64, stereo: 0} @@ -44,7 +44,7 @@ units: parameters: {color: 128, detune: 64, gain: 110, phase: 0, shape: 64, stereo: 0, transpose: 45, type: 0} - type: filter id: 283 - parameters: {bandpass: 0, frequency: 17, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 98, stereo: 0} + parameters: {bandpass: 0, frequency: 17, highpass: -1, lowpass: 1, resonance: 98, stereo: 0} - type: mulp id: 279 parameters: {stereo: 0} diff --git a/tracker/presets/DR/Kick 3.yml b/tracker/presets/DR/Kick 3.yml index 173074a..8c781c4 100644 --- a/tracker/presets/DR/Kick 3.yml +++ b/tracker/presets/DR/Kick 3.yml @@ -10,7 +10,7 @@ units: parameters: {color: 64, detune: 64, gain: 128, phase: 0, shape: 73, stereo: 0, transpose: 64, type: 0} - type: filter id: 333 - parameters: {bandpass: 1, frequency: 59, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 59, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: mulp id: 263 parameters: {auxgain: 64, outgain: 64, stereo: 0} @@ -44,7 +44,7 @@ units: parameters: {color: 128, detune: 64, gain: 128, phase: 0, shape: 74, stereo: 0, transpose: 41, type: 0} - type: filter id: 283 - parameters: {bandpass: 0, frequency: 10, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 54, stereo: 0} + parameters: {bandpass: 0, frequency: 10, highpass: 1, lowpass: 0, resonance: 54, stereo: 0} - type: mulp id: 279 parameters: {stereo: 0} diff --git a/tracker/presets/DR/Kick 4.yml b/tracker/presets/DR/Kick 4.yml index e5f5da4..5648751 100644 --- a/tracker/presets/DR/Kick 4.yml +++ b/tracker/presets/DR/Kick 4.yml @@ -10,7 +10,7 @@ units: parameters: {color: 64, detune: 64, gain: 128, phase: 0, shape: 70, stereo: 0, transpose: 64, type: 0} - type: filter id: 333 - parameters: {bandpass: 1, frequency: 41, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 78, stereo: 0} + parameters: {bandpass: 1, frequency: 41, highpass: 0, lowpass: 0, resonance: 78, stereo: 0} - type: mulp id: 263 parameters: {auxgain: 64, outgain: 64, stereo: 0} @@ -44,7 +44,7 @@ units: parameters: {color: 128, detune: 64, gain: 128, phase: 0, shape: 64, stereo: 0, transpose: 42, type: 0} - type: filter id: 283 - parameters: {bandpass: 0, frequency: 14, highpass: 0, lowpass: 0, negbandpass: 1, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: -1, frequency: 14, highpass: -1, lowpass: 0, resonance: 128, stereo: 0} - type: mulp id: 279 parameters: {stereo: 0} @@ -56,7 +56,7 @@ units: parameters: {stereo: 0} - type: filter id: 337 - parameters: {bandpass: 1, frequency: 10, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 10, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: pan id: 294 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/DR/Kick 5.yml b/tracker/presets/DR/Kick 5.yml index b016bf3..4a8c54d 100644 --- a/tracker/presets/DR/Kick 5.yml +++ b/tracker/presets/DR/Kick 5.yml @@ -10,7 +10,7 @@ units: parameters: {color: 64, detune: 64, gain: 128, phase: 0, shape: 108, stereo: 0, transpose: 64, type: 0} - type: filter id: 333 - parameters: {bandpass: 1, frequency: 50, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 50, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: mulp id: 263 parameters: {auxgain: 64, outgain: 64, stereo: 0} @@ -50,7 +50,7 @@ units: parameters: {color: 128, detune: 64, gain: 104, phase: 0, shape: 64, stereo: 0, transpose: 46, type: 0} - type: filter id: 283 - parameters: {bandpass: 1, frequency: 10, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 39, stereo: 0} + parameters: {bandpass: 1, frequency: 10, highpass: 1, lowpass: 0, resonance: 39, stereo: 0} - type: mulp id: 279 parameters: {stereo: 0} diff --git a/tracker/presets/DR/Kick.yml b/tracker/presets/DR/Kick.yml index cd49ee5..71f6654 100644 --- a/tracker/presets/DR/Kick.yml +++ b/tracker/presets/DR/Kick.yml @@ -16,7 +16,7 @@ units: parameters: {color: 128, detune: 64, gain: 128, phase: 0, shape: 64, stereo: 0, transpose: 57, type: 0} - type: filter id: 281 - parameters: {bandpass: 0, frequency: 81, highpass: 1, lowpass: 0, negbandpass: 1, neghighpass: 0, resonance: 102, stereo: 0} + parameters: {bandpass: -1, frequency: 81, highpass: 1, lowpass: 0, resonance: 102, stereo: 0} - type: mulp id: 263 parameters: {stereo: 0} @@ -44,10 +44,10 @@ units: parameters: {color: 128, detune: 64, gain: 128, phase: 0, shape: 64, stereo: 0, transpose: 45, type: 0} - type: filter id: 283 - parameters: {bandpass: 0, frequency: 13, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 13, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 287 - parameters: {bandpass: 0, frequency: 108, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 108, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 279 parameters: {stereo: 0} diff --git a/tracker/presets/DR/clap edm.yml b/tracker/presets/DR/clap edm.yml index 671e89f..1628a30 100644 --- a/tracker/presets/DR/clap edm.yml +++ b/tracker/presets/DR/clap edm.yml @@ -13,7 +13,7 @@ units: parameters: {gain: 65, shape: 128, stereo: 0} - type: filter id: 39 - parameters: {bandpass: 1, frequency: 55, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 66, stereo: 0} + parameters: {bandpass: 1, frequency: 55, highpass: 0, lowpass: 0, resonance: 66, stereo: 0} - type: mulp id: 17 parameters: {stereo: 0} @@ -29,7 +29,7 @@ units: parameters: {gain: 128, shape: 79, stereo: 0} - type: filter id: 23 - parameters: {bandpass: 1, frequency: 43, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 43, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 21 parameters: {stereo: 0} diff --git a/tracker/presets/DR/clap.yml b/tracker/presets/DR/clap.yml index 1178c57..a4cbf78 100644 --- a/tracker/presets/DR/clap.yml +++ b/tracker/presets/DR/clap.yml @@ -51,7 +51,7 @@ units: parameters: {drive: 89, stereo: 0} - type: filter id: 5 - parameters: {bandpass: 1, frequency: 46, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 46, stereo: 0} + parameters: {bandpass: 1, frequency: 46, highpass: -1, lowpass: 1, resonance: 46, stereo: 0} - type: pan id: 175 parameters: {panning: 73, stereo: 0} diff --git a/tracker/presets/DR/hihat closed.yml b/tracker/presets/DR/hihat closed.yml index 512847e..7e63ee4 100644 --- a/tracker/presets/DR/hihat closed.yml +++ b/tracker/presets/DR/hihat closed.yml @@ -18,10 +18,10 @@ units: parameters: {stereo: 0} - type: filter id: 15 - parameters: {bandpass: 0, frequency: 67, highpass: 0, lowpass: 0, negbandpass: 1, neghighpass: 1, resonance: 95, stereo: 0} + parameters: {bandpass: -1, frequency: 67, highpass: -1, lowpass: 0, resonance: 95, stereo: 0} - type: filter id: 4 - parameters: {bandpass: 0, frequency: 109, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 55, stereo: 0} + parameters: {bandpass: -1, frequency: 109, highpass: 0, lowpass: 1, resonance: 55, stereo: 0} - type: pan id: 5 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/DR/hihat open.yml b/tracker/presets/DR/hihat open.yml index af7240e..67ac94b 100644 --- a/tracker/presets/DR/hihat open.yml +++ b/tracker/presets/DR/hihat open.yml @@ -18,10 +18,10 @@ units: parameters: {stereo: 0} - type: filter id: 4 - parameters: {bandpass: 1, frequency: 120, highpass: 1, lowpass: 0, negbandpass: 1, neghighpass: 0, resonance: 104, stereo: 0} + parameters: {bandpass: 0, frequency: 120, highpass: 1, lowpass: 0, resonance: 104, stereo: 0} - type: filter id: 12 - parameters: {bandpass: 0, frequency: 119, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 119, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: pan id: 5 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/DR/kick 6.yml b/tracker/presets/DR/kick 6.yml index 4b0914f..9594fe4 100644 --- a/tracker/presets/DR/kick 6.yml +++ b/tracker/presets/DR/kick 6.yml @@ -24,7 +24,7 @@ units: parameters: {stereo: 0} - type: filter id: 25 - parameters: {bandpass: 0, frequency: 12, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 36, stereo: 0} + parameters: {bandpass: 0, frequency: 12, highpass: 1, lowpass: 0, resonance: 36, stereo: 0} - id: 33 parameters: {} - type: envelope @@ -35,7 +35,7 @@ units: parameters: {gain: 125, shape: 51, stereo: 0} - type: filter id: 32 - parameters: {bandpass: 1, frequency: 55, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 55, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: mulp id: 28 parameters: {stereo: 0} diff --git a/tracker/presets/DR/kick edm 2.yml b/tracker/presets/DR/kick edm 2.yml index 0355b5d..8b83633 100644 --- a/tracker/presets/DR/kick edm 2.yml +++ b/tracker/presets/DR/kick edm 2.yml @@ -19,7 +19,7 @@ units: parameters: {color: 59, detune: 64, gain: 80, looplength: 1, loopstart: 1034, phase: 0, samplestart: 741926, shape: 69, stereo: 0, transpose: 76, type: 4} - type: filter id: 113 - parameters: {bandpass: 0, frequency: 108, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 108, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 10 parameters: {stereo: 0} diff --git a/tracker/presets/DR/kick edm.yml b/tracker/presets/DR/kick edm.yml index 145d050..d79dba9 100644 --- a/tracker/presets/DR/kick edm.yml +++ b/tracker/presets/DR/kick edm.yml @@ -22,10 +22,10 @@ units: parameters: {gain: 102, shape: 84, stereo: 0} - type: filter id: 112 - parameters: {bandpass: 0, frequency: 124, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 41, stereo: 0} + parameters: {bandpass: 0, frequency: 124, highpass: -1, lowpass: 1, resonance: 41, stereo: 0} - type: filter id: 113 - parameters: {bandpass: 0, frequency: 84, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 87, stereo: 0} + parameters: {bandpass: 0, frequency: 84, highpass: 0, lowpass: 1, resonance: 87, stereo: 0} - type: mulp id: 10 parameters: {stereo: 0} @@ -34,16 +34,16 @@ units: parameters: {stereo: 0} - type: filter id: 12 - parameters: {bandpass: 0, frequency: 14, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 75, stereo: 0} + parameters: {bandpass: 0, frequency: 14, highpass: -1, lowpass: 1, resonance: 75, stereo: 0} - type: filter id: 13 - parameters: {bandpass: 0, frequency: 53, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 53, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 14 - parameters: {bandpass: 0, frequency: 7, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 76, stereo: 0} + parameters: {bandpass: 0, frequency: 7, highpass: 1, lowpass: 0, resonance: 76, stereo: 0} - type: filter id: 15 - parameters: {bandpass: 0, frequency: 13, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 54, stereo: 0} + parameters: {bandpass: 0, frequency: 13, highpass: 1, lowpass: 0, resonance: 54, stereo: 0} - type: pan id: 114 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/DR/rimshot.yml b/tracker/presets/DR/rimshot.yml index 3c54f59..bad84ff 100644 --- a/tracker/presets/DR/rimshot.yml +++ b/tracker/presets/DR/rimshot.yml @@ -17,8 +17,8 @@ units: id: 3002 parameters: {color: 128, detune: 64, gain: 64, lfo: 0, phase: 0, shape: 80, stereo: 0, transpose: 64, type: 0} - type: noise parameters: {gain: 48, shape: 47, stereo: 0} - - type: filter parameters: {bandpass: 1, frequency: 86, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 59, stereo: 0} - - type: filter parameters: {bandpass: 1, frequency: 56, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 4, stereo: 0} + - type: filter parameters: {bandpass: 1, frequency: 86, highpass: 0, lowpass: 1, resonance: 59, stereo: 0} + - type: filter parameters: {bandpass: 1, frequency: 56, highpass: 1, lowpass: 1, resonance: 4, stereo: 0} - type: addp parameters: {stereo: 0} - type: addp parameters: {stereo: 0} - type: distort parameters: {drive: 76, stereo: 0} @@ -26,7 +26,7 @@ units: - type: dbgain parameters: {decibels: 37, stereo: 0} - type: compressor parameters: {attack: 46, invgain: 114, ratio: 110, release: 49, stereo: 0, threshold: 62} - type: mulp parameters: {stereo: 0} - - type: filter parameters: {bandpass: 0, frequency: 39, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 17, stereo: 0} - - type: filter parameters: {bandpass: 0, frequency: 48, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + - type: filter parameters: {bandpass: 0, frequency: 39, highpass: 1, lowpass: 0, resonance: 17, stereo: 0} + - type: filter parameters: {bandpass: 0, frequency: 48, highpass: 1, lowpass: 0, resonance: 128, stereo: 0} - type: pan parameters: {panning: 64, stereo: 0} - type: outaux parameters: {auxgain: 0, outgain: 48, stereo: 1} diff --git a/tracker/presets/DR/snare (adam).yml b/tracker/presets/DR/snare (adam).yml index fc459a3..063d691 100644 --- a/tracker/presets/DR/snare (adam).yml +++ b/tracker/presets/DR/snare (adam).yml @@ -30,7 +30,7 @@ units: - type: mulp parameters: {stereo: 0} - type: filter - parameters: {bandpass: 0, frequency: 106, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 106, highpass: 1, lowpass: 0, resonance: 128, stereo: 0} - type: addp parameters: {stereo: 0} - parameters: {} diff --git a/tracker/presets/DR/snare 2.yml b/tracker/presets/DR/snare 2.yml index 5461153..caa1cec 100644 --- a/tracker/presets/DR/snare 2.yml +++ b/tracker/presets/DR/snare 2.yml @@ -33,7 +33,7 @@ units: parameters: {drive: 10, stereo: 0} - type: filter id: 339 - parameters: {bandpass: 0, frequency: 60, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 60, highpass: -1, lowpass: 0, resonance: 128, stereo: 0} - type: addp id: 316 parameters: {stereo: 0} diff --git a/tracker/presets/DR/snare edm 2 (sample-st).yml b/tracker/presets/DR/snare edm 2 (sample-st).yml index 743e964..e71a002 100644 --- a/tracker/presets/DR/snare edm 2 (sample-st).yml +++ b/tracker/presets/DR/snare edm 2 (sample-st).yml @@ -18,9 +18,9 @@ units: parameters: {stereo: 0} - type: filter id: 201 - parameters: {bandpass: 0, frequency: 110, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 110, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: filter - parameters: {bandpass: 0, frequency: 118, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 112, stereo: 0} + parameters: {bandpass: 0, frequency: 118, highpass: 0, lowpass: 1, resonance: 112, stereo: 0} - type: addp parameters: {stereo: 0} - type: pan diff --git a/tracker/presets/DR/snare edm 2.yml b/tracker/presets/DR/snare edm 2.yml index fa0b2eb..32c9470 100644 --- a/tracker/presets/DR/snare edm 2.yml +++ b/tracker/presets/DR/snare edm 2.yml @@ -25,28 +25,28 @@ units: parameters: {stereo: 0} - type: filter id: 201 - parameters: {bandpass: 0, frequency: 97, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 97, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 225 - parameters: {bandpass: 0, frequency: 108, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 108, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: addp id: 226 parameters: {stereo: 0} - type: filter id: 202 - parameters: {bandpass: 0, frequency: 100, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 100, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 227 - parameters: {bandpass: 0, frequency: 19, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 98, stereo: 0} + parameters: {bandpass: 0, frequency: 19, highpass: 1, lowpass: 0, resonance: 98, stereo: 0} - type: filter id: 228 - parameters: {bandpass: 0, frequency: 15, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 15, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 229 - parameters: {bandpass: 0, frequency: 40, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 74, stereo: 0} + parameters: {bandpass: 0, frequency: 40, highpass: 1, lowpass: 1, resonance: 74, stereo: 0} - type: filter id: 230 - parameters: {bandpass: 0, frequency: 23, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 42, stereo: 0} + parameters: {bandpass: 0, frequency: 23, highpass: 1, lowpass: 0, resonance: 42, stereo: 0} - type: distort id: 338 parameters: {drive: 88, stereo: 0} diff --git a/tracker/presets/DR/snare edm 3.yml b/tracker/presets/DR/snare edm 3.yml index ef702a4..84abee6 100644 --- a/tracker/presets/DR/snare edm 3.yml +++ b/tracker/presets/DR/snare edm 3.yml @@ -25,16 +25,16 @@ units: parameters: {stereo: 0} - type: filter id: 201 - parameters: {bandpass: 0, frequency: 80, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 98, stereo: 0} + parameters: {bandpass: 0, frequency: 80, highpass: -1, lowpass: 1, resonance: 98, stereo: 0} - type: filter id: 225 - parameters: {bandpass: 0, frequency: 120, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: -1, frequency: 120, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: addp id: 226 parameters: {stereo: 0} - type: filter id: 202 - parameters: {bandpass: 0, frequency: 50, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 95, stereo: 0} + parameters: {bandpass: 0, frequency: 50, highpass: -1, lowpass: 1, resonance: 95, stereo: 0} - type: distort id: 338 parameters: {drive: 112, stereo: 0} diff --git a/tracker/presets/DR/snare edm.yml b/tracker/presets/DR/snare edm.yml index 6dbdf23..1bacf38 100644 --- a/tracker/presets/DR/snare edm.yml +++ b/tracker/presets/DR/snare edm.yml @@ -25,28 +25,28 @@ units: parameters: {stereo: 0} - type: filter id: 201 - parameters: {bandpass: 0, frequency: 97, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 97, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 225 - parameters: {bandpass: 0, frequency: 108, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 108, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: addp id: 226 parameters: {stereo: 0} - type: filter id: 202 - parameters: {bandpass: 0, frequency: 100, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 100, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 227 - parameters: {bandpass: 0, frequency: 19, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 98, stereo: 0} + parameters: {bandpass: 0, frequency: 19, highpass: 1, lowpass: 0, resonance: 98, stereo: 0} - type: filter id: 228 - parameters: {bandpass: 0, frequency: 15, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 15, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 229 - parameters: {bandpass: 0, frequency: 40, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 74, stereo: 0} + parameters: {bandpass: 0, frequency: 40, highpass: 1, lowpass: 1, resonance: 74, stereo: 0} - type: filter id: 230 - parameters: {bandpass: 0, frequency: 23, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 42, stereo: 0} + parameters: {bandpass: 0, frequency: 23, highpass: 1, lowpass: 0, resonance: 42, stereo: 0} - type: pan id: 231 parameters: {panning: 59, stereo: 0} diff --git a/tracker/presets/DR/snare.yml b/tracker/presets/DR/snare.yml index 1d2e65f..0ea5ac1 100644 --- a/tracker/presets/DR/snare.yml +++ b/tracker/presets/DR/snare.yml @@ -33,7 +33,7 @@ units: parameters: {drive: 11, stereo: 0} - type: filter id: 333 - parameters: {bandpass: 1, frequency: 86, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 86, highpass: 1, lowpass: 0, resonance: 128, stereo: 0} - type: addp id: 316 parameters: {stereo: 0} diff --git a/tracker/presets/KEYS/clavi.yml b/tracker/presets/KEYS/clavi.yml index ee47a8f..ec94b92 100644 --- a/tracker/presets/KEYS/clavi.yml +++ b/tracker/presets/KEYS/clavi.yml @@ -15,7 +15,7 @@ units: parameters: {damp: 0, dry: 128, feedback: 96, notetracking: 2, panning: 64, pregain: 40, stereo: 1} - type: filter id: 1058 - parameters: {bandpass: 0, frequency: 96, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 1, panning: 64, resonance: 128, stereo: 1} + parameters: {bandpass: -1, frequency: 96, highpass: -1, lowpass: 1, panning: 64, resonance: 128, stereo: 1} - type: outaux id: 6 parameters: {auxgain: 15, outgain: 54, panning: 64, stereo: 1} diff --git a/tracker/presets/KEYS/minorium.yml b/tracker/presets/KEYS/minorium.yml index 381a00f..268c31a 100644 --- a/tracker/presets/KEYS/minorium.yml +++ b/tracker/presets/KEYS/minorium.yml @@ -27,19 +27,19 @@ units: parameters: {color: 16, detune: 64, gain: 72, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 67, type: 1} - type: filter id: 241 - parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: oscillator id: 12 parameters: {color: 16, detune: 64, gain: 64, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 71, type: 1} - type: filter id: 13 - parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: oscillator id: 14 parameters: {color: 16, detune: 64, gain: 96, lfo: 0, phase: 0, shape: 64, stereo: 0, transpose: 64, type: 1} - type: filter id: 15 - parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: addp id: 16 parameters: {stereo: 0} @@ -54,7 +54,7 @@ units: parameters: {amount: 88, port: 0, sendpop: 1, target: 21} - type: filter id: 21 - parameters: {bandpass: 0, frequency: 32, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 16, stereo: 0} + parameters: {bandpass: 0, frequency: 32, highpass: 1, lowpass: 1, resonance: 16, stereo: 0} - type: mulp id: 22 parameters: {stereo: 0} diff --git a/tracker/presets/KEYS/organ.yml b/tracker/presets/KEYS/organ.yml index 2b501e1..69244b8 100644 --- a/tracker/presets/KEYS/organ.yml +++ b/tracker/presets/KEYS/organ.yml @@ -61,7 +61,7 @@ units: parameters: {stereo: 0} - type: filter id: 245 - parameters: {bandpass: 1, frequency: 0, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 0, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: pan id: 211 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/KEYS/piano2.yml b/tracker/presets/KEYS/piano2.yml index 9896d44..6caa4ab 100644 --- a/tracker/presets/KEYS/piano2.yml +++ b/tracker/presets/KEYS/piano2.yml @@ -18,14 +18,14 @@ units: parameters: {stereo: 0} - type: filter id: 6 - parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: delay id: 60 parameters: {damp: 8, dry: 64, feedback: 127, notetracking: 1, pregain: 64, stereo: 0} varargs: [10787] - type: filter id: 61 - parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 62 parameters: {stereo: 0} diff --git a/tracker/presets/KEYS/rhodes.yml b/tracker/presets/KEYS/rhodes.yml index fc502f0..ec25732 100644 --- a/tracker/presets/KEYS/rhodes.yml +++ b/tracker/presets/KEYS/rhodes.yml @@ -21,7 +21,7 @@ units: parameters: {stereo: 1} - type: filter id: 175 - parameters: {bandpass: 0, frequency: 38, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 111, stereo: 1} + parameters: {bandpass: 0, frequency: 38, highpass: 0, lowpass: 1, resonance: 111, stereo: 1} - type: oscillator id: 180 parameters: {color: 128, detune: 64, gain: 33, lfo: 1, phase: 0, shape: 64, stereo: 0, transpose: 63, type: 0, unison: 0} diff --git a/tracker/presets/LEAD/BellLead.yml b/tracker/presets/LEAD/BellLead.yml index b263494..7c0f80d 100644 --- a/tracker/presets/LEAD/BellLead.yml +++ b/tracker/presets/LEAD/BellLead.yml @@ -36,10 +36,10 @@ units: parameters: {stereo: 0} - type: filter id: 217 - parameters: {bandpass: 0, frequency: 23, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 23, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 1005 - parameters: {bandpass: 0, frequency: 39, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 39, highpass: 1, lowpass: 0, resonance: 128, stereo: 0} - type: pan id: 168 parameters: {panning: 61, stereo: 0} diff --git a/tracker/presets/LEAD/Flute.yml b/tracker/presets/LEAD/Flute.yml index 22d8c5b..c8504bb 100644 --- a/tracker/presets/LEAD/Flute.yml +++ b/tracker/presets/LEAD/Flute.yml @@ -12,7 +12,7 @@ units: parameters: {holdfreq: 80, stereo: 1} - type: filter id: 201 - parameters: {bandpass: 1, frequency: 52, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 1} + parameters: {bandpass: 1, frequency: 52, highpass: 1, lowpass: 0, resonance: 128, stereo: 1} - type: mulp id: 53 parameters: {stereo: 1} @@ -27,7 +27,7 @@ units: parameters: {stereo: 0} - type: filter id: 219 - parameters: {bandpass: 1, frequency: 90, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 117, stereo: 0} + parameters: {bandpass: 1, frequency: 90, highpass: 0, lowpass: 0, resonance: 117, stereo: 0} - type: addp id: 216 parameters: {stereo: 0} @@ -45,13 +45,13 @@ units: parameters: {stereo: 0} - type: filter id: 218 - parameters: {bandpass: 1, frequency: 91, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 91, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: addp id: 209 parameters: {stereo: 0} - type: filter id: 220 - parameters: {bandpass: 1, frequency: 77, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 1} + parameters: {bandpass: 1, frequency: 77, highpass: 0, lowpass: 1, resonance: 128, stereo: 1} - type: pan id: 55 parameters: {panning: 73, stereo: 1} diff --git a/tracker/presets/LEAD/HappyLead.yml b/tracker/presets/LEAD/HappyLead.yml index 7b3deb9..ae790bb 100644 --- a/tracker/presets/LEAD/HappyLead.yml +++ b/tracker/presets/LEAD/HappyLead.yml @@ -27,10 +27,10 @@ units: parameters: {stereo: 0} - type: filter id: 217 - parameters: {bandpass: 0, frequency: 91, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 91, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 230 - parameters: {bandpass: 1, frequency: 49, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 49, highpass: -1, lowpass: 0, resonance: 128, stereo: 0} - type: pan id: 168 parameters: {panning: 60, stereo: 0} diff --git a/tracker/presets/LEAD/Jarresque.yml b/tracker/presets/LEAD/Jarresque.yml index 8a047bf..8387a85 100644 --- a/tracker/presets/LEAD/Jarresque.yml +++ b/tracker/presets/LEAD/Jarresque.yml @@ -27,7 +27,7 @@ units: parameters: {gain: 16, shape: 64, stereo: 0} - type: filter id: 10 - parameters: {bandpass: 1, frequency: 69, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 57, stereo: 0} + parameters: {bandpass: 1, frequency: 69, highpass: 0, lowpass: 0, resonance: 57, stereo: 0} - type: addp id: 11 parameters: {stereo: 0} @@ -39,13 +39,13 @@ units: parameters: {stereo: 0} - type: filter id: 14 - parameters: {bandpass: 1, frequency: 57, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 57, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: xch id: 15 parameters: {stereo: 0} - type: filter id: 16 - parameters: {bandpass: 1, frequency: 93, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 93, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: addp id: 17 parameters: {stereo: 0} diff --git a/tracker/presets/LEAD/Morpher.yml b/tracker/presets/LEAD/Morpher.yml index 7a11315..3c96e73 100644 --- a/tracker/presets/LEAD/Morpher.yml +++ b/tracker/presets/LEAD/Morpher.yml @@ -33,19 +33,19 @@ units: parameters: {stereo: 0} - type: filter id: 15 - parameters: {bandpass: 1, frequency: 90, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 90, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: xch id: 16 parameters: {stereo: 0} - type: filter id: 17 - parameters: {bandpass: 1, frequency: 78, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 78, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: addp id: 18 parameters: {stereo: 0} - type: filter id: 20 - parameters: {bandpass: 0, frequency: 93, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 93, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 21 parameters: {stereo: 0} diff --git a/tracker/presets/LEAD/SuperSaw 2.yml b/tracker/presets/LEAD/SuperSaw 2.yml index 2cd68bd..7daad3e 100644 --- a/tracker/presets/LEAD/SuperSaw 2.yml +++ b/tracker/presets/LEAD/SuperSaw 2.yml @@ -54,7 +54,7 @@ units: parameters: {panning: 60, stereo: 1} - type: filter id: 19 - parameters: {bandpass: 0, frequency: 113, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 120, stereo: 1} + parameters: {bandpass: 0, frequency: 113, highpass: -1, lowpass: 1, resonance: 120, stereo: 1} - id: 31 parameters: {} - type: outaux diff --git a/tracker/presets/LEAD/SuperSaw 3.yml b/tracker/presets/LEAD/SuperSaw 3.yml index 33f2cf4..dce74b5 100644 --- a/tracker/presets/LEAD/SuperSaw 3.yml +++ b/tracker/presets/LEAD/SuperSaw 3.yml @@ -44,7 +44,7 @@ units: varargs: [350] - type: filter id: 26 - parameters: {bandpass: 0, frequency: 128, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 77, stereo: 1} + parameters: {bandpass: 0, frequency: 128, highpass: 0, lowpass: 1, resonance: 77, stereo: 1} - type: compressor id: 27 parameters: {attack: 42, invgain: 91, ratio: 81, release: 63, stereo: 1, threshold: 55} diff --git a/tracker/presets/LEAD/SuperSaw.yml b/tracker/presets/LEAD/SuperSaw.yml index 41b8408..efff727 100644 --- a/tracker/presets/LEAD/SuperSaw.yml +++ b/tracker/presets/LEAD/SuperSaw.yml @@ -54,7 +54,7 @@ units: parameters: {panning: 60, stereo: 1} - type: filter id: 19 - parameters: {bandpass: 0, frequency: 116, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 1} + parameters: {bandpass: 0, frequency: 116, highpass: 0, lowpass: 1, resonance: 128, stereo: 1} - type: delay id: 51 parameters: {damp: 91, dry: 128, feedback: 96, notetracking: 2, pregain: 65, stereo: 1} diff --git a/tracker/presets/PAD/Pad Gen.yml b/tracker/presets/PAD/Pad Gen.yml index f453d80..09bed86 100644 --- a/tracker/presets/PAD/Pad Gen.yml +++ b/tracker/presets/PAD/Pad Gen.yml @@ -27,7 +27,7 @@ units: parameters: {stereo: 0} - type: filter id: 230 - parameters: {bandpass: 1, frequency: 68, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 93, stereo: 0} + parameters: {bandpass: 1, frequency: 68, highpass: 1, lowpass: 0, resonance: 93, stereo: 0} - type: pan id: 168 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/PAD/pad-long.yml b/tracker/presets/PAD/pad-long.yml index c9c1f34..55e629e 100644 --- a/tracker/presets/PAD/pad-long.yml +++ b/tracker/presets/PAD/pad-long.yml @@ -33,10 +33,10 @@ units: parameters: {stereo: 0} - type: filter id: 13 - parameters: {bandpass: 0, frequency: 53, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 53, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 14 - parameters: {bandpass: 0, frequency: 16, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 48, stereo: 0} + parameters: {bandpass: 0, frequency: 16, highpass: 0, lowpass: 1, resonance: 48, stereo: 0} - type: mulp id: 15 parameters: {stereo: 0} diff --git a/tracker/presets/PAD/pad.yml b/tracker/presets/PAD/pad.yml index 2291b95..ccda129 100644 --- a/tracker/presets/PAD/pad.yml +++ b/tracker/presets/PAD/pad.yml @@ -30,10 +30,10 @@ units: parameters: {stereo: 0} - type: filter id: 11 - parameters: {bandpass: 0, frequency: 26, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 26, highpass: -1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 12 - parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, resonance: 64, stereo: 0} - type: distort id: 13 parameters: {drive: 104, stereo: 0} diff --git a/tracker/presets/PAD/pad2.yml b/tracker/presets/PAD/pad2.yml index 1d4505c..66f178c 100644 --- a/tracker/presets/PAD/pad2.yml +++ b/tracker/presets/PAD/pad2.yml @@ -30,10 +30,10 @@ units: parameters: {stereo: 0} - type: filter id: 11 - parameters: {bandpass: 0, frequency: 80, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 24, stereo: 0} + parameters: {bandpass: 0, frequency: 80, highpass: 0, lowpass: 1, resonance: 24, stereo: 0} - type: filter id: 12 - parameters: {bandpass: 0, frequency: 48, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 24, stereo: 0} + parameters: {bandpass: 0, frequency: 48, highpass: 1, lowpass: 0, resonance: 24, stereo: 0} - type: pan id: 13 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/PL/Brass 2.yml b/tracker/presets/PL/Brass 2.yml index 645c1c0..2a6ff3c 100644 --- a/tracker/presets/PL/Brass 2.yml +++ b/tracker/presets/PL/Brass 2.yml @@ -41,10 +41,10 @@ units: parameters: {stereo: 1} - type: filter id: 217 - parameters: {bandpass: 1, frequency: 40, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 65, stereo: 1} + parameters: {bandpass: 1, frequency: 40, highpass: 1, lowpass: 1, resonance: 65, stereo: 1} - type: filter id: 218 - parameters: {bandpass: 1, frequency: 80, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 1, resonance: 86, stereo: 1} + parameters: {bandpass: 1, frequency: 80, highpass: -1, lowpass: 0, resonance: 86, stereo: 1} - type: pan id: 168 parameters: {panning: 50, stereo: 1} diff --git a/tracker/presets/PL/Brass.yml b/tracker/presets/PL/Brass.yml index 8d7f297..a60b868 100644 --- a/tracker/presets/PL/Brass.yml +++ b/tracker/presets/PL/Brass.yml @@ -36,10 +36,10 @@ units: parameters: {stereo: 0} - type: filter id: 217 - parameters: {bandpass: 1, frequency: 57, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 26, stereo: 0} + parameters: {bandpass: 1, frequency: 57, highpass: 1, lowpass: 1, resonance: 26, stereo: 0} - type: filter id: 218 - parameters: {bandpass: 1, frequency: 85, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 1, resonance: 33, stereo: 0} + parameters: {bandpass: 1, frequency: 85, highpass: -1, lowpass: 0, resonance: 33, stereo: 0} - type: pan id: 168 parameters: {panning: 61, stereo: 0} diff --git a/tracker/presets/PL/Popper.yml b/tracker/presets/PL/Popper.yml index 2734da7..6dc3499 100644 --- a/tracker/presets/PL/Popper.yml +++ b/tracker/presets/PL/Popper.yml @@ -45,10 +45,10 @@ units: parameters: {stereo: 0} - type: filter id: 20 - parameters: {bandpass: 0, frequency: 71, highpass: 1, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 96, stereo: 0} + parameters: {bandpass: -1, frequency: 71, highpass: 1, lowpass: 1, resonance: 96, stereo: 0} - type: filter id: 19 - parameters: {bandpass: 0, frequency: 50, highpass: 0, lowpass: 1, negbandpass: 1, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: -1, frequency: 50, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 21 parameters: {stereo: 0} diff --git a/tracker/presets/PL/Super Pluck.yml b/tracker/presets/PL/Super Pluck.yml index 08f9ac6..c027779 100644 --- a/tracker/presets/PL/Super Pluck.yml +++ b/tracker/presets/PL/Super Pluck.yml @@ -52,7 +52,7 @@ units: parameters: {panning: 60, stereo: 1} - type: filter id: 19 - parameters: {bandpass: 0, frequency: 96, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 104, stereo: 1} + parameters: {bandpass: 0, frequency: 96, highpass: 0, lowpass: 1, resonance: 104, stereo: 1} - parameters: {} - type: outaux id: 6 diff --git a/tracker/presets/PL/more-and-more.yml b/tracker/presets/PL/more-and-more.yml index d3e1d30..58dea68 100644 --- a/tracker/presets/PL/more-and-more.yml +++ b/tracker/presets/PL/more-and-more.yml @@ -33,10 +33,10 @@ units: parameters: {amount: 88, port: 0, sendpop: 1, target: 14} - type: filter id: 13 - parameters: {bandpass: 0, frequency: 80, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 80, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 14 - parameters: {bandpass: 0, frequency: 80, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 80, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 15 parameters: {stereo: 0} diff --git a/tracker/presets/PL/punchy.yml b/tracker/presets/PL/punchy.yml index 5775bdf..598815a 100644 --- a/tracker/presets/PL/punchy.yml +++ b/tracker/presets/PL/punchy.yml @@ -45,10 +45,10 @@ units: parameters: {stereo: 0} - type: filter id: 19 - parameters: {bandpass: 0, frequency: 46, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 94, stereo: 0} + parameters: {bandpass: 0, frequency: 46, highpass: 0, lowpass: 1, resonance: 94, stereo: 0} - type: filter id: 20 - parameters: {bandpass: 0, frequency: 62, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 96, stereo: 0} + parameters: {bandpass: 0, frequency: 62, highpass: 0, lowpass: 1, resonance: 96, stereo: 0} - type: mulp id: 21 parameters: {stereo: 0} diff --git a/tracker/presets/PL/trance bells b/tracker/presets/PL/trance bells index dcbc949..df16f54 100644 --- a/tracker/presets/PL/trance bells +++ b/tracker/presets/PL/trance bells @@ -38,10 +38,10 @@ units: parameters: {stereo: 0} - type: filter id: 217 - parameters: {bandpass: 0, frequency: 23, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 23, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 218 - parameters: {bandpass: 0, frequency: 39, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 39, highpass: 1, lowpass: 0, resonance: 128, stereo: 0} - type: pan id: 168 parameters: {panning: 61, stereo: 0} diff --git a/tracker/presets/ST/Pizzicato.yml b/tracker/presets/ST/Pizzicato.yml index 1dd451c..d158bd9 100644 --- a/tracker/presets/ST/Pizzicato.yml +++ b/tracker/presets/ST/Pizzicato.yml @@ -32,7 +32,7 @@ units: parameters: {} - type: filter id: 15 - parameters: {bandpass: 1, frequency: 55, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 55, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: pan id: 5 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/ST/Pizzicato_octaves.yml b/tracker/presets/ST/Pizzicato_octaves.yml index 53ed922..3e79ead 100644 --- a/tracker/presets/ST/Pizzicato_octaves.yml +++ b/tracker/presets/ST/Pizzicato_octaves.yml @@ -18,10 +18,10 @@ units: parameters: {stereo: 0} - type: mulp id: 14 - parameters: {bandpass: 0, frequency: 82, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 82, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: filter id: 15 - parameters: {bandpass: 0, frequency: 101, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 1, resonance: 94, stereo: 0} + parameters: {bandpass: 0, frequency: 101, highpass: -1, lowpass: 1, resonance: 94, stereo: 0} - id: 225 parameters: {} - type: pan diff --git a/tracker/presets/ST/Strings.yml b/tracker/presets/ST/Strings.yml index 747676b..773125c 100644 --- a/tracker/presets/ST/Strings.yml +++ b/tracker/presets/ST/Strings.yml @@ -39,7 +39,7 @@ units: parameters: {holdfreq: 75, stereo: 1} - type: filter id: 45 - parameters: {bandpass: 1, frequency: 114, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 1} + parameters: {bandpass: 1, frequency: 114, highpass: 0, lowpass: 1, resonance: 128, stereo: 1} - type: outaux id: 23 parameters: {auxgain: 15, outgain: 27, stereo: 1} diff --git a/tracker/presets/SY/Fairies.yml b/tracker/presets/SY/Fairies.yml index fc64bed..3f2fe56 100644 --- a/tracker/presets/SY/Fairies.yml +++ b/tracker/presets/SY/Fairies.yml @@ -27,7 +27,7 @@ units: parameters: {drive: 69, stereo: 0} - type: filter id: 12 - parameters: {bandpass: 0, frequency: 16, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 37, stereo: 0} + parameters: {bandpass: 0, frequency: 16, highpass: 1, lowpass: 0, resonance: 37, stereo: 0} - type: mulp id: 13 parameters: {stereo: 0} diff --git a/tracker/presets/SY/Guitar.yml b/tracker/presets/SY/Guitar.yml index 87150cb..2ee9516 100644 --- a/tracker/presets/SY/Guitar.yml +++ b/tracker/presets/SY/Guitar.yml @@ -15,7 +15,7 @@ units: parameters: {stereo: 0} - type: filter id: 5 - parameters: {bandpass: 1, frequency: 57, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 57, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: delay id: 6 parameters: {damp: 48, dry: 128, feedback: 126, notetracking: 1, pregain: 128, stereo: 0} @@ -25,7 +25,7 @@ units: parameters: {stereo: 0} - type: filter id: 88 - parameters: {bandpass: 0, frequency: 72, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 72, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: pan id: 89 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/SY/Mighty.yml b/tracker/presets/SY/Mighty.yml index 37bf57e..e473d6d 100644 --- a/tracker/presets/SY/Mighty.yml +++ b/tracker/presets/SY/Mighty.yml @@ -27,7 +27,7 @@ units: parameters: {stereo: 0} - type: filter id: 10 - parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 64, stereo: 0} + parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, resonance: 64, stereo: 0} - type: distort id: 11 parameters: {drive: 120, stereo: 0} diff --git a/tracker/presets/SY/airy.yml b/tracker/presets/SY/airy.yml index c2afb5d..4680efe 100644 --- a/tracker/presets/SY/airy.yml +++ b/tracker/presets/SY/airy.yml @@ -33,7 +33,7 @@ units: parameters: {gain: 5, shape: 64, stereo: 0} - type: filter id: 12 - parameters: {bandpass: 1, frequency: 77, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 24, stereo: 0} + parameters: {bandpass: 1, frequency: 77, highpass: 0, lowpass: 0, resonance: 24, stereo: 0} - type: addp id: 13 parameters: {stereo: 0} @@ -42,13 +42,13 @@ units: parameters: {stereo: 0} - type: filter id: 15 - parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 32, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: xch id: 16 parameters: {stereo: 0} - type: filter id: 17 - parameters: {bandpass: 1, frequency: 96, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 96, highpass: 0, lowpass: 0, resonance: 128, stereo: 0} - type: addp id: 18 parameters: {stereo: 0} diff --git a/tracker/presets/SY/alpha-omega.yml b/tracker/presets/SY/alpha-omega.yml index f048976..14b7e64 100644 --- a/tracker/presets/SY/alpha-omega.yml +++ b/tracker/presets/SY/alpha-omega.yml @@ -39,7 +39,7 @@ units: parameters: {amount: 96, port: 0, sendpop: 1, target: 15} - type: filter id: 15 - parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 64, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 16 parameters: {stereo: 0} diff --git a/tracker/presets/SY/guitar2.yml b/tracker/presets/SY/guitar2.yml index c29a4c5..9fd93b6 100644 --- a/tracker/presets/SY/guitar2.yml +++ b/tracker/presets/SY/guitar2.yml @@ -15,14 +15,14 @@ units: parameters: {stereo: 0} - type: filter id: 5 - parameters: {bandpass: 1, frequency: 30, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 30, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: delay id: 6 parameters: {damp: 16, dry: 128, feedback: 128, notetracking: 1, pregain: 128, stereo: 0} varargs: [10787] - type: filter id: 84 - parameters: {bandpass: 1, frequency: 24, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 24, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 85 parameters: {stereo: 0} diff --git a/tracker/presets/SY/nylon guitar.yml b/tracker/presets/SY/nylon guitar.yml index a7db30a..a603fab 100644 --- a/tracker/presets/SY/nylon guitar.yml +++ b/tracker/presets/SY/nylon guitar.yml @@ -15,7 +15,7 @@ units: parameters: {stereo: 0} - type: filter id: 5 - parameters: {bandpass: 1, frequency: 48, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 1, frequency: 48, highpass: 1, lowpass: 1, resonance: 128, stereo: 0} - type: delay id: 6 parameters: {damp: 48, dry: 128, feedback: 126, notetracking: 1, pregain: 128, stereo: 0} @@ -25,7 +25,7 @@ units: parameters: {stereo: 0} - type: filter id: 88 - parameters: {bandpass: 0, frequency: 96, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 96, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: pan id: 89 parameters: {panning: 64, stereo: 0} diff --git a/tracker/presets/SY/strangeland.yml b/tracker/presets/SY/strangeland.yml index ddc8b9a..16f5441 100644 --- a/tracker/presets/SY/strangeland.yml +++ b/tracker/presets/SY/strangeland.yml @@ -36,19 +36,19 @@ units: parameters: {stereo: 0} - type: filter id: 14 - parameters: {bandpass: 0, frequency: 96, highpass: 1, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 96, stereo: 0} + parameters: {bandpass: 0, frequency: 96, highpass: 1, lowpass: 0, resonance: 96, stereo: 0} - type: xch id: 15 parameters: {stereo: 0} - type: filter id: 16 - parameters: {bandpass: 1, frequency: 52, highpass: 0, lowpass: 0, negbandpass: 0, neghighpass: 0, resonance: 112, stereo: 0} + parameters: {bandpass: 1, frequency: 52, highpass: 0, lowpass: 0, resonance: 112, stereo: 0} - type: addp id: 17 parameters: {stereo: 0} - type: filter id: 18 - parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 128, stereo: 0} + parameters: {bandpass: 0, frequency: 48, highpass: 0, lowpass: 1, resonance: 128, stereo: 0} - type: mulp id: 19 parameters: {stereo: 0} diff --git a/tracker/presets/SY/synastasia.yml b/tracker/presets/SY/synastasia.yml index 2c8f761..fa02639 100644 --- a/tracker/presets/SY/synastasia.yml +++ b/tracker/presets/SY/synastasia.yml @@ -42,7 +42,7 @@ units: parameters: {stereo: 0} - type: filter id: 17 - parameters: {bandpass: 0, frequency: 104, highpass: 0, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 96, stereo: 0} + parameters: {bandpass: 0, frequency: 104, highpass: 0, lowpass: 1, resonance: 96, stereo: 0} - type: mulp id: 18 parameters: {stereo: 0} diff --git a/tracker/presets/SY/synth.yml b/tracker/presets/SY/synth.yml index 0863e6f..02b4b98 100644 --- a/tracker/presets/SY/synth.yml +++ b/tracker/presets/SY/synth.yml @@ -21,7 +21,7 @@ units: parameters: {color: 128, detune: 64, gain: 128, lfo: 1, phase: 0, shape: 8, stereo: 0, transpose: 32, type: 0} - type: filter id: 74 - parameters: {bandpass: 1, frequency: 32, highpass: 1, lowpass: 1, negbandpass: 0, neghighpass: 0, resonance: 32, stereo: 0} + parameters: {bandpass: 1, frequency: 32, highpass: 1, lowpass: 1, resonance: 32, stereo: 0} - type: mulp id: 10 parameters: {stereo: 0} diff --git a/vm/bytecode.go b/vm/bytecode.go index 3fac621..01361e0 100644 --- a/vm/bytecode.go +++ b/vm/bytecode.go @@ -144,10 +144,10 @@ func NewBytecode(patch sointu.Patch, featureSet FeatureSet, bpm int) (*Bytecode, if unit.Parameters["highpass"] == 1 { flags += 0x10 } - if unit.Parameters["negbandpass"] == 1 { + if unit.Parameters["bandpass"] == -1 { flags += 0x08 } - if unit.Parameters["neghighpass"] == 1 { + if unit.Parameters["highpass"] == -1 { flags += 0x04 } b.op(opcode + p["stereo"]) diff --git a/vm/compiler/templates/amd64-386/effects.asm b/vm/compiler/templates/amd64-386/effects.asm index 9512eb2..1b2f608 100644 --- a/vm/compiler/templates/amd64-386/effects.asm +++ b/vm/compiler/templates/amd64-386/effects.asm @@ -182,13 +182,13 @@ su_op_filter_skipbandpass: fadd dword [{{.WRK}}+4] su_op_filter_skiphighpass: {{- end}} -{{- if .SupportsParamValue "filter" "negbandpass" 1}} +{{- if .SupportsParamValue "filter" "bandpass" -1}} test al, byte 0x08 jz short su_op_filter_skipnegbandpass fsub dword [{{.WRK}}+8] su_op_filter_skipnegbandpass: {{- end}} -{{- if .SupportsParamValue "filter" "neghighpass" 1}} +{{- if .SupportsParamValue "filter" "highpass" -1}} test al, byte 0x04 jz short su_op_filter_skipneghighpass fsub dword [{{.WRK}}+4] diff --git a/vm/compiler/templates/wasm/effects.wat b/vm/compiler/templates/wasm/effects.wat index b093656..27d9fd2 100644 --- a/vm/compiler/templates/wasm/effects.wat +++ b/vm/compiler/templates/wasm/effects.wat @@ -186,12 +186,12 @@ (local.set $retval (f32.add (local.get $retval) (local.get $high))) )) {{- end}} -{{- if .SupportsParamValue "filter" "negbandpass" 1}} +{{- if .SupportsParamValue "filter" "bandpass" -1}} (if (i32.and (local.get $flags) (i32.const 0x08)) (then (local.set $retval (f32.sub (local.get $retval) (local.get $band))) )) {{- end}} -{{- if .SupportsParamValue "filter" "neghighpass" 1}} +{{- if .SupportsParamValue "filter" "highpass" -1}} (if (i32.and (local.get $flags) (i32.const 0x04)) (then (local.set $retval (f32.sub (local.get $retval) (local.get $high))) )) diff --git a/vm/go_synth_test.go b/vm/go_synth_test.go index 5bbcf25..04d62f8 100644 --- a/vm/go_synth_test.go +++ b/vm/go_synth_test.go @@ -97,7 +97,7 @@ var defaultUnits = map[string]sointu.Unit{ "clip": {Type: "clip", Parameters: map[string]int{"stereo": 0}}, "hold": {Type: "hold", Parameters: map[string]int{"stereo": 0, "holdfreq": 64}}, "distort": {Type: "distort", Parameters: map[string]int{"stereo": 0, "drive": 64}}, - "filter": {Type: "filter", Parameters: map[string]int{"stereo": 0, "frequency": 64, "resonance": 64, "lowpass": 1, "bandpass": 0, "highpass": 0, "negbandpass": 0, "neghighpass": 0}}, + "filter": {Type: "filter", Parameters: map[string]int{"stereo": 0, "frequency": 64, "resonance": 64, "lowpass": 1, "bandpass": 0, "highpass": 0}}, "out": {Type: "out", Parameters: map[string]int{"stereo": 1, "gain": 64}}, "outaux": {Type: "outaux", Parameters: map[string]int{"stereo": 1, "outgain": 64, "auxgain": 64}}, "aux": {Type: "aux", Parameters: map[string]int{"stereo": 1, "gain": 64, "channel": 2}},