本文整理汇总了Golang中github.com/kierdavis/gosound/sound.Context.Append方法的典型用法代码示例。如果您正苦于以下问题:Golang Context.Append方法的具体用法?Golang Context.Append怎么用?Golang Context.Append使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/kierdavis/gosound/sound.Context
的用法示例。
在下文中一共展示了Context.Append方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: genMelodyArpeggio
func genMelodyArpeggio(ctx sound.Context, scale music.Scale, n int) (stream chan float64) {
var parts []chan float64
root := scale.Root
for i := 0; i < n; i++ {
if i+1 < n && rand.Float64() < 0.01 {
from := scale.Root
nextNote(&scale, root)
to := scale.Root
nextNote(&scale, root)
part := genSlideEnvelope(ctx, from, to, time.Second/4)
parts = append(parts, part)
} else {
note := scale.Root
nextNote(&scale, root)
part := ctx.TakeDuration(ctx.Const(note.Frequency()), time.Second/8, false)
parts = append(parts, part)
}
}
return ctx.Append(parts...)
}
示例2: FrequencyEnvelope
func FrequencyEnvelope(ctx sound.Context) (stream chan float64) {
var parts []chan float64
for _, note := range Notes {
part := ctx.TakeDuration(ctx.Const(note.Frequency()), NoteDuration, false)
parts = append(parts, part)
}
return ctx.Append(parts...)
}
示例3: genBassArpeggio
func genBassArpeggio(ctx sound.Context, scale music.Scale, n int) (stream chan float64) {
var parts []chan float64
root := scale.Root
for i := 0; i < n; i++ {
note := scale.Root
nextNote(&scale, root)
if rand.Float64() < 0.05 {
part := ctx.TakeDuration(
ctx.Mul(
ctx.Const(note.Frequency()),
ctx.Add( // Add a slight vibrato effect
ctx.Mul(
ctx.Sine(ctx.Const(24)),
ctx.Const(0.01),
),
ctx.Const(1.0),
),
),
time.Second*3/8,
false,
)
parts = append(parts, part)
} else if rand.Float64() < 0.05 {
part1 := ctx.TakeDuration(
ctx.Const(note.Frequency()),
time.Second/8,
false,
)
part2 := ctx.TakeDuration(
ctx.Const(note.Frequency()),
time.Second/8,
false,
)
parts = append(parts, part1)
parts = append(parts, ctx.TakeDuration(ctx.Silence(), time.Second/8, false))
parts = append(parts, part2)
} else {
part := ctx.TakeDuration(
ctx.Const(note.Frequency()),
time.Second/8,
false,
)
parts = append(parts, part)
parts = append(parts, ctx.TakeDuration(ctx.Silence(), time.Second/4, false))
}
}
return ctx.Append(parts...)
}