我是靠谱客的博主 懵懂心锁,最近开发中收集的这篇文章主要介绍ebiten 学习(13)-piano, 9白键7黑键一、前言二、界面以及音乐效果三、实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2021SC@SDUSC

目录

  • 一、前言
    • 1.说明
    • 2.梗概
  • 二、界面以及音乐效果
  • 三、实现
    • 1.画面实现
    • 2.钢琴声音生成**
    • 3.game
    • 4.出声逻辑
    • 5.main


一、前言

1.说明

audio 说明文档地址

audio package - github.com/hajimehoshi/ebiten/v2/audio - pkg.go.dev

本文中所有截图和代码均来自说明文档或 ebiten 源文件

笔者负责 audio 音频相关的代码分析

2.梗概

解析 examples 包下的 piano 中的例子。
手动生成钢琴音色。


二、界面以及音乐效果

界面包含A - L 9个白键,音调递增,还有7个黑键。
右上角是帧数。

按压键盘对应按键,会有钢琴声音播放。

在这里插入图片描述

三、实现

1.画面实现

一个 main 方法前可以有多个 init 初始化方法,这个初始化方法是用来限制文字大小和格式。

在这里插入图片描述

这里规定了窗口大小、采样频率、基频。

在这里插入图片描述

这里创建一张和窗口大小相当的图片,然后构造这个静态图片。

在这里插入图片描述

展示。

在这里插入图片描述

2.钢琴声音生成**

钢琴的声音是手动模拟生成的。

首先是三个变量,分别是钢琴按键与音频流对应关系、状态码、通讯队列。

在这里插入图片描述

然后键盘值。
和上面 pianoNoteSamples 一一对应。

在这里插入图片描述

pianoAt 生成给定频率的第 i 个钢琴音频样本。
用多个正弦波模拟钢琴的波。

在这里插入图片描述

toBytes 返回具有给定左/右序列的 2ch 小端16位字节序列。

在这里插入图片描述

初始化钢琴数据。
通过上述几个方法,填充 pianoNoteSamples。

在这里插入图片描述

3.game

在这里插入图片描述

4.出声逻辑

首先初始化数据,然后循环检测按键,在 pianoNoteSamples 中索引对应音频。

在这里插入图片描述

然后根据字节流创建播放器播放。
playNote 以给定的频率播放钢琴声音。
在这里插入图片描述

5.main

没有变化。
在这里插入图片描述

最后

以上就是懵懂心锁为你收集整理的ebiten 学习(13)-piano, 9白键7黑键一、前言二、界面以及音乐效果三、实现的全部内容,希望文章能够帮你解决ebiten 学习(13)-piano, 9白键7黑键一、前言二、界面以及音乐效果三、实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部