跳到主要内容

用命令行写音乐🎶

· 阅读需 4 分钟

我最近萌生了用代码写音乐的想法🎶,用ai找了一轮后,看到了如下几个:

我还没用devalang,strudel倒是写出来了。

用JavaScript写音乐🎶​

还挺好玩的,给ai描述需要的音色和节奏,让它构建基础,然后根据自己的审美来调整,边做边看它闪来闪去很好玩。

做出来是这样的。

(听久了会有点烦,注释掉旋律变成沙发音乐就很泛用😊)

不过它并不能直接导出音频或者midi,需要接入daw或者用Tenacity,Tenacity录音很好用,而且很小只有55.8mb。

⚠️更正,可以直接导出wav格式。调整loop周期和导出的码率,很厉害的。


在strudel用到的代码,复制后扔进strudel就能播了。嫌旋律太吵注释或者删掉就好了,注释掉就是个Em9的进行。

setcpm(40)

stack(
// 鼓组:底鼓 + 小鼓 + 踩镲,踩镲随机静音
s("bd*2 [~ sd] bd [~ sd]")
.gain(0.9),
s("hh*8").gain(0.35).pan("0.3 0.7")
.sometimes(x => x.gain(0)),

// 贝斯:前八后十六,E 小调线条
note("<e2 e2 g2 d2>")
.s("sawtooth")
.lpf(400)
.gain(0.6)
.struct("x ~ x x")
.release(0.1)
.sometimes(x => x.transpose(12)),

// 和声:省略五音的九和弦,E Dorian 调性
note("<[e3,g3,d4,f#4] [c3,e3,bb3,d4] [d3,f#3,c4,e4] [b2,d3,a3,c#4]>")
.s("triangle")
.attack(0.05)
.release(0.4)
.lpf(sine.range(600, 2000).slow(4))
.gain(0.25)
.room(0.6),

// 氛围 Pad:电声长音,慢速滤波,随机音高偏移
// 氛围 Pad:中音区,电声,短促切分
note("<[e3,g3,b3] [c3,e3,g3] [d3,f#3,a3] [b2,d3,f#3]>")
.s("square")
.struct("x ~ x x ~ x ~ x")
.attack(0.02)
.release(0.15)
.lpf(sine.range(800, 2000).slow(6))
.shape(0.25)
.gain(0.16)
.room(0.45)
.delay(0.4)
.pan(sine.range(0.3, 0.7).slow(6))
.sometimes(x => x.transpose(12))
.sometimes(x => x.struct("x ~ x x ~ ~ x x"))
.sometimes(x => x.struct("x x ~ x ~ x x ~")),

// Lead 旋律线:电声小号质感,E Dorian ,随机动态
n("0 [2|1] 4 7 4 [2|1] 0 ~")
.scale("d4:melodicminor")
.slow(2)
.s("sawtooth").shape(0.8)
.lpf(rand.range(600, 3000))
.attack(0.03)
.release(0.25)
.gain(0.08)
.velocity(rand.range(0.5, 1))
.delay(0.35)
.room(0.5)
.sometimes(x => x.transpose(12))
.sometimes(x => x.fast(2))
.sometimes(x => x.rev())
.every(4, x => x.add(note("0 3 5"))),

// 电萨克斯:E小调五声和F#小调五声随机,切分+三连音,动态变化
n("0 2 3 4 3 2 0 ~ 0 2 3 5 4 3 2 ~")
.scale("e5:minor|f#5:minor")
.scramble(16)
.struct("x ~ x [x x x] ~ x ~ x x ~ x [x x] ~ x")
.sometimes(x => x.struct("x ~ x x ~ x ~ x x ~ x ~ x x ~ x"))
.sometimes(x => x.struct("x ~ x [x x] ~ x ~ x x ~ x [x x] ~ x"))
.s("sawtooth").shape(0.7)
.lpf(sine.range(1500, 3500).slow(3))
.attack(0.04)
.release(0.35)
.gain(0.22)
.velocity(sine.range(0.5, 1).slow(3))
.delay(0.5)
.room(0.6)
.sometimes(x => x.transpose(12))
.sometimes(x => x.degradeBy(0.15))
.mask("<0 0 [1|0] 1>/4"),


)

