ChatGPT帮我编程自动演奏手机钢琴一曲《故乡的亲人》

我是如何紧跟新技术革命,玩转ChatGPT,帮我电脑Windows,树莓派Linux和手机Android三者数码硬件控制和软件开发编程技术突飞猛进的!首先确立一个学习目标,就是数码和音乐控制编程结合,紧紧抓住最新出现的科技革命之产物-ChatGPT,实现数码开发和编程的快捷突破。来看看怎样从古董电脑低层数码PC1500突变跳过51,stm32,arduino到最强卡片电脑树莓派4BLinux的Python,再到Windows和手机的控制和编程,全靠你了ChatGPT!

       我学习数码硬件电路设计和软件和编程,为何选择了电子音乐控制和编程,实现自动化操作和演奏?主要是数码音乐,可以用单片机产生很简单的振荡器,编程控制不同频率下的单音发音就可以听到单音乐曲声。也可以越来越复杂到多声部的复音音乐控制和编程。可以学习到工控数码界遇到的大多数出现的技术场景,比如,中断,多线程,高速数据采集和数据分析,五线谱各种符号和根音和弦编解码技术,国际音乐编解码MIDI,各种MP3,VGM等编解码技术分析,复杂音乐信号的FTT频谱波形分析和处理,各种音源芯片(主要是雅马哈和飞利浦声卡合成器的大规模集成电路的音源芯片)的寄存器读写控制和包络线控制和编程,音频信号的A/D,D/A转换等。数码音乐就是看得见听得到,摸得到,不求其它更多贵重设备配合就比较容易地学习和理解差不多所有工控所对应的数码应用技术。

       随着最近火爆的人工智能ChatGPT的到来,对于我的数码的技术学习和开发更加方便快捷进步更加神奇神速了。

       我是如何让我的ChatGPT3.5版帮我编程控制手机电子琴的?我提出了三连问。

我向ChatGPT提问之一:

       如何使用python编程,来实现电脑和手机自动化操作“完美钢琴”手机版的按键坐标控制发音,从简谱音符1-7钢琴键?

ChatGPT答案:

很抱歉,作为AI语言模型,我无法直接在您的手机上编程。不过,您可以像下面这样编写Python脚本来控制手机应用程序的按键。

首先,您需要在手机上安装一触即发软件,并打开完美钢琴应用程序。然后,您需要在一触即发软件中打开“应用控制”功能,选择完美钢琴应用程序,并记录每个按键的屏幕坐标。

对于完美钢琴应用程序,您可以使用Python的`uiautomator2`库来控制按键的坐标。以下是一个简单示例,演示如何使用`uiautomator2`库在完美钢琴应用程序中按下一个按键:

```python
import uiautomator2 as u2
import time

# 连接到手机设备
d = u2.connect()

# 打开完美钢琴应用程序
# 假设应用程序已经打开并位于前台
# 如果需要打开应用程序,请使用以下命令:
# d.app_start("com.gamestar.perfectpiano")

# 按下一个按键,坐标为(100, 200)
d.touch(100, 200)

# 等待一段时间
time.sleep(1)

# 释放按键
d.touch(100, 200, u2.ToolMethod.DOWN_AND_UP)
```

完成上述步骤后,可以使用以下代码来按照 1 到 7 的顺序播放钢琴音符:

```python
import uiautomator2 as u2
import time

# 连接到手机设备
d = u2.connect()

# 打开 ORG 2023 应用程序
d.app_start("com.eumlab.android.organ")

# 举例定义一组按键坐标从中央音C4-B4,对应简谱1-7
key_coords = {
    1: (146, 1254),
    2: (213, 1254),
    3: (280, 1254),
    4: (348, 1254),
    5: (414, 1254),
    6: (480, 1254),
    7: (546, 1254)
}

# 播放 1 到 7 的音符
for i in range(1, 8):
    # 按下按键
    d.touch(*key_coords[i])
    # 等待 0.2 秒
    time.sleep(0.2)
    # 松开按键
    d.touch(*key_coords[i], u2.ToolMethod.DOWN_AND_UP)
    # 等待 0.2 秒
    time.sleep(0.2)
```

以上代码假设应用程序已经打开并位于前台。如果您需要首先打开应用程序,请确保已经在`d.app_start()`方法中传递了应用程序的包名和 activity 名称。

