Added gain slider
This commit is contained in:
parent
a74f9809af
commit
d7a6193c04
@ -131,6 +131,7 @@ func (element *Slider) valueFor (x, y int) (value float64) {
|
|||||||
value =
|
value =
|
||||||
float64(y - element.track.Min.Y - element.bar.Dy() / 2) /
|
float64(y - element.track.Min.Y - element.bar.Dy() / 2) /
|
||||||
float64(element.track.Dy() - element.bar.Dy())
|
float64(element.track.Dy() - element.bar.Dy())
|
||||||
|
value = 1 - value
|
||||||
} else {
|
} else {
|
||||||
value =
|
value =
|
||||||
float64(x - element.track.Min.X - element.bar.Dx() / 2) /
|
float64(x - element.track.Min.X - element.bar.Dx() / 2) /
|
||||||
@ -139,7 +140,6 @@ func (element *Slider) valueFor (x, y int) (value float64) {
|
|||||||
|
|
||||||
if value < 0 { value = 0 }
|
if value < 0 { value = 0 }
|
||||||
if value > 1 { value = 1 }
|
if value > 1 { value = 1 }
|
||||||
value = 1 - value
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,8 @@ var adsr = ADSR {
|
|||||||
Decay: 400 * time.Millisecond,
|
Decay: 400 * time.Millisecond,
|
||||||
Sustain: 0.7,
|
Sustain: 0.7,
|
||||||
Release: 500 * time.Millisecond,
|
Release: 500 * time.Millisecond,
|
||||||
}
|
}
|
||||||
|
var gain = 0.3
|
||||||
|
|
||||||
func main () {
|
func main () {
|
||||||
speaker.Init(sampleRate, bufferSize)
|
speaker.Init(sampleRate, bufferSize)
|
||||||
@ -52,6 +53,7 @@ func run () {
|
|||||||
decaySlider := basicElements.NewLerpSlider(0, 3 * time.Second, adsr.Decay, true)
|
decaySlider := basicElements.NewLerpSlider(0, 3 * time.Second, adsr.Decay, true)
|
||||||
sustainSlider := basicElements.NewSlider(adsr.Sustain, true)
|
sustainSlider := basicElements.NewSlider(adsr.Sustain, true)
|
||||||
releaseSlider := basicElements.NewLerpSlider(0, 3 * time.Second, adsr.Release, true)
|
releaseSlider := basicElements.NewLerpSlider(0, 3 * time.Second, adsr.Release, true)
|
||||||
|
gainSlider := basicElements.NewSlider(math.Sqrt(gain), false)
|
||||||
|
|
||||||
attackSlider.OnRelease (func () {
|
attackSlider.OnRelease (func () {
|
||||||
adsr.Attack = attackSlider.Value()
|
adsr.Attack = attackSlider.Value()
|
||||||
@ -65,6 +67,9 @@ func run () {
|
|||||||
releaseSlider.OnRelease (func () {
|
releaseSlider.OnRelease (func () {
|
||||||
adsr.Release = releaseSlider.Value()
|
adsr.Release = releaseSlider.Value()
|
||||||
})
|
})
|
||||||
|
gainSlider.OnRelease (func () {
|
||||||
|
gain = math.Pow(gainSlider.Value(), 2)
|
||||||
|
})
|
||||||
|
|
||||||
patchColumn := basicElements.NewContainer(basicLayouts.Vertical { true, false })
|
patchColumn := basicElements.NewContainer(basicLayouts.Vertical { true, false })
|
||||||
patch := func (w int, a, d time.Duration, s float64, r time.Duration) func () {
|
patch := func (w int, a, d time.Duration, s float64, r time.Duration) func () {
|
||||||
@ -133,6 +138,7 @@ func run () {
|
|||||||
adsrGroup.Adopt(sustainSlider, false)
|
adsrGroup.Adopt(sustainSlider, false)
|
||||||
adsrGroup.Adopt(releaseSlider, false)
|
adsrGroup.Adopt(releaseSlider, false)
|
||||||
adsrColumn.Adopt(adsrGroup, true)
|
adsrColumn.Adopt(adsrGroup, true)
|
||||||
|
adsrColumn.Adopt(gainSlider, false)
|
||||||
|
|
||||||
controlBar.Adopt(adsrColumn, false)
|
controlBar.Adopt(adsrColumn, false)
|
||||||
container.Adopt(controlBar, true)
|
container.Adopt(controlBar, true)
|
||||||
@ -162,7 +168,7 @@ func playNote (note music.Note) {
|
|||||||
sampleRate,
|
sampleRate,
|
||||||
int(tuning.Tune(note)),
|
int(tuning.Tune(note)),
|
||||||
waveform,
|
waveform,
|
||||||
0.3,
|
gain,
|
||||||
adsr)
|
adsr)
|
||||||
|
|
||||||
stopNote(note)
|
stopNote(note)
|
||||||
|
Reference in New Issue
Block a user