我本来想写E dorian b2音阶作为旋律,可是strudel不支持,换算成D旋律小调也不支持,最后作罢只能用E dorian。

画静物🥛📱

· 阅读需 2 分钟

画静物很好玩,很治愈。简简单单很快乐。
不过录出来也太快了,只有34s,我画了大概有5分钟吧。画得快从视频素材上来说反而没什么可看性,不过我画爽了。

<用ffmpeg压完转码后只有635kb,放网站也不怕加载爆炸了。>

(压成webp动图的版本)

用的好像是这个指令,调了几个版本我也忘记了,东西多了就很容易错乱,我也没有每个都记下来的习惯。

ffmpeg -ss 4 -t 5 -i table-sketch.mp4 -vf "fps=20,scale=-2:720" -c:v libwebp -lossless 0 -q:v 60 -loop 0 -an table-sketch-cut3.webp

-ss是从第几秒开始,-t是一共录几秒,fps得根据视频长度调。
在blog把命令行写来有个好处,自己那天痴呆了能找回来,有时候比翻笔记舒服。

(更加动图的版本)

这样子用命令行把内容转来转去、接来接去,很好玩。而且从这个过程里面就学会了怎么玩ffmpeg。

像是氪金游戏🤷‍♀️

· 阅读需 5 分钟

我尝试了用Tripo来制作我的3D模型,总得来说能自动绑定骨架,并且渲染我还是觉得挺惊艳,虽然还是会把模型粘在一起,生成还是抽奖,改起来可能存在修不动的问题。

<看起来确实很有消费欲,挺可爱的,手还被做反了👀。>

我喂进去的参考图

换算下来40¥一个月,订阅制,接入Blender作为一个api插件(⚠️单独收费,跟订阅不通用。),想偷懒或者有需要就按n打开抽奖。

现在40¥/月,274人民币/首年。有700 token1,换算下来不修改加低模,大概也就能做4-5个模型,加上绑定也差不多。短期来说很爽,看来也确实像模像样,不过就别指望什么可维护性了,也就是说,可能某一刹那模型会改不动。

现在免费版不能导出了,而且资产不能商用,你喂进去的资产也被它吃掉了。

这有点氪金游戏的味道了,总的来说确实感觉很爽,但是并没有让人变轻松,反而每一步都是钱钱钱。

属于早买早享受,不买一点也不亏。确实是个不错的赋能工具,前提是你真的需要的话。

对我来说痛点还是那个,我不会修,这当然有我比较菜的原因,另一个原因就是类似vibe coding的问题,给我拉一大坨,我完全不想看。成本极高,且可能越修越坏。2 (这个角度暴露全部问题,堪称死亡角度💀)

手脚会被原参考图影响,而粘连一起。高跟鞋的鞋跟,ai也没有做到水平,合理性差一点。作为二次参考图倒是能接受。

(用ffmpeg把18张截图接在一起,把各种东西接来接去超好玩。)

而且订阅制有一个让我不爽的地方,虽然273¥/年,看起来很便宜,可是每个月push着要使用没用完的token,而且养成一种依赖云平台外部的习惯,这非常不好,看起来效率了,可是出卖了自主性,而出卖自主性意味着出卖自由。3

当然,需要用就用吧,我也没有说抵制的意思,不过最好是接入api在本地用,在云平台会以涉嫌违规吞掉你的资产,且token照算。


Footnotes​

  1. 具体价格因地区和促销策略可能有非常大的出入,别以我为准。 ↩

  2. ai不重要,背后的人才重要,Cytrogen关于ai和平庸之恶的延伸阅读说得很好。 ↩

  3. 关于订阅制 ↩

图片违反内容规则🔴

· 阅读需 1 分钟

不使用本地大模型而使用在线ai模型的后果。

除了被监控看光光,而且用出去的token没了,还会被禁止使用,没有理由。不会退钱,雁过拔毛👋。

