Tulip创意电脑 - 一款用于音乐、图形、编程和写作的便携式可编程设备
欢迎使用Tulip创意电脑(Tulip CC)!
Tulip是一款低功耗、经济实惠的自成一体便携式电脑,配备触摸屏显示和声音功能。它完全可编程 - 您可以编写代码来定义音乐、游戏或任何您能想到的内容。它能瞬时启动进入Python提示符,内置大量支持音乐合成、快速图形和文本、硬件MIDI、网络访问和外部传感器的功能。无需分心或复杂操作,直接开始创作。
整个系统专门用于您的代码、显示和声音,在专用硬件上实时运行。硬件和软件完全开源,任何人都可以购买或自行构建。您可以使用Tulip创作音乐、编程、艺术、游戏,或者只是写作。
Tulip由MicroPython、AMY和LVGL驱动,Tulip硬件运行在ESP32-S3芯片上,使用ESP-IDF。
- 从我们的合作伙伴Makerfabs仅以59美元购买Tulip
- 刚获得Tulip CC?查看我们的入门指南!
- Tulip CC有任何问题?这里是我们的故障排除指南
- 想用Tulip创作音乐?查看我们的音乐教程
- 查看完整的Tulip API
- 自己构建Tulip
- 您可以在我的网站上了解更多关于Tulip的"为什么"或"如何"!
观看这个视频!
Tulip既可作为现成或DIY硬件项目(Tulip CC)使用,也可作为桌面模拟器应用(Tulip Desktop)使用。它们具有相同的功能。我在开发Tulip时使用Tulip Desktop,但在制作个人项目时使用硬件Tulip CC!如果您对获取或构建硬件感到犹豫,可以下载或构建桌面版!
您可以以59美元购买Tulip或自行构建Tulip CC,成本约为25美元加上显示屏的费用(50美元)。第4版Tulip CC的硬件基于ESP32-S3双核微控制器,运行频率为240MHz。这款单一且价格实惠的芯片可以在低功耗下支持Tulip的所有功能。它可以使用任何USB电池组或锂聚合物电池持续工作多个小时。
Tulip CC支持:
- 8.5MB RAM - 2MB可供MicroPython使用,1.5MB用于操作系统内存。其余用于图形帧缓冲区(可用作存储)和固件缓存。
- 32MB闪存存储,可在Python中作为文件系统访问(操作系统在ROM中后剩余24MB)
- 本地运行的AMY立体声120音色合成器引擎,或作为Alles网格的无线控制器。Tulip的合成器支持加法和减法振荡器、出色的FM合成引擎、采样器、Karplus-Strong算法、高质量模拟风格滤波器等。我们为Tulip配备了鼓机、音色/补丁应用程序和Juno-6编辑器。
- 文本帧缓冲层,128 x 50,支持ANSI 256色、反相、粗体、下划线、背景色
- 屏幕上最多32个精灵,每扫描线绘制,具有碰撞检测功能,总共32KB位图内存(每像素1字节)
- 1024(+128过扫描)x 600(+100过扫描)背景帧缓冲区,可绘制任意位图或用作RAM,可水平/垂直滚动
- WiFi,通过Python requests或TCP/UDP套接字访问http
- 可调显示时钟和分辨率,默认为30 FPS,1024x600
- 256色
- 可从磁盘加载PNG设置精灵或背景,或通过代码生成位图数据
- 内置代码和文本编辑器
- 内置BBS聊天室和文件传输区,名为TULIP ~ WORLD
- USB键盘支持
- 电容式多点触控支持(Tulip Desktop上为鼠标)
- MIDI输入和输出
- I2C / Grove / Mabee连接器,兼容多种I2C设备,如摇杆、键盘、GPIO、DAC、ADC、集线器
- 在中等显示亮度下,包括显示屏在内,功耗为5V@575mA,使用锂聚合物电池、18650电池或USB电池组可持续工作数小时
我多年来断断续续地开发Tulip,经历了多次硬件迭代,希望有人能像我一样乐在其中,无论是使用Tulip创作还是改进Tulip本身。我很乐意收到反馈、您自己的Tulip实验或改进系统的拉取请求。
T-Deck Tulip CC
一个新的小型选择:购买T-Deck并直接在其上安装Tulip CC!查看我们的T-Deck页面了解更多详情。
入门
一旦您购买了Tulip、构建了Tulip或安装了Tulip Desktop,您会看到Tulip直接启动进入Python提示符,所有与系统的交互都在这里进行。您可以使用Tulip的内置编辑器创建自己的Python程序并执行它们,或者直接在Tulip REPL提示符下实时实验。
查看完整的Tulip API以了解有关所有图形、声音和输入功能的更多详情。
以下是一些入门提示和小示例。完整API页面提供了有关Tulip上所有可执行操作的更多详细信息。查看更完整的入门页面或音乐创作教程!
# 运行已保存的Python文件。Control-C停止
cd('ex') # ex文件夹包含一些示例和图形
execfile("parallax.py")
# 如果要运行Tulip包(包含其他文件的文件夹)
run("game")
Tulip编辑器
Tulip附带一个基于pico/nano的文本编辑器。它支持语法高亮、搜索、保存/另存为。
# 打开Tulip编辑器并编辑给定文件名的文件。
edit("game.py")
输入和用户界面
Tulip支持USB键盘输入和触摸输入。(在Tulip Desktop上,鼠标点击充当触摸点。)它还配备了按钮和滑块等UI元素,可用于您的应用程序,以及一种使用回调同时运行多个应用程序的方法。更多信息请参阅完整API。
(x0, y0, x1, y1, x2, y2) = tulip.touch()
网络
Tulip CC可以连接Wi-Fi网络,Python的原生requests库可以用于访问TCP和UDP。我们还提供了一些便捷函数来从URL获取数据。更多信息请参阅完整API。
# 加入Wi-Fi网络(Tulip Desktop不需要)
tulip.wifi("ssid", "password")
# 获取IP地址或检查是否已连接
ip_address = tulip.ip() # 如果未连接则返回None
# 将URL内容保存到磁盘(需要Wi-Fi)
bytes_read = tulip.url_save("https://url", "filename.ext")
音乐/声音
Tulip配备了AMY合成器,这是一个功能非常丰富的120振荡器合成器,支持FM、PCM、加法合成、部分合成、滤波器等多种功能。我们还提供了一个有用的"音乐计算机",用于音阶、和弦和进行。更多信息请参阅完整API和音乐教程。Tulip版本的AMY支持立体声,你可以通过每个振荡器的pan
参数进行设置。
amy.drums() # 播放测试歌曲
amy.volume(4) # 改变音量
amy.reset() # 停止所有正在播放的音乐/声音
https://user-images.githubusercontent.com/76612/215893940-658144b7-0c6f-42e2-9836-bd271597aab3.mov
MIDI
Tulip支持MIDI输入和输出,可连接外部音乐硬件。你可以设置Python回调函数来立即响应任何传入的MIDI消息。你也可以向MIDI输出发送消息。更多信息请参阅完整API和音乐教程。
m = tulip.midi_in() # 返回最后接收到的MIDI消息的字节
tulip.midi_out((144,60,127)) # 发送音符开启消息
tulip.midi_out(bytes) # 可以发送字节或列表
图形系统
Tulip GPU支持滚动背景层、硬件精灵和文本层。更多信息请参阅完整API。
# 在背景上设置或获取像素
pal_idx = tulip.bg_pixel(x,y)
# 在背景上设置PNG文件的内容
tulip.bg_png(png_filename, x, y)
tulip.bg_scroll(line, x_offset, y_offset, x_speed, y_speed)
https://user-images.githubusercontent.com/76612/215895305-7b02ad27-b02a-429a-92ef-f13136e9f9d2.mov
支持硬件精灵。它们在每帧每扫描线上绘制在背景和文本层之上:
(w, h, bytes) = tulip.sprite_png("filename.png", mem_pos)
...
# 设置精灵的x和y位置
tulip.sprite_move(12, x, y)
https://user-images.githubusercontent.com/76612/215896311-fc0823aa-44bc-4305-85db-a6773db11a98.mov
Tulip World
虽然仍处于早期阶段,但Tulip支持一个名为TULIP ~ WORLD的原生聊天和文件共享BBS,你可以在这里与其他Tulip用户交流。你可以获取最新的消息和文件,也可以发送消息和文件。更多信息请参阅完整API。
import world
world.post_message("hello!!") # 向Tulip World发送消息。需要用户名。如果未设置将提示输入
world.upload(filename) # 上传文件到Tulip World。需要用户名
world.ls() # 列出最近的唯一文件名/用户名
如何构建、编译和帮助开发Tulip
- 获取一台Tulip!
- 用四种不同的选项构建你自己的Tulip Creative Computer
- 如何编译和刷写Tulip硬件
- 如何运行或编译Tulip Desktop
- 完整的Tulip API
- 提交任何代码问题或拉取请求!
如果你想帮助贡献,这里有两个重要的开发指南!
- 保持友善和乐于助人,不要害怕提问!我们都是为了乐趣和学习而做这些。
- 任何更改或功能都必须在Tulip Desktop和Tulip CC上等效。当然,这个规则有一些有限的例外,但在提出新功能/更改之前,请在硬件上进行测试。
玩得开心!