來自以下5個網站,隨機取用
https://api.vvhan.com/api/acgimg
https://www.dmoe.cc/random.php
https://www.rrll.cc/tuceng/ecy.php
https://api.ixiaowai.cn/api/api.php
https://api.yimian.xyz/img
譜詳情頁轉調器算法
我做成了版,可以看源代碼了解算法↓
[1]→#7的方法:將所有#1替換為do,將所有1替換為(#7),將所有do替換為#1,刪除所有[(和)]。#3方法同理。
保存時,如果有圖片則轉為,所以可能會卡,也可能圖片太大轉不了。
內容展示
的譜存在issue里面,使用語法。譜庫本來就配有“嗶譜嗶譜”app,直接用展示內容。而我選擇對內容分割,使用正則表達式將issue內容分為不同部分,再用我的UI展示。雖然沒有直接用來的清爽,但是由于譜被提取出來,極大方便了對譜的操作。但是此方法極度依賴格式。譜庫中有些初期的譜并不是按現在的格式,所以顯示出來會有小問題,但是并不會影響查閱。
譜展示界面右下角有個“+”的圓按鈕,模仿的嗶譜嗶譜,但其上方點不了。這是我最不喜歡但無能為力的地方。點擊“+”按鈕,上方會長出兩個按鈕,這兩個按鈕的位置是預定了的,哪怕我們并沒有呼出它們,位置也是屬于這兩個按鈕的,所以點擊無效。
制作midi界面
長按譜,選擇左下角“制譜”,即可跳轉至制作midi界面。
獲取節奏數據
若要使用,請把任何系統自帶的長按效果關閉。比如小米的“傳送門”功能。因為一旦觸發系統長按屏幕的功能,相當于你已經抬起手來了(雖然實際并沒有松開),但app捕捉不到“松開屏幕”事件。
基本思路是根據手指按下的時間為音確定時長。手指按下,記錄此時在一天中的毫秒數,松開,再記錄。所以不要在0點使用,因為毫秒數在第二天會歸零。按完,所有毫秒數減去第一個毫秒數,得到的按壓事件列表的時間就從0開始了。
“節奏對齊”將以上得到的原始數據進行取整。首先遍歷時間列表獲得最短時長t0(按壓的最短時長),為減小誤差,再次遍歷,將與t0差不到20%的時長選出來,并取平均,得到的時長就是單位時長t。
理論上,其他所有音的時長都比t大(或相等),而且時長之商為2或1.5(或1)。比如整個曲子最短為八分音符,那其他音符將會是:附點八分音符(1.5倍)、四分音符(2倍)、附點四分音符(3倍)……當然可能有連音符使時長倍數非2或1.5,或者有變速的地方,但為了方便使用,忽略。
實際上并不是剛好整除,所以需要近似??紤]到1.5倍不好刻畫,所以取 λ=t÷2。遍歷時長列表,將ti除λ得到比例p,理論上是2或3的倍數。令q=2^(下取整(log2 p)),再找到q、1.5q、2q與p差值最小的那個,作為p的近似值,實現了p的2或3倍的近似。
得到了每個音的相對長度之后,根據總時間分配實際毫秒數。
制作mid
使用委托 @適格的魔法師 做的api:
https://miditest.songjhaha.live
發送數據:
{
"filename":"test",
"tempo":60,

"notes":[["C3",0,1],["C3",1,1],["G3",2,1],["音名",開始的秒數,持續秒數]
}
彼時我還在軍訓,只能委托大佬做……一學期自學了js,前幾天寫了自己的:
在未來的更新可能就用我的了吧……
上傳頁
請求頭:{"Authorization":我自己的token}
https://api.github.com/repos/zytx121/je/issues
考慮到方便,我使用的是我的 token,同時也方便我把關、修改。但是,issue一旦創建就不能刪除(只能關閉)且issue的名稱不能更改,所以請各位對譜庫負責,不要胡亂上傳,上傳前務必檢查是否已經有了此譜。如果需要更改內容,請在b站私信我,id同知乎。
奇怪的是,上傳完app使用說明,從app里面打開剛上傳的譜會顯示異常。需要我登上,編輯再保存,才會正常。所以各位看到異常顯示不要著急,更不要重新傳。如果上傳成功卻沒有看到出現在首頁,點擊首頁刷新即可。
有兩種上傳格式,默認使用的那種是給小白看的,不能傳圖片。如果熟悉,可以使用第二種,可以添加圖片,添加板塊。但由于我是將內容提取再展示,極度依賴格式,所以請務必按照已經給出的格式填寫。
音樂播放頁
網易云音樂搜索:http://music.eleuu.com/search?limit=15&keywords=關鍵詞
QQ音樂搜索:https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=69161514823591748&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=15 &w=關鍵詞&format=json
網易云音樂播放(下載):http://music.163.com/song/media/outer/url?id=音樂ID.mp3
網易云封面獲取……之前用的api,后來api掛了,于是自己爬網頁。根據音樂id得到音樂的網頁,比如:
https://music.163.com/#/song?id=1864175138
但此時看源代碼只能看到模板。必須把“#/”刪去,方可訪問正確的源代碼。然后使用正則表達式找到封面圖片地址,比如:
https://p2.music.126.net/MBNvZcHnmZJn69M1BV5GMA==/109951166216322633.jpg?param=130y130
最后的"?param="是限制圖片大小的,刪去,就得到了原圖。
鍵盤頁
華為手機可能用不了。
鍵盤分為低、中、高配三種。低配為橫過來的列表顯示框,無法改變音的時長;中配為一張鋼琴鍵盤圖,沒有交互效果;高配的每個鋼琴按鍵皆獨立,共47個對象,因此會卡。后兩配請按壓屏幕時間長一點,不然檢測不到松開屏幕事件app使用說明,音符播放不會停止。也許是對象實在太多,高配需要刷新三次,才能顯示正常,因此不建議使用。(為什么要做高配?我當初哪知道手機承受不了啊……本來是只有高配,后來被迫加了另兩個)
本頁大量使用了,UI時常會加載不過來,發現異常重開就行。
圖片素材
按鈕類圖片放在了根目錄je文件夾下的文件夾中,請勿刪除,否則會造成app沒有按鈕。如果不小心刪除其中某個圖片,請刪除全部。因為若沒有檢測到home.png,app就會重新解壓。
“工具”中四個血小板按鈕是我又畫又p的,發在了b站以獲取引用地址,所以沒網加載不了。
啟動圖和icon都和apk一起放在了網盤。啟動圖是拜托社團學姐畫的,icon是描的吧。
apk下載鏈接
鏈接:/s/Iag
提取碼:hiyx