PerfectSpace-声场测量与优化

上图:PerfectSpace主界面

    · 项目简介
    · 演示版下载
    · 授权协议
    · 使用简介
    · 项目小结

项目简介

PerfectSpace是专业音频领域中某个软硬一体化产品的软件部分,主要作用:提供人机交互界面(跨平台单机桌面程序),通过OSC协议控制产品的硬件部分(外部设备),从而实现通道配置,分频,信号发生,电平校准,声场特性测量,数据分析与结果展示,声学环境的优化,方案管理等一系列功能。写这个软件的原因主要有三:

  1. 在实际项目中使用OSC协议,基于该协议进行不同进程、不同计算机或不同软硬件之间的数据交互、处理与控制。
  2. 对多种功能集于一身,并且牵扯到外部设备数据交互与控制的桌面程序在UI、UX等方面的设计与架构进行更多探索与试验。
  3. 本项目的初始需求方为国内某音频公司。该公司多年来在外部硬件与芯片的研发、改进等方面取得了较大成就,非常振奋人心,但在软件团队建设、对软件工程本身的认识与配套程序的系统性架构与研发等方面有所滞后。出于一种“国货当自强”的民族自豪感,我决定无偿为该公司写一个软件原型,撘一个架子,给出另一种实现方案与不一样的解决思路,希望能助他们一臂之力并提供一些有益的启发。

该项目于2017年8月底开始规划、架构与设计,9月6日开始编码,9月29日第一阶段调测完工。编程语言为C++,截至发稿共9700余行代码。开发过程中两个小插曲备忘于此:

演示版下载

授权协议

使用简介

项目小结

PerfectSpace的开发难度不大,但比较繁琐。重点与难点主要有三:

  1. All-in-One式的UI与UX设计。本项目为跨平台的单机桌面程序,要运行于macOS、Windows、Linux、iOS(iPad及iPhone)、Android(平板及智能手机)等操作系统下,今后有可能还要移植到内嵌Linux系统和显示屏的独立硬件设备中。所有平台下,界面布局、控件样式、操作模式等均要保持绝对一致。这些需求对程序的界面布局、控件设计及操作模式方面的行为定义与约束等提出了较高要求。
  2. 基于OSC协议的数据交互、控制与异常处理。考虑到产品系列的家族化、硬件与芯片方面今后有可能出现的扩展及更新等不确定因素,以及底层控制接口的开放性(面对下游厂商或个人开发者),软件研发方面需架构一套基于特定硬件和芯片的“万用型”的OSC交互接口,该接口要方便随时增删改并定义新的参数类型与数量,不仅要考虑到使用C/C++等语言的开发者,还要兼顾到使用其它各类编程语言(包括前端脚本语言)的开发者。而不同语言之间,对基本数据类型的定义与约束是不同的。除此之外,为最大程度提高程序性能,综合考虑后,在传统OSC参数的基础上(消息或数据包),我另外进行了扩展,忽略数据类型这个限制,直接针对内存下手,使用双向单开的独立线程和流媒体技术对内存块进行有关处理、传输与转换。
  3. 测量数据的图示化展示(各测量点的幅频、相频、脉冲响应等)。这里同样有性能、效率、简洁与复杂、准确度与精细度、用户观感及视觉体验等方面的妥协,此外还要考虑到曲线的美观度以及与界面其它元素在色彩、构图、画面平衡等方面的协调性。

目前,本项目仅是一个用于演示的软件原型和架子,正式立项并动工后,以下方面(模块)需要深度开发并持续完善:

SwingCoder

Email: underwaySoft@126.com 微信公众号: UnderwaySoft