问题标签 [waveform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6671 浏览

cocoa - 用数百万点绘制一条线的有效方法

我正在 Cocoa 中编写一个具有多种缩放选项的音频波形编辑器。在最宽处,它显示了整首歌曲的波形(大约 1000 万个样本)。在最窄处,它显示了声波的像素精确表示(视图中约 1000 个样本)。我希望能够在这些缩放级别之间平滑过渡。一些像 Ableton Live 这样的商业编辑器似乎以一种非常便宜的方式来做到这一点。

我当前的实现满足了我想要的缩放范围,但效率低下且不稳定。该设计很大程度上受到这篇关于用石英绘制波形的优秀文章的启发:

http://supermegaultragroovy.com/blog/2009/10/06/drawing-waveforms/

我为音频文件创建了多个 CGMutablePathRef's 在不同的减少级别。当我一直放大时,我使用已减少到每 x 千个样本一个点的路径。当我一直放大时,我使用包含每个样本的点的路径。当我处于减少级别之间时,我会水平缩放路径。这使它具有功能性,但仍然非常昂贵,并且在减少级别之间转换时会出现伪影。

关于如何降低成本的一个想法是取消抗锯齿。我的编辑器中的波形是抗锯齿的,而 Ableton 中的波形不是(参见下面的比较)。 在此处输入图像描述 在此处输入图像描述

我看不到关闭 CGMutablePathRef 的抗锯齿的方法。在 Cocoa 的世界中是否有 CGMutablePathRef 的非抗锯齿替代品?如果没有,是否有人知道一些 OpenGL 类或示例代码可能会让我更有效地绘制我的大线?

2014 年 1 月 21 日更新:现在有一个很棒的库可以完全满足我的需求:https ://github.com/syedhali/EZAudio

0 投票
2 回答
407 浏览

audio - 什么是表示某个高度范围内的波形的好方法

我很高兴从 pcm 数据中绘制波形以进行筛选。我有一个问题,有时波形高度会超过显示区域高度的高度。

如何确保波形绘图数据永远不会超过确定的高度,而不必遍历整个 pcm 数据集并从找到的最大值进行归一化?

0 投票
1 回答
376 浏览

linux-kernel - 将设备驱动程序代码映射到逻辑分析仪波形

根据 SDIO 规范,操作序列(用于写事务)发生如下:

Command53 -- CommandLatency -- Command53Response -- ResponseLatency -- startbit -- write-number-of-bytes -- CRC -- endbit -- WriteLatency -- startbit -- CRC -- endbit -- busybit。

在对 SDIO UART 驱动程序进行基准测试时,我得到的时间值超出了预期。发现很多延迟,尤其是在写事务期间。

延迟的原因可能是调度程序将处理器时间分配给其他进程、工作队列延迟等。

我想分析和了解延迟。了解设备驱动程序代码和逻辑分析仪波形之间的映射可能会导致一些提示。

有人可以对此有所了解吗?

谢谢你。


编辑1:对不起!我假设了一些事情。

sdio_uart_transmit_chars()中有一个调用sdio_out(),依次调用sdio_writeb()并且该调用将逐字节(一次一个字节)写入 SDIO UART 设备。我修改了驱动程序以使用sdio_writesb()即多字节模式。这相对减少了写入 X 个字节的时间。有趣的是,随着写入数据大小的增加,WriteLatency 呈指数增长(如上所述)。

这种延迟可能是由于许多原因。我想了解这些原因。

设置:我正在使用 Linux (v 2.6.32) 笔记本电脑和可加载内核模块(已修改sdio_uart.c


编辑2:

可能在这个问题中添加“SDIO”会产生误导......(目前不确定)。在与硬件交互时,延迟的原因可能对任何设备驱动程序都是通用的,并且可能与 SDIO 写入过程无关。

如果有人可以将我指向相关的在线资源,我很乐意在这里探索和更新结果。

希望这次我增加了更多的清晰度。如果我的问题仍然不清楚,请发表评论。

感谢您的时间。


编辑 3:

是的,我正在查看逻辑分析仪 (LA) 上的信号,写入期间和写入之间的延迟比我预期的要长。
给出关于时间值的概念:
对于 512 字节传输:在硬件级别上,理论上写入应该需要 50 微秒(我们),但实际上我得到了 200 微秒。

这个150我们的差距是我想了解的。

注意:
1)我正在四舍五入时间值以简化案例。
2)所有时间值都是在内核级别计算的,这里不涉及用户空间问题。

