音乐发生器 网络音频API 初学者体验

背景和背景


我已经62岁了。三年前,我决定尝试编写一个相当复杂的系统,在此之前的1981年,该系统的基础知识只有20条代码,那时3个月的计算机科学使我们陷入了无线电学院(NSTU,之前是NETI)的五年级。专业人士被认为是拥有该主题并从中赚钱的人,因此实际上我是一个初学者。

另一方面,我一生中大部分时间都在处理与音乐有关的算法,并找到了开发过程,硬件和软件,并尽我所能参与其中。 1978年,他开发并组装了Mini-Moog合成器(我相信这是乌拉尔地区的第一个),并在苏联开发并生产了第一张带有Agat7(9)合成器的苏联声卡-Apple II的苏联类似物,设计了FM合成模块其中一个工厂与Cakewalk(美国),PGMusic(加拿大),PowerFX(瑞典)合作-在该计划下更经常使用:“想法和实施来自我们,预算来自他们”,参加了国际音乐展览会MusikMesse(德国),NAMM (美国)等当然,所有这些只是我所做工作的一小部分,不是我一个人,而是与我在特定时刻聚集的团队一起工作。

此外,他还积极组织了新西伯利亚音乐学院的信息学系(苏联第一部)。从1983年到2004年,他还教过音乐声学,信息学,声音工程,并准备了关于音乐演奏的计算机建模的论文(ISBN 5-9294-0023-7)...

是的,这一切都始于黑白显示器,软盘,256 kB RAM,个人音乐组装PC ...音乐家必须用手指来解释所有事情,因为在大多数情况下,这些出色的人远没有严格而有条理的一切。如果长号手能够填满一段文字,他就很酷,为Chizhik-fawn编程的大提琴手只是一颗星星。顺便说一句,一些老师积极地抵制了整个话题-但现在试图剥夺他们的计算机!

这种经验对我的发展,培训和深化变得非常有用。像体育一样,计算机科学对所有系来说都是强制性的,并且源源不断的学生使我们能够进行许多测试,心理声学实验,模式识别,与理论音乐家交流,以及……了解他们实际上没有确切的数据和公式。至少是音乐设备和程序的开发人员所需要的。不幸的是,音乐学家本质上是描述过去的历史学家。如果他们有科学,那么……可能会增加他们的咨询范围,而不是人口超过100万的城市的市长。一位著名音乐家会为“热门公式”和“销售预测”支付多少费用?..

因此,假设我们需要获得适用于此类算法的答案,例如:

a)旋律响起(嗯,即使已经用MIDI中的“音符”录制了旋律),如何确定音调在哪里? -音乐家会轻松地做到这一点,但明确的答案(算法)不会给您;

b)有一种旋律,如何选择合适的和弦?..是的,合唱指挥可能会比歌手更出色,但是,即使他们给出了指示,两者也不是很清楚。当然,从他们的角度来看,这将是严格的。只有当工程师开始将其转换为算法时,才有许多难以克服的不确定性...

c)鼓手演奏的乐曲是否有些复杂,或者萨克斯风演奏家即兴演奏-如何“弹奏”其大小,强/弱拍,乐句的开始/结尾,表现力的减慢/加速?这与EDM(电子舞曲)无关。表演者的音乐家以“照做”的方式感受并遵守老师传达的“规则”,但是工程师需要数字,图形,比例,而实际上这是不可能从表演者或音乐学家-理论家那里获得的。

但正是在这样的问题上,我想找到答案。确实,具有真实声音的作品可能具有粗糙的模型-MIDI格式的音乐作品,实质上就是“电子乐谱”。这些都是准确的数据,但是如何使用它们呢?总的来说,最后对我来说最有趣的是MIDI数据和以下算法的分析和转换:

性能建模 1)
变形 2)
音乐生成 3)

所有这些,音调,自动和声,自动短语的定义只是单独的子任务...随着时间的流逝,对于所有这些主题,算法和程序,人们都收到了可接受的答案,它甚至进入了Cakewalk / Sonar。

*小解密:

1)分析量化的MIDI数据,识别“音乐对象”(短语,图形),并在力度,音符,持续时间以及Tempo,PitchWeel,Expression,Modulation曲线的拼音部分进行更改,以便更充分地利用合成器资源并提高表达力。

2)分析整个作品和单个部分,目标是将它们从一种尺寸转换为另一种尺寸(例如,从4/4转换为6/8或7/4),从一种和声/和声转换为其他。而且,结果将是“可食用的”-从而使音乐家认为是“正确的”音乐,而没有明显的违反。

3)“电子乐谱”生成-一种系统,当使用1)和2)并播放MIDI数据时,其声音输出类似于音乐家,编曲者使用计算机或现场乐器产生的声音。那些。不是由AI产生的抽象事物,不仅可以在狭窄的专家圈中进行演示,而且可以完全“人性化”并适合使用。

在这段漫长的故事中,有很多有趣的事情,例如,如果从现在看,例如,对于第一台386 PC,我必须给两台新的莫斯科“ Chignon”(IL 2715),每台29万卢布。或者,作为音乐学院,我几乎在科学院的西伯利亚分支机构中购买了一辆二手明斯克32号-我相信这个比智能手机更弱的怪物似乎占据了60-80 m 2的面积并消耗了电力,可能像是酒吧+桑拿房...

因此,我的员工进行了编程(我们在GDR上的第一台Win PC上使用Z80,MOS 6502,“ Electronics-60”,以及TMS和Analog Devices信号处理器...),每天我在屏幕上看到“ krakozyabra”,并想到他们(程序员)都不是“这个世界”。虽然乐谱并不容易!毕竟,有些音乐家会听音乐,看音符,如果喜欢的话甚至会获得美感!总的来说,在我看来,编写代码的每个人都是天才,这根本不是我的……但是,正如未来所表明的,我错了。我不能说浪费了很多时间,但是许多项目的命运可能会完全不同...

初次实践经验


从以前的经验中,我了解到程序员最“难”,“不愉快”的事情是两件事:GUI和界面(即从一种环境切换到另一种环境,例如,从外部设备接收MIDI数据),尤其是当没有合适的现成解决方案。

首先,我学习了AutoPlay Media Studio(靛蓝玫瑰软件)-它有点像傻瓜设计师。最初,显然是为了快速创建CD,DVD菜单和autorun.exe而设计的。但是事实证明,这里有很多功能,而且在LUA上,您几乎可以做所有事情:动画,播放ogg。因此,大多数“不愉快的”工作(顺便说一句,我认为,新移民只是在这样的时刻停下来)无法完成-一切就绪。

结果,我下班后两个月在家中写了一个模拟音乐,它是我们开发并正式交付的。此外,有了另一个GUI,更有趣的功能-制作音频和图形内容并为我测试并不难。他在办公室展示了它,并问一位主持人他需要多少时间来制作这样的版本,答案是6个月!在这里,显然,我第一次想到:也许我不仅应该沉迷于自己,而且应该开始学习一些东西并尝试做一些严肃的事情,然后……我是否正确地组织了工作。实际上,他的回答很诚实-简单地说,“他们”不会使用构造函数,但是他们会自己编写所有内容。

自2009年以来,我将部分时间用于录音室和制作视频广告。一次,一位朋友问是否可以快速(且不昂贵)制作一百个1分钟的剪辑(显然是在YouTube上推广)。真爱这样的任务!(顺便说一句,我很早就知道,如果程序员被迫做3次不太有创意的事情,他会写一个脚本)。我问程序员,如果有这样的程序,它本身可以“按下”屏幕上的按钮吗?哇,这是AutoIt!

通常,为了娱乐,我编写了一个脚本,该脚本是:

  1. 启动Opera,打开了一家专门从事文本到语音转换的公司(似乎是荷兰公司)的网站;
  2. 在页面上,我滚动到RU(俄语发音);
  3. 在记事本中打开一个* .txt文件,其中预先从网络段落中复制了20-30个笑话;
  4. 复制一个笑话,并将其粘贴到网站的字段中;
  5. 正式启动了SoundForge,并在网站上打开了播放;
  6. 记录结果并将其保存在mp3文件夹中,其名称为“序列号+开玩笑本身的前15个字符”。

