news 2026/7/2 1:24:20

看见旋律 - WinUI3 实现音乐监听:47 种漂亮的数学线条形态

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
看见旋律 - WinUI3 实现音乐监听:47 种漂亮的数学线条形态

在 看见旋律 - WPF 实现音乐监听:频谱图展示-CSDN博客 中,我实现了对音乐旋律的监听,把监测到的鼓点、低频通量等可视化,看到了漂亮有趣的节奏线,现在我们把它与常见的数学线条结合,让节奏影响线条灯粗细、缩放、速度、跳动。

整体处理流程:

把「音频状态 → 相位 → 采样点 → 归一化 → 绘制」串成一条线;画廊里每个格子都走这段逻辑:

// Companion.WinUI3/Rendering/MathCurveGalleryRenderer.cs · DrawTile var influence = MathCurveAudioBindings.ForEntry(entry, index, audioState); var linearPhase = audioState.CyclePhase * entry.Speed; var phase = MathCurvePhaseMapper.MapDisplayPhase(linearPhase, audioState.LoopMode); entry.Sample(phase, SampleBuffer, SampleCount); PrepareDisplaySamples(SampleBuffer, DisplayBuffer, SampleCount); ApplyBeatScalePulse(DisplayBuffer, SampleCount, audioState); DrawCurve(session, plotCenter, radiusX, radiusY, plotRect, linearPhase, audioState.LoopMode, influence); DrawTileLabel(session, entry, x, y + height - labelBand, width, labelBand);

音乐不直接改曲线公式,而是改「相位推进速度」和「视觉强度」;鼓点则触发脉冲包络:

// Companion.Core/MathCurveAudioModulator.cs · TickCore 摘录 if (driveChannel != MathCurveDriveChannel.None && isListening && frame is not null) { channelRaw = MathCurveChannelSampler.Sample(driveChannel, frame); channelNormalized = Math.Clamp(channelRaw / _channelScale, 0f, 1f); _trendEstimator.Tick(channelRaw, dt, settings); speedMultiplier = _trendEstimator.SpeedMultiplier; motionIntensity = 0.35f + channelNormalized * 0.45f; } _beatPulseTracker.Tick(dt, isListening, frame?.IsConfirmedKick ?? false, settings); _cyclePhase += dt * baseRate * speedMultiplier; // 动画相位累积

以下是 47 种漂亮的数学线条,一起来欣赏吧:

漂亮的茅尓玫瑰,送给你:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 1:21:16

遗传算法实操调参与收敛性诊断实战指南

1. 项目概述:这不是又一篇“遗传算法入门”——而是你真正能动手跑通、调得动、改得明白的第二课“遗传算法入门”这个词,我见得太多。打开网页,十篇里八篇是复制粘贴的生物类比:染色体、基因、交叉、变异、适应度……讲得像高中生…

作者头像 李华
网站建设 2026/7/2 1:20:25

AI 辅助:后端架构选型取舍:没有银弹,只有约束条件

AI 辅助:后端架构选型取舍:没有银弹,只有约束条件 一、架构选型必须从约束出发 后端架构选型最怕脱离约束讨论。微服务、单体、Serverless、消息队列、缓存、分库分表、Kubernetes,每一种技术都有适用场景和代价。架构师要做的不是…

作者头像 李华
网站建设 2026/7/2 1:17:19

AI 辅助:Service Mesh 落地经验:流量治理不是先把边车塞满

AI 辅助:Service Mesh 落地经验:流量治理不是先把边车塞满 一、Mesh 不是万能胶,服务边界混乱时只会更吵 Service Mesh 的价值在于把服务间通信治理从业务代码中抽离出来,例如熔断、重试、限流、灰度、mTLS 和可观测性。但落地时最…

作者头像 李华