0 投票
1 回答
411 浏览

java - 在 Java 中产生 X Hz 声波的最简单方法是什么?

如果可以相当容易地导出波形以便以后可以绘制它(例如使用 Canvas 可视化),那也很棒。

澄清一下:我希望能够听到X Hz 波,最好出来。

0 投票
1 回答
18692 浏览

python - 在 Python 中生成音频波形图形

是否可以?我想运行一批音频文件并从中生成图形波形文件。类似于 SoundCloud 显示的内容,但我正在寻找的模块可能会提供更多选项。

外面有什么?有什么好的?

0 投票
4 回答
45169 浏览

iphone - 使用 AVAssetReader 绘制波形

我使用assetUrl(在代码中名为audioUrl)从iPod库中读取歌曲我可以播放它很多方式,我可以剪切它,我可以用这个做一些进动但是......我真的不明白我会用这个做什么CMSampleBufferRef 获取绘制波形的数据!我需要有关峰值的信息,我如何才能以这种方式(也许是另一种方式)获得它?

请帮我!

0 投票
2 回答
711 浏览

python - 在 Django 中,用户将文件上传到服务器,然后移动到 Amazon S3 的一种方式?

我有一个用户正在上传 .wav 文件的网络项目。上传后,我想从 .wav 文件生成波形图像。但通常对于存储,我想使用 Amazon S3。问题是,我想使用 TimeSide (http://code.google.com/p/timeside/wiki/PythonApi) 之类的东西从 .wav 文件生成波形图像。

在与 TimeSide 项目的编码人员交谈后,他说当 .wav 文件来自 Amazon S3 时生成波形图像是不合适的。所以我认为它需要在用户上传 .wav 文件后立即执行此操作,然后在 TimeSide 完成此操作后,将 .wav 文件和波形图像复制到 Amazon S3,然后从上传服务器。这样做最有意义吗?

我可以使用 Python Boto 库来做这样的事情吗?还是我必须编写自己的 Django 后端?

0 投票
2 回答
4559 浏览

c# - 在 C# 中绘制波形

我希望能够在 C# 中显示 WaveForm,以及一些简单的功能,例如缩放和选择。我已经将数据作为幅度值的 short[]。

但是,在硬编码 GUI 方面,我是个业余爱好者。我已经找到了一个可能的帮助类WaveFormClass可以帮助我实现这一点,但作为备份,我想学习如何手动完成它。

那么我可以要求一些方法和一些可能有帮助的链接吗?谢谢!

0 投票
0 回答
1834 浏览

charts - 将大数据集缩减为较小数据集的算法?

我有一个需要在图表上显示的大型数据集(数十亿)的数据点(双精度)。由于一次显示所有数据没有用,我一直在寻找一种算法来帮助我从整个数据集中挑选出最好的 N 个点。

我目前正在进行系统抽样以减少数据集。关于如何改进它的任何建议?谢谢。

更新:数据是 16 位有符号数字,表示波形的幅度。因此它们的值范围可以从 -32,768 到 32,767。我想捕捉峰值和谷值,以便从整个集合中选择显示的 N 个点给出整个集合的近似值。

0 投票
3 回答
3196 浏览

c# - C# WinForms 应用程序显示播放和录制声音的波形

我希望编写一个可以播放 WAV 文件的 C# WinForms 应用程序。在播放文件时,它会显示一个波形(类似于示波器)。

同时,用户可以通过麦克风录制声音,尝试跟随播放的原始声音(如卡拉 OK)。程序实时显示录制声音的波形,因此用户可以从原始波形文件的波形显示和录制的波形显示进行比较。将根据原始声音和录制声音的时间差(延迟)进行比较。波形显示不必很高级(无需剪切、复制或粘贴);只需能够通过时间线看到它就足够了。

我希望这足够清楚。如果不清楚,请随时要求更多说明。非常感谢你。