An open API service indexing awesome lists of open source software.

https://github.com/nikaple/auto-chord


https://github.com/nikaple/auto-chord

Last synced: 5 months ago
JSON representation

Awesome Lists containing this project

README

          

# 自动和弦 (Auto Chord)

自动和弦是一个交互式网页应用,允许用户通过键盘按键或按键组合来播放不同的音乐和弦。该应用旨在为音乐学习者、作曲家和音乐爱好者提供一个便捷的和弦演奏工具,帮助他们探索和学习不同的和弦结构。

## 功能特点

- 支持多种和弦类型(三和弦、七和弦、九和弦等)
- 键盘控制和鼠标点击两种操作方式
- 实时显示当前播放的和弦和包含的音符
- 可调整音色、音量和ADSR包络参数
- 现代响应式UI设计
- 支持不同调性的转换和演奏
- 和弦级数(罗马数字)标记功能
- 支持和弦转位显示

## 在线演示

访问 [GitHub Pages 演示](https://nikaple.github.io/auto-chord/) 体验在线版本。

## 技术栈

- Vue 3 + TypeScript - 前端框架
- Web Audio API - 音频处理
- Pinia - 状态管理
- Vite - 构建工具

## 开发设置

### 前提条件

- Node.js (v16.0.0+)
- npm (v8.0.0+)

### 安装依赖

```bash
npm install
```

### 开发环境运行

```bash
npm run dev
```

### 构建生产版本

```bash
npm run build
```

### 运行测试

```bash
npm run test
```

## 部署

项目配置了自动部署到 GitHub Pages 的工作流。当您将代码推送到 `main` 分支时,GitHub Actions 将自动构建并部署到 GitHub Pages。

### 手动部署

1. 构建项目
```bash
npm run build
```

2. 将 `dist` 目录部署到你喜欢的静态网站托管服务

## 使用说明

### 和弦类型切换

使用数字键和 Shift 键组合来切换不同的和弦类型:

| 按键 | 和弦类型 | 按键 | 和弦类型 |
|------|----------|------|----------|
| 1 | 小三和弦 | ⇧+1 | 大三和弦 |
| 2 | sus4和弦 | ⇧+2 | sus2和弦 |
| 3 | 小七和弦 | ⇧+3 | 大七和弦 |
| 4 | 属七和弦 | ⇧+4 | 小大七和弦 |
| 5 | 小六和弦 | ⇧+5 | 大六和弦 |
| 6 | 减三和弦 | ⇧+6 | 增三和弦 |
| 7 | 小九和弦 | ⇧+7 | 大九和弦 |

### 键盘布局

#### 第二排键位 (S-L) 映射到C大调的基础和弦:
- **S D F G H J K L**: 白键,用于演奏基本和弦
- 键位按照钢琴键盘排列,从C到C跨越一个八度

#### 第一排键位 (E/R/Y/U/I) 映射到黑键和弦:
- **E**: C♯/D♭
- **R**: D♯/E♭
- **Y**: F♯/G♭
- **U**: G♯/A♭
- **I**: A♯/B♭

#### 第三排键位 (Z-,) 用于演奏七和弦:
- **Z X C V B N M ,**: 按照白键的排列对应七和弦

### 调性选择功能:
- 使用调性选择下拉菜单选择不同的调性
- 通过升/降半调按钮(♯/♭)快速切换调性
- 当前调性始终显示在界面中
- 键盘上的按键将根据选择的调性自动映射到相应的和弦

### 和弦显示功能:
- 实时显示当前和弦名称和组成音符
- 显示和弦类型(如大三和弦、小七和弦等)
- 显示和弦转位状态
- 在大调音阶中显示和弦级数(罗马数字标记)

## 项目结构

```
src/
├── components/ # Vue 组件
│ ├── ChordDisplay.vue # 和弦显示组件
│ └── Keyboard.vue # 键盘组件
├── composables/ # Vue 组合式函数
│ └── useKeyboardHandler.ts
├── stores/ # Pinia 状态管理
│ └── chordStore.ts
└── utils/ # 工具函数
├── music.ts # 音乐相关工具
└── chordUtils.ts # 和弦工具函数
```

## 贡献指南

欢迎提交 Issue 和 Pull Request。在提交 PR 之前,请确保:

1. 更新测试用例
2. 更新相关文档
3. 遵循现有的代码风格
4. 添加必要的注释

## 许可

ISC License