Android 音频:改变音调

2023-11-23

SoundPool 的 Android 文档称“该应用程序还可以通过实时调整多普勒或合成效果的播放速率来改变音调”。所以我尝试这样做,使用 setRate 方法从一个音符平滑地变化到另一个音符,但结果很糟糕:声音变化非常参差不齐。这是我尝试过的代码。请告诉我是否有更好的方法。

int streamId = soundPool.play (soundId, 1, 1, 1, 0, 1.0f);
for (float x = 0; x < 1; x += 0.005) {
  SystemClock.sleep (10);
  soundPool.setRate (streamId, 1 + x);
}

尽管 Android 文档建议您可以使用setRate()为了产生多普勒效应,我不会依赖于每个 Android 设备上的快速或足够好的实现。

经济实惠的音频 IC 需要 44kHz 或 48kHz 的固定采样率。因此,采样率转换(即音调修改)必须在软件中完成。因为这包括低级数字处理,所以我确信这是由设备制造商而不是 Google 实现的。鉴于 Android 设备制造商种类繁多,并且通常使用低成本硬件,因此肯定有许多采样率转换实现。有的更快,有的更慢。有的光滑,有的粗糙。

在播放过程中更改转换率会发生什么?如果算法无法将各个片段精确匹配在一起,则音频播放中可能会出现短暂的中断。您每 10 毫秒更改一次转换率。如果每 10ms 出现一次裂纹,则对应于 100Hz 的频率,该频率本身就是一个音调。这可能就是您听到的“衣衫褴褛”。

总而言之,我认为不可能使用高级 Android API 在各种 Android 设备上实时模拟乐器。不过,本机应用程序可能足够快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 音频:改变音调 的相关文章

  • Android 4.4.2 - java.lang.RuntimeException:执行未恢复的活动停止

    我在 4 4 2 设备上遇到此异常 在 Android 4 3 或更低版本的设备上无法重现 设置是我有一个家庭活动 支持的子类ActionBarActivity 家庭活动检查布尔标志 如果为真 则启动启动画面活动 是的 理想情况下启动画面出
  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • 如何在 Android 中使用 Assets 中预加载的 SQLite 数据库

    我想用preloaded database在我的应用程序中意味着尝试在安装 apk 时获取数据库 以便可以使用已保存在其中的数据 我复制了 成分 db 文件位于资产文件夹中 并使用以下代码 但这会出现错误 从资源文件复制数据库时出现问题 我
  • 安卓无法玩ogg

    有人知道这是什么意思吗 ogg使用phonegap is Media播放 它使用MediaPlayer 05 26 15 41 50 007 1160 3631 E AudioFlinger no more track names avai
  • GridView 中多次调用 getView()

    我的 Activity 由包含 40 多个元素的 GridView 组成 开始活动后 用户最多可以看到 15 个项目 3 行 每行 5 个项目 我在 getView 正文中编写传递给获取 View 的 LogCat 编号 Log i get
  • 将正确的上下文传递给 greendao 的 OpenHelper 构造函数

    如果我理解正确的话 在使用数据库时 我必须执行以下操作 DaoMaster OpenHelper helper new DaoMaster OpenHelper this test db null Override public void
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • 如何从一个代码库创建多个 Android 应用

    我有一个 Android 代码库 它使用带有设置的 API 来获取多个应用程序的不同数据 所有应用程序都使用相同的代码库 但进行一两个设计调整 那么如何重用主代码库而不必每次都复制整个 Android 项目呢 iPhone 在同一个项目中使
  • Android Studio更新到1.5后Gradle错误

    今天我已将 Android Studio 更新到 v1 5 我的 libgdx 项目在这次更新之前运行良好 现在我收到此错误消息 Error Unable to load class org gradle mvn3 org sonatype
  • 导航抽屉默认片段

    我是一名新手开发人员 我正在将导航抽屉与 android support v7 集成到我的应用程序中 我有一个问题 当我启动应用程序时 主要布局是这样的
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • 为什么Android应用程序在发布到市场后尺寸会增加?

    我最近在 Android 市场上发布了我的应用程序 显示应用程序大小为 5 4MB 而实际 apk 大小为 2 8MB 为什么显示多出2MB 我应该如何限制我的应用程序大小 请帮我 您的应用程序大小会增加 因为您使用了复制保护选项ON在发布
  • onClick 未在带有子项的 LinearLayout 上触发

    我有一个自定义的 LinearLayout 和一个较小的 TextView 子级 我希望能够单击 TextView 未覆盖的区域 因此我将 clickable true 和 onclicklistener 设置为 LinearLayout
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Android:解析 XML 数据的最佳解析器 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个应用程序 其中我第一次要解析来自远程服务器的 xml 文件中的数据 但我无法选择哪个解析器是有效的或最适合解析的 因为我知道主要有
  • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

    如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st

