shorepine/tulipcc

GitHub: shorepine/tulipcc

一款基于 ESP32-S3 和 MicroPython 的开源便携式创意计算机,集成了音乐合成、图形显示和代码编写功能,专注于让用户即开即用地进行艺术与音乐创作。

Stars: 950 | Forks: 62

# Tulip Creative Computer 和 AMYboard - 用于音乐、图形、代码和写作的便携式可编程设备 ![Tulip](https://static.pigsec.cn/wp-content/uploads/repos/cas/84/84178fab4fbffb8eb4d1099b4e7915468b4873ec384c5b5f23e6ce71c590f4ca.jpg) ![AMYboard](https://amyboard.com/img/amyboard_preview.png) 欢迎使用 Tulip Creative Computer (Tulip CC) 和 AMYboard! Tulip 是一款低功耗且经济实惠的独立便携式计算机,配备触摸屏和声音。它是完全可编程的 - 你可以通过编写代码来定义你的音乐、游戏或任何你能想到的东西。它会瞬间启动进入 Python 提示符,并内置了大量对音乐合成、快速图形和文本、硬件 MIDI、网络访问和外部传感器的支持。直接投入创作,没有任何干扰或复杂性。 整个系统专用于你的代码、显示和声音,在专用硬件上实时运行。硬件和软件完全是开源的,任何人都可以[购买一个](https://tulip.computer/)或[构建一个](docs/tulip_build.md)。你可以使用 Tulip 来制作音乐、编写代码、进行艺术创作、玩游戏,或者仅仅是写作。 [AMYboard](https://amyboard.com) 是 Tulip 的无头(无屏幕)版本,具有更强大的音频功能 - 音频输入、模块化 10hp 和 10vpp 音频、S/PDIF 数字音频、CV 插孔、SD 卡。它基于 Tulip 的代码,但专注于音乐合成。 你甚至现在就可以[在网络上运行 Tulip](https://tulip.computer/run)和[在网络上运行 AMYboard](https://amyboard.com/editor),并与任何人分享你的作品! Tulip 和 AMYboard 由 [MicroPython](https://micropython.org)、[AMY](https://github.com/shorepine/amy) 和 [LVGL](https://lvgl.io) 提供支持。Tulip 硬件使用 [ESP-IDF](https://github.com/espressif/esp-idf) 在 ESP32-S3 芯片上运行。 * [从我们的朋友 Makerfabs 处**获取 Tulip**,仅需 59 美元](https://tulip.computer) * [从我们的朋友 Makerfabs 处**获取 AMYboard**,仅需 29.90 美元](https://amyboard.com) * [刚拿到 Tulip CC?**查看我们的入门指南!**](docs/getting_started.md) * [刚拿到 AMYboard?**查看我们的入门指南!**](docs/amyboard/README.md) * [想用你的 Tulip 制作音乐?**请看我们的音乐教程**](docs/music.md) * [查看完整的 **Tulip API**](docs/tulip_api.md) * [**在网络上试用 Tulip!**](https://tulip.computer/run/) [![shore pine sound systems discord](https://static.pigsec.cn/wp-content/uploads/repos/cas/01/01d1793da7a0e2dba50cdb011be98192a0aba895a343f7f80c9d130ef0dddfc4.png) **在我们的 Discord 上聊聊 Tulip!**](https://discord.gg/TzBFkUb8pG) **看看这个视频!** [![Tulip,一台基于 Micropython 的音乐计算机 ](https://i.ytimg.com/vi/1lYFjQp7Xrw/maxresdefault.jpg)](https://www.youtube.com/watch?v=1lYFjQp7Xrw "Tulip,一台基于 Micropython 的音乐计算机") 你可以通过以下三种方式之一使用 Tulip: * Tulip 可以作为[现货硬件项目或 DIY 硬件项目 提供](https://tulip.computer/) * [Tulip 在网络上运行](https://tulip.computer/run),具备(几乎)所有相同的功能。 * Tulip 还可以作为 Mac 或 Linux(或 Windows 中的 WSL)的原生应用运行,即 [Tulip Desktop](docs/tulip_desktop.md) 如果你对获取或构建硬件感到担忧,请[在网络上试试看!](https://tulip.computer/run) [![Tulip Web](https://static.pigsec.cn/wp-content/uploads/repos/cas/a7/a71ab144fa13eb2987da659d33ce3d7d79a77bbeb85060761acb3350539e5bdf.png)](https://tulip.computer/run/) 硬件版 Tulip CC 支持: - 8.5MB RAM - 其中 2MB 可供 MicroPython 使用,1.5MB 可用于操作系统内存。其余部分用于图形帧缓存(你可以将其用作存储)和固件缓存。 - 32MB 闪存,作为文件系统可在 Python 中访问(ROM 中的操作系统占用后剩余 24MB) - 一个在本地运行的 [AMY](https://github.com/shorepine/amy) 立体声 120 音色合成器引擎,或作为 [Alles](https://github.com/shorepine/alles) mesh 的无线控制器。Tulip 的合成器支持加法和减法振荡器、出色的 FM 合成引擎、采样器、karplus-strong、高质量的模拟风格滤波器、音序器等等。我们随 Tulip 附带了一个鼓机、音色/补丁应用程序以及 Juno-6 编辑器。 - 文本帧缓存层,128 x 50,支持 256 色的 ANSI、反色、粗体、下划线、背景色 - 屏幕上最多可显示 32 个 sprite,按扫描线逐帧绘制,带有碰撞检测,总共有 32KB 的位图内存(每像素 1 字节) - 一个 1024(+128 过扫描)x 600(+100 过扫描)的背景帧缓存,用于绘制任意位图、用作 RAM,并且可以水平/垂直滚动 - WiFi,通过 Python 请求或 TCP / UDP socket 访问 HTTP - 可调节的显示时钟和分辨率,默认为 1024x600 下 30 FPS。 - 256 色 - 可以从磁盘加载 PNG 来设置 sprite 或背景,或者从代码生成位图数据 - 内置代码和文本编辑器 - 内置名为 **TULIP ~ WORLD** 的 BBS 聊天室和文件传输区 - 支持 USB 键盘、MIDI 和鼠标,包括集线器 - 支持电容式多点触控(在 Tulip Desktop 和 Tulip Web 上为鼠标) - MIDI 输入和输出 - I2C / Grove / Mabee 连接器,兼容[许多 I2C 设备,如操纵杆、键盘、GPIO、DAC、ADC、集线器](docs/tulip_api.md#i2c--grove--mabee) - 功耗为 5V 下 575mA(包括显示器),在中等显示亮度下,可以通过 LiPo、18650 电池或 USB 电池组持续供电数小时 我已经在许多硬件迭代中断断续续地开发 Tulip 多年了,希望外面有人能觉得它和我一样有趣,不管是用 Tulip 进行创作还是开发 Tulip 本身。我很乐意听取反馈、查看你自己的 Tulip 实验或接受改进系统的 pull request。 ![Tulip](https://static.pigsec.cn/wp-content/uploads/repos/cas/fc/fc10b452de86e580266c6db0564e934eb7542dd9777d614ab5fcb8be5e599ad3.png) * [**你的 Tulip CC 有任何问题?这是我们的故障排除指南**](docs/troubleshooting.md) * [**了解我们的路线图,看看我们接下来在做什么**](https://github.com/orgs/shorepine/projects/1) * [**构建你自己的 Tulip**](docs/tulip_build.md) * **[你可以在我的网站上阅读更多关于 Tulip 的“为什么”或“如何”实现的细节!](https://notes.variogram.com/2024/07/30/tulip-available/)** ## T-Deck Tulip CC ![T-Deck](https://static.pigsec.cn/wp-content/uploads/repos/cas/c1/c1a187bb4fa45629c6d7f3db44052b9cf5c348b30ac1042fbd2cf0cd0ec8037b.jpg) 一个**新**的小巧选择:给自己买一个 [T-Deck](https://www.aliexpress.us/item/3256805505920840.html?gatewayAdapt=glo2usa4itemAdapt) 并直接在上面安装 Tulip CC![查看我们的 T-Deck 页面了解更多详情。](tulip/tdeck/README.md) ## 入门指南 一旦你[购买了 Tulip](https://tulip.computer)、[打开了 Tulip Web](https://tulip.computer/run)、[构建了 Tulip](docs/tulip_build.md) 或[安装了 Tulip Desktop](docs/tulip_desktop.md),你会看到 Tulip 直接启动进入 Python 提示符,并且与系统的所有交互都在那里进行。你可以使用 Tulip 的内置编辑器制作自己的 Python 程序并执行它们,或者直接在 Tulip REPL 提示符上进行实时试验。 [**查看完整的 Tulip API**](docs/tulip_api.md) 以获取有关所有图形、声音和输入函数的更多详细信息。 以下是一些入门提示和小示例。[完整的 API](docs/tulip_api.md) 页面包含了关于 Tulip 上所有操作的更多细节。也可以[**查看更完整的入门页面**](docs/getting_started.md)或[**音乐制作教程**](docs/music.md)! ``` # 运行已保存的 Python 文件。Control-C 停止运行 cd('ex') # The ex folder has a few examples and graphics in it execfile("parallax.py") # 如果你想运行一个 Tulip 包(包含其他文件的文件夹) run("game") ``` ### Tulip 编辑器 Tulip 内置了一个基于 pico/nano 的文本编辑器。它支持语法高亮、搜索、保存/另存为。 ``` # 在 Tulip 编辑器中打开给定的文件名。 edit("game.py") ``` ![编辑器](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/3932a769007ac359ce2ace71bffc12350397d4a84287cd20f32c2eb448e7d1ad.png) ### 输入和用户界面 Tulip 支持 USB 键盘和鼠标输入以及触摸输入。(在 Tulip Desktop 和 Web 上,鼠标点击充当触摸点。)它还带有可在你的应用程序中使用的 UI 元素(如按钮和滑块),以及一种使用 callback 同时运行多个应用程序的方法。更多信息请见[完整的 API](docs/tulip_api.md)。 ``` (x0, y0, x1, y1, x2, y2) = tulip.touch() ``` ![UI 演示](https://static.pigsec.cn/wp-content/uploads/repos/cas/20/20dea2d5f635736e22ab0545acd22bf2370cd532a61db44fb6f93c170f358d5e.png) ### 网络 Tulip CC 能够连接到 Wi-Fi 网络,并且 Python 的原生 requests 库可以用来访问 TCP 和 UDP。我们还提供了一些便捷函数来从 URL 获取数据。更多信息请见[完整的 API](docs/tulip_api.md)。 ``` # 加入一个 wifi 网络(在 Tulip Desktop 或 Web 上不需要) tulip.wifi("ssid", "password") # 获取 IP 地址或检查是否已连接 ip_address = tulip.ip() # returns None if not connected # 将 URL 的内容保存到磁盘(需要 wifi) bytes_read = tulip.url_save("https://url", "filename.ext") ``` ### 音乐 / 声音 Tulip 配备了 AMY 合成器,这是一个功能非常齐全的 120 振荡器合成器,支持 FM、PCM、加法合成、局部合成、滤波器等等。我们还提供了一个有用的“音乐计算机”用于音阶、和弦和进行。更多信息请见[完整的 API](docs/tulip_api.md)和[音乐教程。](docs/music.md) Tulip 版本的 AMY 带有立体声,你可以通过 `pan` 参数为每个振荡器进行设置。 ``` amy.drums() # plays a test song amy.send(volume=4) # change volume amy.reset() # stops all music / sounds playing ``` https://user-images.githubusercontent.com/76612/215893940-658144b7-0c6f-42e2-9836-bd271597aab3.mov ### MIDI Tulip 支持 MIDI 输入和输出,以连接到外部音乐硬件。你可以设置一个 Python callback 来立即响应任何传入的 MIDI 消息。你还可以将消息发送到 MIDI 输出。更多信息请见[完整的 API](docs/tulip_api.md)和[音乐教程](docs/music.md)。 ``` m = tulip.midi_in() # returns bytes of the last MIDI message received tulip.midi_out((144,60,127)) # sends a note on message tulip.midi_out(bytes) # Can send bytes or list ``` ### 图形系统 Tulip GPU 支持滚动背景层、硬件 sprite 和文本层。更多信息请见[完整的 API](docs/tulip_api.md)。 ``` # 在 BG 上设置或获取一个像素 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 支持硬件 sprite。它们在每一帧的每个扫描线上绘制在背景和文本层之上: ``` (w, h, bytes) = tulip.sprite_png("filename.png", mem_pos) ... # 设置 sprite 的 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](docs/tulip_api.md)。 ``` import world world.post_message("hello!!") # Sends a message to Tulip World. username required. will prompt if not set world.upload(filename) # Uploads a file to Tulip World. username required world.ls() # lists most recent unique filenames/usernames ``` ## 如何构建、编译和协助开发 Tulip * [获取 Tulip!](https://tulip.computer) * [构建你自己的 Tulip Creative Computer](docs/tulip_build.md),有四种不同的选择。 * [如何编译和烧录 Tulip 硬件](docs/tulip_flashing.md) * [如何运行或编译 Tulip Desktop](docs/tulip_desktop.md) * [完整的 Tulip API](docs/tulip_api.md) * [提交任何代码问题或 pull request!](https://github.com/shorepine/tulipcc/issues) [![shore pine sound systems discord](https://static.pigsec.cn/wp-content/uploads/repos/cas/01/01d1793da7a0e2dba50cdb011be98192a0aba895a343f7f80c9d130ef0dddfc4.png) **在我们的 Discord 上聊聊 Tulip!**](https://discord.gg/TzBFkUb8pG) 如果你想帮忙贡献,这里有两条重要的开发准则! * 保持友善和乐于助人,不要害怕提问!我们做这些都是为了乐趣和学习。 * 任何更改或功能必须在 Tulip Desktop 和 Tulip CC 之间保持对等。这条规则当然有有限的例外情况,但在提出新功能/更改之前,请在硬件上进行测试。 玩得开心! ![Tulip](https://static.pigsec.cn/wp-content/uploads/repos/cas/fc/fc10b452de86e580266c6db0564e934eb7542dd9777d614ab5fcb8be5e599ad3.png)
标签:ESP32, Python, 创意编程, 图形界面, 客户端加密, 嵌入式系统, 开源硬件, 无后门, 音乐合成