aud_midi_android 0.1.1 copy "aud_midi_android: ^0.1.1" to clipboard
aud_midi_android: ^0.1.1 copied to clipboard

PlatformAndroid

Android backend for aud_midi: android.media.midi via JNI, AMidi via FFI

example/lib/main.dart

// @license
// Copyright (c) Audanika
//
// Use of this source code is governed by terms that can be
// found in the LICENSE file in the root of this package.

import 'dart:isolate';

import 'package:flutter/material.dart';

import 'loopback_report.dart';

/// Runs the loopback checks of aud_midi_android in a background isolate and
/// shows the report; every line also goes to logcat, tagged
/// `AUD_MIDI_REPORT`.
void main() => runApp(const LoopbackApp());

/// The app that shows the report.
class LoopbackApp extends StatefulWidget {
  /// Creates the app.
  const LoopbackApp({super.key});

  @override
  State<LoopbackApp> createState() => _LoopbackAppState();
}

class _LoopbackAppState extends State<LoopbackApp> {
  List<String> _report = const [];

  @override
  void initState() {
    super.initState();
    _run();
  }

  Future<void> _run() async {
    final lines = ReceivePort();
    debugPrint('AUD_MIDI_REPORT begin');
    await Isolate.spawn(_reportInIsolate, lines.sendPort);
    await for (final line in lines) {
      if (line == _done) break;
      debugPrint('AUD_MIDI_REPORT $line');
      if (mounted) setState(() => _report = [..._report, '$line']);
    }
    lines.close();
    debugPrint('AUD_MIDI_REPORT end');
  }

  static const _done = '<done>';

  static Future<void> _reportInIsolate(SendPort lines) async {
    try {
      await runLoopbackReport(log: lines.send);
    } on Object catch (error, stack) {
      lines
        ..send('isolate failed: $error')
        ..send('$stack');
    }
    lines.send(_done);
    Isolate.exit();
  }

  @override
  Widget build(BuildContext context) => MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: const Text('aud_midi_android loopback')),
      body: ListView(
        padding: const EdgeInsets.all(12),
        children: [
          for (final line in _report)
            Text(line, style: const TextStyle(fontFamily: 'monospace')),
        ],
      ),
    ),
  );
}
0
likes
160
points
410
downloads

Documentation

API reference

Publisher

verified publisheraudanika.com

Weekly Downloads

Android backend for aud_midi: android.media.midi via JNI, AMidi via FFI

Repository (GitHub)
View/report issues

Topics

#midi #audio #music

License

MIT (license)

Dependencies

aud_midi_core, aud_midi_standard, ffi, jni

More

Packages that depend on aud_midi_android

Packages that implement aud_midi_android