请注意,以上代码只提供了一个简单示例。如果您需要执行更为复杂的操作,请先详细阅读 uiautomator2 库的文档和示例,并谨慎操作。

       

       为了进一步编程理解,我又问ChatGPT提出第二个问题:

       如何使用python的uianlomator2库编程来实现自动化操作手机版“完美钢琴”app的按键坐标,来控制发音,音程从A0到C8一共88钢琴键?

答二:

1. 安装uiautomator2库:在终端中使用pip install uiautomator2进行安装。

2. 连接手机:使用USB连接手机,并确保手机已启用开发人员选项和USB调试选项。

3. 启动app:使用uiautomator2库中的Device和app_start方法,启动“完美钢琴”app。

4. 获取键盘坐标:使用uiautomator2库中的click、swipe和dump_hierarchy方法,获取88个钢琴键的坐标。

5. 实现按键操作:使用uiautomator2库中的click方法,模拟点击钢琴键的坐标,实现自动发音。

6. 控制音程:使用for循环遍历88个键,按照音程从A0到C8的顺序依次发音。

下面是一个简单的示例代码实现上述自动化操作:

```python
import uiautomator2 as u2

# 连接手机
d = u2.connect()

# 启动app
d.app_start('com.gamestar.perfectpiano')

# 获取键盘坐标
hierarchy = d.dump_hierarchy()
keys = {}

for node in hierarchy.iter():
    if node.attrib.get('resource-id') == 'com.gamestar.perfectpiano:id/pianoKeyboard':
        for child in node.iter():
            if child.attrib.get('class') == 'android.widget.ImageView' and child.attrib.get('clickable') == 'true':
                key = child.attrib.get('content-desc')
                x, y = child.attrib.get('bounds').replace('[', '').replace(']', '').split(',')[0:2]
                keys[key] = (int(x), int(y))
                break

# 实现按键操作
for note in ['A0', 'A#0', 'B0', 'C1', 'C#1', 'D1', 'D#1', 'E1', 'F1', 'F#1', 'G1', 'G#1',
             'A1', 'A#1', 'B1', 'C2', 'C#2', 'D2', 'D#2', 'E2', 'F2', 'F#2', 'G2', 'G#2',
             'A2', 'A#2', 'B2', 'C3', 'C#3', 'D3', 'D#3', 'E3', 'F3', 'F#3', 'G3', 'G#3',
             'A3', 'A#3', 'B3', 'C4', 'C#4', 'D4', 'D#4', 'E4', 'F4', 'F#4', 'G4', 'G#4',
             'A4', 'A#4', 'B4', 'C5', 'C#5', 'D5', 'D#5', 'E5', 'F5', 'F#5', 'G5', 'G#5',
             'A5', 'A#5', 'B5', 'C6', 'C#6', 'D6', 'D#6', 'E6', 'F6', 'F#6', 'G6', 'G#6',
             'A6', 'A#6', 'B6', 'C7', 'C#7', 'D7', 'D#7', 'E7', 'F7', 'F#7', 'G7', 'G#7',
             'A7', 'A#7', 'B7', 'C8']:
    d.click(keys[note])
```

       以上二个问答,ChatGPT完美地给出比较正确的答案,按照它的指引和编程方案和示例提示,非常有助于我的具体编程。我仍然需要得到一个关于遇到需要同时几个发出几个不同音符的,各个音符同时发音,不同音长度时间控制问题,我知道需要用到定时中断,或者是多声部编程问题。

       因此我又提出第三个问题:

       我要让手机“完美钢琴”app,通过python自动化编程控制手机“完美钢琴”如何实现多声部发音?比如需要引入多线程模块?

ChatGPT的第三个答案:

要实现多声部发音,可以使用多线程来实现。可以将每个声部的音符分配到不同的线程中,让它们并发执行,以实现多声部同时发音的效果。

以下是一个使用多线程实现多声部发音的示例代码:

```python
import threading
import time
import random
from perfectpiano import PerfectPiano  # 导入完美钢琴模块

piano = PerfectPiano()  # 创建完美钢琴实例

# 定义一个线程类,用于播放音符
class NoteThread(threading.Thread):
    def __init__(self, notes):
        super().__init__()
        self.notes = notes

    def run(self):
        for note in self.notes:
            piano.tap(note)  # 播放音符
            time.sleep(random.uniform(0.2, 0.5))  # 休眠一段时间,模拟弹奏效果

# 定义多个声部的音符序列
part1 = ['C4', 'E4', 'G4', 'C5']
part2 = ['A3', 'C4', 'E4', 'G4']
part3 = ['F3', 'A3', 'C4', 'E4']
part4 = ['D3', 'F3', 'A3', 'C4']

# 创建多个线程来播放不同的声部
threads = [
    NoteThread(part1),
    NoteThread(part2),
    NoteThread(part3),
    NoteThread(part4)
]

# 启动线程
for t in threads:
    t.start()

# 等待所有线程执行完毕
for t in threads:
    t.join()
```

这个示例代码使用了多个 `NoteThread` 线程来分别播放不同声部的音符。每个线程都继承自 `threading.Thread` 类,实现了 `run` 方法来执行音符的播放。在执行 `run` 方法时,每个线程依次播放它所负责的声部的音符序列,通过调用完美钢琴实例的 `tap` 方法来播放音符,然后休眠一段时间,以模拟弹奏效果。最后,启动所有线程,让它们并发执行,等待所有线程执行完毕后,程序结束。

       感谢ChatGPT帮我等乡下人玩数码提供的帮助,有兴趣可以去B站,听听ChatGPT协助我编程的演奏的三部曲:二部《故乡的亲人》,和一部缩减版《孤勇者》。

【ChatGPT如何帮我编程之一:手机钢琴《故乡的亲人》-完美钢琴-哔哩哔哩】 https://b23.tv/HFxRVKL

e500afd3f3404f8d9cb14e3062b560f5.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8825.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类ChatGPT的各种语言大模型LLM开源Github模型集合​

作为开发人员,面对堪称科技奇点爆发的ChatGPT,我们如何应对。当然是努力跟进,虽然ChatGPT不开源,但是有诸多不输ChatGPT的各类语言大模型LLM有分享。我们筛选出其中影响力较大的各个开源Github仓库,收录到 类ChatGPT的…

