- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的音乐学位做最后的项目(这个想法是探索与电子乐器交互的替代输入方法),我正在使用 Teensy 3.2 和 Adafruit STMPE610 组合一个基于触摸屏的合成器。我最初计划使用基于硬件的设置,但在与不同的电路进行斗争之后,我决定使用我更熟悉的软件。
我遇到的问题是,我似乎无法通过板载 DAC 或通过传递到计算机的数字 USB 接口(interface)播放任何音频。我可以看到程序正在播放音频,但似乎没有任何效果。
添加 dac1.begin() 后,程序挂起,只打印出初始项目标题。我不认为这个函数是必需的,但是在查看了库的源代码之后,我发现了它,所以我想我会试一试。
我不确定我是否在我的设置功能中遗漏了某些东西,或者我是否特别需要在循环功能中输出音频。
这是没有 dac1.begin() 的串行监视器的输出副本,我随机按下触摸屏(源代码在下面):
=======================
Touch Synth
<name> - 2017
Music Major Project
=======================
Note on
Touch location (x,y,z) -> 1884 2371 49
Touch location (x,y,z) -> 1896 2365 37
Touch location (x,y,z) -> 1892 2365 34
Touch location (x,y,z) -> 1428 2152 37
Note off
Note on
Touch location (x,y,z) -> 1985 2440 55
Touch location (x,y,z) -> 1987 2420 39
Touch location (x,y,z) -> 2010 2381 36
Touch location (x,y,z) -> 2023 2327 34
Touch location (x,y,z) -> 2277 2552 34
Touch location (x,y,z) -> 2074 2648 40
Note off
Note on
Touch location (x,y,z) -> 2006 2575 35
Touch location (x,y,z) -> 2024 2568 35
Note off
Note on
Touch location (x,y,z) -> 1992 2522 34
Touch location (x,y,z) -> 2005 2525 31
Touch location (x,y,z) -> 2004 2523 31
Touch location (x,y,z) -> 2007 2514 33
Note off
Note on
Touch location (x,y,z) -> 2047 2409 36
Touch location (x,y,z) -> 2036 2410 32
Touch location (x,y,z) -> 2039 2405 31
Touch location (x,y,z) -> 2066 2399 37
Note off
Note on
Touch location (x,y,z) -> 2058 2367 36
Touch location (x,y,z) -> 2062 2372 34
Note off
Note on
Touch location (x,y,z) -> 2013 2398 34
Touch location (x,y,z) -> 2029 2399 32
Note off
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SerialFlash.h>
#include "Adafruit_STMPE610.h"
// ===== Audio GUI Tool code =====
// GUItool: begin automatically generated code
AudioSynthWaveform waveform1; //xy=97,100
AudioSynthWaveform waveform2; //xy=97,137
AudioMixer4 mixer1; //xy=349,119
AudioEffectEnvelope envelope1; //xy=514,104
AudioMixer4 mixer2; //xy=676,123
AudioOutputAnalog dac1; //xy=841,110
AudioConnection patchCord1(waveform1, 0, mixer1, 0);
AudioConnection patchCord2(waveform2, 0, mixer1, 1);
AudioConnection patchCord3(mixer1, envelope1);
AudioConnection patchCord4(envelope1, 0, mixer2, 0);
AudioConnection patchCord5(mixer2, 0, dac1, 0);
// GUItool: end automatically generated code
// ===== Pinout setup =====
const byte PWR_LED = 13;
const byte GATE_OUT = 6;
const byte SPI_SCK = 14;
const byte SPI_MOSI = 11;
const byte SPI_MISO = 12;
const byte STMPE_CS = 15; // Touch Screen Controller Chip Select
const byte aPot = 16;
const byte rPot = 17;
// ===== Touch Screen Object Declaration =====
// SDI to MOSI, SDO to MISO, and SCL to SPI CLOCK
// Tie MODE to 3.3V and POWER CYCLE the STMPE610 (there is no reset pin)
Adafruit_STMPE610 touch = Adafruit_STMPE610(STMPE_CS, SPI_MOSI, SPI_MISO, SPI_SCK);
// ===== Function Declarations =====
void error(int);
// ===== Global variables =====
int gTouchOn = 0;
int gNoteOn = 0;
void setup() {
Serial.begin(9600); // Setup serial
Serial.println("======================="); // ============================
Serial.println("Touch Synth"); //
Serial.println("Callum Blackmore - 2017"); // Print faux splash screen to
Serial.println("Music Major Project"); // serial output
Serial.println("======================="); //
//Serial.flush(); // ============================
pinMode(PWR_LED, OUTPUT); //Setup power LED
digitalWrite(PWR_LED, HIGH);
if (! touch.begin()) {
Serial.println("STMPE not found!");
error(1000);
}
AudioMemory(50);
//dac1.begin(); // <--- Code will hang here if uncommented
dac1.analogReference(INTERNAL);
waveform1.begin(WAVEFORM_SINE);
waveform2.begin(WAVEFORM_TRIANGLE);
mixer1.gain(0, 0.5);
mixer1.gain(1, 0.5);
mixer2.gain(0, 0.75);
envelope1.delay(0);
envelope1.attack(100);
envelope1.hold(0);
envelope1.decay(15);
envelope1.sustain(0.7);
envelope1.release(200);
}
void loop() {
// put your main code here, to run repeatedly:
uint16_t analogVal; // temp value for analog reads
uint16_t x, y; // Touch coordinates
uint8_t z; // ''
analogVal = analogRead(aPot); // =====
//Serial.print(analogVal); Serial.print(' ');
envelope1.attack(analogVal/10); // Read pots and update attack and release values
analogVal = analogRead(rPot); //
//Serial.print(analogVal); Serial.println(' ');
envelope1.release(analogVal/10); // =====
if(touch.touched())
{
gTouchOn = 1;
while (! touch.bufferEmpty())
{
touch.readData(&x, &y, &z);
waveform1.frequency((y*2)+100);
waveform2.frequency((y*2)+100);
Serial.print("Touch location (x,y,z) -> ");
Serial.print(x); Serial.print(' ');
Serial.print(y); Serial.print(' ');
Serial.print(z); Serial.println(' ');
}
touch.writeRegister8(STMPE_INT_STA, 0xFF); // reset all ints
if(gNoteOn == 0)
{
Serial.print("Note on"); Serial.println(' ');
gNoteOn = 1;
envelope1.noteOn();
}
}
else if(!touch.touched() && gNoteOn == 1)
{
Serial.print("Note off"); Serial.println(' ');
envelope1.noteOff();
gNoteOn = 0;
gTouchOn = 0;
}
}
void error(int len){
while(1) {
digitalWrite(PWR_LED, HIGH);
delay(len);
digitalWrite(PWR_LED, LOW);
delay(len);
}
}
最佳答案
所以事实证明,teensy 是有问题的。我已经把它换成了另一个单元,它工作得很好。
我需要修改几行代码,但它们纯粹是语义上的,而不是更改波形.begin() 语句以包括起始幅度和起始频率,如下所示:
waveform1.begin(1.0, 440, WAVEFORM_SINE);
waveform2.begin(1.0, 440, WAVEFORM_TRIANGLE);
关于audio - 没有音频输出 Teensy 3.2 使用板载 DAC 或 USB 直通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46485967/
将 SQL Passthrough 工具与 SAS 一起使用是否有任何优势? 最佳答案 虽然这个问题过于宽泛,但我可以提供一个过于宽泛的答案。 SAS 中的直通 SQL 允许您直接与数据库通信。当您使
我最近一直在使用 nginxdemo/nginx-ingress Controller 。 据我了解,该 Controller 无法执行 SSL Passthrough(我的意思是将客户端证书一直传递
我正在使用 Virtual Box USB 直通功能将串口连接到 Ubuntu (/dev/ttyUSB0)。此端口用于与 3dm-gx2 IMU 通信.相同的端口适用于供应商提供的 Windows
我有一个使用客户端身份验证的 Web 应用程序,它可以正常工作。 我的问题:网络应用程序需要与第 3 方 RESTful 服务交互。 Kicker:该服务需要使用 Web 应用程序正在使用的相同证书进
CSS: ol { margin: 0 30px; } li { margin: 15px 0; } li.done { text-de
我想从 DB2 中检索与 DB1 表中的标识符匹配的记录列表,就像常规 SAS 子查询一样。如何使用 SAS 直通 SQL 执行此操作? 使用常规 SAS SQL 在 db1 上执行(长而复杂的)SQ
我创建了一个简单的 (asmx) Web 服务,它返回一个数据集。我已使用“数据”->“来自 Web”按钮将 Web 服务添加到我的 Excel 2007 工作簿中,并且可以查看/刷新数据。 当我需要
我正在写一个画廊领域。该字段是ManyToManyField的子类,并添加了自己的ajax小部件和内容。我想使该解决方案尽可能紧凑(我的意思是-我想写尽可能少的代码,以便在其他项目中重新实现)。 我决
我想做一个使用 SSL/TLS 的协议(protocol)分析幸运的是我可以安装我自己的证书并且 DNS 部分不会成为问题。我的问题是我用什么来做到这一点。我考虑过使用 paros 但它会比它的值(v
我已经设置了一个 Nginx Ingress 来代理流量到我使用 kubeadm 设置的 Kubernetes 集群。这似乎运作良好。 在主机上(设置主节点的地方)我有许多其他服务正在运行,这些服务正
我有一个隐式 Intent 过滤器,它通过打开 Intent 来使用默认 Web 浏览器查看来处理 magnet: 方案链接。目前,这具有单击磁力链接将用户从浏览器抛出到我的 Activity 中的效
我在虚拟机 (libvirt/qemu) 中有一个 MacOS Catalina,主机是 Fedora 31。我想通过 iPhone SE 进行 iOS 开发。当我连接 iPhone 时,我在 dme
我正在通过 helm 在 minikube 中运行 nginx 入口 Controller ,通过查看 nginx 入口 Controller pod 的日志,我可以看到 Controller 中启用
关闭。 这个问题是 off-topic 。它目前不接受答案。 想改进这个问题吗? Update the question 所以它是 Stack Overflow 的 on-topic。 关闭 10
我需要将 SSL 连接直接发送到后端,而不是在我的 Traefik 上解密。后端需要接收https请求。 我尝试了 traefik.frontend.passTLSCert=true 选项,但是当我访
我想创建一个自定义控件来简化以下代码: First Name Last Name 我的想
这就是问题。 我有一个 https 请求。该请求作为 SSL/TLS 请求发送(不是来自具有代理设置的浏览器的 CONNECT ....)。 我需要用 C# 编写一个代理来阻止特定的 https://
如何在通过 SSL 的同时为多个域、多个后端设置 HAproxy? 图表中的示例以获得更好的解释: backend_domain_a dom
我正在尝试确保客户端和我的后端服务器之间的完整 e2e 连接。这就是我当前的基础架构的样子: Fargate 集群,我的后端应用程序放置在私有(private)子网中。 它们前面是内部网络负载均衡器,
默认情况下映射到 gt 命令,它选择下一个选项卡。我想传递给 Crtl+Tab 插件,它为标签做 MRU。 任何的想法? 最佳答案 由于您要传递,请使用: :map i 关于plugins - 默认
我是一名优秀的程序员,十分优秀!