Qt 5.1或更高版本:
我需要播放频率为x的通知声音n毫秒。如果我能组合这样的音调也很好:1000Hz持续2秒,然后3000Hz持续1秒,...
最简单的方法是使用文件(WAV,MP3,..),例如如下所述:How to play sound with Qt但是我必须为我的每个场景生成这样的文件。
Qt's audio output example在内存中生成此类音调(Generator::generateData(const QAudioFormat &format, qint64 durationUs, int sampleRate)
)。我可以为我的目的编写这样的发电机。但我必须这样做吗?
那么在x毫秒内播放频率x的最简单方法是什么?
答案 0 :(得分:2)
你可以使用“window.h”包(不是QT包)。 然后你只需使用Beep(频率,毫秒)。 对于你的例子,它应该分别是Beep(1000,2000)和Beep(3000,1000)。
答案 1 :(得分:2)
要在Qt中生成音调,我们可以将自己的QBuffer传递给要播放的QAudioOutput。
查看QAudioOutput页面上的first example。
我所做的是在QByteArray中创建我的波形。
请记住,<?php
$name = strip_tags(trim($_POST["name"]));
$name = str_replace(array("\r","\n"),array(" "," "),$name);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$message = trim($_POST["message"]);
$recipient = "nexsmedia@gmail.com";
$subject = "New contact from $name";
$email_content = "Name: $name\n";
$email_content .= "Email: $email\n\n";
$email_content .= "Message:\n$message\n";
$email_headers = "From: $name <$email>";
mail($recipient, $subject, $email_content, $email_headers)
?>
会给你一个所需频率的基调:
import { Component } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Http } from '@angular/http';
@Component({
selector: 'app-contacto',
templateUrl: './contacto.component.html',
styleUrls: ['./contacto.component.scss']
})
export class ContactoComponent {
title = 'Contacto';
constructor( private http: Http){}
url='http://myUrl.com/mailerscript.php';
name:string;
email:string;
message:string;
guardar( forma:NgForm ) {
this.name = 'name='+forma.value.name;
this.email = 'email='+forma.value.email;
this.message = 'message='+forma.value.message;
/*??*/
this.http.post(this.url, "");
}
}
然后我们可以使用缓冲区并执行类似的操作来播放它:
sin(2 * pi * frequency * i / sample_rate)
如果您需要更多示例代码,您可以在我刚开始here的小项目中看到我是如何做到的。