如何在DOS上,和ChatGPT聊天?(暴露年龄了吗?

MixGPT MS-DOS是一种早期操作系统,全称为Microsoft Disk Operating System。在上个世纪80年代被广泛使用,成为IBM PC的标准操作系统。作为一个基于命令行的操作系统,用户需要通过键盘输入命令来完成操作。正是因为MS-DOS的成功,为…

ChatGPT报错:Sorry, you have been blocked解决方法

今天打开ChatGPT,发现再一次报错了! 又一次出问题了。。。。。。。无语! 原因分析 1、内容过滤:某些平台或网站可能使用内容过滤系统,该系统可能将AlI语言模型视为潜在的风险,从而对其进行封锁或限制。这…

2023数字化转型十大趋势(限时领取)

点亮智库&中信联团队基于多年来对数字化转型的研究和对十万家企业服务实践,形成了《数字化转型十大趋势》。 趋势一: 数据要素催化传统要素连锁化学反应的聚合效应显现 数据要素价值开发,包括激活传统要素价值潜能和开发数据要素自身新价…

ChatGPT爆火出圈,高质量文本标注数据成关键

“2022年11月30日,OpenAI发布了ChatGPT——一个对话式AI,上线仅五天,注册用户数突破100万,爆火出圈,成为社会热议话题。截止今年1月末,ChatGPT的月活用户数量破亿,成为史上用户数增长最快的消费…

“ChatGPT爆火后,NLP技术不存在了”

允中 发自 凹非寺量子位 | 公众号 QbitAI 从2012年到2022年,机器学习引发的新一轮人工智能热潮已经十年。 巧合的是,2022年的Diffusion和ChatGPT,以大众可感知、可体验的方式,让大模型涌现的超能力成功破圈。 从学术界到工业界&am…

ChatGPT可怕吗?还有更可怕的

你是否想过, 类似ChatGPT人工智能的应用, 将来会极其火爆? 工作停摆咋整?不能恰饭咋整? 社恐发作咋整…… 试试彼时的网络人工智能, 把知识图谱和神经网络结合起来用, 答案会自己往外蹦。…

互联网晚报 | 李彦宏回应:如何看待AI代替人类工作;广汽三菱回应退出中国传闻;HM回应女子试衣用新衣垫脚...

阿里巴巴设立六大业务集团,张勇兼任阿里云智能集团CEO 3月28日,阿里巴巴集团董事会主席兼首席执行官张勇发布全员信,宣布启动“16N”组织变革。在阿里巴巴集团之下,将设立阿里云智能、淘宝天猫商业、本地生活、菜鸟、国际数字商业…

中国算力的想象力有多大?|产业特稿

巨头入场和“东数西算”的助推,让中国离这个万亿级算力蓝海更近了一步。 作者|思杭 编辑|皮爷 出品|产业家 2023年初,在青岛、济南、日照等12座城市,一座座崭新的大型数据中心拔地而起。 其中,最引人瞩目的属2月23日&#xff…

深度解析国产AI芯片发展历程与厂商

原文链接:深度 | 国产AI芯片,玩家几何 (qq.com) 从2022.11.30的ChatGPT,到2023.6.13的360智脑大模型2.0,全球AI界已为大模型持续疯狂了七个多月。ChatGPT们正如雨后春笋般涌现,向AI市场投放一个个“炸弹”:…

吴军 | ChatGPT七问七答

苇草智酷 作者 | 吴军 谷歌中日韩搜索算法主要设计师、知名人工智能、自然语言处理专家 转自 | 响铃说 从野蛮社会到人工智能,计算机科学家吴军为你讲解ChatGDP的来龙去脉。 4月3日晚上,吴军就人工智能和ChatGPT等当下热议的话题展开了一次直播。 Q1&a…

我实测了国内外GPT,问了10个问题,差点把电脑砸了...

观点| Mr.K 主笔| Wendy.L 编辑| Emma 来源| AI新猿人(ID:aixyr2023) 虽然ChatGPT早就火出圈好几个月,但是我敢保证有好多人还是不知道GPT三个字母代表什么。 G代表的是generative,表示有生产力的; P代表的是pre-trained 的意…

文心一言 VS chatgpt (6)-- 算法导论2.3 1~2题

一、使用图 2-4作为模型,说明归并排序在数组 A(3,41,52,26,38,57,9,49)上的操作。 文心一言: 使用图 2-4作为模型,说明归并排序在数组 A(3,41&a…

文心一言 VS chatgpt (14)-- 算法导论3.2 2~3题

二、证明等式(3.16):a ^ {\log_b c} c ^ {\log_b a}。 文心一言: chatgpt: 我们需要证明的等式为: a log ⁡ b c c log ⁡ b a a^{\log_b c} c^{\log_b a} alogb​cclogb​a。 首先,将 l…

文心一言 VS chatgpt (3)-- 算法导论2.1

一、以图 2-2 为模型,说明INSERTION-SORT 在数组 A(31,41,59,26,41,58)上的执行过程。 文心一言: 以图 2-2 为模型,说明INSERTION-SORT 在数组 A(31,41,59&…

文心一言 VS chatgpt (16)-- 算法导论4.1 1~2题

一、当A的所有元素均为负数时,FIND-MAXIMUM-SUBARRAY返回什么? 文心一言: 当A的所有元素均为负数时,FIND-MAXIMUM-SUBARRAY返回-1。 这是因为在二进制中,当所有元素均为负数时,A的每个元素都对应一个负数&#xff…

文心一言 VS chatgpt (1)-- 算法导论1.1

1.给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子。 文心一言: 现实生活中需要排序的一个例子: 在一个商店里,顾客需要购买一些商品。他们需要按照价格从低到高排序,以便更容易地找到他们想要的商品。…

letcode算法,ChatGPT来救场(每日一学)

ChatGPT与letcode ChatGPT解释说明一个时间复杂度小于 O(n2) 的算法 众所周知ChatGPT是一种大型语言模型,使用深度学习技术学习大量的语料库,从而模仿人类语言和思维方式,回答用户的问题 我们那他来辅助letcode刷题,有答疑还有详细…

文心一言 VS chatgpt (9)-- 算法导论2.3 7题 3.1 1题

七、描述一个运行时间为O(nlgn)的算法,给定n个整数的集合S和另一个整数,该算法能确定 S中是否存在两个其和刚好为工的元素。 文心一言: 这里是一个运行时间为O(nlgn)的算法,可以用来确定集合 S 中是否存在两个元素,它…

js算法题

文章目录 前言刷题基础——输入输出问题刷题网站解决方案本地输入输出 数组的常用方法push和pop组成栈shift和push组成队列unshift()reverse()slice(start,end) (slice:片)splice(start, deleteCount, item1, item2……)&#xff…