mirror of
https://github.com/TriM-Organization/Musicreater.git
synced 2026-01-08 12:52:11 +00:00
Compare commits
40 Commits
v0.2.0.0-D
...
oldUI
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
79f99dd7ed | ||
|
|
af21b75b70 | ||
|
|
75df9dc167 | ||
|
|
7edf979aee | ||
|
|
ae83f9c21e | ||
|
|
dd34ac9998 | ||
|
|
2da06136c5 | ||
|
|
e9f4230a2d | ||
|
|
1b7ab73c02 | ||
|
|
2624c081bb | ||
|
|
87cc189da8 | ||
|
|
668bf480b2 | ||
|
|
4cc3f2678f | ||
|
|
701e9d5129 | ||
|
|
8dd2694e82 | ||
|
|
ac962f0ab7 | ||
|
|
b800384547 | ||
|
|
5da1041664 | ||
|
|
966ce515c3 | ||
|
|
349c255f5f | ||
|
|
cbb77086d0 | ||
|
|
280e50f4cb | ||
|
|
a2a37be8ef | ||
|
|
7acd6b7e38 | ||
|
|
4c95f76cf9 | ||
|
|
8a1a159eb8 | ||
|
|
cb43caef26 | ||
|
|
200167ef84 | ||
|
|
7e0a127406 | ||
|
|
5e70dd73a1 | ||
|
|
7229b12e99 | ||
|
|
074124bc3d | ||
|
|
91446bfd81 | ||
|
|
5011efcdee | ||
|
|
3b4af19379 | ||
|
|
d3d89d2567 | ||
|
|
441d1e9982 | ||
|
|
77e738cb7e | ||
|
|
46b6884e64 | ||
|
|
d0a63d0f8e |
BIN
AutoInstaller/MSCT Auto Installer
Executable file
BIN
AutoInstaller/MSCT Auto Installer
Executable file
Binary file not shown.
@@ -1,69 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
# W-YI 金羿
|
||||
# QQ 2647547478
|
||||
# 音·创 开发交流群 861684859
|
||||
# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com
|
||||
# 版权所有 Team-Ryoun 金羿("Eilles Wan") & 诸葛亮与八卦阵("bgArray")
|
||||
# 若需转载或借鉴 请附作者
|
||||
|
||||
|
||||
"""
|
||||
音·创 (Musicreater)
|
||||
一款免费开源的 《我的世界:基岩版》 音乐制作软件
|
||||
Musicreater (音·创)
|
||||
A free opensource software which is used for creating all kinds of musics in Minecraft
|
||||
|
||||
Copyright 2022 Team-Ryoun
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the 'License');
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an 'AS IS' BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
|
||||
# 代码写的并非十分的漂亮,还请大佬多多包涵;本软件源代码依照Apache软件协议公开
|
||||
|
||||
|
||||
# 下面为正文
|
||||
|
||||
|
||||
|
||||
from msctspt.bugReporter import version
|
||||
|
||||
__ver__ = f'{version.version[1]} {version.version[0]}'
|
||||
__author__ = '金羿Eilles'
|
||||
|
||||
from msctLib.display import *
|
||||
|
||||
from msctLib.function import *
|
||||
|
||||
from msctLib.data import uniteIO
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def __main__():
|
||||
|
||||
disp()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
__main__()
|
||||
4002
Musicreater.py
4002
Musicreater.py
File diff suppressed because it is too large
Load Diff
92
README.md
92
README.md
@@ -1,38 +1,51 @@
|
||||
# 音·创 Musicreater
|
||||
<h1 align="center">音·创 Musicreater</h1>
|
||||
|
||||
[](https://choosealicense.com/licenses/apache-2.0/)
|
||||
[](https://space.bilibili.com/397369002/)
|
||||
[](https://space.bilibili.com/604072474)
|
||||
[](https://github.com/psf/black)
|
||||
<p align="center">
|
||||
<img width="128" height="128" src="https://s1.ax1x.com/2022/04/01/qhfOPA.png" >
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://forthebadge.com/images/badges/built-with-love.svg">
|
||||
<p>
|
||||
|
||||
[![][Bilibili: 凌云金羿]](https://space.bilibili.com/397369002/)
|
||||
[![][Bilibili: 诸葛亮与八卦阵]](https://space.bilibili.com/604072474)
|
||||
[![CodeStyle: black]](https://github.com/psf/black)
|
||||
[![][python]](https://www.python.org/)
|
||||
[![][license]](LICENSE)
|
||||
[![][release]](../../releases)
|
||||
|
||||
### 介绍
|
||||
简体中文🇨🇳 | [English🇬🇧](README_EN.md)
|
||||
|
||||
音·创 Musicreater 是由凌天之云创新应用软件开发团队开发的一款免费开源的 **《我的世界:基岩版》** 音乐制作软件
|
||||
## 软件介绍🚀
|
||||
|
||||
欢迎加群:861684859
|
||||
音·创 Musicreater 是一款免费开源的 **《我的世界:基岩版》** 音乐制作软件
|
||||
|
||||
### 作者
|
||||
欢迎加群:[861684859](https://jq.qq.com/?_wv=1027&k=hpeRxrYr)
|
||||
|
||||
金羿 Eilles:我的世界基岩版指令师,个人开发者,B站不知名UP主,在校高中生。
|
||||
**注意注意注意!!!本程序尚在测试与开发阶段,且代码重构未完成,请自行定夺使用。**
|
||||
|
||||
## 软件作者✒
|
||||
|
||||
金羿 Eilles:我的世界基岩版指令师,个人开发者,B站不知名UP主,南昌在校高中生。
|
||||
|
||||
诸葛亮与八卦阵 bgArray:我的世界基岩版玩家,喜欢编程和音乐,深圳初一学生。
|
||||
|
||||
### 软件架构
|
||||
## 软件架构🏢
|
||||
|
||||
软件采用 *Python* 作为第一语言,目前还没有使用其他语言辅助。使用 *Tkinter* 为图形库。
|
||||
软件采用 *Python* 作为第一语言,目前还没有使用其他语言辅助。使用可更换的UI结构库,即开发人员可以通过更换display.py文件随心所欲地切换UI库;后期将支持插件自加载。
|
||||
|
||||
支持 Windows7+ 以及各个支持 Python3.8 的 Linux
|
||||
支持 Windows7+ 以及各个支持 Python3.6+ 的 Linux
|
||||
|
||||
***各位开发人员注意!!!多语言支持请使用函数`_`加载文字!!!如需补充,请在简体中文的语言文件(zh-CN.lang)中补充!!!***
|
||||
|
||||
## 使用教程📕
|
||||
|
||||
### 安装教程
|
||||
|
||||
下载音·创自动安装器,将其放在你希望安装音·创的位置,运行后将自动安装。
|
||||
下载[音·创自动安装器](https://gitee.com/EillesWan/Musicreater/releases/v0.2.0.0-Delta),将其放在你希望安装音·创的位置,运行后将自动安装。
|
||||
|
||||
提示:下载源最好选择2GitHub。
|
||||
提示:下载源最好选择\"2 GitHub\"。
|
||||
|
||||
### 从源代码运行教程
|
||||
|
||||
@@ -67,15 +80,13 @@ python3 补全库.py
|
||||
python3 Musicreater.py
|
||||
```
|
||||
|
||||
|
||||
### 使用说明
|
||||
|
||||
1. 直接运行就好
|
||||
2. 看得懂简体中文字的不一定全会用
|
||||
3. 最好要懂一点点英文
|
||||
2. 后期会出详细的使用教程
|
||||
3. 如果在使用过程中发现了bug拜托请上报给我,详见下方联系方式
|
||||
|
||||
|
||||
### 诸葛亮与八卦阵的说明(不必要)
|
||||
## 诸葛亮与八卦阵的关于羽音缭绕资源包应用地说明(不必要)📖
|
||||
|
||||
1. 首先!这里的提示是给想使用多音色资源包的人的,如果你想用就请下载 [神羽资源包(神羽自己的链接)](https://pan.baidu.com/s/11uoq5zwN7c3rX-98DqVpJg)提取码:ek3t
|
||||
2. 下载到你自己电脑上某个位置,可以不放置于本项目下。音色资源包较大,可以选取只下载:
|
||||
@@ -92,7 +103,7 @@ python3 Musicreater.py
|
||||
6. 如果你想使用音色资源包来制作函数,那么解析时你应该用 *音创*->编辑->从midi导入音轨且用新方法解析,
|
||||
然后再使用 *音创*->函数(包)->下面的四个新函数
|
||||
|
||||
### 致谢
|
||||
## 致谢🙏
|
||||
|
||||
1. 感谢由 [Fuckcraft](https://github.com/fuckcraft) “鸣凤鸽子”等 带来的我的世界websocket服务器功能
|
||||
2. 感谢 昀梦\<QQ1515399885\> 找出指令生成错误bug并指正
|
||||
@@ -103,8 +114,9 @@ python3 Musicreater.py
|
||||
7. 感谢广大群友为此程序提供的测试等支持
|
||||
8. 若您对我们有所贡献但您的名字没有显示在此列表中,请联系我!
|
||||
|
||||
## 联系我们📞
|
||||
|
||||
### 作者\<*金羿*\>(W-YI)联系方式
|
||||
### 作者\<*金羿*\>(Eilles)联系方式
|
||||
|
||||
1. QQ 2647547478
|
||||
2. 电邮 EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com
|
||||
@@ -112,4 +124,38 @@ python3 Musicreater.py
|
||||
|
||||
### 作者\<*诸葛亮与八卦阵*\>(bgArray) 联系方式
|
||||
|
||||
1. QQ 4740437765
|
||||
1. QQ 4740437765
|
||||
|
||||
## 待办事项
|
||||
|
||||
* - [x] 可以使用由神羽提供的音乐资源包
|
||||
* - [x] 支持多语言
|
||||
* - [x] 支持创建可被Fastbuilder导入的.BDX文件支持
|
||||
* - [ ] 1.可以导出自定义的结构文件用于存储要导入地图中的结构
|
||||
* - [ ] 2.进度条
|
||||
* - [ ] 3.可以将音乐写入音符盒(红乐)
|
||||
* - [ ] 4.修改UI界面使之适应当前功能
|
||||
* - [ ] 5.支持自动给音符盒绑定更多的音色
|
||||
* - [ ] 6.可以由.schematic文件导入地图,亦可反向处理
|
||||
* - [x] 7.制作软件下载器使用户更直观地操作
|
||||
* - [x] 8.支持自定义创建websockeet服务器播放音乐
|
||||
* - [ ] 9.支持使用红石播放音乐
|
||||
* - [ ] 10.支持采用延时的播放器
|
||||
* - [ ] 11.支持使用bdx导出结构
|
||||
* - [ ] 12.支持采用tp的方法播放
|
||||
* - [ ] 13.支持识别曲谱(简谱)图片解析音乐
|
||||
* - [ ] 14.支持使用瀑布流的方式播放音乐
|
||||
* - [ ] 15.支持读入Everyone Piano的曲谱文件(.eop)
|
||||
* - [ ] 16.支持读入Musescore的通用曲谱文件,即musicXML(.mscz、.mscx)
|
||||
* - [ ] 17.支持自动搜寻地图目录位置(网易&微软)
|
||||
* - [ ] 18.支持读入JPword曲谱文件(.jpd)
|
||||
* - [ ] 19.新的UI设计,以及UI主题文件
|
||||
* - [ ] 20.以小节为单位做音符播放时间对标
|
||||
|
||||
|
||||
[Bilibili: 凌云金羿]: https://img.shields.io/badge/Bilibili-%E5%87%8C%E4%BA%91%E9%87%91%E7%BE%BF-00A1E7?style=for-the-badge
|
||||
[Bilibili: 诸葛亮与八卦阵]: https://img.shields.io/badge/Bilibili-%E8%AF%B8%E8%91%9B%E4%BA%AE%E4%B8%8E%E5%85%AB%E5%8D%A6%E9%98%B5-00A1E7?style=for-the-badge
|
||||
[CodeStyle: black]: https://img.shields.io/badge/code%20style-black-121110.svg?style=for-the-badge
|
||||
[python]: https://img.shields.io/badge/python-3.6-AB70FF?style=for-the-badge
|
||||
[release]: https://img.shields.io/github/v/release/EillesWan/Musicreater?style=for-the-badge
|
||||
[license]: https://img.shields.io/badge/Licence-Apache-228B22?style=for-the-badge
|
||||
|
||||
@@ -1,41 +1,57 @@
|
||||
# Musicreater
|
||||
<h1 align="center">音·创 Musicreater</h1>
|
||||
|
||||
[](https://choosealicense.com/licenses/apache-2.0/)
|
||||
[](https://space.bilibili.com/397369002/)
|
||||
[](https://space.bilibili.com/604072474)
|
||||
[](https://github.com/psf/black)
|
||||
<p align="center">
|
||||
<img width="128" height="128" src="https://s1.ax1x.com/2022/04/01/qhfOPA.png" >
|
||||
</p>
|
||||
|
||||
### Introduction
|
||||
<p align="center">
|
||||
<img src="https://forthebadge.com/images/badges/built-with-love.svg">
|
||||
<p>
|
||||
|
||||
Musicreater(音·创) is an Eilles(*W-YI*)'s app that is used for creating musics in **Minecraft: Bedrock Edition**.
|
||||
[![][Bilibili: Eilles]](https://space.bilibili.com/397369002/)
|
||||
[![][Bilibili: bgArray]](https://space.bilibili.com/604072474)
|
||||
[![CodeStyle: black]](https://github.com/psf/black)
|
||||
![][python]
|
||||
[![][license]](LICENSE)
|
||||
[![][release]](../../releases)
|
||||
|
||||
Welcome to join our QQ group: 861684859
|
||||
[简体中文🇨🇳](README.md) | English🇬🇧
|
||||
|
||||
### Author
|
||||
**Notice that the language support of *README* may be a little SLOW.**
|
||||
|
||||
Eilles (金羿):The main author, who developed the most and especially the principal parts of Musicreater, and its predecessors, which has been called as "*Minecraft Function Music Maker*", "*Note Fun Creater*", "*Note World Creater*"(now ,they are united as ***Musicreater***!)
|
||||
## Introduction🚀
|
||||
|
||||
Musicreater(音·创) is an free open source software which is used for making and also creating music in **Minecraft: Bedrock Edition**.
|
||||
|
||||
Welcome to join our QQ group: [861684859](https://jq.qq.com/?_wv=1027&k=hpeRxrYr)
|
||||
|
||||
**ATTENTION!** This software is under testing and developing, there is still a lot of bugs needed to be fixed. Please use it wisely.
|
||||
|
||||
### Authors✒
|
||||
|
||||
Eilles (金羿):A high school student, individual developer, unfamous BilibiliUPer, which knows a little about commands in *Minecraft: Bedrock Edition*
|
||||
|
||||
bgArray "诸葛亮与八卦阵": Fix bugs, improve code aesthetics, add new functions, change data format, etc.
|
||||
|
||||
### Framework
|
||||
### Framework🏢
|
||||
|
||||
Using *Python* to develop, using Tkinter as a graphics library.
|
||||
Developed under *Python3.8 3.9*. However, theoretically support Python3.6+.
|
||||
|
||||
Support Windows7+ && Linux (that supports Python3.8)
|
||||
Support Windows7+ && Linux (that supports Python3.6+)
|
||||
|
||||
***ATTENTION TO DEVELOPERS!!! TO SUPPORT DIFFERENT LANGUAGES, PLEASE USE CONSTANT `READABLETEXT` TO OUTPUT!!! IF YOU NEED TO SUPPLEMENT, PLEASE ADD THEM IN SIMPLEFIED CHINESE\'S LANGUAGE FILE(zhCN.py), WHEATHER WHAT LANGUAGE YOU USE!!!***
|
||||
***ATTENTION TO DEVELOPERS!!! TO SUPPORT DIFFERENT LANGUAGES, PLEASE USE FUNCTION(METHOD) `_` TO LOAD TEXTs!!! IF YOU NEED TO SUPPLEMENT, PLEASE ADD THEM IN SIMPLEFIED CHINESE\'S LANGUAGE FILE(zh-CN.lang), WHEATHER WHAT LANGUAGE YOU USE!!!***
|
||||
|
||||
## Instructions📕
|
||||
|
||||
### Installation
|
||||
|
||||
Download the *[MSCT Auto Installer]()*, put it in a directory that you want to install *Musicreater* into.
|
||||
Then run the auto installer and it will help you to install the *Musicreator*
|
||||
Download the *[MSCT Auto Installer](https://github.com/EillesWan/Musicreater/releases/tag/v0.2.0.0-Delta)*, put it in a directory that you want to install *Musicreater* into. Then run the auto installer and it will help you to install the *Musicreator* as well as Python3.8(if you haven\'t install it)
|
||||
|
||||
Tips: You'd better choose the 2GitHub download source
|
||||
Tips: You'd better choose the \"2 GitHub\" download source
|
||||
|
||||
### Run with Source Code
|
||||
|
||||
#### Windows
|
||||
#### Windows7+
|
||||
|
||||
0. First, download the source code pack of Musicreater.
|
||||
[Download from Gitee (Need to Login)](https://gitee.com/EillesWan/Musicreater/repository/archive/master.zip)
|
||||
@@ -67,15 +83,13 @@ python3 补全库.py
|
||||
python3 Musicreater.py
|
||||
```
|
||||
|
||||
### Instructions of Using
|
||||
|
||||
### Instructions
|
||||
1. Just run Musicreater.pyc(or .py) if you have installed well
|
||||
2. Detailed instructions is coming soon
|
||||
3. If you find a bug, could you please report it to me? My contact info is right below.
|
||||
|
||||
1. Just make u understand the Chinese
|
||||
2. If u dont understand, u can come to the QQ group or email me to ask questions
|
||||
3. The English Edition is comming soon.
|
||||
|
||||
|
||||
### Explanation of bgArray 诸葛亮与八卦阵 (unnecessary)
|
||||
## Explanation of the use of *PlumeAudioSurrounding Resource Pack* by bgArray (unnecessary)📖
|
||||
|
||||
1. First! The tips here are for those who want to use the multi tone resource package, [Shenyu resource package (Shenyu's own link)](https://pan.baidu.com/s/11uoq5zwN7c3rX-98DqVpJg) \(Extraction code: `ek3t`\)
|
||||
2. Download it to any location on your PC. Note that it does ***not*** need to be placed in the directory where *Musicreater* are. The audio resource package is large, so you can choose to download only:`神羽资源包_乐器、音源的资源包\羽音缭绕-midiout_25.0`.
|
||||
@@ -90,7 +104,7 @@ python3 Musicreater.py
|
||||
6. If you want to use the Miracle Plume Bedrock Edition Audio Resource Pack to make .mcfunction s, you should use Musicreater -> Edit - > Import audio tracks from MIDI and parse them with a new method, and then use it
|
||||
Musicreater - > function (package) - > the following four new functions
|
||||
|
||||
### Thanks
|
||||
## Thanks🙏
|
||||
|
||||
1. Thank [Fuckcraft](https://github.com/fuckcraft) *(“鸣凤鸽子” ,etc)* for the function of Creating the Websocket Server for Minecraft: Bedrock Edition.
|
||||
- *!! They have given me the rights to directly copy the lib into Musicreater*
|
||||
@@ -102,13 +116,25 @@ Musicreater - > function (package) - > the following four new functions
|
||||
7. Thanks for a lot of groupmates who support me and help me to test the program.
|
||||
8. If you have give me some help but u haven't been in the list, please contact me.
|
||||
|
||||
## Contact Information📞
|
||||
|
||||
### Contact *Eilles(W-YI)*(金羿)
|
||||
### Author *Eilles*(金羿)
|
||||
|
||||
1. QQ 2647547478
|
||||
2. E-mail EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com
|
||||
3. WeChat WYI_DoctorYI
|
||||
|
||||
### Contact *bgArray*(诸葛亮与八卦阵)
|
||||
### Author *bgArray*(诸葛亮与八卦阵)
|
||||
|
||||
1. QQ 4740437765
|
||||
1. QQ 4740437765
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[Bilibili: Eilles]: https://img.shields.io/badge/Bilibili-%E5%87%8C%E4%BA%91%E9%87%91%E7%BE%BF-00A1E7?style=for-the-badge
|
||||
[Bilibili: bgArray]: https://img.shields.io/badge/Bilibili-%E8%AF%B8%E8%91%9B%E4%BA%AE%E4%B8%8E%E5%85%AB%E5%8D%A6%E9%98%B5-00A1E7?style=for-the-badge
|
||||
[CodeStyle: black]: https://img.shields.io/badge/code%20style-black-121110.svg?style=for-the-badge
|
||||
[python]: https://img.shields.io/badge/python-3.6-AB70FF?style=for-the-badge
|
||||
[release]: https://img.shields.io/github/v/release/EillesWan/Musicreater?style=for-the-badge
|
||||
[license]: https://img.shields.io/badge/Licence-Apache-228B22?style=for-the-badge
|
||||
Binary file not shown.
BIN
languages/__pycache__/__init__.cpython-37.pyc
Normal file
BIN
languages/__pycache__/__init__.cpython-37.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
languages/__pycache__/lang.cpython-37.pyc
Normal file
BIN
languages/__pycache__/lang.cpython-37.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
languages/__pycache__/zhCN.cpython-37.pyc
Normal file
BIN
languages/__pycache__/zhCN.cpython-37.pyc
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,13 @@
|
||||
zh-CN
|
||||
简体中文 中国大陆
|
||||
Simplified Chinese, Chinese Mainland
|
||||
简体中文 中国大陆
|
||||
zh-ME
|
||||
喵喵文 中国大陆
|
||||
Meow Catsese, China Mainland
|
||||
喵喵喵~ 祖国喵~
|
||||
金羿,Email EillesWan@outlook.com,QQ 2647547478
|
||||
音创创喵~
|
||||
音·创 Musicreater
|
||||
音创创喵的主人们
|
||||
凌天之云创新我的世界开发团队\n×\n凌天之云创新计算机应用软件开发团队
|
||||
~ 主人们 ~
|
||||
~ 爸爸妈妈们 ~
|
||||
好哒~
|
||||
|
||||
|
||||
@@ -84,6 +84,7 @@ def __loadLanguage(languageFilename: str):
|
||||
from msctLib.log import log
|
||||
log(f'丢失对于 {line[0]} 的本地化文本', 'WARRING')
|
||||
langkeys = _text.keys()
|
||||
# print(_text)
|
||||
return _text
|
||||
|
||||
|
||||
@@ -180,6 +181,8 @@ if __name__ == '__main__':
|
||||
Translatetextbar.edit_redo()
|
||||
Translatetextbar.bind("<Control-y>", ctrlY)
|
||||
|
||||
Translatetextbar.bind("<Control-s>", _autoSave)
|
||||
|
||||
tk.Button(Translaterame, text='保存', command=_autoSave).pack(side='bottom', fill='x')
|
||||
|
||||
tk.Label(Orignrame, text='中文原文').pack(side='top')
|
||||
|
||||
BIN
msctLib/__pycache__/__init__.cpython-37.pyc
Normal file
BIN
msctLib/__pycache__/__init__.cpython-37.pyc
Normal file
Binary file not shown.
BIN
msctLib/__pycache__/__init__.cpython-39.pyc
Normal file
BIN
msctLib/__pycache__/__init__.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
msctLib/__pycache__/log.cpython-37.pyc
Normal file
BIN
msctLib/__pycache__/log.cpython-37.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
msctLib/__pycache__/log.cpython-39.pyc
Normal file
BIN
msctLib/__pycache__/log.cpython-39.pyc
Normal file
Binary file not shown.
@@ -11,8 +11,12 @@ from msctLib.log import log
|
||||
|
||||
|
||||
DEFAULTBLUE = (0, 137, 242)
|
||||
# 0089F2
|
||||
|
||||
WEAKBLUE = (0, 161, 231)
|
||||
LIGHTBLUE = (38, 226, 255)
|
||||
# 26E2FF
|
||||
|
||||
RED = (255, 52, 50)
|
||||
PURPLE = (171, 112, 255)
|
||||
GREEN = (0, 255, 33)
|
||||
@@ -46,6 +50,7 @@ class disp:
|
||||
buttons: list = [],
|
||||
settingBox: list = [],
|
||||
notemap: list = [],
|
||||
infobar:str = '就绪',
|
||||
) -> None:
|
||||
'''使用参数建立基本的 音·创 窗口
|
||||
:param root 根窗口
|
||||
@@ -68,75 +73,100 @@ class disp:
|
||||
map: list = [ # 一首曲目的音符数据
|
||||
音符数据
|
||||
]
|
||||
:param infobar 显示信息用
|
||||
'''
|
||||
|
||||
self.root = root
|
||||
# 载入参量 注意!图标将不被载入参数
|
||||
self.__root = root
|
||||
'''窗口根'''
|
||||
|
||||
self.title = title
|
||||
self.geometry = geometry
|
||||
self.menuWidget = menuWidget
|
||||
'''窗口标题'''
|
||||
|
||||
self.menuWidgets = menuWidget
|
||||
'''菜单设定项'''
|
||||
|
||||
self.wordView = wordView
|
||||
'''言·论'''
|
||||
|
||||
self.buttons = buttons
|
||||
'''快捷功能按钮'''
|
||||
|
||||
self.settingBox = settingBox
|
||||
'''设置框'''
|
||||
|
||||
self.notemap = notemap
|
||||
'''音符列表'''
|
||||
|
||||
self.setTitle(title, debug)
|
||||
self.setGeometry(geometry, debug)
|
||||
self.setIcon(*iconbitmap, debug=debug)
|
||||
self.infoBar = infobar
|
||||
'''信息显示版'''
|
||||
|
||||
self.setMenu(menuWidget)
|
||||
|
||||
self.initWidget(wordView, buttons, settingBox, notemap)
|
||||
|
||||
self.debug = debug
|
||||
'''是否打开调试模式'''
|
||||
|
||||
self.setTitle()
|
||||
self.setGeometry(geometry)
|
||||
self.setIcon(*iconbitmap)
|
||||
|
||||
self.setMenu()
|
||||
|
||||
self.initWidget()
|
||||
|
||||
# =========================================================
|
||||
# 设定函数部分
|
||||
def setTitle(self, title: str = '', debug: bool = False) -> None:
|
||||
'''设置窗口标题'''
|
||||
self.root.title = title
|
||||
if debug:
|
||||
log(f"设置窗口标题{title}")
|
||||
# =========================================================
|
||||
|
||||
def setGeometry(self, geometry: str = '0x0', debug: bool = False) -> None:
|
||||
def setTitle(self) -> None:
|
||||
'''设置窗口标题'''
|
||||
self.__root.title = self.title
|
||||
if self.debug:
|
||||
log(f"设置窗口标题{self.title}")
|
||||
|
||||
def setGeometry(self,geometry:str = '0x0') -> None:
|
||||
'''设置窗口大小'''
|
||||
self.root.geometry(geometry)
|
||||
if debug:
|
||||
self.__root.geometry(geometry)
|
||||
if self.debug:
|
||||
log(f"设置窗口大小{geometry}")
|
||||
|
||||
def setIcon(
|
||||
self, bitmap: str = './musicreater.ico', default: str = '', debug: bool = False
|
||||
self, bitmap: str = './musicreater.ico', default: str = ''
|
||||
) -> None:
|
||||
'''设置窗口图标
|
||||
注意,default参数仅在Windows下有效,其意为将所有没有图标的窗口设置默认图标
|
||||
如果在非Windows环境使用default参数,一个Error将被升起'''
|
||||
if not debug:
|
||||
if not self.debug:
|
||||
try:
|
||||
if default:
|
||||
self.root.iconbitmap(bitmap, default)
|
||||
self.__root.iconbitmap(bitmap, default)
|
||||
log(f'设置图标为{bitmap},默认为{default}')
|
||||
else:
|
||||
self.root.iconbitmap(bitmap)
|
||||
self.__root.iconbitmap(bitmap)
|
||||
log(f'设置图标为{bitmap}')
|
||||
return True
|
||||
except Exception as e:
|
||||
log(str(e), 'ERROR')
|
||||
return False
|
||||
else:
|
||||
self.root.iconbitmap(bitmap, default)
|
||||
self.__root.iconbitmap(bitmap, default)
|
||||
return
|
||||
|
||||
def setMenu(self, menuWidgets: dict = {}, debug: bool = False) -> None:
|
||||
def setMenu(self) -> None:
|
||||
'''设置根菜单'''
|
||||
if not menuWidgets:
|
||||
if not self.menuWidgets:
|
||||
# 如果传入空参数则返回当前菜单
|
||||
try:
|
||||
return self.RootMenu
|
||||
except Exception as E:
|
||||
if debug:
|
||||
if self.debug:
|
||||
raise E
|
||||
else:
|
||||
log('无法读取菜单信息', 'WARRING')
|
||||
# 如果不是空参数则新建菜单
|
||||
self.RootMenu = {}
|
||||
self.mainMenuBar = tk.Menu(self.root)
|
||||
for menuName, menuCmd in menuWidgets.items():
|
||||
self.mainMenuBar = tk.Menu(self.__root)
|
||||
for menuName, menuCmd in self.menuWidgets.items():
|
||||
# 取得一个菜单名和一堆菜单函数及其显示名称
|
||||
menu = tk.Menu(self.mainMenuBar, tearoff=0)
|
||||
for cmdName, cmdFunc in menuCmd.items():
|
||||
@@ -146,7 +176,7 @@ class disp:
|
||||
menu.add_separator()
|
||||
self.mainMenuBar.add_cascade(label=menuName, menu=menu)
|
||||
self.RootMenu[menuName] = menu
|
||||
self.root.config(menu=self.mainMenuBar)
|
||||
self.__root.config(menu=self.mainMenuBar)
|
||||
|
||||
def addMenu(self, menuRoot: str = '', menuLabel: str = '', menuCommand=None):
|
||||
'''增加一个菜单项
|
||||
@@ -176,13 +206,7 @@ class disp:
|
||||
self.mainMenuBar.add_cascade(label=menuRoot, menu=menu)
|
||||
self.RootMenu[menuRoot] = menu
|
||||
|
||||
def initWidget(
|
||||
self,
|
||||
wordView: str = '音·创 Musicreater',
|
||||
buttons: list = [],
|
||||
settingBox: list = [],
|
||||
notemap: list = [],
|
||||
) -> None:
|
||||
def initWidget(self,) -> None:
|
||||
'''设置窗口小部件,分为:
|
||||
:言·论 WordView
|
||||
:快捷按钮面板 ButtonBar
|
||||
@@ -191,33 +215,38 @@ class disp:
|
||||
:各个音轨的显示框 TrackFrame
|
||||
:信息显示版 InfoBar
|
||||
'''
|
||||
self._wordviewBar = tk.Label(self.root, bg='white', fg='black', text=wordView)
|
||||
self._wordviewBar = tk.Label(
|
||||
self.__root, bg='white', fg='black', text=self.wordView, font=(fontPattern[0], 30)
|
||||
)
|
||||
|
||||
self.setWordView(wordView)
|
||||
self.setWordView(self.wordView)
|
||||
|
||||
def setWordView(self, text: str) -> None:
|
||||
self._wordviewBar['text'] = text
|
||||
|
||||
|
||||
# =========================================================
|
||||
# 预置函数部分
|
||||
def authorMenu(
|
||||
# =========================================================
|
||||
|
||||
def authorWindowStarter(
|
||||
authors: tuple = (
|
||||
('金羿', 'Email EillesWan@outlook.com', 'QQ 2647547478'),
|
||||
('诸葛亮与八卦阵', 'QQ 474037765'),
|
||||
),
|
||||
translaters: tuple = None,
|
||||
)
|
||||
):
|
||||
'''自定义作者界面'''
|
||||
from languages.lang import _
|
||||
from languages.lang import DEFAULTLANGUAGE
|
||||
from msctLib.buildIN import version
|
||||
|
||||
aabw = tk.Tk()
|
||||
aabw.title(_('关于'))
|
||||
aabw.geometry('550x600') # 像素
|
||||
tk.Label(aabw, text='', font=('', 15)).pack()
|
||||
tk.Label(aabw, text=_('F音创'), font=('', 35)).pack()
|
||||
authorWindow = tk.Tk()
|
||||
authorWindow.title(_('关于'))
|
||||
authorWindow.geometry('550x600') # 像素
|
||||
tk.Label(authorWindow, text='', font=('', 15)).pack()
|
||||
tk.Label(authorWindow, text=_('F音创'), font=('', 35)).pack()
|
||||
tk.Label(
|
||||
aabw,
|
||||
authorWindow,
|
||||
text='{} {}'.format(version.version[1] + version.version[0]),
|
||||
font=('', 15),
|
||||
).pack()
|
||||
@@ -225,18 +254,18 @@ class disp:
|
||||
# grid 的row 是列数、column是行排,注意,这是针对空间控件本身大小来的,即是指向当前控件的第几个。
|
||||
# place的 x、y是(x,y)坐标
|
||||
tk.Label(
|
||||
aabw,
|
||||
authorWindow,
|
||||
image=tk.PhotoImage(file='./resources/RyounLogo.png'),
|
||||
width=200,
|
||||
height=200,
|
||||
).pack()
|
||||
tk.Label(aabw, text=_('凌云pairs'), font=('', 20)).pack()
|
||||
tk.Label(aabw, text='', font=('', 15)).pack()
|
||||
tk.Label(aabw, text=_('开发者'), font=('', 15)).pack()
|
||||
tk.Label(authorWindow, text=_('凌云pairs'), font=('', 20)).pack()
|
||||
tk.Label(authorWindow, text='', font=('', 15)).pack()
|
||||
tk.Label(authorWindow, text=_('开发者'), font=('', 15)).pack()
|
||||
for i in authors:
|
||||
for j in i:
|
||||
tk.Label(
|
||||
aabw,
|
||||
authorWindow,
|
||||
text=j,
|
||||
font=(
|
||||
'',
|
||||
@@ -244,13 +273,13 @@ class disp:
|
||||
'bold' if i.index(j) == 0 else '',
|
||||
),
|
||||
).pack()
|
||||
tk.Label(aabw, text='', font=('', 5)).pack()
|
||||
tk.Label(authorWindow, text='', font=('', 5)).pack()
|
||||
if DEFAULTLANGUAGE != 'zh-CN':
|
||||
tk.Label(aabw, text=_('译者'), font=('', 15)).pack()
|
||||
tk.Label(authorWindow, text=_('译者'), font=('', 15)).pack()
|
||||
for i in _('TRANSLATERS').split(';'):
|
||||
for j in i.split(','):
|
||||
tk.Label(
|
||||
aabw,
|
||||
authorWindow,
|
||||
text=j,
|
||||
font=(
|
||||
'',
|
||||
@@ -260,11 +289,11 @@ class disp:
|
||||
).pack()
|
||||
|
||||
def exitAboutWindow():
|
||||
aabw.destroy()
|
||||
authorWindow.destroy()
|
||||
|
||||
tk.Button(aabw, text=_('确定'), command=exitAboutWindow).pack()
|
||||
tk.Button(authorWindow, text=_('确定'), command=exitAboutWindow).pack()
|
||||
|
||||
aabw.mainloop()
|
||||
authorWindow.mainloop()
|
||||
|
||||
|
||||
class ProgressBar:
|
||||
|
||||
@@ -48,7 +48,7 @@ StrStartTime = str(datetime.datetime.now()).replace(':', '_')[:-7]
|
||||
'''字符串型的程序开始时间'''
|
||||
|
||||
|
||||
def log(info:str = '',level : str = 'INFO', isPrinted:bool = False):
|
||||
def log(info:str = '',level : str = 'INFO', isPrinted:bool = True):
|
||||
'''将信息连同当前时间载入日志
|
||||
:param info : str
|
||||
日志信息
|
||||
@@ -66,12 +66,12 @@ def log(info:str = '',level : str = 'INFO', isPrinted:bool = False):
|
||||
|
||||
try:
|
||||
|
||||
if not os.path.exists('./log/'):
|
||||
os.makedirs('./log/')
|
||||
if not os.path.exists('./logs/'):
|
||||
os.makedirs('./logs/')
|
||||
|
||||
outputinfo = f'{str(datetime.datetime.now())[11:19]}-[{level}] {info}'
|
||||
|
||||
with open('./log/'+StrStartTime+'.msct.log', 'a',encoding='UTF-8') as f:
|
||||
with open('./logs/'+StrStartTime+'.msct.log', 'a',encoding='UTF-8') as f:
|
||||
f.write(outputinfo+'\n')
|
||||
|
||||
if isPrinted:
|
||||
|
||||
@@ -50,17 +50,130 @@ functions.py中会调取./addon/目录下的全部功能文件,这些功能文
|
||||
}
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- 变量
|
||||
|
||||
1. `infoBar`
|
||||
|
||||
信息显示栏,一个字符串,用于显示一些信息。
|
||||
|
||||
|
||||
2. `title`
|
||||
|
||||
窗口标题,字符串
|
||||
|
||||
|
||||
3. `menuWidgets`
|
||||
|
||||
对于窗口菜单的设定,其格式如下:
|
||||
```python
|
||||
menuWidgets: dist = { # 菜单项目
|
||||
str"菜单名" : dict{
|
||||
str"选项名"|None : <function>选项函数
|
||||
},
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
注:
|
||||
`菜单名` : `str` 显示在菜单上的字符串
|
||||
`选项名` : `str` 显示在菜单选项上的字符串
|
||||
`选项函数` : `function` 菜单调取的函数(无返回值,无入参)
|
||||
当 `选项名` 的布尔值判定为 `False` 的时候,无论 `选项函数` 为何,皆插入一段分割线,但 `选项函数` 不得为空
|
||||
|
||||
|
||||
4. `wordView`
|
||||
|
||||
显示在言论上的文字,字符串
|
||||
|
||||
|
||||
5. `buttons`
|
||||
|
||||
快捷功能按钮的列表,列表的元素为字典,字典的键是按钮的名称,值为一个元组,元组中含有两个元素,其中元组的第1个元素为按钮图标,是一个图片的路径;第2个元素为执行的函数,其值应当是一个函数对象。
|
||||
|
||||
```python
|
||||
button: list = [ # 操作按钮部分
|
||||
dict{
|
||||
str"按钮名称" : tuple(
|
||||
按钮图标,
|
||||
执行函数
|
||||
)
|
||||
},
|
||||
...
|
||||
],
|
||||
```
|
||||
|
||||
|
||||
6. `settingBox`
|
||||
|
||||
设置框,用于设置音乐的基本属性,例如词作者,曲作者等,设置格式如下:
|
||||
|
||||
```python
|
||||
settingbox: list = [ #设置部分显示的字样及其对应的设置函数
|
||||
tuple(
|
||||
设置名称:str,
|
||||
值类型:tuple,
|
||||
显示内容:str,
|
||||
设置操作函数:<function>,
|
||||
),
|
||||
...
|
||||
]
|
||||
```
|
||||
|
||||
其中,值类型可以是如下几个项
|
||||
1. `('str',)` 字符串类型,使用文本框输入数据
|
||||
2. `('bool',)` 布尔类型,使用复选框输入数据
|
||||
3. `('num',最小值:float,最大值:float,步长:float = 1)` 数值类型,使用数值滑动条输入数据
|
||||
4. `('list',列表项:list)` 单选类型,即列表中多选一,使用单选框输入数据
|
||||
|
||||
其中,值操作函数需要有一个参数,用于传递用户提供的设置值。
|
||||
|
||||
|
||||
7. `notemap`
|
||||
|
||||
音符数据表,用于存储曲谱信息,存储格式如下
|
||||
```python
|
||||
notemap: list = [ # 音轨列表
|
||||
dict{ # 单个音轨
|
||||
'instrument' : str"乐器",
|
||||
'velocity' : int 响度,
|
||||
# 这里理论上需要写一个小节多少个X分音符
|
||||
# 以及小节里的都是几分音符
|
||||
# 但是这个留给以后来支持
|
||||
int 小节编号 : [ # 一个小节
|
||||
tuple( # 一个音符
|
||||
时间 : int,
|
||||
持续 : int,
|
||||
乐器 : str,
|
||||
采样 : float,
|
||||
响度 : int,
|
||||
),
|
||||
...
|
||||
],
|
||||
...
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
|
||||
其中,对于每个音符:
|
||||
1. 时间 单位:帧 当前音符开始时,距离当前小节开始所经过的帧数
|
||||
2. 持续 单位:帧 当前音符持续的帧数
|
||||
3. 乐器 当前音符使用的乐器,需要在乐器列表中有所注册
|
||||
4. 采样 当前音符在MC的采样音高(不含打击乐器)
|
||||
5. 响度 单位:格的-1次方 音符播放源距离播放者的距离的倒数
|
||||
|
||||
|
||||
- 函数
|
||||
|
||||
1. `setMenu`对菜单的基础设定
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ python
|
||||
```python
|
||||
{
|
||||
菜单名 : {
|
||||
选项名 : 选项函数
|
||||
}
|
||||
}
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
```
|
||||
|
||||
注:
|
||||
`菜单名` : `str` 显示在菜单上的字符串
|
||||
@@ -115,13 +228,16 @@ functions.py中会调取./addon/目录下的全部功能文件,这些功能文
|
||||
|
||||
|
||||
|
||||
# 这里是全局设置
|
||||
'name' : str, #项目名,即包名
|
||||
'title': str, #音乐名称
|
||||
'repeation': bool, #是否开启重复播放
|
||||
'player_selection': str, #玩家选择器,用于选择播放的的玩家
|
||||
# 下面是音轨独立设置
|
||||
'track_name': str, #此音轨的名字
|
||||
'track_sbname': str, #此音轨所使用的计分板
|
||||
- 变量
|
||||
使用类中的变量可以对类中的内容进行实时修改
|
||||
#### ???
|
||||
|
||||
全曲的设置应该如下:
|
||||
```python
|
||||
标题 : str = '无名'
|
||||
副标题 : str = ''
|
||||
作曲 : str = '佚名'
|
||||
作词 : str = ''
|
||||
歌曲版权信息 : str = ''
|
||||
# bpm 暂时不需要
|
||||
|
||||
|
||||
```
|
||||
@@ -1,49 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
'''此文件为音·创的插件加载程序,为了满足各平台需求,使用的是CLI界面'''
|
||||
|
||||
# W-YI 金羿
|
||||
# QQ 2647547478
|
||||
# 音·创 开发交流群 861684859
|
||||
# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com
|
||||
# 版权所有 Team-Ryoun 金羿
|
||||
# 若需转载或借鉴 请附作者
|
||||
|
||||
|
||||
"""
|
||||
Copyright 2022 Eilles Wan (金羿)
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the 'License');
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an 'AS IS' BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
|
||||
# 代码写的并非十分的漂亮,还请大佬多多包涵;本软件源代码依照Apache软件协议公开
|
||||
|
||||
|
||||
# 下面为正文
|
||||
|
||||
|
||||
print("""
|
||||
音·创 插件管理
|
||||
Musicreater PLUGINS Management
|
||||
""")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
msctspt/__pycache__/__init__.cpython-37.pyc
Normal file
BIN
msctspt/__pycache__/__init__.cpython-37.pyc
Normal file
Binary file not shown.
BIN
msctspt/__pycache__/bugReporter.cpython-37.pyc
Normal file
BIN
msctspt/__pycache__/bugReporter.cpython-37.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
msctspt/__pycache__/threadOpera.cpython-37.pyc
Normal file
BIN
msctspt/__pycache__/threadOpera.cpython-37.pyc
Normal file
Binary file not shown.
Binary file not shown.
@@ -93,11 +93,11 @@ class report:
|
||||
class version:
|
||||
libraries = (
|
||||
'mido', 'amulet', 'amulet-core', 'amulet-nbt', 'piano_transcription_inference', 'pypinyin',
|
||||
'pyinstaller', 'py7zr','websockets', 'torch', 'requests'
|
||||
'pyinstaller', 'py7zr','websockets', 'torch', 'requests', 'zhdate'
|
||||
)
|
||||
"""当前所需库"""
|
||||
|
||||
version = ('0.2.0', 'Delta',)
|
||||
version = ('0.1.6', 'Delta',)
|
||||
"""当前版本"""
|
||||
|
||||
def __init__(self) -> None:
|
||||
|
||||
@@ -12,7 +12,7 @@ import amulet
|
||||
from amulet.api.block import Block
|
||||
from amulet.utils.world_utils import block_coords_to_chunk_coords as bc2cc
|
||||
from amulet_nbt import TAG_String as ts
|
||||
from nmcsup.log import log
|
||||
from msctLib.log import log
|
||||
|
||||
|
||||
def hans2pinyin(hans, style=3):
|
||||
@@ -33,11 +33,8 @@ def classList_conversion_SinglePlayer(List: list, ScoreboardName: str, playerSel
|
||||
commands = []
|
||||
length = len(List)
|
||||
j = 1
|
||||
print(List)
|
||||
for k in range(len(List)):
|
||||
i = List[k][0]
|
||||
print(i)
|
||||
print(type(i))
|
||||
try:
|
||||
commands.append(
|
||||
f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}="
|
||||
@@ -54,7 +51,6 @@ def classList_conversion_SinglePlayer(List: list, ScoreboardName: str, playerSel
|
||||
pass
|
||||
# a += List[i][1]
|
||||
# commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n")
|
||||
print(commands)
|
||||
return commands
|
||||
|
||||
|
||||
@@ -268,6 +264,7 @@ def music2cmdBlocks(direction: Iterable, music: dict, isProsess: bool = False, h
|
||||
:return 返回一个列表,其中包含了音乐生成的所有的指令方块数据"""
|
||||
from msctspt.threadOpera import NewThread
|
||||
|
||||
|
||||
allblocks = []
|
||||
'''需要放置的方块'''
|
||||
baseDire = direction
|
||||
@@ -275,14 +272,15 @@ def music2cmdBlocks(direction: Iterable, music: dict, isProsess: bool = False, h
|
||||
direction = list(direction)
|
||||
|
||||
def trackDealing(direction,track):
|
||||
print('=========DEBUG=========音轨起方块:', direction)
|
||||
blocks = []
|
||||
cmdList = classList_conversion_SinglePlayer(track['notes'], track['set']['ScoreboardName'],
|
||||
music['mainset']['PlayerSelect'], isProsess)
|
||||
if len(cmdList) == 0:
|
||||
return
|
||||
return []
|
||||
elif cmdList is []:
|
||||
return
|
||||
dire = direction
|
||||
return []
|
||||
dire = direction.copy()
|
||||
down = False
|
||||
'''当前是否为向下的阶段?'''
|
||||
# 开头的指令方块
|
||||
@@ -300,8 +298,9 @@ def music2cmdBlocks(direction: Iterable, music: dict, isProsess: bool = False, h
|
||||
# :4 x轴负方向 无条件
|
||||
# :5 x轴正方向 无条件
|
||||
for cmd in cmdList:
|
||||
print('=========DEBUG=========方块:', dire)
|
||||
blocks.append(formCmdBlock(dire, cmd, 5 if (down is False and dire[1] == height + direction[1]) or (
|
||||
down and dire[1] == direction + 1) else 0 if down else 1, 2, needRedstone=False))
|
||||
down and dire[1] == direction[1] + 1) else 0 if down else 1, 2, needRedstone=False))
|
||||
if down:
|
||||
if dire[1] > direction[1] + 1:
|
||||
dire[1] -= 1
|
||||
@@ -309,15 +308,15 @@ def music2cmdBlocks(direction: Iterable, music: dict, isProsess: bool = False, h
|
||||
if dire[1] < height + direction[1]:
|
||||
dire[1] += 1
|
||||
|
||||
if (down is False and dire[1] == height + direction[1]) or (down and dire[1] == direction + 1):
|
||||
if (down is False and dire[1] == height + direction[1]) or (down and dire[1] == direction[1] + 1):
|
||||
down = not down
|
||||
dire[0] += 1
|
||||
return blocks
|
||||
|
||||
threads = []
|
||||
for track in music['musics']:
|
||||
threads.append(NewThread(trackDealing,(direction,track)))
|
||||
threads[threads.__len__()-1].start()
|
||||
threads.append(NewThread(trackDealing,(direction.copy(),track)))
|
||||
threads[-1].start()
|
||||
direction[2] += 2
|
||||
|
||||
for th in threads:
|
||||
|
||||
62
nmcsup/MMFM Cpp E Develop Log.txt
Normal file
62
nmcsup/MMFM Cpp E Develop Log.txt
Normal file
@@ -0,0 +1,62 @@
|
||||
《我的世界》函数音乐生成器
|
||||
C++版本开发日志
|
||||
|
||||
我在本年初提出此计划,由于学业原因,便延迟计划开始编写代码。
|
||||
|
||||
Beta V0.1 - 20200920
|
||||
0.新增命令help
|
||||
1.新增命令make
|
||||
2.新增命令form
|
||||
3.新增命令exit
|
||||
4.能够根据输入的CDEFGAB转换成.mcfunction
|
||||
5.命令行界面操作
|
||||
|
||||
Beta V0.2 - 20200921
|
||||
0.修改命令make为write
|
||||
1.新增可设置代替实体名
|
||||
2.新增可设置计分板名
|
||||
3.新增乐曲标题设定项
|
||||
4.新增循环模式设定项
|
||||
5.由于"器"一字被网易屏蔽,修改程序名为"我的世界函数音乐生成者"
|
||||
|
||||
Beta V0.3 - 20200922
|
||||
0.修改命令write为make
|
||||
1.将代替实体名加入设定项
|
||||
2.将计分板名加入设定项
|
||||
3.将乐曲标题加入设定项
|
||||
|
||||
Beta V0.4 - 20200923
|
||||
0.新增生成文件名称设定项
|
||||
1.新增bug:最后三个音符的指令不写入文件(DE001)
|
||||
2.新增命令ver可显示版本及关于信息
|
||||
|
||||
Beta V0.5 - 20200925
|
||||
0.修改命令make为write
|
||||
1.新增设定项文件路径
|
||||
2.支持音符由简谱1234567音调表示
|
||||
3.支持休止符0
|
||||
|
||||
Beta V0.6 - 20200926
|
||||
0.修改命令write为make
|
||||
1.修复bug:最后三个音符的指令不写入文件(DE001)
|
||||
2.新增命令buld
|
||||
3.新增命令comd
|
||||
4.由help打开的帮助菜单由一页变为两页
|
||||
5.命令行窗口大小自动调整
|
||||
|
||||
Beta V0.7 - 20200927
|
||||
0.新增命令mdir,可以直接生成整个函数包
|
||||
1.新增命令ldir,可以查看当前目录信息
|
||||
3.新增指令look,可以显示指定文本文件内容
|
||||
4.删除退出时的等待按键提示
|
||||
5.新增bug:使用look查看文件结束后有几率卡崩或无法显示提示符">>>"(DE002、DE003)
|
||||
6.新增bug:mdir无法使用(DE004)
|
||||
|
||||
TO-DO Beta V0.8_中秋国庆版 - 20200929
|
||||
0.新增彩蛋命令国庆,在国庆期间输入可以得到一份中国国旗字符画
|
||||
1.新增彩蛋命令中秋,在中秋期间输入可以得到一份月亮字符画
|
||||
——此版本直接跳过
|
||||
|
||||
Beta V0.9 - 20201224
|
||||
0.修复bug:mdir无法使用(DE004)
|
||||
1.新增bug:mdir一运行立马产生错误并停止运行(DE005)
|
||||
126
nmcsup/MMFM Py E Development Log.txt
Normal file
126
nmcsup/MMFM Py E Development Log.txt
Normal file
@@ -0,0 +1,126 @@
|
||||
这是MMFM(我的世界函数音乐生成器)的Python版本日志
|
||||
我从2021年5月移植,中间停更了一段时间。
|
||||
|
||||
Beta V 0.0.0
|
||||
2021 5 ?15 - 2021 5 23
|
||||
1.将C++版本全部有用的功能移植至Python版本
|
||||
2.新增了可更改的音乐乐器
|
||||
3.新增了可更改的语言包Chinese
|
||||
4.附带应用"jsonread - lang"可用于新增语言文本
|
||||
5.支持全部音阶,但不支持附点、X分音符等
|
||||
|
||||
Beta V 0.0.1
|
||||
2021 6 5
|
||||
1.可读取不同的语言文件,通过lang指令完成
|
||||
2.新增English语言包
|
||||
3.在输入非内部指令时以命令行运行
|
||||
|
||||
Beta V 0.0.2
|
||||
2021 6 13
|
||||
1.支持设置项保存
|
||||
2.语言设置移至设置项中
|
||||
3.新增RESET命令以重置所有设置项至默认
|
||||
4.支持休止符(“0”)
|
||||
5.设置项更加人性化
|
||||
|
||||
Beta V 0.0.3
|
||||
2021 6 14
|
||||
1.支持全平台(能运行Python的平台)
|
||||
2.安卓系统下不需要从源地址运行
|
||||
3.设置中给出乐器列表并需要使用在列表内的乐器
|
||||
|
||||
Beta V 0.0.4
|
||||
2021 6 14
|
||||
1.新增win指令支持窗口化输入
|
||||
2.语言包English停止支持
|
||||
3.停止支持的语言包部分将使用Chinese语言包
|
||||
4.输出结果更加人性化
|
||||
5.停止支持输入非内部命令以系统指令运行
|
||||
|
||||
Formal V 0.0.1
|
||||
2021 6 21 - 2021 6 22
|
||||
1*.支持附点、延音等时间延长谱号
|
||||
2*.支持X分音符等时间缩短谱号
|
||||
3.删除win指令支持的窗口化输入,即禁止窗口运行
|
||||
4.新增日志系统,程序运行将载入日志以便检查
|
||||
*实际上输入的时候是不支持的,只是支持了修改音符延长时间而已
|
||||
|
||||
|
||||
Formal V 0.0.2
|
||||
2121 6 22
|
||||
1.解决了字符串解析为列表时出现的问题
|
||||
2.停止调整命令行窗口大小
|
||||
3.解决了输入的音符被除重的问题
|
||||
4.buld指令建立的附加包中新增startXXX函数用于初始设定
|
||||
|
||||
|
||||
Formal V 0.0.3
|
||||
2021 6 29
|
||||
1.新增save、load指令支持工程文件存取
|
||||
2.新增default指令存储默认设置
|
||||
3.输入exit指令退出时不会保存为默认设置
|
||||
4.新增delog指令在Windows系统下删除日志文件
|
||||
|
||||
|
||||
Formal V 0.0.4 ~ 0.0.4.2
|
||||
2021 6 30
|
||||
1.支持midi解析,能够通过midi文件解析音符,且仅支持打击乐器,即音长为0的声音,不能解析音的长度,解析仅包含note_on消息而不包含note_off消息,且暂时不能解析音乐附带的其他信息
|
||||
2.新增彩蛋指令TAFTCPC(the Anniversary of the Founding of The Communist Party of China) -(0.0.4.1)
|
||||
3.修复读取文件时读取内容不正确的问题 -(0.0.4.2)
|
||||
|
||||
|
||||
Formal V0.0.4.3
|
||||
2021 7 1
|
||||
1.内部代码优化,更加模块化,便于以后窗口化调用
|
||||
|
||||
|
||||
Formal V0.0.5 ~ 0.0.5.2
|
||||
2021 7 3 ~ 2021 7 4
|
||||
1.支持同时编辑、生成多个音乐函数
|
||||
2.支持一个项目中保存多个文件
|
||||
3.支持同一函数中出现不同的乐器 -(0.0.5.1)
|
||||
4.读取midi文件时支持音长的自动解析读取,并支持选择音轨 -(0.0.5.2)
|
||||
5.修复了编辑不同乐器时出现闪退的问题 -(0.0.5.2)
|
||||
|
||||
|
||||
Formal V0.0.5.3
|
||||
2021 7 5
|
||||
1.修复了存储工程文件时的崩溃问题
|
||||
2.读取midi时支持通过音轨自动生成不同的函数文件
|
||||
3.修复了生成函数文件中计分板为浮点数的问题
|
||||
4.修复文件路径不正确的问题
|
||||
5.新增应用bat脚本(仅Windows):可以快速启动、可以清除日志
|
||||
6.新增开发bat脚本(仅Windows):可以快速编译文件并启动测试、可以快速编译文件、可以快速启动测试
|
||||
|
||||
|
||||
Formal V0.0.6
|
||||
2021 7 8 - 2021 7 9
|
||||
1.停止对非Windows系统环境的支持
|
||||
2.支持预听生成的函数,即音乐试听
|
||||
3.乐曲修改设置:单个乐曲可包含多个文件序列(多个乐器),歌曲可以有自己单独的曲名、执行实体、执行计分板等独立设置;同时,每个歌曲可包含不同的乐器序列等等
|
||||
4.读取的音频格式更新:音符、我的世界音调、频率(Hz),仍是字典:'str' : [ float , float ]
|
||||
5.单个项目内不包含多首歌曲,但是做了预制功能:可以编辑多个项目(现在暂时不行)
|
||||
6.不可单独编辑单个音符的乐器
|
||||
7.放弃对语言文件的读取的支持
|
||||
8.停止支持对已读取的音轨的编辑(即删除edit指令)
|
||||
9.停止支持全局设置的修改,以及其相关支持(即删除当前的set、reset、default指令)
|
||||
10.预制支持对于单个音轨设置的修改以及音乐主设置的修改(现在暂时不行)
|
||||
11.存储的项目结构变为json文件结构,则无需zipfile库
|
||||
12.生成的文件包含:支持函数(1个、循环执行)、音乐函数(多个、循环执行)、启动函数(1个、执行一次)
|
||||
13.发现并修改错误:遇到休止符0时,播放会报错并停止
|
||||
14.新增彩蛋指令:RYOUN,生成团队队歌文件及项目
|
||||
15.项目更名为“我的世界函数音乐构建”
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TO-DO
|
||||
1.支持从midi文件的元信息中收取音符信息并自动生成
|
||||
2.Windows平台下支持窗口化
|
||||
3.支持使用WebSocket接口自动播放已编辑的音乐
|
||||
4.可以编辑多个项目
|
||||
5.能够自动将一个长串的音乐分成多个函数文件
|
||||
6.对于单个音轨设置的修改以及音乐主设置的修改
|
||||
7.支持汇报崩溃记录(通过邮件附件的方式)
|
||||
BIN
nmcsup/__pycache__/__init__.cpython-37.pyc
Normal file
BIN
nmcsup/__pycache__/__init__.cpython-37.pyc
Normal file
Binary file not shown.
BIN
nmcsup/__pycache__/log.cpython-37.pyc
Normal file
BIN
nmcsup/__pycache__/log.cpython-37.pyc
Normal file
Binary file not shown.
BIN
nmcsup/__pycache__/vers.cpython-37.pyc
Normal file
BIN
nmcsup/__pycache__/vers.cpython-37.pyc
Normal file
Binary file not shown.
@@ -6,27 +6,6 @@ Copyright © W-YI 2022
|
||||
本软件是金羿前作函数音创和世界音创的集合版本,同时增加了大量功能更新。
|
||||
|
||||
|
||||
To-Do
|
||||
1.可以导出自定义的结构文件用于存储要导入地图中的结构
|
||||
2.进度条
|
||||
3.可以将音乐写入音符盒(红乐)
|
||||
4.修改UI界面使之适应当前功能
|
||||
5.支持自动给音符盒绑定更多的音色
|
||||
6.可以由.schematic文件导入地图,亦可反向处理
|
||||
7.制作软件下载器使用户更直观地操作
|
||||
8.支持自定义创建websockeet服务器播放音乐(感谢由 Fuckcraft <https://github.com/fuckcraft> “鸣凤鸽子”等 带来的我的世界websocket服务器功能)
|
||||
9.支持使用红石播放音乐
|
||||
10.支持采用延时的播放器
|
||||
11.支持使用bdx导出结构
|
||||
12.支持采用tp的方法播放
|
||||
13.支持识别曲谱(简谱)图片解析音乐
|
||||
14.支持使用瀑布流的方式播放音乐
|
||||
15.支持读入Everyone Piano的曲谱文件(.eop)
|
||||
16.支持读入Musescore的通用曲谱文件,即musicXML(.mscz、.mscx)
|
||||
17.支持自动搜寻地图目录位置(网易&微软)
|
||||
18.支持读入JPword曲谱文件(.jpd)
|
||||
19.新的UI设计,以及UI主题文件
|
||||
20.以小节为单位做音符播放时间对标
|
||||
|
||||
===============
|
||||
2022 年度挑战
|
||||
@@ -40,7 +19,7 @@ Copyright © W-YI 2022
|
||||
新更新日志
|
||||
|
||||
Delta 0.2.0
|
||||
2022 2 10 ~ 2022 3
|
||||
2022 2 10 ~ 2022 x
|
||||
1.进行了大量的代码重构,使之更加易于开发
|
||||
2.对功能进行了精简优化,能够更加方便的开发新功能
|
||||
3.完善程序的一些外观与性能优化,使用了更多多线程板块
|
||||
@@ -53,6 +32,16 @@ Copyright © W-YI 2022
|
||||
10.新增下载器,无需用户从源代码安装
|
||||
|
||||
|
||||
Delta 0.1.5
|
||||
2022 4 4
|
||||
0.新增金羿生日祝福
|
||||
1.修复诸多问题
|
||||
2.正在往0.2版本迭代更新
|
||||
3.预计半年之内可以发布新版本
|
||||
4.支持使用自动安装器下载安装
|
||||
5.
|
||||
|
||||
|
||||
Delta 0.1.5.2
|
||||
2022 2 1 农历大年初一
|
||||
0.程序图标完善
|
||||
|
||||
BIN
resources/msctIcon.png
Normal file
BIN
resources/msctIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 123 KiB |
BIN
resources/msctIcon_256px.png
Normal file
BIN
resources/msctIcon_256px.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
BIN
resources/msctIcon_512px.png
Normal file
BIN
resources/msctIcon_512px.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 123 KiB |
@@ -64,7 +64,7 @@ A man achieve with challenges.
|
||||
你们——会祝福下一个时代吗? ——原神
|
||||
任何旅途中的旅伴同行,都会有分别的一日。 ——原神
|
||||
「永恒」最接近于天理 ——原神
|
||||
等旅途到达了终点,再考虑停留于何处吧。 ——原神
|
||||
等旅途到达了终点,再考虑停留于何处吧 ——原神
|
||||
人海中相遇,本是缘分。 ——原神
|
||||
凡缘朦朦仙缘滔
|
||||
因果红尘渺渺,烟消 ——原神
|
||||
@@ -99,3 +99,42 @@ A man achieve with challenges.
|
||||
苦痛的旅程中盘错着举世的谎言
|
||||
欲落的花会告诉你我无尽的思念,而风会在此刻替我拥抱住你。 ——蝶<1361223398>
|
||||
仰望这深邃的夜空,明星洒下的光,总是无尽斑驳
|
||||
欲知后事如何,唯有后世来分说 ——b站BV1jm4y1S76q
|
||||
曲高未必人不识,自有知音和清词 ——原神
|
||||
接引春雷焚身骨,化灰以养万类荣 ——原神
|
||||
浮世景色百千年依旧,人之在世却如白露与泡影 ——原神
|
||||
今古诸事,激荡中流,宏图待看新秀 ——原神
|
||||
烟花易逝,人情长存 ——原神
|
||||
正因为我们都是须臾之人,才更应该珍惜须臾的美好 ——原神
|
||||
如果说,生命的脚印终有一天会被时间的尘埃掩埋,那么我们就永远不能停下脚步 ——明日方舟
|
||||
只要不停下脚步,道路就会不断延伸。 ——某B站用户
|
||||
红色光芒从遥远的地平线上浮现,影月留给人间的黑暗逐渐退潮 ——明日方舟
|
||||
如果没有人有了解真相的意愿,那就算把真相撒播在街道上,也不会发芽的 ——明日方舟
|
||||
永远不要否定善行,道德和良知永远不会错 ——明日方舟
|
||||
唯独死亡不可避免,唯独生命不可辜负 ——少女前线
|
||||
人即像树,枝叶越向往明亮的天空,根须越深入幽暗的地底 ——尼采
|
||||
沉默不代表服从,生活在黑暗里,不代表放弃光明 ——少女前线
|
||||
但行前路终无悔,只盼万事在人为 ——废墟图书馆
|
||||
我忘却了所有悲剧,所见之处皆是奇迹 ——空洞骑士
|
||||
只要坚信自己的道路,就无所谓天气是晴是雨。 ——原神
|
||||
在这个真实的太过分的世界里,每个人都需要仰望星空 ——原神
|
||||
当你重新踏上旅途之后,一定要记得旅途本身的意义 ——原神
|
||||
识花鸟之一趣,照月风之长路 ——原神
|
||||
只要不失去你的崇高,整个世界都会向你敞开 ——原神
|
||||
每个人都是一个自己的精神支柱 ——GitHub Copliot
|
||||
I am a dreamer, but I am not a dreamer. ——GitHub Copliot
|
||||
The only thing that makes a dream impossible is the fear of failure. ——GitHub Copliot
|
||||
A dream is a wish that you have or something that you have dreamed of in your mind. ——GitHub Copliot
|
||||
It is not the strongest of the species that survives, nor the most intelligent, nor the fastest. ——GitHub Copliot
|
||||
To be a dreamer is to be a free spirit. ——GitHub Copliot
|
||||
To be or not to be is a question. ——莎士比亚
|
||||
即使身躯残破,也要在战场上拼杀到最后一刻,要战斗到流干最后一滴血为止。 ——原神
|
||||
朋友之间,也许就是要心知肚明才好 ——原神
|
||||
轻盈的风,偶尔也会变得沉重…虽然,只是凡人难以察觉的短短一瞬 ——原神
|
||||
我听过树的歌、乌云和雨的歌、遥远北方的青色飞龙悠远的吟唱,也听过我降落在地面上时,狐、兔,和地里的虫颤抖的协奏 ——原神
|
||||
无人来书写我们的故事,我们就是故事本身。
|
||||
故事的种子是生活与旅行 ——原神
|
||||
每个人的「生活(故事)」,都只属于自己… ——原神
|
||||
如果我们要再会,就在夕阳与海面相遇的地方再会吧。 ——原神
|
||||
到那时,再让我看看你如同钻石一般明净而璀璨的灵魂,是否蒙上了一缕尘埃吧。 ——原神
|
||||
水过时迁
|
||||
|
||||
Reference in New Issue
Block a user