关于Godot游戏引擎使用代码生成类锯齿波(相位器)

11 篇文章 0 订阅
2 篇文章 0 订阅
extends AudioStreamPlayer

var note_table = {
	"C":256,
	"D":288,
	"E":320,
	"F":341,
	"G":384,
	"A":426,
	"B":480,
}


const sample_rate = 22050.0
var frequency = 440.0
var amplitude = 0.5
var phase = 0

var playback: AudioStreamPlayback = null

var index = 0

func _ready():
	self.stream.mix_rate = sample_rate
	playback = get_stream_playback()
	_fill_buffer()
	self.play()
	
func _process(delta):
	_fill_buffer()
	
func cal_saw(p_value):
	return amplitude * sin(p_value)
	
func _fill_buffer():
	var increment = frequency / sample_rate

	var to_fill = playback.get_frames_available()
	while to_fill > 0:
		playback.push_frame(Vector2.ONE * phase) # Audio frames are stereo.
		phase = fmod(phase + increment, 2.0)
		to_fill -= 1
#	print(phase)


	pass # Replace with function body.

脚本挂载 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值