这下大家知道为什么绝大部分ai生成内容都很烂,除了制作者不在意敷衍偷懒,还有原型会无故被禁也是原因之一。

又是一个阻挡我使用生成式ai提升生产力的事件,挺好的。

换着来

· 阅读需 2 分钟

我最近的绘画工作都是好几张图,好多个想法换着来画,画到不想画了就停下来换一个,或者休息做点别的。不太想干活,画插图完全不想画深入,都是画速途和写作为主。

Krita画的​

前几天我发呆的时候,想了想西班牙语里面的骑士怎么读,问ai说叫Caballero,就是骑士Knight的意思,顺着意思灵光一现快速涂了一张速途,一开始倒是没有想什么。
可能是潜意识里面保存有《旺达与巨像》《第七封印》的记忆,就涌现出了这个画面,大概画了5-8分钟吧,可能会深入,大概率不会,现在氛围就挺好的。

画完我觉得不错,还煞有介事的录了视频,加上配音就很好笑,太煞有介事了。

没有画深入,放大局部的时候细节量不足和bgm的肃穆感形成了滑稽的反差,有点喜剧的味道了。

(比较常用的Krita里面的rgba系列笔刷,特别是02号🎨)

用这个笔刷,把画面缩得超小,大概3x5cm,用鼠标🖱️涂就行了,偶尔用一下选区工具,不过要多点几下。

Hp4画的​

在浏览器用鼠标画就行,很方便。如果不是特别在意清晰度可以直接网页截图。

(它里面的笔刷设置和动态抖动算法都挺颠的,我很喜欢。)

事实上也没人强迫我,没有deathline。偶尔也想努力把一张图画深入,这里面也有挑战自我的成分啦,不过已经半大不小了,这种意愿已经开始下降,不太需要这种方式来自我证明。而且强迫做精细对自己伤害挺大的,久而久之就会厌烦。

相反慢慢来就挺好,现在我要是开始急躁就会告诉自己,好事多磨。

快捷比稳定更符合需求的情况

· 阅读需 4 分钟

我读到了Marcus的MVP,他里面提到这么一个情况:

我想不久的将来,人们需要什么应用软件,就应该不会再去买,而是自己根据需求造了。也许一些复杂的基本功能还是需要依赖外部的库,不过这类核心功能恰恰都是开源居多(ffmpeg、pandoc、openssl),正好可以自由地随用随取。这样做的好处就是不需要去学习软件的使用方法(像 Microsoft Excel 里大概有 80% 的功能我从来没用过),自己做的就不会包含自己不需要的功能,遇到了 bug 也可以自己修,美哉~

确实有道理,但是拜托😄。这不是将来,是现在就已经是这样了。

以我举例,我现在基本已经用vibe 或者写自己写代码的方式解决自己的需求了,这里面的核心背景是,找软件查资料的过程可能还没直接写来得快,且那个关键点是需求足够简单,便捷性大于稳定性。

要是写什么银行系统,机场航班管理,那确实还是需要逐行审核代码,确保稳定性和安全性。哪怕不远的未来ai能够在沙箱里面跑通安全性,但是还是要人类可维护的。

也就是说vibe coding和软件层面的mvp也只能满足需求足够简单,坏了重写一个比维护快,我觉得这个很可能已经是一个现实,不过其实是把生产成本从人力转嫁到电力,某种程度来说也是挺不环保的,不过人是爽了,至于谁先买单就不知道了。

我不会写代码​

我其实不会写代码,只能改一些参数,顶多算会简单修改代码。
出问题只能查报错,然后让ai给我讲解,之后我调试,我写或者它继续吐代码,这不可避免地产生代码臃肿,语义重复,我非常清楚,而我完全不会看,也没什么意愿看。

这种学习方式教育出了我这类次世代架空式学习者,没有地基,可能偶尔写出一个很炫酷的东西,可是维护性为零且交付给别人是一个灾难。

如果今天开始的程序员都是以我这种需求驱动学习,而没有计算机科学地基,那会产生很可怕的后果。不过乐观一点看,学习路径会重构,写程序的逻辑会改变,或许能有新的范式,说到底我们是因为未知而恐惧。

