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

1 回复

更多关于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插件版本与代码示例兼容,并根据需要调整代码。

回到顶部