随机推荐

  • 初始化 char 指针 C++ [重复]

    这个问题在这里已经有答案了 这怎么可能 const char cp Hello world 我目前正在阅读 C 入门书 我发现了这个例子 我是一个非常初学者 为什么可以用字符串初始化 char 指针 我真的无法理解这个例子 据我所知 指针只
  • 将窗户控制器插座连接到窗户

    我正在尝试在 XCode 4 中创建一个简单的模式对话框 我已经创建了 xib 创建了 NSWindowController 派生类 并使其成为 xib 的文件所有者中的类 我遇到问题的部分是物理连接窗口插座 如问题答案中所述 如何为从 N
  • 是否有可以将正则表达式存储为值的数据库?

    我正在寻找一个可以将正则表达式存储为值的数据库 例如 像这样的东西 name gt Tim count gt 3 expression gt t name gt Rob count gt 4 expression gt a d name g
  • JS中如何检查多维数组项是否设置?

    JS中如何检查多维数组项是否设置 w 1 2 new Array w 1 2 1 new Array w 1 2 1 1 10 w 1 2 1 2 20 w 1 2 1 4 30 如何检查是否w 1 2 1 3 is set 解决方案与if
  • 读取环境变量运行速度慢?

    如果使用环境变量比使用普通变量 在脚本语言中 慢是正确的 那么它是如何解释的 检索环境变量的值将引发系统调用 普通变量内置于您运行的语言中 位于相同的地址空间中 甚至可能位于 CPU 寄存器中 取决于语言及其执行方式 只是获取数据的路程更长
  • iOS 应用程序验证错误:缺少 plist 密钥 CFBundleShortVersionString

    我用 SpriteBuilder 和 cocos2d 构建了一个 iOS 游戏 当我尝试将其提交到 AppStore 时 出现以下错误 错误 ITMS 9000 缺少 plist 密钥 Info plist 文件缺少所需的密钥 CFBund
  • Python 中返回 NoneType 的函数? [复制]

    这个问题在这里已经有答案了 在从事 CS1 的 Python 项目时 我遇到了一个我和我的室友都无法解决的奇怪问题 代码的一般范围是使用数字填充具有一定大小的形状的 0 网格来填充空间 并且我们必须一路检查以确保我们没有将形状放置在已经有形
  • JQuery JSTree - 添加工具提示

    有没有办法添加一个Tooltip to a JSTree节点 我想当用户将鼠标悬停在元素上时显示额外的信息 我对 JQuery 非常了解 所以对此可能有一个明显的答案 编辑 感谢下面的 zzzz 我能够弹出一个简单的悬停框 尽管将树的div
  • 如何检查div是否有id?

    div div class ui droppable one div div class ui droppable two div div class ui droppable three div div class ui droppabl
  • 创建 javadoc 时发生致命错误(无法找到包 java.lang)

    我尝试在 Linux 下使用 Eclipse Kepler 在我的 java 项目中运行 javadoc 但收到此错误 Constructing Javadoc information com sun tools javac util Fa
  • 我应该尽可能使用并行流吗?

    使用 Java 8 和 lambda 可以轻松地将集合作为流进行迭代 并且使用并行流也同样容易 两个例子来自the docs 第二个使用并行流 myShapesCollection stream filter e gt e getColor
  • 在 Sphinx 文档中保留包装/修饰的 Python 函数的默认参数

    我该如何更换 args and kwargs带有装饰函数文档中的真实签名 假设我有以下装饰器和装饰函数 import functools def mywrapper func functools wraps func def new fun
  • 为什么将条件应用于 IAM 策略中的 ec2:DescribeInstances 会失败?

    当尝试配置可以使用策略列出哪些实例时 我注意到以下问题 当条件未实现时 所有实例都是可见的 当任何条件被实现时 什么都看不到 包含有条件的示例策略 Version 2012 10 17 Statement Sid Stmt146123588
  • 访问 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

    谁能告诉我为什么我无法访问注册表项 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion Installer UserData 如果我查询GetSubKeysNames o
  • 优化 Jinja2 环境创建

    我的应用程序在 Google App Engine 上运行 由于 CPU 使用率高 大多数请求不断收到黄色标记 使用探查器 我将问题追溯到创建的例程jinja2 Environment实例 我正在模块级别创建实例 from jinja2 i
  • 为什么在 Intellij 中使用 Android SDK 时缺少 Android AVD Manager?

    I am trying to use the Android SDK in my IntelliJ project that is a larger project containing both web and ios clients a
  • Numpy:作为 Matlab 进行赋值和索引

    有时 分配仅具有一个索引的数组很有用 在 Matlab 中这很简单 M zeros 4 M 1 5 end 1 M 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Numpy 有没有办法做到这一点 首先 我想展平数组 但该操
  • 最适合拼写检查器、字典和同义词库的算法和数据结构

    实施的最佳方式 字典 有没有比 Trie 更好的 DS 字典 同义词库 不知道 因为匹配的是单词的含义 相似的含义 拼写检查器 比哈希映射更好的东西 如果可能的话 提供正确的拼写建议 当在一小时的面试中被问到 我们是否需要为算法编写 c c
  • Android 搜索:使用 FTS 表以及普通 SQLite DB 表

    这更多的是一个设计问题 而不仅仅是一个编码问题 我已经有一个将数据存储在 SQLite DB 表中的应用程序 现在我想添加搜索功能 据我了解 为了启用搜索功能 我需要 FTS 表 我拥有的表格是 不完全相同 但给出了非常相似的示例 内容表
  • Android 音频:改变音调

    SoundPool 的 Android 文档称 该应用程序还可以通过实时调整多普勒或合成效果的播放速率来改变音调 所以我尝试这样做 使用 setRate 方法从一个音符平滑地变化到另一个音符 但结果很糟糕 声音变化非常参差不齐 这是我尝试过