在程序教育领域,应该要有人做基础教育重构原典和地基,培养一些古典式甚至保守倾向的素养。我在绘画领域也是做这类事情,虽然现在都习惯用生产式ai,但是培养素养和品味还是需要一笔一笔地画出来,说到底一笔一笔才叫绘画,生成艺术是另一个纬度。

扯远了,我可能要描述的是,曾经学习技能是从左到右,现在是有ai脚手架,从中间开始前进和回溯并行,这方面ai是超好用的。

另外关于mvp​

我第一次听最小可行性单元mvp这个词是国内很多内容农场和二道贩子在兜售这个概念,后来则是看了seth godin的podcast正本清源的,其实有一套还算可以的方法论,随便粗看也挺成功学叙事的,不过确实是营销学策略,至于是不是他先说就不知道了🤷。

要不要用ai?​

这是个蠢问题了,我甚至怀疑有没有人还会问这个问题😌。ai提供了检索能力,让以往不可能做的事情变得可能,从个人层面我是敢做以前不敢做的事了。
所有的智力和天赋问题都降格为体力劳动,在创作方面体现在能巨量检索前期资料,遇到问题没有任何鸿沟了,只要查找、学习、检验就行了,才能变回了下苦功。

当然这也有挺无奈的变化,人变得更忙了,不过事已至此,先躺一会吧。
话说回来[dedede]这个概念读起来还挺酷。

捣鼓了一天DAW很开心

· 阅读需 4 分钟

在Windows里面装Reaper​

从我的ipad pro坏掉后我就没怎么用苹果生态的daw了,而我的电脑是windows系统的,导致很多情况下没有好的开源daw软件选择。

各种查ai后安装Reaper1试一下,其实这是我第二次安装了,第一次安装后没什么使用的意愿,(实在是太不好用啦!),后来连安装包都删掉了。

最近有录podcast的意愿,又看了wiwi的推荐,于是重装,也算是捣鼓一下软件,青年大学习一下新工具。我还意外挺喜欢捣鼓调试安装新工具的,事实上我三个月前还对计算机相关内容一窍不通。

第二次重装一开始还运行不了安装包,我嫌麻烦丢下来一个月没管,昨天想了一下,可能是文件夹有中文,导致路径无法识别,把安装包放到全英文路径就解决了。

安装完成了。

安装中文界面​

有两个社区中文界面,新的要用百度网盘虽然翻译更完善,但是要下载百度的app还得注册,非常恶心🤬,所以先用github的旧版本就行,只需要解压后直接点击安装。

音色库​

搞定Surge XT​

我照抄了wiwi的建议,安装了Surge XT,在Reaper的VFT3i里面可以直接选择。

第一次用还挺复杂的,像飞行器界面一样,三个波形叠加再各种调制,原理大致是这样,我之前没有玩过合成器,虽然一开始有点云里雾里,不过感觉还挺好玩。

(我还没太会用)

难受的部份​

Surge XT只能只能装c盘,安装包改不了路径!🤬 还好500mb我还是给得起,不过还是很难受,windows的c盘就是一个恶心的牛皮癣问题,很烦。只要用windows就逃不掉,而且现在硬盘很贵,改分盘也很麻烦,要不是经济困难不好备份,我真的马上换Linux了。

GeneralUser GS 音色包和苦难行军​

GeneralUser GS 音色包本身很小只有32mb,可是Reaper本身没有采样器,得自己安装一个采样器插件。ai检索后,选择了FluidSynthPlugin,这也是GeneralUser GS网站推荐的。

FluidSynthPlugin是个文本输入型的采样器,用纯文本选择音色,有选择的图形界面,不过要来回点来点去。用产品经理思维可以直接毙掉了2:,不过换个 思路,记下喜欢的音色后,用纯文本就会很快,跟打命令行用yt-dlp一样。

(GeneralUser GS的原始动态都很小,得额外加Gain甚至要eq+调音台都推音量才听得清楚🎵。)