它奏效了,小时候我很高兴。之后,我告诉我的朋友-制作100个便宜的剪辑(高质量)没有问题,只需拾取图片,音乐,标题,字幕,说明等即可。-我将所有内容按顺序排列(按大小,颜色),放入文件夹中,制作模板+我将确定其变化(随机!),我可以让您不是100个,而是200个(在带有AutoIt的Vegas Pro中很容易)剪辑,有选择地观看它们,您已经为自己选择了合适的数量...您不必做所有这些,但是谢谢你的提问!

后来,我逐渐开始在网站上更正某些内容,阅读一些内容,并出于体育兴趣尝试一些内容。特别是在JavaScript / CSS上为创建视频所需的简单动画编写脚本。因此,在PHP,HTML,jQuery,JavaScript,CSS,MySQL中出现了一些一般性想法和一些经验。“裂缝”几乎消失了,我不再害怕“编程”这个话题。当我了解以下两点时,与她和她的能力有关的最后转折点就出现了:

  • 这整个领域是一个无尽的世界,即使不是他的领域,即使是一个强大的程序员也不会总是回答这个问题。就像在其他领域一样。总的来说-是的,很好,还有细微差别-寻找一个狭窄的专家,而是自己挖东西。幸运的是有一个网络。
  • 我自己解决了开发过程中遇到的99%的问题,有时比Internet上的示例更有效。同时,我了解通过编写样式,我的代码可能会很糟糕。

音乐发生器


我不记得我是如何偶然发现Web Audio API的,到那时我还没有LLC,IP或团队,但是经过2-3次实验之后,当“声音”消失时,我对我来说最认真该项目是一个音乐生成器(现在我称为AlexAr)。确实,在Web Audio中,一切都是必需的-生成器,过滤器,信封,混合器,处理器(C ++)以及jQuery,JavaScript和CSS使我们能够解决GUI的所有问题。实际上,在我看来,在Web Audio中,您可以处理和合成任何复杂的声音。

在这里,真正的工作几乎始于青年时代,那时您才25岁。我重新启动了3-4次,丢弃了该系统的一个版本并收集了一个新版本。有时,从根本上改变设计特定模块的方法。同时,我进行了大量实验并测试了以前从未使用过的新算法。他为自己做出了一些发现,而这些发现如果不启动系统就不会发生。特别是在心理声学中,在感知音乐曲目的“相似性”时-哪些参数将产生“不同”的音乐,以及哪些形式上的差异在耳朵上是“相同的”。在使用和声,弹拨时的模仿,换和弦时的措词以及对“风格准确性”的更好理解中,发现了一些非常有用的东西。所有这些都是可能公开和描述的。但是在生活中它经常发生这样更容易(也更有用)来思考自己。

是的,如果Web Audio API允许绑定,使用VSTi进行合成或其他准备好了的话,那就太好了。另一方面,有机会回顾年轻人并编写所有必要的合成器,以在结构,算法和内容上进行发明,优化。几乎就像在过去一样,当画家不仅绘画而且还自己绘画时...

结果,经过几次回扣和改建,现代化改造(这是一门很好的学校和大脑培训),该系统变得稳定并且可以完全使用。好吧,当然不是以什么形式可以转让给第三方。大约就像一辆家用汽车,只能“服从”创作者,如果它破裂,将没有人修复它。

图片

通常,完成的合成物需要4-5分钟,它会在40-50秒内产生。 (在Intel Core i5上,2.8GHz,12GB RAM)。我问了一个任务,例如“制作100首舞蹈曲目”,改吃午餐或散步。他在一个小时内到达,如果系统没有崩溃,他会倾听并确定结果是否合适的%%。然后,我更改了参数,然后重新开始。如果我表现得“合理”,即设置不会导致样式模糊的参数(例如,如果在EDM中应用爵士和声,就会发生这种情况),那么90-95%的音轨听起来很不错,如果没有,则可以丢弃60-70 %%。

