问题标签 [guitar]

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 投票
1 回答
299 浏览

c# - 在 C# 中弹吉他

我遇到了普林斯顿大学的一项编程任务,该任务涉及模拟吉他弦拨奏(请参阅此处)。

我尝试将其解决为 C#,但我目前仍坚持实际播放声音。在示例中,他们通过调用 StdAudio.play() 来执行此操作,其中包含 [-1;1] 范围内的双精度值。StdAudio 是 Princeton 提供的一个类(可以在这里找到)。

所以基本上我的问题归结为:我将如何将 StdAudio 类移植到 C#?

提前致谢!

0 投票
1 回答
1572 浏览

arduino - DIY Xbox360吉他英雄控制器

我正在为 xbox 360 上的吉他英雄制作一个 diy 吉他控制器。据我在网上看到,由于 MS 安全协议,不可能从 stratch 构建任何东西,只需插入控制台,所以 DIY 控制器通常有中间有一个真正的控制器板(比如这个街机控制器http://hacknmod.com/hack/diy-arcade-controller-for-xbox-360/)。但是某些 GH 版本无法使用常规控制器播放,它们特别需要吉他控制器,所以如果我只是使用常规控制器制作我的自定义吉他界面,它将无法正常工作。

实际上有没有一种方法可以在不使用真实控制器的情况下连接控制台?或者也许坐在实际控制器和控制台之间并修改通信以使控制台认为插入了吉他?在这种情况下,Arduino 能胜任这项工作吗?

0 投票
3 回答
3215 浏览

c# - 在电吉他上进行音高跟踪时如何检测弦?

嗨,我是音频相关编码方面的菜鸟,我正在研究音高跟踪 DLL,我将使用它来尝试创建一种开源版本的视频游戏 Rocksmith 作为学习体验。

到目前为止,我已经设法让 FFT 工作,因此我可以检测音高频率 (Hz),然后通过使用算法和下表我可以设法确定八度音阶(第 2 到第 6)和音符(C 到 B)演奏音符。

下一步是检测琴弦,以便确定音品。

在此处输入图像描述

我一直在考虑它,理论上我可以使用它,我会知道用户何时演奏正确的音符,但游戏可能是“Hack”,因为仅使用 Hz,游戏无法检测到音符以正确的字符串播放。例如第 5 弦 + 1 品 = C4 261.63Hz等于6 弦 + 5 品 = C4 261.63Hz

让用户在错误的字符串中弹奏音符并使其正确的可能性很低,但我认为知道字符串真的很好,这样我可以在用户弹奏错误的字符串时向用户提供一些错误反馈(比如你应该向上或向下移动一个字符串)。

你知道我能做些什么来检测字符串吗?提前致谢 :)

[编辑]

我们使用的吉他和琴弦会影响音色,因此分析音色似乎不是检测琴弦的简单方法:

“吉他音色的变化是由许多因素造成的,包括拾音器设计和位置、吉他的自然共振和阻尼,由于使用的木材(这是一种不同的木材!)以及它的结构和形状,你的弦的规格和年龄,你的演奏技巧,你在哪里按弦和拨弦,等等。”

0 投票
0 回答
895 浏览

java - Java 吉他英雄与 Midi

我正在用 Midi 文件创建一个假 GH。它应该加载吉他音轨并将其保存在某处。然后按特定间隔播放。

但我不知道如何获得吉他音轨和音符。此外,我需要与当前播放的声音同时播放音符。

编辑:具体:1)我必须加载一个midi文件(让我们说metalica,吉他的东西)2)我想获得吉他曲目并选择其中一个。或者干脆选择第一把吉他。好吧,没关系。3) 重点来了:程序应该以特定的间隔获取字符串(E、A、D、G、b、e)。例如,在 1:21 拿到吉他的弦。(我认为它们应该存储在一个列表中,然后计算当时的音符)

Java midi note to string mapping via octave of a note 我已经找到了这个,但它不是我要找的那种代码。

所以请帮助我!我需要它用于学校目的。

非常感谢!

0 投票
1 回答
1908 浏览

php - 如何将 ASCII 指法谱转换为 MIDI 文件?

我一直在研究一个 PHP 脚本,该脚本使用摩尔斯电码规则和我自己的规则集将一个单词或短语转换为 ASCII 指法表。

至此,程序已接近完成……所缺少的只是将 ASCII 指法谱转换为 MIDI 文件的代码。

可以在此处找到该脚本的最新版本:

莫尔斯电码机

我找到了多种语言的大量资源,但仍然找不到 XML 或 MF2T/T2MF 格式的 MIDI 文件的任何数据定义。我可以理解 ASCII 格式并相应地调整脚本的输出,但我能找到的将 ASCII 转换为 MIDI 的最接近的工具是这个 Perl 模块。它似乎是迄今为止我发现的所有东西中最有前途的工具/资源,但我正在寻找一个 PHP 解决方案。

有没有人对我如何找出用于指法的 XML 和/或 MF2T/T2MF 文本格式的“语法”有任何建议?这似乎很容易,但我只是在寻找工具和脚本,几乎没有关于用于从 ASCII 格式的乐谱创建 MIDI 文件的文件格式的文档。

ASCII Tablature 将符合这些标准,我想通过 PHP(或 Perl,如果我必须)以编程方式将 ASCII 选项卡直接转换为 MIDI 文件


