代码之家  ›  专栏  ›  技术社区  ›  Oleh Prypin

播放振动会发出的声音

  •  0
  • Oleh Prypin  · 技术社区  · 14 年前

    t型 ,我有一套 样品 .

    跨平台的C++(或QT)解决方案是首选,Windows的解决方案也不错。

    如果你知道如何。。。

    2 回复  |  直到 12 年前
        1
  •  2
  •   tenfour    14 年前
        2
  •  0
  •   Oleh Prypin    14 年前

    这里是C++ /QT代码:

    #include<math.h>
    #include<QBuffer>
    #include<QAudioFormat>
    #include<QAudioOutput>
    ...
    QAudioFormat format;
    format.setChannels(1);
    format.setFrequency(22050);
    format.setSampleSize(16);
    format.setCodec("audio/pcm");
    format.setByteOrder(QAudioFormat::LittleEndian);
    format.setSampleType(QAudioFormat::SignedInt);
    QAudioOutput* output=new QAudioOutput(format);
    QBuffer* buffer=new QBuffer();
    QByteArray data;
    for (int i=0;i<22050*2;i++)
    {
        short value=(/*Volume:*/10000*sin(2*3.1415*/*Frequency:*/600*i/22050.0));
        data.append((char*)&value,2);
    }
    buffer->setData(data);
    buffer->open(QIODevice::ReadOnly);
    buffer->seek(0);
    output->start(buffer);
    

    相当肮脏的解决方案,我认为它有内存泄漏。。。但它是有效的!