C/C++笔记
糖少主
这个作者很懒,什么都没留下…
展开
-
WARNING宏
调试期间,代码中可能会加很多assert,但是有时一些不那么严重的错误又不希望死机,只想让他打印一下错误。我定义了一个这样的宏来实现:#define warning(expr, string) (void)(!!(expr) || (log_print(string), 0))extern void log_print(char*, ...);...原创 2020-12-27 03:13:31 · 519 阅读 · 0 评论 -
数组与取地址符“&“
涉及数组成员的取址,可以使用数组名加偏移量(p = arr+5)或数组加下标再取地址(p = &arr[5]),那&arr代表什么呢?我一开始只知道arr和&arr的值相等。#include <stdio.h>int arr[10]; int main(int argc, char *argv[]){ printf("%p ,%p, %p\n", &arr, arr, &arr[0]); return 0;}/*Output:原创 2020-12-27 02:43:27 · 3884 阅读 · 0 评论 -
VST 2.0编程总结
之前搞VST 2.0 SDK编程,基本上入门了,4月份开始搁置。现在想再捡起来,发现代码有点生疏了,是时候再梳理一下了。插件的重要的部分一个是音频信号处理算法,一个是GUI。VST 2.0规范不需要开发者考虑音频信号处理时缓存、调度之类的事情,只需要实现音频处理和GUI相关的接口即可。音频效果对应一个AudioEffectX类。通过定义一个类继承自AudioEffectX,重写processReplacing函数来实现想要的功能。音频效果的重要的一点是参数。用户通过交互界面将调整的参数告诉程序,VST原创 2020-12-27 01:38:19 · 705 阅读 · 2 评论 -
C语言中short int的移位操作
SINT16 s16_val = fpga_spi_read(reg, addr); printf("value = %d\n", s16_val);新同事问我一个问题,说FPGA给的9-bit有符号数,打印出来是个正数。我一看,9 bit的有符号数对short来说接收下来高7位肯定全是0,于是想当然地帮他改成了: SINT16 s16_val = fpga_spi_read(reg, addr); s16_val = (s16_val << 7) >> 7; prin.原创 2020-10-28 03:11:36 · 709 阅读 · 0 评论 -
使用Win32 API绘制wav文件波形
最近想把Win32 GDI绘图捡回来一些。在CFree下写了一个读取16-bit int PCM wav文件并在窗口中绘制波形的小程序。总结一下主要的收获:1. Windows资源文件.rc以前在Visual Studio下编写Win32和MFC程序,rc文件都是自动生成。这次用CFree写程序,条件不允许,就需要自己编辑了。这次主要用到rc文件添加菜单。IDC_WIN32WNDEMO MENUBEGIN POPUP "文件(&F)" BEGIN MENUITEM "打开(&原创 2020-10-25 02:50:33 · 1036 阅读 · 1 评论 -
VSTGUI:自定义绘图类(一)
与以往不同,以往都是先写完代码再进行总结,这次要在写代码之前做一些必要的讨论,以支持后面的工作。之前都是照着例程,再参照自己想法写,但是现在的需求是,需要根据三个控件的参数画一条曲线来显示参数变化,这个功能没有现成的类可以实现,需要通过继承某个基类进行定制。此需求的功能和使用过的CParamDisplay类似,共同点是,通过监听控件来改变显示。我们实际需要监听三个控件,那就要看CParamDis...原创 2020-04-27 23:16:09 · 315 阅读 · 0 评论 -
VSTGUI:Slider& Display
本次基本完成了效果器界面的部分,加入3个Slider控制参数,3个Display显示参数。以下进行总结。1. AudioEffectX & AEffGUIEditor用户自定义两个类分别继承于AudioEffectX和AEffGUIEditor(暂称为效果类和界面类),AudioEffectX负责信号处理,AEffGUIEditor负责显示。在这里自定义了ACompressor继承自A...原创 2020-04-27 02:12:23 · 279 阅读 · 0 评论 -
VSTGUI:Slider
给VST增加界面,主要是重载AEffGUIEditor类及其open,close函数。ctor使用BMP图片,new一个CBitmap。给AEffGUIEditor::rect初始化。AEffGuiComp::AEffGuiComp(AudioEffect * effect):AEffGUIEditor(effect){ m_pbmp_back = new CBitmap(IDB...原创 2020-04-26 01:26:46 · 208 阅读 · 0 评论 -
VSTGUI:开端
开始了带界面的VST的编写。遇到问题:1>------ 已启动生成: 项目: Comparoma, 配置: Debug Win32 ------1>ACompressor.obj : error LNK2001: 无法解析的外部符号 "public: virtual void __thiscall ACompressor::setProgram(int)" (?setProgra...原创 2020-04-22 21:28:35 · 350 阅读 · 0 评论 -
Qt下实现录制麦克风声音
先上header,header是灵魂有一些是没用的。#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QString>#include <QFile>#include <QAudio>#include <QAudioFormat>#include &...原创 2019-07-13 18:58:23 · 2032 阅读 · 3 评论 -
指针常量和常量指针
#include <stdio.h>#include <stdlib.h> int a[9] = {0,0,0,0,0,0,0,0,0,};int b;int main(void){ int const* pa = a; const int* pb = a; int* const pc = a; int bb = pa[0]; pa...原创 2019-06-19 14:35:26 · 99 阅读 · 0 评论