nginx
tcp/443 tcp/80 tcp/8443
Open service 240e:978:6402::b461:c629:8443 · score01.b-flat.cn
2026-01-24 02:29
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 24 Jan 2026 02:29:44 GMT
Content-Type: text/html
Content-Length: 35647
Connection: close
Last-Modified: Fri, 11 Apr 2025 09:25:56 GMT
ETag: "67f8e024-8b3f"
Accept-Ranges: bytes
Vary: Accept-Encoding
Strict-Transport-Security: max-age=31536000
Ohc-Cache-HIT: suz4ct71 [1], tz2ix104 [1]
Ohc-File-Size: 35647
X-Cache-Status: MISS
Page title: XB's MIDI乐谱播放器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XB's MIDI乐谱播放器</title>
<!-- 加载 midi-parser-js -->
<script src="https://colxi.info/midi-parser-js/src/main.js"></script>
<!-- 加载 p5.js -->
<script src="https://cdn.jsdelivr.net/npm/p5"></script>
<style>
body {
font-family: 'Arial', 'PingFang SC', 'Microsoft YaHei', sans-serif;
margin: 0;
padding: 20px;
background: linear-gradient(135deg, #1e1e2f, #2a2a4a);
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
min-height: 100vh;
}
h1 {
font-size: 2.5em;
text-shadow: 0 0 10px rgba(0, 255, 255, 0.7);
margin-bottom: 20px;
}
.controls {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
}
.divider {
width: 1300px;
height: 2px;
margin: 20px 0;
background: #888888;
border: none;
}
.file-section {
margin: 10px 0;
padding: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-section:last-child {
border-bottom: none;
}
.file-section label {
font-size: 1.1em;
margin-right: 10px;
color: #00d4ff;
display: inline-block;
width: 120px;
}
.file-entry {
display: flex;
align-items: center;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-entry:last-child {
border-bottom: none;
}
.file-entry input[type="file"],
.file-entry input[type="text"] {
flex: 1;
margin-right: 10px;
}
.audio-entry {
display: flex;
align-items: center;
margin: 5px 0;
padding-left: 0;
padding-bottom: 10px;
}
.tape-controls {
margin-top: 20px;
display: flex;
gap: 10px;
justify-content: center;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
input[type="file"], input[type="text"], button {
margin: 0 10px;
padding: 10px;
font-size: 16px;
border: none;
border-radius: 5px;
background: rgba(255, 255, 255, 0.2);
color: #fff;
}
button {
background: #00d4ff;
cursor: pointer;
transition: all 0.3s;
}
button:hover {
background: #00b0cc;
box-shadow: 0 0 10px #00d4ff;
}
.tape-btn {
font-size: 18px;
padding: 8px 12px;
background: #444;
color: #fff;
border-radius: 5px;
}
.tape-btn:hover {
background: #555;
box-shadow: 0 0 5px rgba(255, 255, 255, 0.3);
}
.mute-btn {
width: 24px;
height: 24px;
background: none;
border: none;
cursor: pointer;
margin-left: 10px;
position: relative;
}
.mute-btn svg {
fill: #00d4ff;
transition: fill 0.3s;
position: absolute;
top: 50%;
right: 0;
transform: translate(50%, -50%);
}
.mute-btn.muted svg {
fill: #ff4444;
}
.mute-btn:hover svg {
fill: #00b0cc;
}
.midi-section {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
display: none; /* 生成后再显示 */
}
.score {
position: relative;
margin-bottom: 40px;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
.staff-title {
font-size: 1.2em;
margin-bottom: 10px;
color: #00d4ff;
display: flex;
align-items: center;
position: relative;
}
.offset-controls {
margin-left: auto;
display: flex;
align-items: center;
gap: 6px;
}
.midi-track-container {
overflow-x: auto;
overflow-y: hidden;
Open service 180.97.198.41:80 · score01.b-flat.cn
2026-01-24 02:29
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 24 Jan 2026 02:29:41 GMT
Content-Type: text/html
Content-Length: 35647
Connection: close
Last-Modified: Fri, 11 Apr 2025 09:25:56 GMT
ETag: "67f8e024-8b3f"
Accept-Ranges: bytes
Vary: Accept-Encoding
Strict-Transport-Security: max-age=31536000
Ohc-Cache-HIT: suz4ct50 [1], tz2ix145 [1]
Ohc-File-Size: 35647
X-Cache-Status: MISS
Page title: XB's MIDI乐谱播放器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XB's MIDI乐谱播放器</title>
<!-- 加载 midi-parser-js -->
<script src="https://colxi.info/midi-parser-js/src/main.js"></script>
<!-- 加载 p5.js -->
<script src="https://cdn.jsdelivr.net/npm/p5"></script>
<style>
body {
font-family: 'Arial', 'PingFang SC', 'Microsoft YaHei', sans-serif;
margin: 0;
padding: 20px;
background: linear-gradient(135deg, #1e1e2f, #2a2a4a);
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
min-height: 100vh;
}
h1 {
font-size: 2.5em;
text-shadow: 0 0 10px rgba(0, 255, 255, 0.7);
margin-bottom: 20px;
}
.controls {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
}
.divider {
width: 1300px;
height: 2px;
margin: 20px 0;
background: #888888;
border: none;
}
.file-section {
margin: 10px 0;
padding: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-section:last-child {
border-bottom: none;
}
.file-section label {
font-size: 1.1em;
margin-right: 10px;
color: #00d4ff;
display: inline-block;
width: 120px;
}
.file-entry {
display: flex;
align-items: center;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-entry:last-child {
border-bottom: none;
}
.file-entry input[type="file"],
.file-entry input[type="text"] {
flex: 1;
margin-right: 10px;
}
.audio-entry {
display: flex;
align-items: center;
margin: 5px 0;
padding-left: 0;
padding-bottom: 10px;
}
.tape-controls {
margin-top: 20px;
display: flex;
gap: 10px;
justify-content: center;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
input[type="file"], input[type="text"], button {
margin: 0 10px;
padding: 10px;
font-size: 16px;
border: none;
border-radius: 5px;
background: rgba(255, 255, 255, 0.2);
color: #fff;
}
button {
background: #00d4ff;
cursor: pointer;
transition: all 0.3s;
}
button:hover {
background: #00b0cc;
box-shadow: 0 0 10px #00d4ff;
}
.tape-btn {
font-size: 18px;
padding: 8px 12px;
background: #444;
color: #fff;
border-radius: 5px;
}
.tape-btn:hover {
background: #555;
box-shadow: 0 0 5px rgba(255, 255, 255, 0.3);
}
.mute-btn {
width: 24px;
height: 24px;
background: none;
border: none;
cursor: pointer;
margin-left: 10px;
position: relative;
}
.mute-btn svg {
fill: #00d4ff;
transition: fill 0.3s;
position: absolute;
top: 50%;
right: 0;
transform: translate(50%, -50%);
}
.mute-btn.muted svg {
fill: #ff4444;
}
.mute-btn:hover svg {
fill: #00b0cc;
}
.midi-section {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
display: none; /* 生成后再显示 */
}
.score {
position: relative;
margin-bottom: 40px;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
.staff-title {
font-size: 1.2em;
margin-bottom: 10px;
color: #00d4ff;
display: flex;
align-items: center;
position: relative;
}
.offset-controls {
margin-left: auto;
display: flex;
align-items: center;
gap: 6px;
}
.midi-track-container {
overflow-x: auto;
overflow-y: hidden;
Open service 240e:978:6402::b461:c629:443 · score01.b-flat.cn
2026-01-24 02:29
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 24 Jan 2026 02:29:41 GMT
Content-Type: text/html
Content-Length: 35647
Connection: close
Last-Modified: Fri, 11 Apr 2025 09:25:56 GMT
ETag: "67f8e024-8b3f"
Accept-Ranges: bytes
Vary: Accept-Encoding
Strict-Transport-Security: max-age=31536000
Ohc-Cache-HIT: suz4ct77 [1], tz2ix138 [1]
Ohc-File-Size: 35647
X-Cache-Status: MISS
Page title: XB's MIDI乐谱播放器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XB's MIDI乐谱播放器</title>
<!-- 加载 midi-parser-js -->
<script src="https://colxi.info/midi-parser-js/src/main.js"></script>
<!-- 加载 p5.js -->
<script src="https://cdn.jsdelivr.net/npm/p5"></script>
<style>
body {
font-family: 'Arial', 'PingFang SC', 'Microsoft YaHei', sans-serif;
margin: 0;
padding: 20px;
background: linear-gradient(135deg, #1e1e2f, #2a2a4a);
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
min-height: 100vh;
}
h1 {
font-size: 2.5em;
text-shadow: 0 0 10px rgba(0, 255, 255, 0.7);
margin-bottom: 20px;
}
.controls {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
}
.divider {
width: 1300px;
height: 2px;
margin: 20px 0;
background: #888888;
border: none;
}
.file-section {
margin: 10px 0;
padding: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-section:last-child {
border-bottom: none;
}
.file-section label {
font-size: 1.1em;
margin-right: 10px;
color: #00d4ff;
display: inline-block;
width: 120px;
}
.file-entry {
display: flex;
align-items: center;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-entry:last-child {
border-bottom: none;
}
.file-entry input[type="file"],
.file-entry input[type="text"] {
flex: 1;
margin-right: 10px;
}
.audio-entry {
display: flex;
align-items: center;
margin: 5px 0;
padding-left: 0;
padding-bottom: 10px;
}
.tape-controls {
margin-top: 20px;
display: flex;
gap: 10px;
justify-content: center;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
input[type="file"], input[type="text"], button {
margin: 0 10px;
padding: 10px;
font-size: 16px;
border: none;
border-radius: 5px;
background: rgba(255, 255, 255, 0.2);
color: #fff;
}
button {
background: #00d4ff;
cursor: pointer;
transition: all 0.3s;
}
button:hover {
background: #00b0cc;
box-shadow: 0 0 10px #00d4ff;
}
.tape-btn {
font-size: 18px;
padding: 8px 12px;
background: #444;
color: #fff;
border-radius: 5px;
}
.tape-btn:hover {
background: #555;
box-shadow: 0 0 5px rgba(255, 255, 255, 0.3);
}
.mute-btn {
width: 24px;
height: 24px;
background: none;
border: none;
cursor: pointer;
margin-left: 10px;
position: relative;
}
.mute-btn svg {
fill: #00d4ff;
transition: fill 0.3s;
position: absolute;
top: 50%;
right: 0;
transform: translate(50%, -50%);
}
.mute-btn.muted svg {
fill: #ff4444;
}
.mute-btn:hover svg {
fill: #00b0cc;
}
.midi-section {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
display: none; /* 生成后再显示 */
}
.score {
position: relative;
margin-bottom: 40px;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
.staff-title {
font-size: 1.2em;
margin-bottom: 10px;
color: #00d4ff;
display: flex;
align-items: center;
position: relative;
}
.offset-controls {
margin-left: auto;
display: flex;
align-items: center;
gap: 6px;
}
.midi-track-container {
overflow-x: auto;
overflow-y: hidden;
Open service 240e:978:6402::b461:c629:80 · score01.b-flat.cn
2026-01-24 02:29
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 24 Jan 2026 02:29:41 GMT
Content-Type: text/html
Content-Length: 35647
Connection: close
Last-Modified: Fri, 11 Apr 2025 09:25:56 GMT
ETag: "67f8e024-8b3f"
Accept-Ranges: bytes
Vary: Accept-Encoding
Strict-Transport-Security: max-age=31536000
Ohc-Cache-HIT: suz4ct71 [1], tz2ix104 [1]
Ohc-File-Size: 35647
X-Cache-Status: MISS
Page title: XB's MIDI乐谱播放器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XB's MIDI乐谱播放器</title>
<!-- 加载 midi-parser-js -->
<script src="https://colxi.info/midi-parser-js/src/main.js"></script>
<!-- 加载 p5.js -->
<script src="https://cdn.jsdelivr.net/npm/p5"></script>
<style>
body {
font-family: 'Arial', 'PingFang SC', 'Microsoft YaHei', sans-serif;
margin: 0;
padding: 20px;
background: linear-gradient(135deg, #1e1e2f, #2a2a4a);
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
min-height: 100vh;
}
h1 {
font-size: 2.5em;
text-shadow: 0 0 10px rgba(0, 255, 255, 0.7);
margin-bottom: 20px;
}
.controls {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
}
.divider {
width: 1300px;
height: 2px;
margin: 20px 0;
background: #888888;
border: none;
}
.file-section {
margin: 10px 0;
padding: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-section:last-child {
border-bottom: none;
}
.file-section label {
font-size: 1.1em;
margin-right: 10px;
color: #00d4ff;
display: inline-block;
width: 120px;
}
.file-entry {
display: flex;
align-items: center;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-entry:last-child {
border-bottom: none;
}
.file-entry input[type="file"],
.file-entry input[type="text"] {
flex: 1;
margin-right: 10px;
}
.audio-entry {
display: flex;
align-items: center;
margin: 5px 0;
padding-left: 0;
padding-bottom: 10px;
}
.tape-controls {
margin-top: 20px;
display: flex;
gap: 10px;
justify-content: center;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
input[type="file"], input[type="text"], button {
margin: 0 10px;
padding: 10px;
font-size: 16px;
border: none;
border-radius: 5px;
background: rgba(255, 255, 255, 0.2);
color: #fff;
}
button {
background: #00d4ff;
cursor: pointer;
transition: all 0.3s;
}
button:hover {
background: #00b0cc;
box-shadow: 0 0 10px #00d4ff;
}
.tape-btn {
font-size: 18px;
padding: 8px 12px;
background: #444;
color: #fff;
border-radius: 5px;
}
.tape-btn:hover {
background: #555;
box-shadow: 0 0 5px rgba(255, 255, 255, 0.3);
}
.mute-btn {
width: 24px;
height: 24px;
background: none;
border: none;
cursor: pointer;
margin-left: 10px;
position: relative;
}
.mute-btn svg {
fill: #00d4ff;
transition: fill 0.3s;
position: absolute;
top: 50%;
right: 0;
transform: translate(50%, -50%);
}
.mute-btn.muted svg {
fill: #ff4444;
}
.mute-btn:hover svg {
fill: #00b0cc;
}
.midi-section {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
display: none; /* 生成后再显示 */
}
.score {
position: relative;
margin-bottom: 40px;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
.staff-title {
font-size: 1.2em;
margin-bottom: 10px;
color: #00d4ff;
display: flex;
align-items: center;
position: relative;
}
.offset-controls {
margin-left: auto;
display: flex;
align-items: center;
gap: 6px;
}
.midi-track-container {
overflow-x: auto;
overflow-y: hidden;
Open service 180.97.198.41:8443 · score01.b-flat.cn
2026-01-24 02:29
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 24 Jan 2026 02:29:41 GMT
Content-Type: text/html
Content-Length: 35647
Connection: close
Last-Modified: Fri, 11 Apr 2025 09:25:56 GMT
ETag: "67f8e024-8b3f"
Accept-Ranges: bytes
Vary: Accept-Encoding
Strict-Transport-Security: max-age=31536000
Ohc-Cache-HIT: suz4ct63 [1], tz2ix131 [1]
Ohc-File-Size: 35647
X-Cache-Status: MISS
Page title: XB's MIDI乐谱播放器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XB's MIDI乐谱播放器</title>
<!-- 加载 midi-parser-js -->
<script src="https://colxi.info/midi-parser-js/src/main.js"></script>
<!-- 加载 p5.js -->
<script src="https://cdn.jsdelivr.net/npm/p5"></script>
<style>
body {
font-family: 'Arial', 'PingFang SC', 'Microsoft YaHei', sans-serif;
margin: 0;
padding: 20px;
background: linear-gradient(135deg, #1e1e2f, #2a2a4a);
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
min-height: 100vh;
}
h1 {
font-size: 2.5em;
text-shadow: 0 0 10px rgba(0, 255, 255, 0.7);
margin-bottom: 20px;
}
.controls {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
}
.divider {
width: 1300px;
height: 2px;
margin: 20px 0;
background: #888888;
border: none;
}
.file-section {
margin: 10px 0;
padding: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-section:last-child {
border-bottom: none;
}
.file-section label {
font-size: 1.1em;
margin-right: 10px;
color: #00d4ff;
display: inline-block;
width: 120px;
}
.file-entry {
display: flex;
align-items: center;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-entry:last-child {
border-bottom: none;
}
.file-entry input[type="file"],
.file-entry input[type="text"] {
flex: 1;
margin-right: 10px;
}
.audio-entry {
display: flex;
align-items: center;
margin: 5px 0;
padding-left: 0;
padding-bottom: 10px;
}
.tape-controls {
margin-top: 20px;
display: flex;
gap: 10px;
justify-content: center;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
input[type="file"], input[type="text"], button {
margin: 0 10px;
padding: 10px;
font-size: 16px;
border: none;
border-radius: 5px;
background: rgba(255, 255, 255, 0.2);
color: #fff;
}
button {
background: #00d4ff;
cursor: pointer;
transition: all 0.3s;
}
button:hover {
background: #00b0cc;
box-shadow: 0 0 10px #00d4ff;
}
.tape-btn {
font-size: 18px;
padding: 8px 12px;
background: #444;
color: #fff;
border-radius: 5px;
}
.tape-btn:hover {
background: #555;
box-shadow: 0 0 5px rgba(255, 255, 255, 0.3);
}
.mute-btn {
width: 24px;
height: 24px;
background: none;
border: none;
cursor: pointer;
margin-left: 10px;
position: relative;
}
.mute-btn svg {
fill: #00d4ff;
transition: fill 0.3s;
position: absolute;
top: 50%;
right: 0;
transform: translate(50%, -50%);
}
.mute-btn.muted svg {
fill: #ff4444;
}
.mute-btn:hover svg {
fill: #00b0cc;
}
.midi-section {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
display: none; /* 生成后再显示 */
}
.score {
position: relative;
margin-bottom: 40px;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
.staff-title {
font-size: 1.2em;
margin-bottom: 10px;
color: #00d4ff;
display: flex;
align-items: center;
position: relative;
}
.offset-controls {
margin-left: auto;
display: flex;
align-items: center;
gap: 6px;
}
.midi-track-container {
overflow-x: auto;
overflow-y: hidden;
Open service 180.97.198.41:443 · score01.b-flat.cn
2026-01-24 02:29
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 24 Jan 2026 02:29:41 GMT
Content-Type: text/html
Content-Length: 35647
Connection: close
Last-Modified: Fri, 11 Apr 2025 09:25:56 GMT
ETag: "67f8e024-8b3f"
Accept-Ranges: bytes
Vary: Accept-Encoding
Strict-Transport-Security: max-age=31536000
Ohc-Cache-HIT: suz4ct82 [1], tz2ix129 [1]
Ohc-File-Size: 35647
X-Cache-Status: MISS
Page title: XB's MIDI乐谱播放器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>XB's MIDI乐谱播放器</title>
<!-- 加载 midi-parser-js -->
<script src="https://colxi.info/midi-parser-js/src/main.js"></script>
<!-- 加载 p5.js -->
<script src="https://cdn.jsdelivr.net/npm/p5"></script>
<style>
body {
font-family: 'Arial', 'PingFang SC', 'Microsoft YaHei', sans-serif;
margin: 0;
padding: 20px;
background: linear-gradient(135deg, #1e1e2f, #2a2a4a);
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
min-height: 100vh;
}
h1 {
font-size: 2.5em;
text-shadow: 0 0 10px rgba(0, 255, 255, 0.7);
margin-bottom: 20px;
}
.controls {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
}
.divider {
width: 1300px;
height: 2px;
margin: 20px 0;
background: #888888;
border: none;
}
.file-section {
margin: 10px 0;
padding: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-section:last-child {
border-bottom: none;
}
.file-section label {
font-size: 1.1em;
margin-right: 10px;
color: #00d4ff;
display: inline-block;
width: 120px;
}
.file-entry {
display: flex;
align-items: center;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.file-entry:last-child {
border-bottom: none;
}
.file-entry input[type="file"],
.file-entry input[type="text"] {
flex: 1;
margin-right: 10px;
}
.audio-entry {
display: flex;
align-items: center;
margin: 5px 0;
padding-left: 0;
padding-bottom: 10px;
}
.tape-controls {
margin-top: 20px;
display: flex;
gap: 10px;
justify-content: center;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
input[type="file"], input[type="text"], button {
margin: 0 10px;
padding: 10px;
font-size: 16px;
border: none;
border-radius: 5px;
background: rgba(255, 255, 255, 0.2);
color: #fff;
}
button {
background: #00d4ff;
cursor: pointer;
transition: all 0.3s;
}
button:hover {
background: #00b0cc;
box-shadow: 0 0 10px #00d4ff;
}
.tape-btn {
font-size: 18px;
padding: 8px 12px;
background: #444;
color: #fff;
border-radius: 5px;
}
.tape-btn:hover {
background: #555;
box-shadow: 0 0 5px rgba(255, 255, 255, 0.3);
}
.mute-btn {
width: 24px;
height: 24px;
background: none;
border: none;
cursor: pointer;
margin-left: 10px;
position: relative;
}
.mute-btn svg {
fill: #00d4ff;
transition: fill 0.3s;
position: absolute;
top: 50%;
right: 0;
transform: translate(50%, -50%);
}
.mute-btn.muted svg {
fill: #ff4444;
}
.mute-btn:hover svg {
fill: #00b0cc;
}
.midi-section {
background: rgba(255, 255, 255, 0.1);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
margin-bottom: 20px;
width: 100%;
max-width: 1200px;
display: none; /* 生成后再显示 */
}
.score {
position: relative;
margin-bottom: 40px;
background: rgba(255, 255, 255, 0.05);
padding: 10px;
border-radius: 5px;
}
.staff-title {
font-size: 1.2em;
margin-bottom: 10px;
color: #00d4ff;
display: flex;
align-items: center;
position: relative;
}
.offset-controls {
margin-left: auto;
display: flex;
align-items: center;
gap: 6px;
}
.midi-track-container {
overflow-x: auto;
overflow-y: hidden;