该系统运行正常,您可以喜乐,但是似乎出现了荒谬但真实​​的问题:“我怎么能听这么多音乐?”还有一个时刻的实现:“作者是谁?”一个好朋友“在这个主题上”说:“作者是一台计算机,包括。它不属于您” ...如果是这样,那就太可惜了,我在那里输入了乐曲,乐句,和声,形式,设置了数百个参数,有时结果中反映了5毫秒,系统仅根据算法再次生成了结果,我投资了它...我搜索了网络-在类似的版权案件中,我不明白...

结果,我发行了大约3500首歌曲,总播放时间超过200小时,然后停止播放,甚至切换了声音-我计划推出SongModeler-一种基于AlexAr制定的方法的在线编曲生成器。好吧,可以在此处找到AlexAr中自动音乐生成的示例

对于过于挑剔的听众,我想说的是,我在编程,和声,旋律,形式(即音符)上花费了更多的时间,但是综合和混合当然会更好。最后,我检查了想法,方法本身-是的。对于此类项目,需要一个团队,孤独者很少处理跨学科的话题。的确,另一方面,当没有人“既不在您上方也不在您下方”时,工作将变得更加舒适。但是真正具有讽刺意味的是,当我拥有团队和资源时,我并没有针对这样的事情,因为我认为这太复杂了。

我已经在研究AlexAr的过程中某个地方已经意识到,很可能如果我更早开始编程,那么可以用三个替换10个程序员(有时我的工作人员更多)

我本人(设计,编程,测试,内容);
非常聪明 -遇到瓶颈,采取情报手段,建立新图书馆,提供服务(高中毕业后即刻或3-4门课程开始);日常工作中
富有成效的工作狂,没有想象力,他不愿动手应用今天出现的东西。

我相信这项任务将更快地解决,并且可以节省多少神经和金钱!储蓄来自哪里?因此,在午餐之前,我坐下来测试了一些东西-“好吧,按钮不方便,指示器会向右移动更多。” 好的-我坐下来做了半个小时,心情是5岁以上。当您自己不写信时,在我与团队的办公室中如何较早决定呢?首先我会问要花多长时间,然后我在PhotoShop中将其绘制,计算像素,写了TK,将其包含在计划中,等了几天甚至...根本拒绝了-它起作用了,它已经很好了。如此不断。

结论与动机


我不知道我能如何得出实际的结论,但在我的领域还没有,但我会尽力而为。

  1. , . , , , , . , . , 10 , ( ?).
  2. — . , - macOS Android, . , , . , .
  3. GUI , — . , - . , , -.
  4. - - , - — , , . , , - — . — «». 7 , 6 . — , — . , - . ? — , . - , « » — .. , «» .
  5. , , (software engineer, !) . , , ( ) -, . , , engineer, , «, », .. «Copy Paste».
  6. , , «» , , - . . - … , . . — . , , , , , .
  7. , . , , IDE, . , , — NotePad++, FireFox ZIP- — , . «» . , « », .
  8. ? . , , — UnDo/ReDo. JavaScript , , — . , , , . UnDo — , , , .

总的来说,在我看来,成年人,尤其是那些没有参与编程生活的具有工程学背景的成年人应该尝试。如果您知道您的主题,那么50%已经完成。您需要逻辑,对您所在地区的“物理,自然”有清晰的了解,并且您很有可能拥有这一点。不用担心“弯曲的外套”,JavaScript比俄语或英语简单得多。最后,您可能不会成为真正的软件工程师,但是这些技能(即使是很小的技能)也将为您的工程资格增加另一个选择。是的,您将立即停止将IT人员视为头顶上有光环的人,并且可以为他们设置更胜任的工作。毕竟,他们去了您所在的地区,而您是专业人士。也许您是在梦data以求的数据上实现您的项目,但是实施它的条件还不可行-我不知道,我认为我很幸运,因为我不害怕尝试。而且无论如何-为工程师编程,这是自由!

祝福大家。

PS:如果有人对我多年来的工作历史感兴趣,那么形式就更详细

All Articles