Flutter和弦转调插件chord_transposer的使用
Flutter和弦转调插件chord_transposer的使用
特性
- 将和弦从一个键转到另一个键
- 将和弦向上或向下半音转调
- 在歌词中找到和弦并将其转到另一个键
- 在歌词中找到和弦并将其向上或向下半音转调
使用方法
首先初始化ChordTransposer
:
final transposer = ChordTransposer();
转调和弦
将单个和弦从一个键转到另一个键:
transposer.chordToKey(chord: 'D/F#', fromKey: 'A', toKey: 'G'); // => C/E
将多个和弦从一个键转到另一个键。如果未指定fromKey
,它将使用列表中的第一个和弦:
transposer.chordsToKey(chords: ['C', 'F', 'Am', 'G7', 'Bdim'], toKey: 'E'); // => [E, A, C#m, B7, D#dim]
将单个和弦向上或向下半音转调:
transposer.chordUp(chord: 'D', semitones: 5); // => G
transposer.chordDown(chord: 'Bb', semitones: 2); // => Ab
将多个和弦向上或向下半音转调:
transposer.chordsUp(chords: ['D','Aadd9'], semitones: 4); // => [Gb, Dbadd9]
transposer.chordsDown(chords: ['Bb7/D', 'Eb'], semitones: 6); // => [E7/G#, A]
转调歌词
final lyrics = '''
[C]Twinkle, twinkle [F]little [C]star.
[F]How I [C]wonder [G7]what you [C]are.
''';
将歌词从一个键转到另一个键。如果未指定fromKey
,它将使用歌词中的第一个和弦。当ignoreInvalids
设置为true
(默认值)时,它将忽略所有无效的和弦。当设置为false
时,如果存在无效的和弦,它将抛出错误:
transposer.lyricsToKey(lyrics: lyrics, fromKey: 'C', toKey: 'G'); // =>
// [G]Twinkle, twinkle [C]little [G]star.
// [C]How I [G]wonder [D7]what you [G]are.
将歌词向上或向下半音转调:
transposer.lyricsUp(lyrics: lyrics, semitones: 5); // =>
// [F]Twinkle, twinkle [A]little [F]star.
// [Bb]How I [F]wonder [C7]what you [F]are.
transposer.lyricsDown(lyrics: lyrics, semitones: 3); // =>
// [A]Twinkle, twinkle [D]little [A]star.
// [D]How I [A]wonder [E7]what you [A]are.
其他信息
此包旨在与paurakhsharma的flutter_chord包一起使用,并且受到了ddycai的chord-transposer npm包的启发。
完整示例
import 'package:chord_transposer/chord_transposer.dart';
void main() {
// 初始化ChordTransposer。
final transposer = ChordTransposer();
// 将和弦D/F#从键A转到键G。
print(
transposer.chordToKey(chord: 'D/F#', fromKey: 'A', toKey: 'G')); // => C/E
// 将和弦C、F、Am、G7和Bdim从键C转到键E。
print(transposer.chordsToKey(
chords: ['C', 'F', 'Am', 'G7', 'Bdim'],
toKey: 'E')); // => [E, A, C#m, B7, D#dim]
// 将和弦D向上5个半音。
print(transposer.chordUp(chord: 'D', semitones: 5)); // => G
// 将和弦Bb向下2个半音。
print(transposer.chordDown(chord: 'Bb', semitones: 2)); // => Ab
// 将和弦D和Aadd9向上4个半音。
print(transposer
.chordsUp(chords: ['D', 'Aadd9'], semitones: 4)); // => [Gb, Dbadd9]
// 将和弦Bb7/D和Eb向下6个半音。
print(transposer
.chordsDown(chords: ['Bb7/D', 'Eb'], semitones: 6)); // => [E7/G#, A]
final lyrics = '''
[C]Twinkle, twinkle [F]little [C]star.
[F]How I [C]wonder [G7]what you [C]are.
''';
// 将歌词从键C转到键G。
print(transposer.lyricsToKey(lyrics: lyrics, fromKey: 'C', toKey: 'G')); // =>
// [G]Twinkle, twinkle [C]little [G]star.
// [C]How I [G]wonder [D7]what you [G]are.
// 将歌词向上5个半音。
print(transposer.lyricsUp(lyrics: lyrics, semitones: 5)); // =>
// [F]Twinkle, twinkle [A]little [F]star.
// [Bb]How I [F]wonder [C7]what you [F]are.
// 将歌词向下3个半音。
print(transposer.lyricsDown(lyrics: lyrics, semitones: 3)); // =>
// [A]Twinkle, twinkle [D]little [A]star.
// [D]How I [A]wonder [E7]what you [A]are.
}
更多关于Flutter和弦转调插件chord_transposer的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter和弦转调插件chord_transposer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用chord_transposer
插件的示例代码。这个插件可以帮助你实现和弦转调的功能。
首先,你需要在你的pubspec.yaml
文件中添加chord_transposer
依赖:
dependencies:
flutter:
sdk: flutter
chord_transposer: ^最新版本号 # 请替换为最新的版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter应用中使用ChordTransposer
类来进行和弦转调。以下是一个简单的示例代码,展示如何使用这个插件:
import 'package:flutter/material.dart';
import 'package:chord_transposer/chord_transposer.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Chord Transposer Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: ChordTransposerDemo(),
);
}
}
class ChordTransposerDemo extends StatefulWidget {
@override
_ChordTransposerDemoState createState() => _ChordTransposerDemoState();
}
class _ChordTransposerDemoState extends State<ChordTransposerDemo> {
final ChordTransposer chordTransposer = ChordTransposer();
String originalChord = "C";
int transposeInterval = 4; // 例如,向上转调4个半音步
String transposedChord = "";
void _transposeChord() {
transposedChord = chordTransposer.transpose(originalChord, transposeInterval);
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Chord Transposer Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
TextField(
decoration: InputDecoration(labelText: 'Original Chord'),
onChanged: (value) {
setState(() {
originalChord = value;
});
},
),
SizedBox(height: 16),
Slider(
value: transposeInterval.toDouble(),
min: -12.0,
max: 12.0,
divisions: 24,
onChanged: (value) {
setState(() {
transposeInterval = value.toInt();
});
},
onChangeEnd: (value) {
_transposeChord();
},
),
SizedBox(height: 16),
Text('Transposed Chord: $transposedChord'),
SizedBox(height: 16),
ElevatedButton(
onPressed: _transposeChord,
child: Text('Transpose'),
),
],
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,用户可以输入一个原始和弦(例如"C"),然后通过滑动条选择一个转调区间(例如向上转调4个半音步),点击“Transpose”按钮或者滑动条结束时,应用会自动计算并显示转调后的和弦。
注意:ChordTransposer
类的transpose
方法接受两个参数:原始和弦字符串和转调区间(整数),返回转调后的和弦字符串。
请确保你使用的chord_transposer
插件版本与代码示例兼容,并根据需要调整代码。