00:00
上节课写了这个回文诗,那怎么判断这回文诗呢?哎,正着读反着读相同,这就是回文诗,哎,那我想把这回文诗配个曲子可以吗?哎,最好这曲子它也是回文的,什么样呢?哆咪嗦咪哆。文字呢是蜜蜂爱蜂蜜,合在一起呢,就是蜜蜂蜂蜜蜜蜂I疯咪哆咪so咪哆,其实也很简单,从哪儿下呢?从这个X studio去下载这个网址啊,下载之后呢,有软件之后,它可以导入这个MIDI文件,也就是说它可以导入MIDI文件,导入MIDI之后在上面写歌词就可以了,我想做一个有意思的,不是这个开开嗓啊,不是这个是什么呢?是这个哼鸣练习,嗯。哆来咪FA sofa咪来哆,我想用代码生成这个可以吗?问问问这个呀,我要生成哆来咪FA sofa咪来哆的咪I。
01:07
帮我用咪度完成,那我们这边呢,其实已经有一个现成的代码了。这边是一个Vs code的之类的环境,点一下这个加号叫什么呢?M.PY, 它是一个PY文件,所以呢,它可以播放代码在哪儿呢?在这儿呢,复制哼鸣练习粘贴,粘贴之后呢,一运行它就出这个w map w map就是热身,嗓子的热身就是开嗓,右键它下载,这样我们就直接下载了,那这个东西能打开吗?我们文件导入一个。这个MIDI导入谁呢?导入这个W玛,然后确认,确认之后呢,我们可以看到这就是MIDI,我们把这这个鬼啊给它谬掉,然后这块儿呢,我听一遍啦啦啦啦啦啦啦啦啦啦啦啦啦,那我可以改成什么呀,上海自来水来自海上啊,这个东西是一个回文,这个曲调呢,也是一回文,诶这就合起来了,嗯,海啥他是怎么完成这个制作的呢?那我们呀。
02:15
就是可以看到这个代码,它前面都是一些什么,都是一些变量的赋值啊之类的东西,到这儿呢,它有一个这个列表,然后把这儿点一个小红点儿,注意点小红点,点了之后它就可以进行调试了,也就是说debug,怎么debug呢?运行里面找这个启动调试,注意它会从资源管理器进入到这个小虫子这个调试管理器,现在它高亮吗?一会儿他高亮你看啊F之后选当前这个文件调试好,那他就进来了,进来之后呢,它就开始直接运行到断点了,这儿是什么呢?左边这边是有locals locals就是本地变量是吧,本地变量,那这里面有很多很多的本地变量,我们可以怎么样往后。走一走一行,走到这儿之后是不是就开始循环了,那我怎么样把这个变量看到呢?这是一个offset,它对应什么呢?024575420。
03:12
它是什么呢?它是个偏移量,相对于谁的偏移量呢?相对于C4的偏移量,相对于C4,也就是说。这不是C4吗?自己相对于自己是0,但是瑞呢相对于斗它就是一个两个M呢,哎一个两个三个4个,哎发呢一个两个三个4个5个,然后那个是7个是吧,所以它是0245752420嘛,能能能能能能能能能。那现在呢,我们这行黄的就已经准备开始进来了,现在这里面东西呢,这个东西是什么,我们现在看不见,看不见没关系,我再一运行这里面是不是off就出来了,这off是一个循环变量,很重要,我可以把它怎么样把它添加到监视,监视在底。
04:05
哎,这样他就。那就重点重点关注是吧,现在到这行呢,C4多少60,鼠标放上去会有一个60的提示。这个O是多少呢?是零对吧,六十零六十加0等于多少。没东西,为什么没东西啊,因为他还没完成这个赋值呢。就是他还不在locals里面呢,对吧,他得完成这这这句话才完成了这个什么declaration and assignment声明和赋值,我们在走好这句话这就出来了,我们也可以把它选中了,右键注意不是选中整行。不要再看一下选中整行不行就选中这一条的点,把它选中,然后添加到监视,注意监视里面是不是有2个了。有两个,然后我们再继续走。走了之后呢,我们其实可以看到添加了什么一个消息,什么消息呢,Note, 它音符开始了这么一个消息,哎,哪个音符呢,那肯定就是刚才说这个note number.
05:06
60抖的这个音符啊,然后它有一个时间。他就根据这个时间得到一个音符结束的位置。那这个一个音符就出来了,第二个音符抖完了是什么呀。哆来对吧,再往后你看60变多少。哎,2进来了,62得到62了。呢,进来先进来先进来了之后首先循环变量是把4得到。这句话还没执行,执行完这句话62变64。你看这句话就完成了。完成了,完成了之后是什么?六,六十五是发,67呢是so,哆来咪发唆发又回到发。又回到谁啊?Me?是吧,最后回到谁啊,回到斗,哎,那这个这整个都完了,完了之后怎么样,这个偏移列表已经完成了。
06:03
每个数都挨着捋过了,每个音符都插完了,然后。最后存储这个warm warm, 比如说我们把这个删除啊删除,先把它删除。删除了之后,我们再把它一执行。这是不是就出来了,然后这边呢,又回到这个资源管理器的状态了,所以这个东西是这么完成的,这么调试过来的。哎,我可以在线去观察吗?我们可以打开这个链接,然后呢,就可以打开这个w up这个谜底,这样我们就可以在这儿直接听这个谜底,或者观察这个谜底了,又有一个想法是什么呢?我想把这个这个东西啊,最后一个音符拉长,你看它是四分音符为一拍,没想到就有4拍。第一个小节有4拍,第二小节呢有4排,那第三个小节我想也想它有四排,但它就一个音符,所以它是一个全音符是吧。4分音符拉长了是2分音符,再拉长了就是全音符了,对吧?那我能做这个事儿吗?能啊,那怎么做呢?首先我们把这个代码啊给到AI,然后跟他说我要把最后的音符改成全音符。
07:17
把这个东西告诉我AI,那AI能够帮我们把这个事情完成好吗?我们这边已经有一个现成的代码,首先我看好使不好使啊。拿过来之后,然后呢,播放一遍。又生成了一个MID2,把MID2把它下载下来,下载下来之后呢,我们在这儿去导入进去,我二你可以看到我导入之后,它就是听一遍噔噔噔。最后一个斗非常长,那它是怎么做到的呢?我们可以观察一下它这个代码,那首先呢,断点还在这儿,还在这儿呢,那我怎么办,那我就继续去让它调试呗。调试之后呢,这个断点取消,在这里面设一个断点在哪儿设置,在这个复制完完了之后设置搁这儿,然后呢,我们让他去执行。
08:08
哎,去执行,那第一个是什么。进来之后0和60,这都是老套路,咱很熟悉对不对。哎,老套路,我我们很熟悉,但是呢,我们现在。怎么样去F5去执行,F5就是说执行到下一个断点,下一个断点也在这循环里面,所以它就会到哪儿。Do, 然后re,对吧?Re之后是谁?Me?发。So.发。M.抖该有抖的时候,它没抖,哎,那为什么呢?也就就是说我们得看看它这个里边这个off是谁啊。是哆来咪发so发咪哆来哆,但是冒负一是多少,那我不知道,那我是不是可以拿过来。右键它,然后添加到监监视,这个时候我们监视里面就有什么。
09:04
哎,就有这么一个帽负一了,调试的时候可以观察到。你看这个帽负一,我们给它给它拉开。它是多少哆来哆来咪发so发咪来,他没有哆,为什么呢?因为他最后一个不让他进来,为什么不让他进来,要求最后一个音符是。4拍的,也就是说普通的都是一拍的四分音符,它是不是成四了。最后再把这个东西完成叫wma泡,那我能让这个开嗓的音频越来越高吗?我们把它CTRLC出来,CTRLV结束,往上挪一挪,挪一格,那它是什么效果呢?我们听一下。我把BPM啊调快点给他260。让我们听一下效果哈。哎,它有点儿往上挪是吧,那一个可以变俩,那俩呢,是不是就可以变四个,四个可以变几个呀。
10:08
4个可以变8个呗,4个可以变。8个。再往上挪是吧,8个就变多少了。8个就变成16个了,8个变成16个。翻着个儿的走啊,整个16个是吧,开场练习等于把这个声音越开越高,我们听一下啊。就是就是越来越,就相当于你一开始练了一个轻一点儿的,对吧,在在练中级的,在最后冲刺的时候练练重的,这不是活动开了嘛,哎,嗓子就活动开了,所以叫w map嘛,Wma开了,好嗓子好唱这个高腔啊,但是呢,这16个有点忒多了,我们从谁开始呢?从C开始呢,最好也回到C结束,绕一圈得了,那后面三个就怎么样,选中了这三个从C开始到C结束,那总共是多少呢?这是13个小山峰,能用手的方式去做出来,那我呢,不光想用手的方式做,我想要怎么样,我想用AI做出来可以吗?
11:34
那我说的是什么呀,我说的是目前呢,是C大调的哆来咪发唆发咪来哆,我想怎么样升到升C大调,什么升C大调。就是C大调吗?升到升C大调不是往往上挪半格吗。每次生一个半音,一支声12个半音行不行呢?我们把它复制出来,然后呢,到这儿来新建一个文件叫什么呀,叫13.py,拿出来之后一粘贴,然后一运行。
12:03
嚯出了这么多东西是吧,出了这么多东西,那他这是什么呢?各种大调的音阶,那我们拿一个例子来吧,比如说G大调吧。G搭调,那G搭调长啥样呢?下载下来之后呢,我们可以文件。打开这个G大调,打开了之后呢,我们再观察仍然是这么一个型儿是吧,但只不过原来是在哪儿啊,原来在这个位置,原来在这儿,现在挪哪儿了,挪到这个位置了。哎,不对,挪到这个位置了,再听一遍,不管它叫什么呢,叫scale g major media, 那这个major什么意思呢?Major就是大调是吧?大调是啥意思呢?我们下次再说OEZ交枪。
我来说两句