编辑:

发现另一个 SO question 链接到一堆描述 MIDI 文件格式技术细节的网站。

这是链接: MIDI文件的结构是什么?

MIDI 文件格式的另一个好资源:

http://courses.cs.washington.edu/courses/cse466/03au/Labs/lab-5/Lab5_files/Standard%20MIDI%20file%20format,%20updated.pdf

0 投票
1 回答
81 浏览

java - 我的应用程序正在运行,但屏幕是黑色的,并且在尝试使用自定义视图时崩溃

我一直致力于为我的手机创建一个简单的吉他调音器。我对 android 开发相当陌生,并试图了解使用https://code.google.com/p/android-guitar-tuner/source/browse/#svn%2Ftrunk%2Fsrc%2Fcom创建吉他调音器的过程%2Fexample%2FGuitarTuner帮助很大。

我的问题是在项目运行时显示屏幕而不是黑屏。在日志中,我打印出最佳频率,并且它们打印正确。我已经看到使用自定义视图可以帮助我,但每次我尝试使用它时它都会崩溃。我有一个可绘制的图像,我想用作背景,而不是使用 setContentView(R.layout.activity_tuner) 我想找到一种方法来使用我的自定义视图分析来执行类似 setContentView(new Analyze(this ))。

这是我正在使用的主要活动、xml 和自定义视图类,我主要是寻求有关从哪里开始解决我的问题的指导或有关如何使用可绘制图像设置自定义视图的资源的帮助,如果那是可能的。

我也知道我的自定义视图类中没有任何内容,我使用位图尝试了一些东西,但无济于事。我删除了那里的代码并将 setContentView(new Analyze(this)) 替换为 setContentView(R.layout.activity_tuner) 以便我可以在 logcat 中用吉他测试频率。

活动调谐器.xml:

调谐器.java:

分析.java:

0 投票
1 回答
1501 浏览

audio - 如何从 FFT 中检测弦音

我从傅立叶变换中得到了光谱。它看起来像这样: 通过警察创建的声音频谱图
警察刚刚从附近经过

颜色代表强度。
X轴是时间。
Y 轴是频率 - 其中 0 位于顶部。

虽然口哨或警笛只留下一条痕迹,但许多其他音调似乎包含很多谐波频率。

EHGDAE 调音吉他的声谱图 电吉他直接插入麦克风(标准调音)

真正糟糕的是,正如您所看到的,没有主要的强度 - 有 2-3 个频率几乎相等。
我编写了一个峰值检测算法来突出显示最重要的峰值:

这个想法是,我遍历数据并记住一个大于 thresold 的值minimal_val。如果下一个look_range值小于所选值,则将其视为峰值。这个算法不是很聪明,但很容易实现。

但是,它无法分辨出哪个是字符串的主要频率,就像我预期的那样:

吉他弦现在具有突出的最强频率
红点突出最强峰

这是一个 jsFiddle,看看它是如何工作的(或者说不工作)。

0 投票
1 回答
154 浏览

php - 使用 PHP/HTML 计算和显示 4 部分和弦的反转

我正在编写一个 PHP 应用程序,它将吉他的六个琴弦表示为一系列范围。通过这种方式,我可以添加或减去一组数字,以系统地更改我定义的原型结构。

范围是:

我在使用下面的代码时遇到问题。

功能

如您所见,这是相当重复的。只看这段代码就让我觉得一定有更好的方法。我认为我需要以无限线性方式使用数组:

现在我需要使用任何预定义的 $note => $offset 对,并将它们在这个数组中跳跃 1、2 或 3 次。例如,如果它从根开始,并且跳了一次,我需要添加 4 以将其变为“第三”,并将其值更改为“第三”。但是如果它以root开始并进行两次跳转,我需要加4,加3,然后将其值更改为“第五”。

0 投票
0 回答
446 浏览

jquery - 用 JavaScript 和 jQuery 制作的吉他弦不会再弹了

我一直在尝试制作带有声音的吉他弦动画,到目前为止,我已经让线条轻弹并上下移动以模拟吉他弦弹拨,但由于某种原因,我无法让它做两次。我的意思是我第一次将鼠标悬停在它应该起作用的弦上,但第二次我将鼠标悬停在它上面只是声音播放,但弦不会重复向上/向下运动。这是字符串的代码:

有人可以帮助解决这个问题吗?

0 投票
0 回答
104 浏览

c# - 在 C# 中实时处理 AmpKit LINK 信号

我想开始一个项目来创建一个用作吉他效果踏板的 iPhone/Android 应用程序,并具有一些其他功能。首先,我需要一种接收从吉他发送到设备的信号的方法。我最好用 C# 尽可能多地处理这个问题。

我正在考虑使用 AmpKit LINK 之类的东西来处理吉他输入。

我从哪里开始?

随意推荐任何其他输入设备或语言。

谢谢,卡尔。

输入设备 - Peavey AmpKit 链接:

http://www.soundsliveshop.com/p/Peavey_AmpKit_LiNK/PV-AMPKITLINK?CAWELAID=1830897475&CAGPSPN=pla&gclid=CNnB943RmsECFabMtAod6QgAng

建议的 IDE:Xamarin(来自 C# 的跨平台(IOS/Android))

http://xamarin.com/