Reaper用起来其实还行,不过很多东西还没习惯,而且需要自己有点耐心去调整偏好功能,比如它默认录音没有预备拍,改这个的界面要找很久,其他功能上确实很厉害了。

短期内能白嫖,也没什么能苛责的。

所以为什么不用现成的主流商业软件呢?​

  1. 太臃肿,我旧电脑加载慢(其实也不是很旧)。相对的,开源软件大都践行Unix美学,小巧好用。
  2. 不想被喂广告,和各种背刺的订阅机制。
  3. 目前我的时间没那么值钱,一个logic pro够我三个月伙食费了。开源方案更适合我,我愿意折腾。

Footnotes​

  1. Reaper不是开源软件,不过体积很小只有200mb左右,60天试用后会弹5s授权需求,不过还能接受。目前还没给钱就是因为确实不太好用。 ↩

  2. 产品经理思维指的是,注重交互体验和使用平滑度,但凡交互多一层就得优化,多一层就会增加使用门槛。 ↩

没有时间迟疑

· 阅读需 1 分钟

明天就是生命的最后一天,那肯定是不会有什么犹豫和迟疑的。

那为什么还要担心自己的东西不够好,害怕被评论呢?

之前我会很鼓励式地说放上去再说,现在不如再绝对一点。事实上我们并没有那么多时间在意别人的评论,犹豫不前只会浪费自己的生命。

在混乱中开始,在混乱中继续,也结束于混乱之中。

做完,发出去,不要关心什么算法和评论,那跟自己没有多大关系,我们的作品就是我们的生命,生命不需要其他人指指点点。


扣除出生十年没有自由意志,最后十年卧床等死,能自由支配的时间包含睡眠只有一万来天。

萦绕心头的几种散乱

· 阅读需 2 分钟

gpt-6 astra发布了,又多了很多哀号,艺术行业又要被取代了,手工艺术又毫无价值了。

我已经疲于去谈论和言说,诸如最重要的是人,创意和思维最重要这种蠢问题,事实上绝大部分人也只是想哀号然后舒缓一下自己焦虑,并没打算干点什么,把言论扔进社交媒体这个垃圾桶,然后让别的苍蝇一同觅食,这已经司空见惯没什么好说了。

真的坐下来辛劳创作的创作者不大会去说这些事情,创作的绝大部分喜悦在过程,也在一次次磕碰中的翻跃、迟疑、难受、克服、含混不清,之间或若干或全部的跳跃里。

那为什么还要一直重申ai取代全世界呢?哪怕其实都知道,创作就是艰苦的,ai只是增加劳动,增加选择项,更多无意义的垃圾信息,烦躁的不断重复的无限递归,为什么还要一而再地言说呢?

其实很多人都聊得很清楚。可是结构张力一直在,就是有不少的脑力产业工人被扫出行业,不知道多少,但是不少,他们最需要怪叫了。哪怕他们活得其实比绝大部分体力劳动者滋润。

没错,我也在怪叫,又是一个中产滑落,半生不死的庸俗叙述。

最好笑的是每天都有大量的ai从业者离职,他们不怪叫,反而是离得相对远的人在叫,这里面总有一些荒诞在里面,具体我说不明白,但是一直让我皮肤发痒,像得了梅毒。

说到这里,我已经没有牢骚可以说了,还是坐下来继续生活,继续创造,痛苦呻吟完后继续创造,如此循环。

松散的

· 阅读需 1 分钟

我当然知道成体系的,精致的,包装好的,严谨的内容更好传播,从为他人着想和在商言商的角度来说确实如此。

但我的创作事实总在告诉我,往往很多灵光、深刻、美好、通神的部份,总在那些散漫、卡顿、含糊不清的地方里面。让人无奈的是,它们往往很难捕捉。这里面当然有我的无能,可是这种归因总觉得过于简单化且自我设限。

仿佛一句,你就是没才华加矫情,这样可以很顺滑地就一笔带过了。不好意思,不是这样的。

我可没说我是创作本真论者,恰恰我在传播时非常直接地砍掉那些枝叶,变得哪怕自己觉得有点可惜。但是我还是会备留多个版本。