Showing preview only (3,768K chars total). Download the full file or copy to clipboard to get everything.
Repository: tuntorius/mightier_amp
Branch: main
Commit: e05b6d06fadc
Files: 560
Total size: 3.5 MB
Directory structure:
gitextract_4w2zv_vh/
├── .firebaserc
├── .github/
│ └── FUNDING.yml
├── .gitignore
├── .metadata
├── .vscode/
│ ├── launch.json
│ └── settings.json
├── LICENSE.md
├── PRIVACY_POLICY.md
├── README.md
├── analysis_options.yaml
├── android/
│ ├── .gitignore
│ ├── app/
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── debug/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── strings.xml
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── tuntori/
│ │ │ │ └── mightieramp/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ └── launcher_icon.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── profile/
│ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── gradle/
│ │ └── wrapper/
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── settings.gradle
│ └── settings_aar.gradle
├── fastlane/
│ └── metadata/
│ └── android/
│ └── en-US/
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
├── firebase.json
├── ios/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ └── LaunchImage.imageset/
│ │ │ ├── Contents.json
│ │ │ └── README.md
│ │ ├── Base.lproj/
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ └── Runner.xcworkspace/
│ ├── contents.xcworkspacedata
│ └── xcshareddata/
│ ├── IDEWorkspaceChecks.plist
│ └── WorkspaceSettings.xcsettings
├── lib/
│ ├── UI/
│ │ ├── mainTabs.dart
│ │ ├── mightierIcons.dart
│ │ ├── pages/
│ │ │ ├── DebugConsolePage.dart
│ │ │ ├── calibration.dart
│ │ │ ├── developerPage.dart
│ │ │ ├── device_specific_settings/
│ │ │ │ ├── LiteMk2Settings.dart
│ │ │ │ ├── PlugAirSettings.dart
│ │ │ │ ├── PlugAirUsbSettings.dart
│ │ │ │ ├── PlugProMicSettings.dart
│ │ │ │ ├── PlugProSettings.dart
│ │ │ │ ├── PlugProUsbSettings.dart
│ │ │ │ └── eq/
│ │ │ │ ├── MightySpaceSpeakerEQ.dart
│ │ │ │ ├── PlugProEQSettings.dart
│ │ │ │ ├── bt_audio_options.dart
│ │ │ │ └── eq_group.dart
│ │ │ ├── drum_editor/
│ │ │ │ ├── DrumStyleBottomSheet.dart
│ │ │ │ ├── drumEditor.dart
│ │ │ │ ├── drum_eq_bottom_sheet.dart
│ │ │ │ ├── drumstyle_scroll_picker.dart
│ │ │ │ ├── looperPage.dart
│ │ │ │ ├── tap_buttons.dart
│ │ │ │ └── tempoTrainerSheet.dart
│ │ │ ├── drumsPage.dart
│ │ │ ├── hotkeysMainPage.dart
│ │ │ ├── hotkeysSetup.dart
│ │ │ ├── jamTracks.dart
│ │ │ ├── midiControllers.dart
│ │ │ ├── mighty_patches_importer.dart
│ │ │ ├── presetEditor.dart
│ │ │ ├── settings.dart
│ │ │ ├── settings_advanced.dart
│ │ │ └── tunerPage.dart
│ │ ├── popups/
│ │ │ ├── alertDialogs.dart
│ │ │ ├── changeCategory.dart
│ │ │ ├── exportQRCode.dart
│ │ │ ├── hotkeyInput.dart
│ │ │ ├── midiControlInfo.dart
│ │ │ ├── savePreset.dart
│ │ │ ├── selectPreset.dart
│ │ │ └── selectTrack.dart
│ │ ├── theme.dart
│ │ ├── toneshare/
│ │ │ ├── cloud_authentication.dart
│ │ │ ├── cloud_login.dart
│ │ │ ├── cloud_signup.dart
│ │ │ ├── share_preset.dart
│ │ │ ├── toneshare_home.dart
│ │ │ └── toneshare_main.dart
│ │ ├── utils.dart
│ │ └── widgets/
│ │ ├── MidiDeviceTile.dart
│ │ ├── ModeControl.dart
│ │ ├── NuxAppBar.dart
│ │ ├── VolumeDrawer.dart
│ │ ├── app_drawer.dart
│ │ ├── bottomBar.dart
│ │ ├── circular_button.dart
│ │ ├── common/
│ │ │ ├── blinkWidget.dart
│ │ │ ├── customPopupMenu.dart
│ │ │ ├── modeControlRegular.dart
│ │ │ ├── nestedWillPopScope.dart
│ │ │ ├── numberPicker.dart
│ │ │ ├── rounded_icon_button.dart
│ │ │ └── searchTextField.dart
│ │ ├── deviceList.dart
│ │ ├── fabMenu.dart
│ │ ├── hold_to_repeat.dart
│ │ ├── presets/
│ │ │ ├── EffectChainBar.dart
│ │ │ ├── EffectChainButton.dart
│ │ │ ├── channelSelector.dart
│ │ │ ├── effectEditor.dart
│ │ │ ├── effectEditors/
│ │ │ │ ├── EqualizerEditor.dart
│ │ │ │ └── SlidersEditor.dart
│ │ │ ├── effectSelector.dart
│ │ │ ├── preset_list/
│ │ │ │ ├── presetEffectPreview.dart
│ │ │ │ ├── presetItem.dart
│ │ │ │ ├── presetList.dart
│ │ │ │ ├── presetListMethods.dart
│ │ │ │ ├── preset_widget.dart
│ │ │ │ └── presets_popup_menus.dart
│ │ │ └── trackEventsBlockInfo.dart
│ │ ├── rounded_icon_button.dart
│ │ ├── scrollParent.dart
│ │ ├── scrollPicker.dart
│ │ ├── search_field.dart
│ │ ├── thickRangeSlider.dart
│ │ ├── thickSlider.dart
│ │ └── verticalThickSlider.dart
│ ├── audio/
│ │ ├── audioEditor.dart
│ │ ├── automationController.dart
│ │ ├── models/
│ │ │ ├── jamTrack.dart
│ │ │ ├── setlist.dart
│ │ │ ├── trackAutomation.dart
│ │ │ └── waveform_data.dart
│ │ ├── online_sources/
│ │ │ ├── YoutubeSource.dart
│ │ │ ├── backingTracksCoSource.dart
│ │ │ ├── guitarBackingTracksSource.dart
│ │ │ ├── onlineSource.dart
│ │ │ ├── onlineTrack.dart
│ │ │ └── sourceResolver.dart
│ │ ├── setlistPage.dart
│ │ ├── setlist_player/
│ │ │ └── setlistPlayerState.dart
│ │ ├── setlistsPage.dart
│ │ ├── trackdata/
│ │ │ └── trackData.dart
│ │ ├── tracksPage.dart
│ │ └── widgets/
│ │ ├── eventEditor.dart
│ │ ├── jamtracksView.dart
│ │ ├── loopPanel.dart
│ │ ├── media_library/
│ │ │ ├── albumTracks.dart
│ │ │ ├── artistAlbums.dart
│ │ │ └── media_browse.dart
│ │ ├── online_source/
│ │ │ ├── online_source.dart
│ │ │ └── search_screen.dart
│ │ ├── painted_waveform.dart
│ │ ├── presetsPanel.dart
│ │ ├── setlistPlayer.dart
│ │ ├── speedPanel.dart
│ │ └── waveform_painter.dart
│ ├── bluetooth/
│ │ ├── NuxDeviceControl.dart
│ │ ├── bleMidiHandler.dart
│ │ ├── ble_controllers/
│ │ │ ├── BLEController.dart
│ │ │ ├── DummyBLEController.dart
│ │ │ ├── FlutterBluePluginController.dart
│ │ │ ├── FlutterBluePlusController.dart
│ │ │ ├── FlutterReactiveBle.dart
│ │ │ ├── MightyBle.dart
│ │ │ ├── QuickBlueController.dart
│ │ │ ├── WebBleController.dart
│ │ │ └── WinBleController.dart
│ │ └── devices/
│ │ ├── NuxConstants.dart
│ │ ├── NuxDevice.dart
│ │ ├── NuxFXID.dart
│ │ ├── NuxMighty2040BT.dart
│ │ ├── NuxMighty8BT.dart
│ │ ├── NuxMighty8BTMk2.dart
│ │ ├── NuxMightyLite.dart
│ │ ├── NuxMightyLiteMk2.dart
│ │ ├── NuxMightyPlugAir.dart
│ │ ├── NuxMightyPlugPro.dart
│ │ ├── NuxMightySpace.dart
│ │ ├── NuxReorderableDevice.dart
│ │ ├── communication/
│ │ │ ├── communication.dart
│ │ │ ├── liteCommunication.dart
│ │ │ ├── liteMk2Communication.dart
│ │ │ ├── plugAirCommunication.dart
│ │ │ └── plugProCommunication.dart
│ │ ├── device_data/
│ │ │ ├── drumstyles.dart
│ │ │ └── processors_list.dart
│ │ ├── effects/
│ │ │ ├── MidiControllerHandles.dart
│ │ │ ├── NoiseGate.dart
│ │ │ ├── Processor.dart
│ │ │ ├── lite/
│ │ │ │ ├── Ambience.dart
│ │ │ │ ├── Amps.dart
│ │ │ │ └── Modulation.dart
│ │ │ ├── liteMk2/
│ │ │ │ ├── delay.dart
│ │ │ │ ├── efx.dart
│ │ │ │ ├── modulation.dart
│ │ │ │ └── reverb.dart
│ │ │ ├── mighty_2040bt/
│ │ │ │ ├── Amps.dart
│ │ │ │ ├── Delay.dart
│ │ │ │ ├── Modulation.dart
│ │ │ │ └── Reverb.dart
│ │ │ ├── mighty_8bt/
│ │ │ │ ├── Amps.dart
│ │ │ │ ├── Delay.dart
│ │ │ │ ├── Modulation.dart
│ │ │ │ └── Reverb.dart
│ │ │ ├── plug_air/
│ │ │ │ ├── Amps.dart
│ │ │ │ ├── Ampsv2.dart
│ │ │ │ ├── Cabinet.dart
│ │ │ │ ├── Delay.dart
│ │ │ │ ├── EFX.dart
│ │ │ │ ├── EFXv2.dart
│ │ │ │ ├── Modulation.dart
│ │ │ │ └── Reverb.dart
│ │ │ └── plug_pro/
│ │ │ ├── Amps.dart
│ │ │ ├── Cabinet.dart
│ │ │ ├── Compressor.dart
│ │ │ ├── Delay.dart
│ │ │ ├── EFX.dart
│ │ │ ├── EQ.dart
│ │ │ ├── EmptyEffects.dart
│ │ │ ├── Modulation.dart
│ │ │ └── Reverb.dart
│ │ ├── features/
│ │ │ ├── drumsTone.dart
│ │ │ ├── looper.dart
│ │ │ ├── proUsbSettings.dart
│ │ │ └── tuner.dart
│ │ ├── presets/
│ │ │ ├── Mighty8BTPreset.dart
│ │ │ ├── MightyLitePreset.dart
│ │ │ ├── MightyMk2Preset.dart
│ │ │ ├── MightyXXBTPreset.dart
│ │ │ ├── PlugAirPreset.dart
│ │ │ ├── PlugProPreset.dart
│ │ │ ├── Preset.dart
│ │ │ └── preset_constants.dart
│ │ └── value_formatters/
│ │ ├── DecibelFormatter.dart
│ │ ├── FrequencyFormatter.dart
│ │ ├── PercentageFormatter.dart
│ │ ├── SwitchFormatters.dart
│ │ ├── TempoFormatter.dart
│ │ └── ValueFormatter.dart
│ ├── main.dart
│ ├── midi/
│ │ ├── BleMidiManager.dart
│ │ ├── ControllerConstants.dart
│ │ ├── MidiControllerManager.dart
│ │ ├── UsbMidiManager.dart
│ │ └── controllers/
│ │ ├── BleMidiController.dart
│ │ ├── ControllerHotkey.dart
│ │ ├── HidController.dart
│ │ ├── MidiController.dart
│ │ └── UsbMidiController.dart
│ ├── modules/
│ │ ├── cloud/
│ │ │ ├── cloudManager.dart
│ │ │ ├── cloudStorageListener.dart
│ │ │ ├── customAuthStore.dart
│ │ │ └── presetEncoder.dart
│ │ └── tempo_trainer.dart
│ ├── platform/
│ │ ├── fileSaver.dart
│ │ ├── platformUtils.dart
│ │ ├── presetStorageListener.dart
│ │ ├── presetsStorage.dart
│ │ └── simpleSharedPrefs.dart
│ └── utilities/
│ ├── DelayTapTimer.dart
│ ├── MathEx.dart
│ ├── list_extenstions.dart
│ └── string_extensions.dart
├── linux/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter/
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ ├── main.cc
│ ├── my_application.cc
│ └── my_application.h
├── mightieramp.code-workspace
├── plugins/
│ ├── audio_picker/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── app/
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── GeneratedPluginRegistrant.java
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── audio_picker/
│ │ │ │ └── audio_picker/
│ │ │ │ └── FileUtils.java
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── audio_picker/
│ │ │ └── audio_picker/
│ │ │ └── AudioPickerPlugin.kt
│ │ ├── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ ├── AudioPickerPlugin.h
│ │ │ │ ├── AudioPickerPlugin.m
│ │ │ │ └── SwiftAudioPickerPlugin.swift
│ │ │ └── audio_picker.podspec
│ │ ├── lib/
│ │ │ └── audio_picker.dart
│ │ └── pubspec.yaml
│ ├── audio_waveform/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── tuntori/
│ │ │ └── audio_waveform/
│ │ │ ├── AudioWaveformPlugin.java
│ │ │ ├── SimpleEncoder.java
│ │ │ └── WaveformExtractor.java
│ │ ├── darwin/
│ │ │ ├── .gitignore
│ │ │ └── Classes/
│ │ │ └── AudioWaveformPlugin.m
│ │ ├── ios/
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ ├── AudioWaveformPlugin.h
│ │ │ │ ├── AudioWaveformPlugin.m
│ │ │ │ ├── SwiftWaveformPlugin.swift
│ │ │ │ └── WaveformExtractor.swift
│ │ │ └── audio_waveform.podspec
│ │ ├── lib/
│ │ │ └── audio_waveform.dart
│ │ ├── macos/
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ └── AudioWaveformPlugin.h
│ │ │ └── audio_waveform.podspec
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── audio_waveform_test.dart
│ ├── drag_and_drop_list/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── drag_and_drop_builder_parameters.dart
│ │ │ ├── drag_and_drop_interface.dart
│ │ │ ├── drag_and_drop_item.dart
│ │ │ ├── drag_and_drop_item_target.dart
│ │ │ ├── drag_and_drop_item_wrapper.dart
│ │ │ ├── drag_and_drop_list.dart
│ │ │ ├── drag_and_drop_list_expansion.dart
│ │ │ ├── drag_and_drop_list_interface.dart
│ │ │ ├── drag_and_drop_list_target.dart
│ │ │ ├── drag_and_drop_list_wrapper.dart
│ │ │ ├── drag_and_drop_lists.dart
│ │ │ ├── drag_handle.dart
│ │ │ ├── measure_size.dart
│ │ │ └── programmatic_expansion_tile.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── drag_and_drop_lists_test.dart
│ ├── file_picker/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── file_picker/
│ │ │ └── FilePickerPlugin.kt
│ │ ├── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ ├── FilePickerPlugin.h
│ │ │ │ ├── FilePickerPlugin.m
│ │ │ │ └── SwiftFilePickerPlugin.swift
│ │ │ └── file_picker.podspec
│ │ ├── lib/
│ │ │ ├── file_picker.dart
│ │ │ ├── file_picker_method_channel.dart
│ │ │ └── file_picker_platform_interface.dart
│ │ └── pubspec.yaml
│ ├── flutter_blue_plus/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── android/
│ │ │ ├── build.gradle
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── boskokg/
│ │ │ └── flutter_blue_plus/
│ │ │ ├── AdvertisementParser.java
│ │ │ ├── FlutterBluePlusPlugin.java
│ │ │ └── ProtoMaker.java
│ │ ├── ios/
│ │ │ ├── Classes/
│ │ │ │ ├── FlutterBluePlusPlugin.h
│ │ │ │ └── FlutterBluePlusPlugin.m
│ │ │ ├── flutter_blue_plus.podspec
│ │ │ └── gen/
│ │ │ ├── Flutterblueplus.pbobjc.h
│ │ │ └── Flutterblueplus.pbobjc.m
│ │ ├── lib/
│ │ │ ├── flutter_blue_plus.dart
│ │ │ ├── gen/
│ │ │ │ ├── flutterblueplus.pb.dart
│ │ │ │ ├── flutterblueplus.pbenum.dart
│ │ │ │ ├── flutterblueplus.pbjson.dart
│ │ │ │ └── flutterblueplus.pbserver.dart
│ │ │ └── src/
│ │ │ ├── bluetooth_characteristic.dart
│ │ │ ├── bluetooth_descriptor.dart
│ │ │ ├── bluetooth_device.dart
│ │ │ ├── bluetooth_service.dart
│ │ │ ├── flutter_blue_plus.dart
│ │ │ └── guid.dart
│ │ ├── protos/
│ │ │ ├── flutterblueplus.proto
│ │ │ └── regenerate.md
│ │ └── pubspec.yaml
│ ├── flutter_midi_command/
│ │ ├── flutter_midi_command-0.3.7/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ └── src/
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ └── GeneratedPluginRegistrant.java
│ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ └── com/
│ │ │ │ │ │ │ └── invisiblewrench/
│ │ │ │ │ │ │ └── flutter_midi_command/
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ └── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── invisiblewrench/
│ │ │ │ └── fluttermidicommand/
│ │ │ │ └── FlutterMidiCommandPlugin.kt
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Assets/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── FlutterMidiCommandPlugin.h
│ │ │ │ │ ├── FlutterMidiCommandPlugin.m
│ │ │ │ │ └── SwiftFlutterMidiCommandPlugin.swift
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ └── Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── README.md
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ └── flutter_midi_command.podspec
│ │ │ ├── lib/
│ │ │ │ ├── flutter_midi_command.dart
│ │ │ │ ├── flutter_midi_command_linux_stub.dart
│ │ │ │ └── flutter_midi_command_messages.dart
│ │ │ ├── macos/
│ │ │ │ ├── Classes/
│ │ │ │ │ └── SwiftFlutterMidiCommandPlugin.swift
│ │ │ │ └── flutter_midi_command.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── flutter_midi_command_test.dart
│ │ ├── flutter_midi_command_linux-0.1.3/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── .vscode/
│ │ │ │ ├── c_cpp_properties.json
│ │ │ │ ├── launch.json
│ │ │ │ └── settings.json
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── alsa_generated_bindings.dart
│ │ │ │ └── flutter_midi_command_linux.dart
│ │ │ ├── linux/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ ├── generated_plugin_registrant.cc
│ │ │ │ │ ├── generated_plugin_registrant.h
│ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ ├── flutter_midi_command_linux_plugin.cc
│ │ │ │ └── include/
│ │ │ │ └── flutter_midi_command_linux/
│ │ │ │ └── flutter_midi_command_linux_plugin.h
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── flutter_midi_command_linux_test.dart
│ │ └── flutter_midi_command_platform_interface-0.3.3/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── flutter_midi_command_platform_interface.dart
│ │ │ ├── method_channel_midi_command.dart
│ │ │ ├── midi_device.dart
│ │ │ ├── midi_packet.dart
│ │ │ └── midi_port.dart
│ │ └── pubspec.yaml
│ ├── mighty_ble/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── tuntori/
│ │ │ └── mighty_ble/
│ │ │ ├── BLEManager.java
│ │ │ └── MightyBlePlugin.java
│ │ ├── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ ├── MightyBlePlugin.h
│ │ │ │ ├── MightyBlePlugin.m
│ │ │ │ └── SwiftMightyBlePlugin.swift
│ │ │ └── mighty_ble.podspec
│ │ ├── lib/
│ │ │ ├── mighty_ble.dart
│ │ │ ├── mighty_ble_method_channel.dart
│ │ │ └── mighty_ble_platform_interface.dart
│ │ └── pubspec.yaml
│ └── qr_utils-0.1.5/
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── android/
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── gradle.properties
│ │ ├── settings.gradle
│ │ └── src/
│ │ └── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── aeologic/
│ │ │ └── adhoc/
│ │ │ └── qr_utils/
│ │ │ ├── QrUtilsPlugin.java
│ │ │ ├── activity/
│ │ │ │ └── QRScannerActivity.java
│ │ │ └── utils/
│ │ │ └── Utility.java
│ │ └── res/
│ │ ├── drawable/
│ │ │ ├── ic_flash_active.xml
│ │ │ ├── ic_flash_inactive.xml
│ │ │ └── ic_shape_circle.xml
│ │ ├── layout/
│ │ │ └── activity_qr_scanner.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── xml/
│ │ └── provider_paths.xml
│ ├── ios/
│ │ ├── .gitignore
│ │ ├── Assets/
│ │ │ └── .gitkeep
│ │ ├── Classes/
│ │ │ ├── QrUtilsPlugin.h
│ │ │ ├── QrUtilsPlugin.m
│ │ │ ├── SwiftQRScanner.swift
│ │ │ └── SwiftQrUtilsPlugin.swift
│ │ └── qr_utils.podspec
│ ├── lib/
│ │ └── qr_utils.dart
│ └── pubspec.yaml
├── pubspec.yaml
├── web/
│ ├── index.html
│ └── manifest.json
└── windows/
├── .gitignore
├── CMakeLists.txt
├── flutter/
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
└── runner/
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .firebaserc
================================================
{
"projects": {
"default": "mightier-amp"
},
"targets": {
"mightieramp": {
"hosting": {
"mightieramp": [
"mightieramp"
]
}
},
"mightier-amp": {
"hosting": {
"mightieramp": [
"mightieramp"
]
}
}
},
"etags": {}
}
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: tuntori
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ["https://www.paypal.com/donate?hosted_button_id=FZWWAM4NUFRPC"]
================================================
FILE: .gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
just_audio/
#ignore sign key
/android/key.properties
#ignore api keys and similar
/lib/configKeys.dart
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
build/
# Web related
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
.firebase/
================================================
FILE: .metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
version:
revision: e99c9c7cd9f6c0b2f8ae6e3ebfd585239f5568f4
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: e99c9c7cd9f6c0b2f8ae6e3ebfd585239f5568f4
base_revision: e99c9c7cd9f6c0b2f8ae6e3ebfd585239f5568f4
- platform: linux
create_revision: e99c9c7cd9f6c0b2f8ae6e3ebfd585239f5568f4
base_revision: e99c9c7cd9f6c0b2f8ae6e3ebfd585239f5568f4
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'
================================================
FILE: .vscode/launch.json
================================================
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Mightier Amp",
"request": "launch",
"type": "dart",
"program": "lib/main.dart"
},
{
"name": "Mightier Amp Profile",
"request": "launch",
"type": "dart",
"program": "lib/main.dart",
"flutterMode": "profile"
}
]
}
================================================
FILE: .vscode/settings.json
================================================
{
"cmake.configureOnOpen": false,
}
================================================
FILE: LICENSE.md
================================================
MIT License
Copyright (c) 2020-2021 Dian Iliev (Tuntorius)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: PRIVACY_POLICY.md
================================================
# Privacy Policy
I (Diyan Iliev) built the Mightier Amp app as an Open Source app. This SERVICE is provided by me at no cost and is intended for use as is.
This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.
If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.
The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at Mightier Amp unless otherwise defined in this Privacy Policy.
## Data Collection
Mightier Amp app does not collect any personal data from its users.
## Third-Party Services
Mightier Amp does not use third-party data collection services.
## Contact Us
If you have any questions or concerns about our privacy practices, please contact us at mightieramp@gmail.com.
## Changes to This Policy
I may update this Privacy Policy from time to time. If I make any material changes to how the data is collected, used, or shared, I will reflect the changes on this page.
================================================
FILE: README.md
================================================
# Mightier Amp
Alternative app for controlling NUX Mighty amps series.
## Features
This app aims to cover all the functionality of the original app plus many enhancements:
- Ability to save presets locally on your mobile device and export them to share with others.
- Remote control using a MIDI controller or a HID device. Both USB and Bluetooth MIDI controllers are supported.
- Landscape mode.
- Improved Jam Tracks functionality. Select any audio file in your device, add events like loop points, preset changes and others at any point and play along.
- The app unlocks 8 secret amp models in Mighty Plug Pro and Mighty Space: Twin Rvb, Class A15, Vibro King, Budda, Brit Blues, Match D30, Brit 2000 and Uber HiGain
- Tempo/Beat Trainer
- Various other enhancements.
## Supported Amps
1.Mighty Plug / Mighty Air
2.Mighty Plug Pro / Mighty Space
3.Mighty Lite BT MKII
4.Mighty 8 BT\*\*
5.Mighty 20 BT \*\* / Mighty 40 BT \*\*
6.Mighty BT Lite / AirBorne Go\*\* / GUO AN\*\*
\*\* These amps are not tested and might not work.
## Helpful Resources
Check out the great video tutorial series created by Diego Zuccotti, where he walks through the features and functionality of the app, and the usage of the NUX amps in general.
[Click here to watch!](https://www.youtube.com/@TutoJam)
Facebook groups for presets sharing and amps discussion:
[Mighty Plug/Mighty Air](https://www.facebook.com/groups/nuxmightyplugairgroup/)
[Mighty Plug Pro/Mighty Space](https://www.facebook.com/groups/mightyplugpro/)
## Download
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png"
alt="Get it on Google Play"
height="80">](https://play.google.com/store/apps/details?id=com.tuntori.mightieramp)
[<img src="docs/ios_web_generic.png"
alt="Get it on Google Play"
height="82">](https://apps.apple.com/us/app/mightier-amp/id6447451371)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/com.tuntori.mightieramp/)
## Donation
Mightier Amp is an open-source project that I am developing in my free time. If you find the app useful and would like to support its development, please consider making a donation. Your contribution will help me invest more time into the development of the app. Thank you for your support!
<a href='https://ko-fi.com/tuntori' target='_blank'><img height='35' style='border:0px;height:46px;' src='https://az743702.vo.msecnd.net/cdn/kofi3.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' />
[](https://www.paypal.com/donate?hosted_button_id=FZWWAM4NUFRPC)
================================================
FILE: analysis_options.yaml
================================================
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
================================================
FILE: android/.gitignore
================================================
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
key.properties
================================================
FILE: android/app/build.gradle
================================================
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 34
namespace 'com.tuntori.mightieramp'
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
applicationId "com.tuntori.mightieramp"
minSdkVersion flutter.minSdkVersion
targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
debug {
defaultConfig.minSdkVersion 19
applicationIdSuffix ".debug"
}
profile {
defaultConfig.minSdkVersion 19
applicationIdSuffix ".debug"
}
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
ndk {
abiFilters 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.multidex:multidex:2.0.1'
}
================================================
FILE: android/app/proguard-rules.pro
================================================
-keep class androidx.lifecycle.** { *; }
-keep class com.boskokg.flutter_blue_plus.** { *; }
================================================
FILE: android/app/src/debug/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tuntori.mightieramp">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
</manifest>
================================================
FILE: android/app/src/debug/res/values/strings.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Mightier Amp Debug</string>
</resources>
================================================
FILE: android/app/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tuntori.mightieramp"
xmlns:tools="http://schemas.android.com/tools">
<!-- FlutterActivity is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
android:maxSdkVersion="30"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"
android:minSdkVersion="33"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:label="@string/app_name"
android:icon="@mipmap/launcher_icon"
android:allowBackup="true">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:usesCleartextTraffic="true"
android:exported="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<queries>
<!-- If your app opens https URLs -->
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="https" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" />
</intent>
</queries>
</manifest>
================================================
FILE: android/app/src/main/kotlin/com/tuntori/mightieramp/MainActivity.kt
================================================
// (c) 2020-2021 Dian Iliev (Tuntorius)
// This code is licensed under MIT license (see LICENSE.md for details)
package com.tuntori.mightieramp
import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry
import io.flutter.view.FlutterMain
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result
import android.content.Intent
import android.app.Activity
import android.net.Uri
import java.io.BufferedWriter
import java.io.OutputStream
import java.io.OutputStreamWriter
import java.io.BufferedReader
import java.io.InputStream
import java.io.InputStreamReader
import java.io.DataOutputStream
import java.nio.ShortBuffer
class MainActivity: FlutterActivity() {
internal var WRITE_REQUEST_CODE = 77777 //unique request code
internal var OPEN_REQUEST_CODE = 22222
internal var OPEN_REQUEST_CODE_BYTEARRAY = 33333
internal var _result: Result? = null
internal var _data: String = ""
internal var _dataBa: ByteArray? = null
internal var saveByteArray:Boolean = false
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
configureFileSaveAPI(flutterEngine);
}
fun configureFileSaveAPI(@NonNull flutterEngine: FlutterEngine)
{
MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), "com.msvcode.filesaver/files")
.setMethodCallHandler { call, result ->
// Note: this method is invoked on the main thread.
if (call.method == "saveFile") {
_result = result
saveByteArray = call.argument<Boolean?>("byteArray") ?: false;
if (saveByteArray)
_dataBa =call.argument<ByteArray>("data")
else
_data = call.argument<String>("data") ?: "";
var mime:String? = call.argument<String?>("mime");
var name:String? = call.argument<String?>("name");
if (mime!=null && name!=null)
createFile(mime, name)
} else if (call.method == "openFile") {
_result = result
var mime:String? = call.argument<String?>("mime");
var byteArray:Boolean? = call.argument<Boolean?>("byte_array");
if (mime!=null)
openFile(mime, byteArray)
} else {
result.notImplemented()
}
}
}
private fun createFile(mimeType: String, fileName: String) {
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
// Filter to only show results that can be "opened", such as
// a file (as opposed to a list of contacts or timezones).
addCategory(Intent.CATEGORY_OPENABLE)
// Create a file with the requested MIME type.
type = mimeType
putExtra(Intent.EXTRA_TITLE, fileName)
}
startActivityForResult(intent, WRITE_REQUEST_CODE)
}
//replace with ACTION_GET_CONTENT for just a temporary access
//the other is ACTION_OPEN_DOCUMENT
private fun openFile(mimeType: String, byteArray: Boolean?) {
val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
// Filter to only show results that can be "opened", such as
// a file (as opposed to a list of contacts or timezones).
addCategory(Intent.CATEGORY_OPENABLE)
// Create a file with the requested MIME type.
type = mimeType
}
if (byteArray != null && byteArray == true)
startActivityForResult(intent, OPEN_REQUEST_CODE_BYTEARRAY)
else
startActivityForResult(intent, OPEN_REQUEST_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
// Check which request we're responding to
if (requestCode == WRITE_REQUEST_CODE) {
// Make sure the request was successful
if (resultCode == Activity.RESULT_OK) {
if (data != null && data.getData() != null) {
//now write the data
writeInFile(data.getData() as Uri) //data.getData() is Uri
} else {
_result?.error("NO DATA", "No data", null)
}
} else {
_result?.error("CANCELED", "User cancelled", null)
}
}
else if (requestCode == OPEN_REQUEST_CODE ||
requestCode == OPEN_REQUEST_CODE_BYTEARRAY) {
if (resultCode == Activity.RESULT_OK) {
if (data != null && data.getData() != null) {
//now write the data
if (requestCode == OPEN_REQUEST_CODE)
readFile(data.getData() as Uri, false)
else
readFile(data.getData() as Uri, true)
}else {
_result?.error("NO DATA", "No data", null)
}
} else {
_result?.error("CANCELED", "User cancelled", null)
}
}
}
private fun writeInFile(uri: Uri) {
val outputStream: OutputStream?
try {
outputStream = getContentResolver().openOutputStream(uri);
if (outputStream!=null) {
if (saveByteArray && _dataBa!=null) {
outputStream.write(_dataBa);
outputStream.close();
}
else {
outputStream.write(_data.toByteArray(Charsets.UTF_8));
outputStream.close();
}
_result?.success("SUCCESS");
}
else
_result?.error("ERROR", "writeInFile: Output stream is null", null)
} catch (e:Exception){
_result?.error("ERROR", "Unable to write. Exception: $e", null)
e.printStackTrace()
}
}
private fun readFile(uri: Uri, dataArray: Boolean) {
val inputStream: InputStream?
val inputStreamReader: InputStreamReader
try {
inputStream = getContentResolver().openInputStream(uri)
inputStreamReader = InputStreamReader(inputStream)
if (!dataArray) {
val br = BufferedReader(inputStreamReader)
val fileContent = br.use { inputStreamReader.readText() }
br.close()
_result?.success(fileContent)
}
else {
if (inputStream!=null) {
val array = inputStream.readBytes();
inputStream.close();
_result?.success(array)
}
}
} catch (e:Exception){
_result?.error("ERROR", "Unable to read", null)
}
}
}
================================================
FILE: android/app/src/main/res/drawable/launch_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/black" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
================================================
FILE: android/app/src/main/res/mipmap-anydpi-v26/launcher_icon.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>
================================================
FILE: android/app/src/main/res/values/colors.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#ffffff</color>
</resources>
================================================
FILE: android/app/src/main/res/values/strings.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Mightier Amp</string>
</resources>
================================================
FILE: android/app/src/main/res/values/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:defaultFocusHighlightEnabled">false</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@android:color/white</item>
</style>
</resources>
================================================
FILE: android/app/src/profile/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tuntori.mightieramp">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
================================================
FILE: android/build.gradle
================================================
buildscript {
ext.kotlin_version = '1.8.22'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:deprecation"
}
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
================================================
FILE: android/gradle/wrapper/gradle-wrapper.properties
================================================
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
================================================
FILE: android/gradle.properties
================================================
org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true
org.gradle.java.home=C:/AndroidSDK/jdk-17.0.9
================================================
FILE: android/settings.gradle
================================================
include ':app'
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
================================================
FILE: android/settings_aar.gradle
================================================
include ':app'
================================================
FILE: fastlane/metadata/android/en-US/full_description.txt
================================================
An alternative app for controlling NUX Mighty series guitar amplifiers
This app aims to cover all of the functionality the original app offers plus many enhancements:
• All amps and effects are enabled for all channels.
• Ability to save and recall hundreds of presets locally on your mobile device.
• Improved Jam Tracks functionality. Select any audio file in your device, add preset change events at any point and play along.
The app is open-source. Full code available at https://github.com/tuntorius/mightier_amp
"NUX" and the "Mighty" amps series are a trademark of CHERUB TECHNOLOGY COMPANY LIMITED.
================================================
FILE: fastlane/metadata/android/en-US/short_description.txt
================================================
An alternative app for controlling NUX Mighty amps series.
================================================
FILE: fastlane/metadata/android/en-US/title.txt
================================================
Mightier Amp
================================================
FILE: firebase.json
================================================
{
"hosting": {
"public": "/build/web/",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
],
"domain": "mightieramp.web.app",
"site":"mightieramp"
}
}
================================================
FILE: ios/.gitignore
================================================
*.mode1v3
*.mode2v3
*.moved-aside
*.pbxuser
*.perspectivev3
**/*sync/
.sconsign.dblite
.tags*
**/.vagrant/
**/DerivedData/
Icon?
**/Pods/
**/.symlinks/
profile
xcuserdata
**/.generated/
Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
!default.perspectivev3
================================================
FILE: ios/Flutter/AppFrameworkInfo.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>11.0</string>
</dict>
</plist>
================================================
FILE: ios/Flutter/Debug.xcconfig
================================================
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
================================================
FILE: ios/Flutter/Release.xcconfig
================================================
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
================================================
FILE: ios/Podfile
================================================
# Uncomment this line to define a global platform for your project
platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
# Disable the NSMicrophoneUsageDescription requirement
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
'AUDIO_SESSION_MICROPHONE=0'
]
end
end
end
================================================
FILE: ios/Runner/AppDelegate.swift
================================================
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
================================================
FILE: ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
"images" : [
{
"filename" : "Icon_20x20@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "Icon_20x20@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"filename" : "Icon_29x29@1x.png",
"idiom" : "iphone",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "Icon_29x29@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "Icon_29x29@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"filename" : "Icon_40x40@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "Icon_40x40@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"filename" : "Icon_60x60@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"filename" : "Icon_60x60@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"filename" : "Icon_20x20@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"filename" : "Icon_20x20@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "Icon_29x29@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "Icon_29x29@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "Icon_40x40@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"filename" : "Icon_40x40@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "Icon_76x76@1x.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"filename" : "Icon_76x76@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"filename" : "Icon_83.5x83.5@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"filename" : "Icon_1024x1024.png",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
================================================
FILE: ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
================================================
# Launch Screen Assets
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
================================================
FILE: ios/Runner/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>
================================================
FILE: ios/Runner/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>
================================================
FILE: ios/Runner/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>JSON Document</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>public.json</string>
</array>
</dict>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>nuxpreset</string>
</array>
<key>CFBundleTypeName</key>
<string>NUX Preset</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.tuntori.nuxpreset</string>
</array>
</dict>
</array>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Mightier Amp</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>NSAppleMusicUsageDescription</key>
<string>The app uses music as backing tracks that are streamed to the connected guitar amplifier</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Bluetooth Low Energy is used to connect to a BLE enabled guitar amplifier</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Bluetooth Low Energy is used to connect to a BLE enabled guitar amplifier</string>
<key>NSCameraUsageDescription</key>
<string>This app uses camera to scan QR codes that contain preset data for the connected amplifier</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app lets you scan a photo containing QR code with amp preset data.</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>bluetooth-central</string>
</array>
<key>UIFileSharingEnabled</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.json</string>
</array>
<key>UTTypeDescription</key>
<string>NUX Preset</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>com.tuntori.nuxpreset</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>nuxpreset</string>
</array>
</dict>
</dict>
</array>
</dict>
</plist>
================================================
FILE: ios/Runner/Runner-Bridging-Header.h
================================================
#import "GeneratedPluginRegistrant.h"
================================================
FILE: ios/Runner.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
84C82414292992D6001A7DDC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CCC37E5B2EA4022EAC7C519F /* Pods_Runner.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
130F32F4717A7AF5D4F6585E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
97D11407EEF2CD9B9EB7F3BF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
CCC37E5B2EA4022EAC7C519F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
F37F8A97064DC522B40DF3A2 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
84C82414292992D6001A7DDC /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
07C65F7300B0E156A019970F /* Pods */ = {
isa = PBXGroup;
children = (
130F32F4717A7AF5D4F6585E /* Pods-Runner.debug.xcconfig */,
F37F8A97064DC522B40DF3A2 /* Pods-Runner.release.xcconfig */,
97D11407EEF2CD9B9EB7F3BF /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
65DA474ACEE31D5FA261D7E3 /* Frameworks */ = {
isa = PBXGroup;
children = (
CCC37E5B2EA4022EAC7C519F /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
);
name = Flutter;
sourceTree = "<group>";
};
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
07C65F7300B0E156A019970F /* Pods */,
65DA474ACEE31D5FA261D7E3 /* Frameworks */,
);
sourceTree = "<group>";
};
97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
);
name = Products;
sourceTree = "<group>";
};
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
);
path = Runner;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
71EB3D73602EF3E01C2EC6E4 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
C57858137186C0D10D48D7B8 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Runner;
productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 97C146E51CF9000F007C117D;
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
71EB3D73602EF3E01C2EC6E4 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
C57858137186C0D10D48D7B8 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C146FB1CF9000F007C117D /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
249021D3217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB31CF90195004384FC /* Generated.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Profile;
};
249021D4217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 97D11407EEF2CD9B9EB7F3BF /* Pods-Runner.profile.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = BRTQKAVFDX;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Mightier Amp";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.tuntori.mightieramp;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
};
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB31CF90195004384FC /* Generated.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB31CF90195004384FC /* Generated.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
97C147061CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 130F32F4717A7AF5D4F6585E /* Pods-Runner.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = BRTQKAVFDX;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Mightier Amp";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.tuntori.mightieramp;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
};
97C147071CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F37F8A97064DC522B40DF3A2 /* Pods-Runner.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = BRTQKAVFDX;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = "Mightier Amp";
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.music";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
MARKETING_VERSION = "$(FLUTTER_BUILD_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.tuntori.mightieramp;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147031CF9000F007C117D /* Debug */,
97C147041CF9000F007C117D /* Release */,
249021D3217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147061CF9000F007C117D /* Debug */,
97C147071CF9000F007C117D /* Release */,
249021D4217E4FDB00AE95B9 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
}
================================================
FILE: ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>
================================================
FILE: ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
================================================
FILE: ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>
================================================
FILE: ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: ios/Runner.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>
================================================
FILE: ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
================================================
FILE: ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>
================================================
FILE: lib/UI/mainTabs.dart
================================================
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mighty_plug_manager/UI/pages/drumsPage.dart';
import 'package:mighty_plug_manager/UI/utils.dart';
import 'package:mighty_plug_manager/UI/widgets/NuxAppBar.dart';
import '../bluetooth/NuxDeviceControl.dart';
import '../bluetooth/bleMidiHandler.dart';
import '../bluetooth/ble_controllers/BLEController.dart';
import '../main.dart';
import '../midi/MidiControllerManager.dart';
import '../platform/platformUtils.dart';
import 'pages/jamTracks.dart';
import 'pages/presetEditor.dart';
import 'pages/settings.dart';
import 'popups/alertDialogs.dart';
import 'theme.dart';
import 'widgets/VolumeDrawer.dart';
import 'widgets/app_drawer.dart';
import 'widgets/bottomBar.dart';
import 'widgets/common/nestedWillPopScope.dart';
import 'widgets/presets/preset_list/presetList.dart';
class MainTabs extends StatefulWidget {
final MidiControllerManager midiMan = MidiControllerManager();
MainTabs({Key? key}) : super(key: key);
@override
State<MainTabs> createState() => MainTabsState();
}
class MainTabsState extends State<MainTabs> with TickerProviderStateMixin {
int _currentIndex = 0;
late BuildContext dialogContext;
late TabController controller;
late TabVisibilityController _visibilityController;
late final List<Widget> _tabs;
bool isBottomDrawerOpen = false;
bool connectionFailed = false;
late Timer _timeout;
StateSetter? dialogSetState;
@override
void initState() {
if (!AppThemeConfig.allowRotation) {
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
} else {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
DeviceOrientation.landscapeLeft,
DeviceOrientation.landscapeRight
]);
}
super.initState();
_visibilityController = TabVisibilityController(5);
//add 5 pages widgets
_tabs = [
const PresetEditor(),
PresetList(
visibilityEventHandler: _visibilityController.getEventHandler(1)),
const DrumsPage(),
const JamTracks(),
const Settings(),
];
controller =
TabController(initialIndex: 0, length: _tabs.length, vsync: this);
// controller.addListener(() {
// setState(() {
// _visibilityController.onTabChanged(_currentIndex, controller.index);
// _currentIndex = controller.index;
// });
// });
NuxDeviceControl.instance().connectStatus.listen(connectionStateListener);
NuxDeviceControl.instance().addListener(onDeviceChanged);
BLEMidiHandler.instance().initBle(bleErrorHandler);
}
void bleErrorHandler(BleError error, dynamic data) {
{
switch (error) {
case BleError.unavailable:
if (!PlatformUtils.isIOS) {
AlertDialogs.showInfoDialog(context,
title: "Warning!",
description: "Your device does not support bluetooth!",
confirmButton: "OK");
}
break;
case BleError.permissionDenied:
AlertDialogs.showLocationPrompt(context, false, null);
break;
case BleError.locationServiceOff:
AlertDialogs.showInfoDialog(context,
title: "Location service is disabled!",
description:
"Please, enable location service. It is required for Bluetooth connection to work.",
confirmButton: "OK");
break;
case BleError.scanPermissionDenied:
AlertDialogs.showInfoDialog(context,
title: "Bluetooth permissions required!",
description:
"Please, grant bluetooth scan and connect permissions. They are required for Mightier Amp to work.",
confirmButton: "OK");
break;
}
}
}
@override
void dispose() {
super.dispose();
NuxDeviceControl.instance().removeListener(onDeviceChanged);
}
void onConnectionTimeout() async {
connectionFailed = true;
if (dialogSetState != null) {
dialogSetState?.call(() {});
await Future.delayed(const Duration(seconds: 3));
Navigator.pop(context);
dialogSetState = null;
BLEMidiHandler.instance().disconnectDevice();
}
}
void connectionStateListener(DeviceConnectionState event) {
switch (event) {
case DeviceConnectionState.connectionBegin:
if (dialogSetState != null) break;
connectionFailed = false;
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
dialogContext = context;
return StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
dialogSetState = setState;
return NestedWillPopScope(
onWillPop: () => Future.value(false),
child: Dialog(
backgroundColor: Colors.grey[700],
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (!connectionFailed)
const CircularProgressIndicator.adaptive(),
if (connectionFailed)
const Icon(
Icons.error,
color: Colors.red,
),
const SizedBox(
width: 8,
),
Text(connectionFailed
? "Connection Failed!"
: "Connecting"),
],
),
),
),
);
},
);
},
);
//setup a timer in case something fails
_timeout = Timer(const Duration(seconds: 10), onConnectionTimeout);
break;
case DeviceConnectionState.presetsLoaded:
//if the device is connected in this step, then it's
//just a reset, not connect
if (NuxDeviceControl.instance().isConnectionComplete()) {
dialogSetState = null;
if (_timeout.isActive) {
_timeout.cancel();
Navigator.pop(context);
}
}
debugPrint("presets loaded");
break;
case DeviceConnectionState.connectionComplete:
dialogSetState = null;
if (_timeout.isActive) {
_timeout.cancel();
Navigator.pop(context);
}
break;
case DeviceConnectionState.disconnected:
break;
}
}
Future<bool> _willPopCallback() async {
Completer<bool> confirmation = Completer<bool>();
AlertDialogs.showConfirmDialog(context,
title: "Exit Mightier Amp?",
cancelButton: "No",
confirmButton: "Yes",
confirmColor: Colors.red,
description: "Are you sure?", onConfirm: (val) {
if (val) {
//disconnect device if connected
BLEMidiHandler.instance().disconnectDevice();
}
confirmation.complete(val);
});
return confirmation.future;
}
void onDeviceChanged() {
setState(() {});
}
@override
Widget build(BuildContext context) {
final mediaQuery = MediaQuery.of(context);
final screenWidth = mediaQuery.size.width;
final layoutMode = getLayoutMode(mediaQuery);
//WARNING: Workaround for a flutter bug - if the app is started with screen off,
//one of the widgets throws an exception and the app scaffold is empty
if (screenWidth < 10) return const SizedBox();
return PageStorage(
bucket: bucketGlobal,
child: FocusScope(
autofocus: true,
onKey: (node, event) {
if (event.runtimeType.toString() == 'RawKeyDownEvent' &&
event.logicalKey.keyId != 0x100001005) {
MidiControllerManager().onHIDData(event);
}
return KeyEventResult.skipRemainingHandlers;
},
child: NestedWillPopScope(
onWillPop: _willPopCallback,
child: Scaffold(
resizeToAvoidBottomInset: controller.index == 1,
appBar: layoutMode != LayoutMode.navBar ? null : const MAAppBar(),
body: Stack(
alignment: Alignment.bottomCenter,
children: [
Row(
children: [
if (layoutMode == LayoutMode.drawer)
AppDrawer(
onSwitchPageIndex: _onSwitchPageIndex,
currentIndex: _currentIndex,
totalTabs: _tabs.length,
),
Expanded(
child: layoutMode == LayoutMode.navBar
? TabBarView(
physics: const NeverScrollableScrollPhysics(),
controller: controller,
children: _tabs,
)
: _tabs.elementAt(_currentIndex),
),
],
),
if (layoutMode != LayoutMode.drawer && _currentIndex != 3)
BottomDrawer(
isBottomDrawerOpen: isBottomDrawerOpen,
onExpandChange: (val) => setState(() {
isBottomDrawerOpen = val;
}),
child: VolumeSlider(),
),
],
),
bottomNavigationBar: layoutMode == LayoutMode.navBar
? GestureDetector(
onVerticalDragUpdate: _onBottomBarSwipe,
child: BottomBar(
index: _currentIndex,
onTap: _onSwitchPageIndex,
),
)
: null,
),
),
),
);
}
void _onBottomBarSwipe(DragUpdateDetails details) {
if (details.delta.dy < 0) {
//open
setState(() {
isBottomDrawerOpen = true;
});
} else {
//close
setState(() {
isBottomDrawerOpen = false;
});
}
}
void _onSwitchPageIndex(int index) {
setState(() {
_visibilityController.onTabChanged(_currentIndex, index);
_currentIndex = index;
controller.animateTo(_currentIndex);
});
}
}
class TabVisibilityEventHandler {
void Function()? onTabSelected;
void Function()? onTabDeselected;
}
class TabVisibilityController {
late List<TabVisibilityEventHandler> eventHandlers;
TabVisibilityController(int tabAmount) {
eventHandlers =
List.generate(tabAmount, (index) => TabVisibilityEventHandler());
}
TabVisibilityEventHandler getEventHandler(int tab) {
return eventHandlers[tab];
}
void onTabChanged(int oldTab, int newTab) {
eventHandlers[oldTab].onTabDeselected?.call();
eventHandlers[newTab].onTabSelected?.call();
}
}
================================================
FILE: lib/UI/mightierIcons.dart
================================================
/// Flutter icons MightierIcons
/// Copyright (C) 2021 by original authors @ fluttericon.com, fontello.com
/// This font was generated by FlutterIcon.com, which is derived from Fontello.
///
/// To use this font, place it in your fonts/ directory and include the
/// following in your pubspec.yaml
///
/// flutter:
/// fonts:
/// - family: MightierIcons
/// fonts:
/// - asset: fonts/MightierIcons.ttf
///
///
/// * Font Awesome 5, Copyright (C) 2016 by Dave Gandy
/// Author: Dave Gandy
/// License: SIL (https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt)
/// Homepage: http://fortawesome.github.com/Font-Awesome/
///
import 'package:flutter/widgets.dart';
class MightierIcons {
MightierIcons._();
static const _kFontFam = 'MightierIcons';
static const String? _kFontPkg = null;
static const IconData tag =
IconData(0xe800, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData amp =
IconData(0xe801, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData cabinet =
IconData(0xe802, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData gate =
IconData(0xe803, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData pedal =
IconData(0xe804, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData sliders =
IconData(0xe805, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData compressor =
IconData(0xe806, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData sinewave =
IconData(0xe807, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData repeat =
IconData(0xe808, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData repeat_a =
IconData(0xe809, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData repeat_ab =
IconData(0xe80a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData tuner =
IconData(0xe80c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
static const IconData drum =
IconData(0xf569, fontFamily: _kFontFam, fontPackage: _kFontPkg);
}
================================================
FILE: lib/UI/pages/DebugConsolePage.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class DebugConsole extends StatelessWidget {
static String output = "";
const DebugConsole({Key? key}) : super(key: key);
static void print(Object? value) {
output += "$value\n";
}
static void printHex(List<int> array) {
output += '[ ';
output += array
.map((x) => '${x < 16 ? '0' : ''}${x.toRadixString(16)}')
.join(" ");
output += ']\n';
}
static void printString(Object? value) {
output += "$value\n";
}
@override
Widget build(BuildContext context) {
TextEditingController c = TextEditingController(text: DebugConsole.output);
return Scaffold(
appBar: AppBar(title: const Text("Debug console")),
body: SafeArea(
child: Column(
children: [
Expanded(
child: TextField(
maxLines: null,
readOnly: true,
controller: c,
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
Clipboard.setData(ClipboardData(text: output));
},
child: const Text("Copy to Clipboard")),
const SizedBox(width: 8),
ElevatedButton(
onPressed: () {
output = "";
c.clear();
},
child: const Text("Clear")),
],
)
],
),
),
);
}
}
================================================
FILE: lib/UI/pages/calibration.dart
================================================
// (c) 2020-2021 Dian Iliev (Tuntorius)
// This code is licensed under MIT license (see LICENSE.md for details)
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:just_audio/just_audio.dart';
import 'package:mighty_plug_manager/UI/widgets/common/nestedWillPopScope.dart';
import 'package:mighty_plug_manager/platform/simpleSharedPrefs.dart';
import '../../bluetooth/NuxDeviceControl.dart';
import '../../bluetooth/devices/presets/preset_constants.dart';
class Calibration extends StatefulWidget {
const Calibration({Key? key}) : super(key: key);
@override
State createState() => _CalibrationState();
}
class _CalibrationState extends State<Calibration> {
int delay = 0;
late AudioPlayer player;
int nuxMode = 0;
bool toggled = false;
Color presetColor = PresetConstants.channelColorsPlug[0];
NuxDeviceControl devControl = NuxDeviceControl.instance();
StreamSubscription? _playerSub;
@override
void initState() {
super.initState();
player = AudioPlayer();
player.setAsset("assets/audio/calibration.wav");
player.setLoopMode(LoopMode.one);
player.play();
_playerSub = player
.createPositionStream(
steps: 99999999,
minPeriod: const Duration(milliseconds: 1),
maxPeriod: const Duration(milliseconds: 100))
.listen(onPositionUpdate);
delay = SharedPrefs().getInt(SettingsKeys.latency, 0);
}
void onPositionUpdate(Duration pos) {
int posMs = pos.inMilliseconds;
if (posMs >= 500 + delay) {
if (!toggled) {
nuxMode++;
if (nuxMode > 2) nuxMode = 0;
devControl.changeDeviceChannel(nuxMode);
setState(() {
presetColor = PresetConstants.channelColorsPlug[nuxMode];
});
toggled = true;
}
} else {
toggled = false;
}
}
@override
Widget build(BuildContext context) {
return NestedWillPopScope(
onWillPop: () async {
await player.stop();
_playerSub?.cancel();
await player.dispose();
//reset to prevent device losing sync
NuxDeviceControl.instance().resetToChannelDefaults();
return true;
},
child: Scaffold(
appBar: AppBar(
title: const Text("Latency Calibration"),
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Text(
"Make sure the NUX device is connected in both Audio and App mode!",
textAlign: TextAlign.center,
),
const SizedBox(
height: 20,
),
const Text(
"Adjust the slider so that the NUX light change and the audio clicks happen at the same time.",
textAlign: TextAlign.center,
),
// Text(
// "The app uses this value to apply extra latency to the commands sent to the device",
// textAlign: TextAlign.center,
// ),
Slider(
value: delay.toDouble(),
min: 0,
max: 400,
label: "$delay",
divisions: 400,
onChanged: (val) {
setState(() {
delay = val.round();
});
},
onChangeEnd: (val) {
SharedPrefs().setInt(SettingsKeys.latency, val.round());
},
)
],
),
),
),
);
}
}
================================================
FILE: lib/UI/pages/developerPage.dart
================================================
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/widgets/common/nestedWillPopScope.dart';
import 'package:mighty_plug_manager/UI/widgets/common/numberPicker.dart';
import 'package:mighty_plug_manager/bluetooth/NuxDeviceControl.dart';
import 'package:mighty_plug_manager/bluetooth/bleMidiHandler.dart';
import '../../bluetooth/devices/NuxConstants.dart';
enum midiMessage { ccMessage, sysExMessage }
class DeveloperPage extends StatefulWidget {
const DeveloperPage({Key? key}) : super(key: key);
@override
State createState() => _DeveloperPageState();
}
class _DeveloperPageState extends State<DeveloperPage> {
TextEditingController controller = TextEditingController(text: "");
midiMessage msgType = midiMessage.ccMessage;
List<int> data = [0, 0, 0, 0];
bool sliderChanging = false;
@override
void initState() {
super.initState();
NuxDeviceControl.instance().onDataReceiveDebug = _onDataReceive;
NuxDeviceControl.instance().developer = true;
}
void _onDataReceive(List<int> data) {
setState(() {
controller.text += "$data\n";
});
}
Widget _buildCCPage() {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Text(
"CC Message",
style: TextStyle(fontSize: 18),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text("CC Number"),
NumberPicker(
axis: Axis.horizontal,
minValue: 0,
maxValue: 127,
value: data[0],
//hex: true,
textStyle: TextStyle(color: Colors.grey[600]),
itemWidth: 60,
zeroPad: false,
onChanged: (val) {
data[0] = val;
setState(() {});
},
)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text("Value (numeric)"),
NumberPicker(
axis: Axis.horizontal,
minValue: 0,
maxValue: 127,
value: data[1],
textStyle: TextStyle(color: Colors.grey[600]),
//hex: true,
itemWidth: 60,
zeroPad: false,
onChanged: (val) {
if (sliderChanging) return;
data[1] = val;
setState(() {});
},
),
],
),
Slider(
min: 0,
max: 127,
label: "${data[1]}",
value: data[1].toDouble(),
onChangeStart: (value) => sliderChanging = true,
onChangeEnd: (value) async {
await Future.delayed(const Duration(milliseconds: 800));
sliderChanging = false;
},
onChanged: (value) {
data[1] = value.round();
setState(() {});
}),
SwitchListTile(
contentPadding: EdgeInsets.zero,
title: const Text("Value (switch)"),
value: data[1] != 0,
onChanged: (value) {
data[1] = value ? 127 : 0;
setState(() {});
}),
ElevatedButton(
onPressed: () {
if (!NuxDeviceControl.instance().isConnected) return;
var msg = NuxDeviceControl.instance()
.createCCMessage(data[0], data[1]);
BLEMidiHandler.instance().sendData(msg);
},
child: const Text("Send")),
ElevatedButton(
onPressed: () {
setState(() {
controller.text = "";
});
},
child: const Text("Clear console"))
],
),
);
}
Widget _buildSysExPage() {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Text(
"SysEx Request",
style: TextStyle(fontSize: 18),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text("SysEx number"),
NumberPicker(
axis: Axis.horizontal,
minValue: 0,
maxValue: 127,
value: data[2],
//hex: true,
textStyle: TextStyle(color: Colors.grey[600]),
itemWidth: 60,
zeroPad: false,
onChanged: (val) {
data[2] = val;
setState(() {});
},
)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text("Additional (-1 - no val)"),
NumberPicker(
axis: Axis.horizontal,
minValue: -1,
maxValue: 127,
value: data[3],
textStyle: TextStyle(color: Colors.grey[600]),
//hex: true,
itemWidth: 60,
zeroPad: false,
onChanged: (val) {
if (sliderChanging) return;
data[3] = val;
setState(() {});
},
),
],
),
Slider(
min: -1,
max: 127,
label: "${data[1]}",
value: data[1].toDouble(),
onChangeStart: (value) => sliderChanging = true,
onChangeEnd: (value) async {
await Future.delayed(const Duration(milliseconds: 800));
sliderChanging = false;
},
onChanged: (value) {
data[3] = value.round();
setState(() {});
}),
SwitchListTile(
contentPadding: EdgeInsets.zero,
title: const Text("Value (switch)"),
value: data[3] != 0,
onChanged: (value) {
data[3] = value ? 127 : 0;
setState(() {});
}),
ElevatedButton(
onPressed: () {
if (!NuxDeviceControl.instance().isConnected) return;
List<int> msg = [];
//create header
msg.addAll([
0x80,
0x80,
MidiMessageValues.sysExStart,
0x43,
0x58,
SysexPrivacy.kSYSEX_PRIVATE,
data[2],
SyxDir.kSYXDIR_REQ,
]);
if (data[3] >= 0) msg.add(data[3]);
msg.addAll([0x80, MidiMessageValues.sysExEnd]);
BLEMidiHandler.instance().sendData(msg);
},
child: const Text("Send")),
ElevatedButton(
onPressed: () {
setState(() {
controller.text = "";
});
},
child: const Text("Clear console"))
],
),
);
}
@override
Widget build(BuildContext context) {
// if (!NuxDeviceControl.instance().isConnected)
// return Center(
// child: Text("No device connected"),
// );
return NestedWillPopScope(
onWillPop: () {
NuxDeviceControl.instance().developer = false;
return Future.value(true);
},
child: Scaffold(
body: Column(mainAxisSize: MainAxisSize.min, children: [
Expanded(
flex: 4,
child: AbsorbPointer(
absorbing: !NuxDeviceControl.instance().developer,
child: Opacity(
opacity: NuxDeviceControl.instance().developer ? 1 : 0.5,
child: SingleChildScrollView(
child: TextField(
enabled: NuxDeviceControl.instance().developer,
controller: controller,
maxLines: null,
readOnly: true,
),
),
),
),
),
SizedBox(
height: 350,
child: PageView(
children: [_buildCCPage(), _buildSysExPage()],
)),
]),
),
);
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/LiteMk2Settings.dart
================================================
import 'package:flutter/material.dart';
import '../../../bluetooth/bleMidiHandler.dart';
import '../../../bluetooth/devices/NuxDevice.dart';
import '../../popups/alertDialogs.dart';
import 'PlugProUsbSettings.dart';
class LiteMk2Settings extends StatefulWidget {
final NuxDevice device;
const LiteMk2Settings({Key? key, required this.device}) : super(key: key);
@override
State<LiteMk2Settings> createState() => _LiteMk2SettingsState();
}
class _LiteMk2SettingsState extends State<LiteMk2Settings> {
@override
Widget build(BuildContext context) {
return Column(
children: [
ListTile(
enabled: widget.device.deviceControl.isConnected,
leading: const Icon(Icons.volume_up),
title: const Text("USB Audio Settings"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const PlugProUsbSettings()));
},
),
/*ListTile(
leading: const Icon(Icons.bluetooth_audio),
enabled: widget.device.deviceControl.isConnected,
title: const Text("Bluetooth Audio EQ"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const PlugProEQSettings()));
},
),*/
/*
ListTile(
enabled: widget.device.deviceControl.isConnected,
leading: const Icon(Icons.mic),
title: const Text("Microphone Settings"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const PlugProMicSettings()));
},
),
*/
ListTile(
enabled: widget.device.deviceControl.isConnected,
leading: const Icon(Icons.restart_alt),
title: const Text("Reset Device Presets"),
onTap: () {
if (BLEMidiHandler.instance().connectedDevice != null) {
AlertDialogs.showConfirmDialog(context,
title: "Reset device presets",
cancelButton: "Cancel",
confirmButton: "Reset",
confirmColor: Colors.red,
description: "Are you sure?", onConfirm: (val) {
if (val) widget.device.resetNuxPresets();
});
}
},
),
const Divider()
],
);
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/PlugAirSettings.dart
================================================
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/bluetooth/devices/NuxMightyPlugAir.dart';
import '../../../bluetooth/bleMidiHandler.dart';
import '../../../bluetooth/devices/NuxDevice.dart';
import '../../popups/alertDialogs.dart';
import 'PlugAirUsbSettings.dart';
const _eqOptions = [
"Normal",
"Acoustic",
"Blues",
"Clean Bass",
"Guitar Cut",
"Metal",
"Pop",
"Rock",
"Solo Cut"
];
class PlugAirSettings extends StatefulWidget {
final NuxDevice device;
const PlugAirSettings({Key? key, required this.device}) : super(key: key);
@override
State<PlugAirSettings> createState() => _PlugAirSettingsState();
NuxMightyPlug get plugAirDevice => device as NuxMightyPlug;
}
class _PlugAirSettingsState extends State<PlugAirSettings> {
@override
Widget build(BuildContext context) {
return Column(
children: [
ListTile(
enabled: widget.device.deviceControl.isConnected,
title: const Text("USB Audio Settings"),
leading: const Icon(Icons.volume_up),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const PlugAirUsbSettings()));
},
),
ListTile(
enabled: widget.device.deviceControl.isConnected,
title: const Text("Bluetooth Audio EQ"),
subtitle: Text(_eqOptions[widget.plugAirDevice.btEq]),
leading: const Icon(Icons.bluetooth_audio),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
var oldValue = widget.plugAirDevice.btEq;
var dialog = AlertDialogs.showOptionDialog(context,
confirmButton: "OK",
cancelButton: "Cancel",
title: "Bluetooth Audio EQ",
confirmColor: Theme.of(context).hintColor,
value: widget.plugAirDevice.btEq,
options: _eqOptions, onConfirm: (changed, newValue) {
setState(() {
if (changed) {
widget.plugAirDevice.setBtEq(newValue);
} else {
widget.plugAirDevice.setBtEq(oldValue);
}
});
}, onSelectionChanged: (selected) {
widget.plugAirDevice.setBtEq(selected);
});
showDialog(
context: context,
builder: (BuildContext context) => dialog,
);
},
),
ListTile(
enabled: widget.device.deviceControl.isConnected,
leading: const Icon(Icons.restart_alt),
title: const Text("Reset Device Presets"),
onTap: () {
if (BLEMidiHandler.instance().connectedDevice != null) {
AlertDialogs.showConfirmDialog(context,
title: "Reset device presets",
cancelButton: "Cancel",
confirmButton: "Reset",
confirmColor: Colors.red,
description: "Are you sure?", onConfirm: (val) {
if (val) widget.device.resetNuxPresets();
});
}
},
),
SwitchListTile(
secondary: const Icon(Icons.eco),
title: const Text("Eco Mode"),
value: widget.device.ecoMode,
onChanged: widget.device.deviceControl.isConnected
? (val) {
setState(
() {
widget.device.setEcoMode(val);
},
);
}
: null),
const Divider()
],
);
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/PlugAirUsbSettings.dart
================================================
// (c) 2020-2021 Dian Iliev (Tuntorius)
// This code is licensed under MIT license (see LICENSE.md for details)
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/widgets/thickSlider.dart';
import 'package:mighty_plug_manager/bluetooth/devices/NuxMightyPlugAir.dart';
import '../../../bluetooth/NuxDeviceControl.dart';
class RouteModel {
final String name;
final int value;
final String schemeAsset;
const RouteModel(
{required this.name, required this.value, required this.schemeAsset});
}
class PlugAirUsbSettings extends StatefulWidget {
static const List<RouteModel> routes = [
RouteModel(
name: "Normal",
value: 1,
schemeAsset: "assets/images/route_normal_mp2.png"),
RouteModel(
name: "Reamp", value: 0, schemeAsset: "assets/images/route_reamp.png"),
RouteModel(
name: "Dry Out",
value: 2,
schemeAsset: "assets/images/route_dryout.png"),
];
const PlugAirUsbSettings({Key? key}) : super(key: key);
@override
State createState() => _PlugAirUsbSettingsState();
}
class _PlugAirUsbSettingsState extends State<PlugAirUsbSettings> {
final device = NuxDeviceControl.instance().device as NuxMightyPlug;
static const fontSize = TextStyle(fontSize: 20);
@override
void didChangeDependencies() {
// Adjust the provider based on the image type
for (var route in PlugAirUsbSettings.routes) {
precacheImage(AssetImage(route.schemeAsset), context);
}
super.didChangeDependencies();
}
Widget _modeButton(String mode) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 18),
child: Text(mode, style: fontSize),
);
}
void _setUsbInputValue(double value, bool skip) {
if (skip) {
device.config.inputVol = value.round();
} else {
device.setUsbInputVol(value.round());
}
setState(() {});
}
void _setUsbOutputValue(double value, bool skip) {
if (skip) {
device.config.outputVol = value.round();
} else {
device.setUsbOutputVol(value.round());
}
setState(() {});
}
@override
Widget build(BuildContext context) {
const routes = PlugAirUsbSettings.routes;
var routeMode = routes.firstWhere((r) => r.value == device.config.usbMode);
var arrayIndex = routes.indexOf(routeMode);
var selected = List<bool>.filled(routes.length, false);
selected[arrayIndex] = true;
return Scaffold(
appBar: AppBar(
title: const Text("USB Audio Settings"),
),
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Padding(
padding: EdgeInsets.all(16.0),
child: Text(
"Route Mode",
style: fontSize,
),
),
ToggleButtons(
fillColor: Colors.blue,
selectedBorderColor: Colors.blue,
color: Colors.grey,
isSelected: selected,
onPressed: (index) {
var mode = routes[index];
var value = mode.value;
device.setUsbMode(value);
setState(() {});
},
children: [
for (var i = 0; i < routes.length; i++)
_modeButton(routes[i].name)
],
),
const SizedBox(
height: 8,
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: Image.asset(routeMode.schemeAsset),
),
ThickSlider(
activeColor: Colors.blue,
label: "Input Level",
value: device.config.inputVol.toDouble(),
min: 0,
max: 100,
labelFormatter: (val) {
return "${val.round()}%";
},
handleVerticalDrag: true,
onChanged: _setUsbInputValue,
onDragEnd: (value) => _setUsbInputValue(value, false),
),
ThickSlider(
activeColor: Colors.blue,
label: "Output Level",
value: device.config.outputVol.toDouble(),
min: 0,
max: 100,
labelFormatter: (val) {
return "${val.round()}%";
},
handleVerticalDrag: true,
onChanged: _setUsbOutputValue,
onDragEnd: (value) => _setUsbOutputValue(value, false),
)
],
),
),
),
);
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/PlugProMicSettings.dart
================================================
// (c) 2020-2021 Dian Iliev (Tuntorius)
// This code is licensed under MIT license (see LICENSE.md for details)
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/bluetooth/devices/NuxMightyPlugPro.dart';
import '../../../bluetooth/NuxDeviceControl.dart';
import '../../../bluetooth/devices/communication/plugProCommunication.dart';
class PlugProMicSettings extends StatefulWidget {
const PlugProMicSettings({Key? key}) : super(key: key);
@override
State createState() => _PlugProMicSettingsState();
}
class _PlugProMicSettingsState extends State<PlugProMicSettings> {
final device = NuxDeviceControl.instance().device as NuxMightyPlugPro;
final communication =
NuxDeviceControl.instance().device.communication as PlugProCommunication;
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Microphone Settings"),
),
body: ListTileTheme(
minLeadingWidth: 0,
iconColor: Colors.white,
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SwitchListTile(
title: const Text("Mute"),
onChanged: (value) {
device.config.micMute = value;
communication.setMicMute(device.config.micMute);
setState(() {});
},
value: device.config.micMute),
ListTile(
title: const Text("Mic Level"),
subtitle: Slider(
min: 0,
max: 100,
label:
"${((device.config.micVolume - 50) / 50 * 12).toStringAsFixed(1)} db",
divisions: 100,
value: device.config.micVolume.toDouble(),
onChanged: (val) {
device.config.micVolume = val.round();
communication.setMicLevel(device.config.micVolume);
setState(() {});
},
),
),
SwitchListTile(
title: const Text("Noise Gate"),
onChanged: (value) {
device.config.micNoiseGate = value;
communication.setMicNoiseGate(value);
setState(() {});
},
value: device.config.micNoiseGate),
ListTile(
enabled: device.config.micNoiseGate,
title: const Text("Gate Sensitivity"),
subtitle: Slider(
min: 0,
max: 100,
label: device.config.micNGSensitivity.toString(),
divisions: 100,
value: device.config.micNGSensitivity.toDouble(),
onChanged: device.config.micNoiseGate == false
? null
: (val) {
device.config.micNGSensitivity = val.round();
communication.setMicNoiseGateSens(
device.config.micNGSensitivity);
setState(() {});
},
),
),
ListTile(
enabled: device.config.micNoiseGate,
title: const Text("Gate Decay"),
subtitle: Slider(
min: 0,
max: 100,
label: device.config.micNGDecay.toString(),
divisions: 100,
value: device.config.micNGDecay.toDouble(),
onChanged: device.config.micNoiseGate == false
? null
: (val) {
device.config.micNGDecay = val.round();
communication
.setMicNoiseGateDecay(device.config.micNGDecay);
setState(() {});
},
),
),
],
),
),
),
);
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/PlugProSettings.dart
================================================
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/pages/device_specific_settings/eq/MightySpaceSpeakerEQ.dart';
import 'package:mighty_plug_manager/bluetooth/devices/NuxMightySpace.dart';
import '../../../bluetooth/bleMidiHandler.dart';
import '../../../bluetooth/devices/NuxDevice.dart';
import '../../popups/alertDialogs.dart';
import 'PlugProMicSettings.dart';
import 'PlugProUsbSettings.dart';
import 'eq/PlugProEQSettings.dart';
class PlugProSettings extends StatefulWidget {
final NuxDevice device;
final bool mightySpace;
const PlugProSettings(
{Key? key, required this.device, required this.mightySpace})
: super(key: key);
@override
State<PlugProSettings> createState() => _PlugProSettingsState();
}
class _PlugProSettingsState extends State<PlugProSettings> {
@override
Widget build(BuildContext context) {
return Column(
children: [
ListTile(
enabled: widget.device.deviceControl.isConnected,
leading: const Icon(Icons.volume_up),
title: const Text("USB Audio Settings"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const PlugProUsbSettings()));
},
),
ListTile(
leading: const Icon(Icons.bluetooth_audio),
enabled: widget.device.deviceControl.isConnected,
title: const Text("Bluetooth Audio EQ"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const PlugProEQSettings()));
},
),
if (widget.mightySpace &&
(!widget.device.deviceControl.isConnected ||
(widget.device as NuxMightySpace).speakerAvailable))
ListTile(
leading: const Icon(Icons.speaker),
enabled: widget.device.deviceControl.isConnected,
title: const Text("Speaker EQ"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const SpaceSpeakerEQSettings()));
},
),
if (!widget.mightySpace)
ListTile(
enabled: widget.device.deviceControl.isConnected,
leading: const Icon(Icons.mic),
title: const Text("Microphone Settings"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const PlugProMicSettings()));
},
),
ListTile(
enabled: widget.device.deviceControl.isConnected,
leading: const Icon(Icons.restart_alt),
title: const Text("Reset Device Presets"),
onTap: () {
if (BLEMidiHandler.instance().connectedDevice != null) {
AlertDialogs.showConfirmDialog(context,
title: "Reset device presets",
cancelButton: "Cancel",
confirmButton: "Reset",
confirmColor: Colors.red,
description: "Are you sure?", onConfirm: (val) {
if (val) widget.device.resetNuxPresets();
});
}
},
),
const Divider()
],
);
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/PlugProUsbSettings.dart
================================================
// (c) 2020-2021 Dian Iliev (Tuntorius)
// This code is licensed under MIT license (see LICENSE.md for details)
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/widgets/thickSlider.dart';
import 'package:mighty_plug_manager/bluetooth/devices/NuxMightyPlugPro.dart';
import '../../../bluetooth/NuxDeviceControl.dart';
import '../../../bluetooth/devices/features/proUsbSettings.dart';
import '../../widgets/common/modeControlRegular.dart';
class RouteModel {
final String name;
final int value;
final String schemeAsset;
final bool loopback;
final bool dryWet;
const RouteModel(
{required this.name,
required this.value,
required this.schemeAsset,
required this.loopback,
required this.dryWet});
}
class PlugProUsbSettings extends StatefulWidget {
static const List<RouteModel> routes = [
RouteModel(
name: "Normal",
value: 1,
schemeAsset: "assets/images/route_normal.png",
loopback: true,
dryWet: true),
RouteModel(
name: "Reamp",
value: 2,
schemeAsset: "assets/images/route_reamp.png",
loopback: false,
dryWet: false),
RouteModel(
name: "Dry Out",
value: 0,
schemeAsset: "assets/images/route_dryout.png",
loopback: false,
dryWet: false),
];
const PlugProUsbSettings({Key? key}) : super(key: key);
@override
State createState() => _PlugProUsbSettingsState();
}
class _PlugProUsbSettingsState extends State<PlugProUsbSettings> {
final loopbackMask = 0x10;
final modeMask = 0x07;
final config =
NuxDeviceControl.instance().device.config as NuxPlugProConfiguration;
final usbSettings = NuxDeviceControl.instance().device as ProUsbSettings;
static const fontSize = TextStyle(fontSize: 20);
@override
void didChangeDependencies() {
// Adjust the provider based on the image type
for (var route in PlugProUsbSettings.routes) {
precacheImage(AssetImage(route.schemeAsset), context);
}
super.didChangeDependencies();
}
void _setUsbDryWetValue(double value, bool skip) {
if (skip) {
config.usbDryWet = value.round();
} else {
usbSettings.setUsbDryWetVol(value.round());
}
setState(() {});
}
void _setUsbRecordingValue(double value, bool skip) {
if (skip) {
config.recLevel = value.round();
} else {
usbSettings.setUsbRecordingVol(value.round());
}
setState(() {});
}
void _setUsbPlaybackValue(double value, bool skip) {
if (skip) {
config.playbackLevel = value.round();
} else {
usbSettings.setUsbPlaybackVol(value.round());
}
setState(() {});
}
@override
Widget build(BuildContext context) {
const routes = PlugProUsbSettings.routes;
var routeModeInt = config.routingMode & modeMask;
var routeMode = routes.firstWhere((r) => r.value == routeModeInt);
var modeIndex = routes.indexOf(routeMode);
var loopback = config.routingMode & loopbackMask != 0;
return Scaffold(
appBar: AppBar(
title: const Text("USB Audio Settings"),
),
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const Padding(
padding: EdgeInsets.all(16.0),
child: Text(
"Route Mode",
style: fontSize,
),
),
ModeControlRegular(
selected: modeIndex,
options: routes.map((e) => e.name).toList(),
onSelected: (index) {
var mode = routes[index];
var value = mode.value;
if (mode.loopback && loopback) value |= loopbackMask;
usbSettings.setUsbMode(value);
setState(() {});
},
textStyle: fontSize,
),
const SizedBox(
height: 8,
),
SwitchListTile(
title: const Text(
"Loopback",
style: fontSize,
),
subtitle: const Text(
"Redirect Bluetooth and microphone audio to USB input"),
value: loopback,
onChanged: !routeMode.loopback
? null
: (value) {
if (value) {
routeModeInt |= loopbackMask;
} else {
routeModeInt &= modeMask;
}
usbSettings.setUsbMode(routeModeInt);
setState(() {});
}),
Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: Image.asset(routeMode.schemeAsset),
),
ThickSlider(
enabled: routeMode.dryWet,
activeColor: Colors.blue,
label: "Dry/Wet",
value: config.usbDryWet.toDouble(),
min: 0,
max: 100,
labelFormatter: (val) {
return "${config.usbDryWet}%";
},
handleVerticalDrag: true,
onChanged: _setUsbDryWetValue,
onDragEnd: (value) => _setUsbDryWetValue(value, false),
),
ThickSlider(
activeColor: Colors.blue,
label: "Recording Level",
value: config.recLevel.toDouble(),
min: 0,
max: 100,
labelFormatter: (val) {
return "${((val - 50) / 50 * 12).toStringAsFixed(2)} db";
},
handleVerticalDrag: true,
onChanged: _setUsbRecordingValue,
onDragEnd: (value) => _setUsbRecordingValue(value, false),
),
ThickSlider(
activeColor: Colors.blue,
label: "Playback Level",
value: config.playbackLevel.toDouble(),
min: 0,
max: 100,
labelFormatter: (val) {
return "${((val - 50) / 50 * 12).toStringAsFixed(2)} db";
},
handleVerticalDrag: true,
onChanged: _setUsbPlaybackValue,
onDragEnd: (value) => _setUsbPlaybackValue(value, false),
)
],
),
),
),
);
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/eq/MightySpaceSpeakerEQ.dart
================================================
// (c) 2020-2021 Dian Iliev (Tuntorius)
// This code is licensed under MIT license (see LICENSE.md for details)
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/widgets/presets/effectEditors/EqualizerEditor.dart';
import 'package:mighty_plug_manager/bluetooth/devices/NuxMightySpace.dart';
import 'package:mighty_plug_manager/bluetooth/devices/communication/plugProCommunication.dart';
import '../../../../bluetooth/NuxDeviceControl.dart';
import '../../../../bluetooth/devices/effects/Processor.dart';
import '../../../../bluetooth/devices/effects/plug_pro/EQ.dart';
import 'eq_group.dart';
class SpaceSpeakerEQSettings extends StatefulWidget {
const SpaceSpeakerEQSettings({Key? key}) : super(key: key);
@override
State createState() => _SpaceSpeakerEQSettingsState();
}
class _SpaceSpeakerEQSettingsState extends State<SpaceSpeakerEQSettings> {
final device = NuxDeviceControl.instance().device as NuxMightySpace;
final communication =
NuxDeviceControl.instance().device.communication as PlugProCommunication;
bool _requestInProgress = false;
static const List<int> defaultSpeakerEQ = [
0x32,
0x49,
0x4b,
0x40,
0x32,
0x43,
0x24,
0x32,
0x32,
0x22,
0x51
];
@override
void initState() {
super.initState();
_requestEQData(device.config.speakerEQGroup);
}
void _requestEQData(int index) {
_requestInProgress = true;
(device.communication as PlugProCommunication).requestSpeakerEQData(index);
}
Widget _buildGroupWidget() {
return EQGroup(
eqGroup: device.config.speakerEQGroup,
onChanged: (int? value) {
if (value != null) {
//request another
device.config.speakerEQGroup = value;
communication.setSpeakerEq(value);
_requestEQData(device.config.speakerEQGroup);
setState(() {});
}
},
);
}
List<Widget> _buildButtons(EQTenBandSpeaker btEQ) {
return [
ElevatedButton(
child: const Text("Reset"),
onPressed: () {
for (int i = 0; i < btEQ.parameters.length; i++) {
if (device.config.speakerEQGroup == 0) {
btEQ.parameters[i].midiValue = defaultSpeakerEQ[i];
} else {
btEQ.parameters[i].value = 0;
}
NuxDeviceControl.instance()
.sendParameter(btEQ.parameters[i], false);
}
setState(() {});
}),
const SizedBox(width: 6),
ElevatedButton(
child: const Text("Save"),
onPressed: () {
communication.saveSpeakerEQGroup(device.config.speakerEQGroup);
})
];
}
@override
Widget build(BuildContext context) {
var btEQ = device.config.speakerEQ;
bool isPortrait =
MediaQuery.of(context).orientation == Orientation.portrait;
return Scaffold(
appBar: AppBar(
title: const Text("Speaker EQ Settings"),
),
body: StreamBuilder(
stream:
(device.communication as PlugProCommunication).speakerEQStream,
builder: (context, AsyncSnapshot<List<int>> snapshot) {
if (snapshot.connectionState == ConnectionState.done &&
_requestInProgress) {
btEQ.setupFromNuxPayload(snapshot.data!);
_requestInProgress = false;
}
return ListTileTheme(
minLeadingWidth: 0,
iconColor: Colors.white,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
if (isPortrait)
ListTile(
leading: const Icon(Icons.speaker),
title: const Text("Speaker Settings"),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: _buildButtons(btEQ)),
),
if (isPortrait) _buildGroupWidget(),
if (!isPortrait)
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
_buildGroupWidget(),
Row(children: _buildButtons(btEQ))
],
),
Expanded(
child: EqualizerEditor(
eqEffect: btEQ,
enabled: true,
onChanged: _changeEQValue,
onChangedFinal: (parameter, value, oldValue) =>
_changeEQValue(parameter, value, false),
),
)
],
));
}),
);
}
void _changeEQValue(Parameter parameter, double value, bool skip) {
parameter.value = value;
setState(() {
if (!skip) NuxDeviceControl.instance().sendParameter(parameter, false);
});
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/eq/PlugProEQSettings.dart
================================================
// (c) 2020-2021 Dian Iliev (Tuntorius)
// This code is licensed under MIT license (see LICENSE.md for details)
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/pages/device_specific_settings/eq/bt_audio_options.dart';
import 'package:mighty_plug_manager/UI/widgets/presets/effectEditors/EqualizerEditor.dart';
import 'package:mighty_plug_manager/bluetooth/devices/NuxMightyPlugPro.dart';
import 'package:mighty_plug_manager/bluetooth/devices/communication/plugProCommunication.dart';
import '../../../../bluetooth/NuxDeviceControl.dart';
import '../../../../bluetooth/devices/effects/Processor.dart';
import '../../../../bluetooth/devices/effects/plug_pro/EQ.dart';
import 'eq_group.dart';
class PlugProEQSettings extends StatefulWidget {
const PlugProEQSettings({Key? key}) : super(key: key);
@override
State createState() => _PlugProEQSettingsState();
}
class _PlugProEQSettingsState extends State<PlugProEQSettings> {
final device = NuxDeviceControl.instance().device as NuxMightyPlugPro;
final communication =
NuxDeviceControl.instance().device.communication as PlugProCommunication;
bool _requestInProgress = false;
@override
void initState() {
super.initState();
_requestEQData(device.config.bluetoothGroup);
}
void _requestEQData(int index) {
_requestInProgress = true;
(device.communication as PlugProCommunication).requestBTEQData(index);
}
List<Widget> _buildGroupWidget() {
return [
EQGroup(
eqGroup: device.config.bluetoothGroup,
onChanged: (int? value) {
if (value != null) {
//request another
device.config.bluetoothGroup = value;
communication.setBTEq(value);
_requestEQData(device.config.bluetoothGroup);
setState(() {});
}
},
),
BTAudioOptions(
btInvertChannel: device.config.bluetoothInvertChannel,
btEQMute: device.config.bluetoothEQMute,
onInvert: (invert) {
device.config.bluetoothInvertChannel = invert;
communication.setBTInvert(device.config.bluetoothInvertChannel);
setState(() {});
},
onMute: (mute) {
device.config.bluetoothEQMute = mute;
communication.setBTMute(device.config.bluetoothEQMute);
setState(() {});
})
];
}
List<Widget> _buildButtons(EQTenBandBT btEQ) {
return [
ElevatedButton(
child: const Text("Reset"),
onPressed: () {
for (var param in btEQ.parameters) {
param.value = 0;
NuxDeviceControl.instance().sendParameter(param, false);
}
setState(() {});
}),
const SizedBox(width: 6),
ElevatedButton(
child: const Text("Save"),
onPressed: () {
communication.saveBTEQGroup(device.config.bluetoothGroup);
})
];
}
@override
Widget build(BuildContext context) {
var btEQ = device.config.bluetoothEQ;
bool isPortrait =
MediaQuery.of(context).orientation == Orientation.portrait;
return Scaffold(
appBar: AppBar(
title: const Text("Bluetooth EQ Settings"),
),
body: StreamBuilder(
stream:
(device.communication as PlugProCommunication).bluetoothEQStream,
builder: (context, AsyncSnapshot<List<int>> snapshot) {
if (snapshot.connectionState == ConnectionState.done &&
_requestInProgress) {
btEQ.setupFromNuxPayload(snapshot.data!);
device.config.bluetoothInvertChannel = snapshot.data![12] > 0;
device.config.bluetoothEQMute = snapshot.data![13] > 0;
_requestInProgress = false;
}
return ListTileTheme(
minLeadingWidth: 0,
iconColor: Colors.white,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
if (isPortrait)
ListTile(
leading: const Icon(Icons.bluetooth),
title: const Text("Bluetooth Settings"),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: _buildButtons(btEQ)),
),
if (isPortrait)
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: _buildGroupWidget(),
),
if (!isPortrait)
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
..._buildGroupWidget(),
Row(children: _buildButtons(btEQ))
],
),
Expanded(
child: EqualizerEditor(
eqEffect: btEQ,
enabled: true,
onChanged: _changeEQValue,
onChangedFinal: (parameter, value, oldValue) =>
_changeEQValue(parameter, value, false),
),
)
],
));
}),
);
}
void _changeEQValue(Parameter parameter, double value, bool skip) {
parameter.value = value;
setState(() {
if (!skip) NuxDeviceControl.instance().sendParameter(parameter, false);
});
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/eq/bt_audio_options.dart
================================================
import 'package:flutter/material.dart';
import '../../../mightierIcons.dart';
class BTAudioOptions extends StatelessWidget {
final bool btInvertChannel;
final bool btEQMute;
final void Function(bool) onInvert;
final void Function(bool) onMute;
const BTAudioOptions(
{super.key,
required this.btInvertChannel,
required this.btEQMute,
required this.onInvert,
required this.onMute});
@override
Widget build(BuildContext context) {
return ToggleButtons(
fillColor: Colors.blue,
selectedBorderColor: Colors.blue,
color: Colors.grey,
isSelected: [btInvertChannel, btEQMute],
onPressed: (index) {
switch (index) {
case 0:
onInvert(!btInvertChannel);
break;
case 1:
onMute(!btEQMute);
break;
}
},
children: [
const Tooltip(
message: "Invert the phase of Bluetooth Audio.",
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 15.0),
child: Icon(MightierIcons.sinewave, size: 40),
),
),
Tooltip(
message: "Mute Bluetooth audio.",
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 25.0),
child: Icon(btEQMute ? Icons.volume_off : Icons.volume_up),
),
),
],
);
}
}
================================================
FILE: lib/UI/pages/device_specific_settings/eq/eq_group.dart
================================================
import 'package:flutter/material.dart';
class EQGroup extends StatelessWidget {
final int eqGroup;
final void Function(int?)? onChanged;
const EQGroup({super.key, required this.eqGroup, this.onChanged});
static const List<DropdownMenuItem<int>> eqGroups = [
DropdownMenuItem<int>(
value: 0,
child: Text("Group 1"),
),
DropdownMenuItem<int>(
value: 1,
child: Text("Group 2"),
),
DropdownMenuItem<int>(
value: 2,
child: Text("Group 3"),
),
DropdownMenuItem<int>(
value: 3,
child: Text("Group 4"),
),
];
@override
Widget build(BuildContext context) {
return Row(
children: [
const Text(
"EQ Group",
style: TextStyle(fontSize: 16),
),
const SizedBox(
width: 8,
),
DropdownButton(
items: eqGroups,
onChanged: onChanged,
value: eqGroup,
)
],
);
}
}
================================================
FILE: lib/UI/pages/drum_editor/DrumStyleBottomSheet.dart
================================================
import 'package:flutter/material.dart';
import '../../widgets/scrollPicker.dart';
enum DrumStyleMode { flat, categorized }
class DrumStyleBottomSheet extends StatefulWidget {
final dynamic styleMap;
final DrumStyleMode mode;
final int selected;
final Function(int) onChange;
const DrumStyleBottomSheet(
{Key? key,
required this.styleMap,
required this.selected,
required this.onChange,
required this.mode})
: super(key: key);
@override
State<DrumStyleBottomSheet> createState() => _DrumStyleBottomSheetState();
}
class _DrumStyleBottomSheetState extends State<DrumStyleBottomSheet> {
List<String> categoriesList = [];
List<String> stylesList = [];
int categoriesIndex = 0;
int selectedStyle = 0;
@override
void initState() {
super.initState();
selectedStyle = widget.selected;
if (widget.mode == DrumStyleMode.categorized) {
categoriesList = widget.styleMap.keys.toList();
for (var key in widget.styleMap.keys) {
stylesList.addAll(widget.styleMap[key]!.keys as Iterable<String>);
for (var style in widget.styleMap[key]!.keys) {
if (widget.styleMap[key]![style] == widget.selected) {
categoriesIndex = categoriesList.indexOf(key);
}
}
}
} else {
stylesList = widget.styleMap;
}
}
void _onCategoryChanged(int value, bool userGenerated) {
categoriesIndex = value;
if (userGenerated) {
var key = categoriesList[categoriesIndex];
var firstKey = widget.styleMap[key]!.keys.first as String;
selectedStyle = widget.styleMap[key]![firstKey];
setState(() {});
}
}
void _onStyleChanged(int value, bool userGenerated, bool finalChange) {
selectedStyle = value;
if (userGenerated) {
//find category
for (var cat in widget.styleMap.keys) {
for (var style in widget.styleMap[cat]!.keys) {
if (widget.styleMap[cat]![style] == value) {
categoriesIndex = categoriesList.indexOf(cat);
setState(() {});
break;
}
}
}
}
if (finalChange) widget.onChange(selectedStyle);
}
void _onFlatStyleChanged(int value, bool finalChange) {
selectedStyle = value;
widget.onChange(selectedStyle);
if (!finalChange) setState(() {});
}
@override
Widget build(BuildContext context) {
return SizedBox(
height: 400,
child: Column(
children: [
const SizedBox(
height: 40,
// ignore: unnecessary_const
child: Center(
child: Text(
"Select Style",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 20),
),
),
),
const Divider(
thickness: 1,
),
Expanded(
child: widget.mode == DrumStyleMode.flat
? ScrollPicker(
initialValue: selectedStyle,
items: stylesList,
onChanged: (value) {
_onFlatStyleChanged(value, false);
},
onChangedFinal: (value, user) =>
_onFlatStyleChanged(value, true),
)
: Row(
children: [
Expanded(
child: ScrollPicker(
initialValue: categoriesIndex,
items: categoriesList,
onChanged: (value) {
_onCategoryChanged(value, true);
},
onChangedFinal: _onCategoryChanged,
),
),
Expanded(
child: ScrollPicker(
initialValue: selectedStyle,
items: stylesList,
onChanged: (value) {
_onStyleChanged(value, true, false);
},
onChangedFinal: (value, user) =>
_onStyleChanged(value, user, true),
),
)
],
),
),
],
),
);
}
}
================================================
FILE: lib/UI/pages/drum_editor/drumEditor.dart
================================================
// (c) 2020-2021 Dian Iliev (Tuntorius)
// This code is licensed under MIT license (see LICENSE.md for details)
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/pages/drum_editor/drum_eq_bottom_sheet.dart';
import 'package:mighty_plug_manager/UI/pages/drum_editor/drumstyle_scroll_picker.dart';
import 'package:mighty_plug_manager/UI/pages/drum_editor/tap_buttons.dart';
import 'package:mighty_plug_manager/UI/widgets/circular_button.dart';
import 'package:mighty_plug_manager/UI/widgets/common/modeControlRegular.dart';
import 'package:mighty_plug_manager/UI/pages/drum_editor/tempoTrainerSheet.dart';
import 'package:mighty_plug_manager/bluetooth/devices/features/drumsTone.dart';
import '../../../bluetooth/devices/NuxDevice.dart';
import '../../../bluetooth/NuxDeviceControl.dart';
import '../../../bluetooth/devices/features/looper.dart';
import '../../../modules/tempo_trainer.dart';
import '../../widgets/thickSlider.dart';
import 'looperPage.dart';
enum DrumEditorLayout { standard, extendedToneControls }
enum DrumEditorMode { regular, trainer, looper }
class DrumEditor extends StatefulWidget {
static const fontStyle = TextStyle(fontSize: 18);
const DrumEditor({Key? key}) : super(key: key);
@override
State createState() => _DrumEditorState();
}
class _DrumEditorState extends State<DrumEditor>
with AutomaticKeepAliveClientMixin<DrumEditor> {
late dynamic _drumStyles;
DrumEditorLayout _layout = DrumEditorLayout.standard;
DrumEditorMode _mode = DrumEditorMode.regular;
int _selectedDrumPattern = 0;
late NuxDevice device;
@override
void initState() {
super.initState();
_drumStyles = NuxDeviceControl.instance().device.getDrumStyles();
NuxDeviceControl.instance().addListener(_onStateChanged);
}
@override
void dispose() {
super.dispose();
NuxDeviceControl.instance().removeListener(_onStateChanged);
}
Widget _createScrollPicker(
bool smallControls, bool showPlay, bool playEnabled) {
var picker = DrumStyleScrollPicker(
smallControls: smallControls,
selectedDrumPattern: _selectedDrumPattern,
layout: _layout,
device: device,
drumStyles: _drumStyles,
onChanged: _onScrollPickerChanged,
onChangedFinal: _onScrollPickerChangedFinal,
onComplete: () => setState(() {}));
if (!showPlay) return picker;
return Row(
children: [
Expanded(child: picker),
IconButton(
onPressed: !playEnabled || !NuxDeviceControl().isConnected
? null
: () {
device.setDrumsEnabled(!device.drumsEnabled);
if (device.drumsEnabled == false) {
TempoTrainer.instance().enable = false;
}
NuxDeviceControl.instance().forceNotifyListeners();
},
padding: const EdgeInsets.only(left: 12, right: 4),
iconSize: smallControls ? 44 : 56,
color: device.drumsEnabled ? Colors.orange : Colors.green,
icon: Icon(device.drumsEnabled ? Icons.stop : Icons.play_arrow))
],
);
}
Widget _landscapePlayControl(bool enabled) {
return CircularButton(
onPressed: TempoTrainer.instance().enable || !enabled
? null
: () {
device.setDrumsEnabled(!device.drumsEnabled);
if (device.drumsEnabled == false) {
TempoTrainer.instance().enable = false;
}
NuxDeviceControl.instance().forceNotifyListeners();
},
backgroundColor: device.drumsEnabled ? Colors.orange : Colors.green,
icon: device.drumsEnabled ? Icons.stop : Icons.play_arrow);
}
Widget _createModeControl(
{required bool looper,
required bool landscape,
required bool smallControls}) {
double height = smallControls ? 48 : 56;
if (landscape && !looper) {
return SizedBox(
height: height,
child: const Center(
child: Text(
"Trainer",
style: TextStyle(fontSize: 20),
)),
);
}
if (landscape) {
var controls = ["Trainer", "Looper"];
var mode = _mode;
if (mode == DrumEditorMode.regular) mode = DrumEditorMode.trainer;
return ConstrainedBox(
constraints: BoxConstraints(maxHeight: height),
child: ModeControlRegular(
options: controls,
textStyle: DrumEditor.fontStyle,
selected: mode.index - 1,
onSelected: (index) {
_mode = DrumEditorMode.values[index + 1];
setState(() {});
}),
);
}
var controls = ["Regular", "Trainer"];
if (looper) controls.add("Looper");
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: ConstrainedBox(
constraints: const BoxConstraints(maxHeight: 40),
child: ModeControlRegular(
options: controls,
textStyle: DrumEditor.fontStyle,
selected: _mode.index,
onSelected: (index) {
_mode = DrumEditorMode.values[index];
setState(() {});
}),
),
);
}
Widget _drumLevelSlider(bool small) {
return ThickSlider(
min: 0,
max: 100,
maxHeight: small ? 40 : null,
activeColor: Colors.blue,
label: "Drums Level",
value: device.drumsVolume.toDouble(),
labelFormatter: (val) => "${device.drumsVolume.round()} %",
onChanged: (value, skip) {
setState(() {
device.setDrumsLevel(value, !skip);
});
},
);
}
bool _tempoControlsEnabled() {
return !TempoTrainer.instance().enable &&
(device is! Looper ||
(device is Looper && (device as Looper).loopState == 0));
}
Widget _tempoSlider(bool small, bool landscape) {
if (_mode != DrumEditorMode.trainer || landscape) {
return ThickSlider(
enabled: _tempoControlsEnabled(),
min: device.drumsMinTempo,
max: device.drumsMaxTempo,
maxHeight: small ? 40 : null,
skipEmitting: 5,
activeColor: Colors.blue,
label: "Tempo",
value: device.drumsTempo,
labelFormatter: (val) => "${device.drumsTempo.toStringAsFixed(1)} BPM",
onChanged: (val, skip) {
setState(() {
device.setDrumsTempo(val, !skip);
});
},
);
}
return const SizedBox.shrink();
}
List<Widget> _toneSliders(bool small) {
if (device is! DrumsTone) return [];
var dev = device as DrumsTone;
return [
ThickSlider(
min: 0,
max: 100,
maxHeight: small ? 40 : null,
skipEmitting: 5,
activeColor: Colors.blue,
label: "Bass",
value: dev.drumsBass,
labelFormatter: (val) => "${dev.drumsBass.round()} %",
onChanged: (val, skip) {
dev.setDrumsTone(val, DrumsToneControl.bass, !skip);
setState(() {});
},
),
ThickSlider(
min: 0,
max: 100,
maxHeight: small ? 40 : null,
skipEmitting: 5,
activeColor: Colors.blue,
label: "Middle",
value: dev.drumsMiddle,
labelFormatter: (val) => "${dev.drumsMiddle.round()} %",
onChanged: (val, skip) {
dev.setDrumsTone(val, DrumsToneControl.middle, !skip);
setState(() {});
},
),
ThickSlider(
min: 0,
max: 100,
maxHeight: small ? 40 : null,
skipEmitting: 5,
activeColor: Colors.blue,
label: "Treble",
value: dev.drumsTreble,
labelFormatter: (val) => "${dev.drumsTreble.round()} %",
onChanged: (val, skip) {
dev.setDrumsTone(val, DrumsToneControl.treble, !skip);
setState(() {});
},
)
];
}
Widget _tapButton(bool smallControls) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: TapButtons(
smallControls: smallControls,
device: device,
onTempoModified: _modifyTempo,
onTempoChanged: _onTempoChanged,
enabled: _tempoControlsEnabled()),
);
}
@override
Widget build(BuildContext context) {
super.build(context);
final mediaQuery = MediaQuery.of(context);
final bool portrait = mediaQuery.orientation == Orientation.portrait;
final bool smallControls =
portrait ? mediaQuery.size.height < 690 : mediaQuery.size.height < 400;
device = NuxDeviceControl.instance().device;
final bool hasLooper = device is Looper;
final bool looperEnabled = hasLooper && (device as Looper).loopState != 0;
_layout = _drumStyles is List<String>
? DrumEditorLayout.standard
: DrumEditorLayout.extendedToneControls;
_selectedDrumPattern = device.selectedDrumStyle;
if (portrait) {
return Column(
mainAxisSize: MainAxisSize.max,
//padding: const EdgeInsets.all(16.0),
children: [
Card(
color: Colors.grey[850],
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(children: [
_createScrollPicker(smallControls, true, !looperEnabled),
const SizedBox(height: 6),
_drumLevelSlider(smallControls),
]),
),
),
_createModeControl(
looper: hasLooper,
landscape: false,
smallControls: smallControls),
Card(
color: Colors.grey[850],
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
_tempoSlider(smallControls, false),
if (_mode == DrumEditorMode.regular)
_tapButton(smallControls),
if (_mode == DrumEditorMode.regular && device is DrumsTone)
..._toneSliders(smallControls),
if (_mode == DrumEditorMode.trainer)
TempoTrainerSheet(
smallControls: smallControls,
overtakeDrums: true,
enabled: !looperEnabled),
if (_mode == DrumEditorMode.looper)
LooperControl(
onStateChanged: _onStateChanged,
smallControls: smallControls,
),
],
),
),
),
],
);
}
var mode = _mode;
if (mode == DrumEditorMode.regular) mode = DrumEditorMode.trainer;
return Row(
mainAxisSize: MainAxisSize.min,
children: [
Expanded(
flex: 1,
child: Card(
color: Colors.grey[850],
child: Padding(
padding: const EdgeInsets.all(6.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
_createScrollPicker(smallControls, false, false),
const SizedBox(height: 6),
_drumLevelSlider(smallControls),
_tempoSlider(smallControls, true),
_tapButton(smallControls),
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
if (device is DrumsTone)
CircularButton(
icon: Icons.equalizer,
backgroundColor: Colors.blue,
onPressed: () {
showModalBottomSheet(
showDragHandle: true,
context: context,
builder: (context) {
return const DrumEQBottomSheet();
});
}),
_landscapePlayControl(!looperEnabled)
],
)),
]),
),
)),
const SizedBox(
width: 6,
),
Expanded(
flex: 1,
child: Card(
color: Colors.grey[850],
child: Padding(
padding: const EdgeInsets.all(6.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Center(
child: _createModeControl(
looper: hasLooper,
landscape: true,
smallControls: smallControls)),
const SizedBox(height: 6),
if (!hasLooper || mode == DrumEditorMode.trainer)
TempoTrainerSheet(
smallControls: smallControls,
overtakeDrums: false,
enabled: device.drumsEnabled ==
TempoTrainer.instance().enable &&
!looperEnabled,
),
if (mode == DrumEditorMode.looper)
LooperControl(
onStateChanged: _onStateChanged,
smallControls: smallControls,
),
],
),
),
))
],
);
}
void _onScrollPickerChanged(value) {
_selectedDrumPattern = value;
setState(() {});
}
void _onScrollPickerChangedFinal(
int value, bool userGenerated, NuxDevice? device) {
if (userGenerated) {
_selectedDrumPattern = value;
device?.setDrumsStyle(value);
//workaround for a bug in Mighty Plug
device?.setDrumsTempo(device.drumsTempo + 1, true);
device?.setDrumsTempo(device.drumsTempo - 1, true);
}
}
void _modifyTempo(double amount) {
setState(() {
double newTempo = device.drumsTempo + amount;
device.setDrumsTempo(newTempo, true);
});
}
void _onTempoChanged(double value) {
setState(() {
device.setDrumsTempo(value, true);
});
}
void _onStateChanged() {
_drumStyles = NuxDeviceControl.instance().device.getDrumStyles();
if (device.drumsEnabled == false &&
TempoTrainer.instance().enable == true) {
TempoTrainer.instance().enable = false;
}
setState(() {});
}
@override
bool get wantKeepAlive => true;
}
================================================
FILE: lib/UI/pages/drum_editor/drum_eq_bottom_sheet.dart
================================================
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/bluetooth/NuxDeviceControl.dart';
import '../../../bluetooth/devices/features/drumsTone.dart';
import '../../widgets/thickSlider.dart';
class DrumEQBottomSheet extends StatefulWidget {
const DrumEQBottomSheet({super.key});
@override
State<DrumEQBottomSheet> createState() => _DrumEQBottomSheetState();
}
class _DrumEQBottomSheetState extends State<DrumEQBottomSheet> {
@override
Widget build(BuildContext context) {
var dev = NuxDeviceControl.instance().device as DrumsTone;
return Column(
mainAxisSize: MainAxisSize.min,
children: [
ThickSlider(
min: 0,
max: 100,
maxHeight: 45,
skipEmitting: 5,
activeColor: Colors.blue,
label: "Bass",
value: dev.drumsBass,
handleVerticalDrag: false,
labelFormatter: (val) => "${dev.drumsBass.round()} %",
onChanged: (val, skip) {
dev.setDrumsTone(val, DrumsToneControl.bass, !skip);
setState(() {});
},
),
ThickSlider(
min: 0,
max: 100,
maxHeight: 45,
skipEmitting: 5,
activeColor: Colors.blue,
label: "Middle",
value: dev.drumsMiddle,
handleVerticalDrag: false,
labelFormatter: (val) => "${dev.drumsMiddle.round()} %",
onChanged: (val, skip) {
dev.setDrumsTone(val, DrumsToneControl.middle, !skip);
setState(() {});
},
),
ThickSlider(
min: 0,
max: 100,
maxHeight: 45,
skipEmitting: 5,
activeColor: Colors.blue,
label: "Treble",
value: dev.drumsTreble,
handleVerticalDrag: false,
labelFormatter: (val) => "${dev.drumsTreble.round()} %",
onChanged: (val, skip) {
dev.setDrumsTone(val, DrumsToneControl.treble, !skip);
setState(() {});
},
),
const SizedBox(
height: 15,
)
],
);
}
}
================================================
FILE: lib/UI/pages/drum_editor/drumstyle_scroll_picker.dart
================================================
import 'package:flutter/material.dart';
import '../../../bluetooth/devices/NuxDevice.dart';
import 'DrumStyleBottomSheet.dart';
import 'drumEditor.dart';
class DrumStyleScrollPicker extends StatelessWidget {
static const _fontStyle = TextStyle(fontSize: 20);
final int selectedDrumPattern;
final DrumEditorLayout layout;
final NuxDevice device;
final dynamic drumStyles;
// Events
final ValueChanged<int> onChanged;
final Function(int, bool, NuxDevice) onChangedFinal;
final Function() onComplete;
final bool smallControls;
const DrumStyleScrollPicker(
{super.key,
required this.selectedDrumPattern,
required this.layout,
required this.device,
required this.drumStyles,
required this.onChanged,
required this.onChangedFinal,
required this.onComplete,
required this.smallControls});
String _getComplexListStyle(Map<String, Map> list) {
for (String cat in list.keys) {
for (String style in list[cat]!.keys) {
if (list[cat]![style] == selectedDrumPattern) return "$cat - $style";
}
}
return "";
}
@override
Widget build(BuildContext context) {
return Semantics(
label: "Drum style",
child: ListTile(
dense: smallControls,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5),
side: const BorderSide(width: 1, color: Colors.white)),
title: Text(
layout == DrumEditorLayout.extendedToneControls
? _getComplexListStyle(drumStyles)
: drumStyles[selectedDrumPattern],
style: _fontStyle,
overflow: TextOverflow.ellipsis,
),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
showModalBottomSheet(
context: context,
builder: (context) {
return DrumStyleBottomSheet(
styleMap: drumStyles,
mode: layout == DrumEditorLayout.extendedToneControls
? DrumStyleMode.categorized
: DrumStyleMode.flat,
selected: selectedDrumPattern,
onChange: (value) {
onChangedFinal(value, true, device);
},
);
}).whenComplete(() {
onComplete();
});
},
),
);
}
}
================================================
FILE: lib/UI/pages/drum_editor/looperPage.dart
================================================
import 'dart:async';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/widgets/thickSlider.dart';
import '../../../bluetooth/NuxDeviceControl.dart';
import '../../../bluetooth/devices/features/looper.dart';
import '../../../modules/tempo_trainer.dart';
import '../../widgets/circular_button.dart';
import '../../widgets/common/modeControlRegular.dart';
class LooperControl extends StatefulWidget {
final VoidCallback onStateChanged;
final bool smallControls;
const LooperControl(
{super.key, required this.onStateChanged, required this.smallControls});
@override
State<LooperControl> createState() => _LooperControlState();
}
class _LooperControlState extends State<LooperControl> {
static const fontSize = TextStyle(fontSize: 18);
late Looper _looper;
late LooperData _data = LooperData();
Timer? _blinkTimer;
StreamSubscription? _subscription;
bool _blinkOn = true;
@override
void initState() {
super.initState();
_looper = NuxDeviceControl().device as Looper;
_subscription = _looper.getLooperDataStream().listen(_onData);
_looper.requestLooperSettings();
_blinkTimer = Timer.periodic(const Duration(milliseconds: 400), _onBlink);
}
@override
void dispose() {
_subscription?.cancel();
_blinkTimer?.cancel();
super.dispose();
}
void _onData(LooperData data) {
_data = data;
widget.onStateChanged();
setState(() {});
}
void _onBlink(timer) {
_blinkOn = !_blinkOn;
setState(() {});
}
IconData getRecordButtonIcon() {
switch (_data.loopState) {
case 0:
case 1:
return Icons.fiber_manual_record;
case 2:
case 4:
return Icons.play_arrow;
case 3:
return Icons.fiber_smart_record;
case 9:
return Icons.pause;
default:
return Icons.fiber_manual_record;
}
}
Color _getRecordButtonColor() {
if (!_blinkOn && _data.loopState > 0 && _data.loopState < 4) {
return Colors.grey[700]!;
}
switch (_data.loopState) {
case 0:
case 1:
return Colors.red;
case 2:
case 4:
return Colors.green;
case 3:
return Colors.amber[700]!;
case 9:
return Colors.green;
default:
return Colors.red;
}
}
IconData getUndoButtonIcon() {
if (_data.loopUndoState == 2) return Icons.redo;
return Icons.undo;
}
Color _getUndoButtonColor() {
if (_data.loopUndoState == 2) return Colors.purple[700]!;
return Colors.blue;
}
bool getStopEnabled() {
switch (_data.loopState) {
case 2:
case 3:
return true;
default:
return false;
}
}
bool getClearEnabled() {
if (_data.loopState > 0 && _data.loopState < 5) return true;
return false;
}
bool getUndoEnabled() {
return _data.loopUndoState > 0;
}
@override
Widget build(BuildContext context) {
var looper = (NuxDeviceControl().device as Looper);
var connected = NuxDeviceControl().isConnected;
return Column(children: [
const SizedBox(
height: 8,
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12.0),
child: LayoutBuilder(
builder: (content, constraints) {
double width = constraints.maxWidth;
double size = min((width - 28 * 4) / 8, 20);
return Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
CircularButton(
icon: getRecordButtonIcon(),
iconPadding: size,
backgroundColor: _getRecordButtonColor(),
onPressed: connected
? () {
if (TempoTrainer.instance().enable == true) {
TempoTrainer.instance().enable = false;
}
looper.looperRecordPlay();
}
: null),
CircularButton(
icon: Icons.stop,
iconPadding: size,
backgroundColor: Colors.amber,
onPressed: getStopEnabled() ? looper.looperStop : null),
CircularButton(
icon: Icons.clear,
iconPadding: size,
backgroundColor: Colors.amber,
onPressed: getClearEnabled() ? looper.looperClear : null),
CircularButton(
iconPadding: size,
icon: getUndoButtonIcon(),
backgroundColor: _getUndoButtonColor(),
onPressed:
getUndoEnabled() ? looper.looperUndoRedo : null),
]);
},
),
),
const SizedBox(height: 8),
ListTile(
enabled: connected,
title: const Text("Recording", style: fontSize),
trailing: ConstrainedBox(
constraints: const BoxConstraints(maxHeight: 40),
child: ModeControlRegular(
options: const ["Normal", "Auto"],
textStyle: fontSize,
selected: looper.loopRecordMode,
onSelected: connected
? (index) {
looper.looperNrAr(index == 1);
setState(() {});
}
: null,
),
),
),
const SizedBox(
height: 8,
),
ThickSlider(
enabled: connected,
min: 0,
max: 100,
maxHeight: widget.smallControls ? 40 : null,
activeColor: Colors.blue,
label: "Looper Level",
value: looper.loopLevel.toDouble(),
labelFormatter: (val) => val.toInt().toString(),
onChanged: (value, skip) {
looper.looperLevel(value.toInt());
setState(() {});
},
onDragEnd: (value) {
looper.looperLevel(value.toInt());
setState(() {});
},
)
]);
}
}
================================================
FILE: lib/UI/pages/drum_editor/tap_buttons.dart
================================================
import 'package:flutter/material.dart';
import '../../../bluetooth/devices/NuxDevice.dart';
import '../../../utilities/DelayTapTimer.dart';
import 'drumEditor.dart';
class TapButtons extends StatelessWidget {
final NuxDevice device;
final Function(double) onTempoModified;
final Function(double) onTempoChanged;
final bool smallControls;
final bool enabled;
const TapButtons(
{super.key,
required this.device,
required this.onTempoModified,
required this.onTempoChanged,
required this.smallControls,
this.enabled = true});
void _onTapTempo() {
DelayTapTimer.addClickTime();
var bpm = DelayTapTimer.calculateBpm();
if (bpm != false) {
onTempoChanged(bpm);
}
}
@override
Widget build(BuildContext context) {
return ConstrainedBox(
constraints: BoxConstraints(maxHeight: smallControls ? 45 : 60),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
SizedBox(
width: 48,
child: ElevatedButton(
style: ElevatedButton.styleFrom(padding: EdgeInsets.zero),
onPressed: enabled ? () => onTempoModified(-5) : null,
child:
const Text("-5", semanticsLabel: "Tempo -5", softWrap: false),
),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 4.0),
child: SizedBox(
width: 48,
child: ElevatedButton(
style: ElevatedButton.styleFrom(padding: EdgeInsets.zero),
onPressed: enabled ? () => onTempoModified(-1) : null,
child: const Text("-1",
semanticsLabel: "Tempo -1", softWrap: false),
),
),
),
Expanded(
child: ElevatedButton(
onPressed: enabled ? _onTapTempo : null,
style: ButtonStyle(
overlayColor: MaterialStateProperty.resolveWith(
(states) {
return states.contains(MaterialState.pressed)
? Colors.lightBlue[100]
: null;
},
),
),
child: const Text(
"Tap Tempo",
style: DrumEditor.fontStyle,
textAlign: TextAlign.center,
),
),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 4),
child: SizedBox(
width: 48,
child: ElevatedButton(
style: ElevatedButton.styleFrom(padding: EdgeInsets.zero),
onPressed: enabled ? () => onTempoModified(1) : null,
child: const Text(
"+1",
softWrap: false,
semanticsLabel: "Tempo +1",
),
),
),
),
SizedBox(
width: 48,
child: ElevatedButton(
style: ElevatedButton.styleFrom(padding: EdgeInsets.zero),
onPressed: enabled ? () => onTempoModified(5) : null,
child: const Text(
"+5",
softWrap: false,
semanticsLabel: "Tempo +5",
),
),
)
],
),
);
}
}
================================================
FILE: lib/UI/pages/drum_editor/tempoTrainerSheet.dart
================================================
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/pages/drum_editor/drumEditor.dart';
import 'package:mighty_plug_manager/UI/widgets/common/modeControlRegular.dart';
import 'package:mighty_plug_manager/bluetooth/NuxDeviceControl.dart';
import '../../../modules/tempo_trainer.dart';
import '../../widgets/thickRangeSlider.dart';
import '../../widgets/thickSlider.dart';
class TempoTrainerSheet extends StatefulWidget {
final bool smallControls;
final bool overtakeDrums;
final bool enabled;
const TempoTrainerSheet(
{Key? key,
required this.smallControls,
required this.overtakeDrums,
this.enabled = true})
: super(key: key);
@override
State<TempoTrainerSheet> createState() => _TempoTrainerSheetState();
}
class _TempoTrainerSheetState extends State<TempoTrainerSheet>
with SingleTickerProviderStateMixin {
final _tempoTrainer = TempoTrainer.instance();
late AnimationController _animationController;
late Animation<double> _animation;
@override
void initState() {
super.initState();
_animationController = AnimationController(
duration: const Duration(milliseconds: 16),
vsync: this,
)..repeat();
_animation = Tween(begin: 0.0, end: 1.0).animate(_animationController);
NuxDeviceControl.instance().addListener(_updateBpm);
}
@override
void dispose() {
NuxDeviceControl.instance().removeListener(_updateBpm);
_animationController.dispose();
super.dispose();
}
static const List<String> _dropDownValues = ['Beats', 'Seconds'];
void _updateBpm() {
if (widget.overtakeDrums &&
NuxDeviceControl.instance().device.drumsEnabled !=
_tempoTrainer.enable) {
_tempoTrainer.enable = NuxDeviceControl.instance().device.drumsEnabled;
}
setState(() {});
}
Widget _progressPlayPauseButton(bool small) {
double size = small ? 60 : 80;
return Padding(
padding: const EdgeInsets.all(8.0),
child: Stack(
alignment: Alignment.center,
children: [
SizedBox(
width: size,
height: size,
child: AnimatedBuilder(
animation: _animation,
builder: (BuildContext context, Widget? child) {
double fill = _tempoTrainer.getTimerCountdown();
return CircularProgressIndicator(
value: fill,
strokeWidth: 10,
//backgroundColor: Colors.grey[300],
valueColor: const AlwaysStoppedAnimation<Color>(
Colors.green,
),
);
},
),
),
ElevatedButton(
onPressed: !widget.enabled || !NuxDeviceControl().isConnected
? null
: () async {
NuxDeviceControl.instance().device.setDrumsEnabled(false);
await Future.delayed(const Duration(milliseconds: 50));
setState(() {
_tempoTrainer.enable = !_tempoTrainer.enable;
});
},
style: ElevatedButton.styleFrom(
backgroundColor:
_tempoTrainer.enable ? Colors.orange : Colors.green,
shape: const CircleBorder(),
padding: EdgeInsets.all(small ? 14 : 20),
),
child: Icon(_tempoTrainer.enable ? Icons.stop : Icons.play_arrow),
),
],
),
);
}
@override
Widget build(BuildContext context) {
var device = NuxDeviceControl.instance().device;
return Column(children: [
ThickRangeSlider(
maxHeight: widget.smallControls ? 40 : null,
min: device.drumsMinTempo,
max: device.drumsMaxTempo,
enabled: widget.enabled,
activeColor: Colors.blue,
values: _tempoTrainer.tempoRange,
onChanged: (range, skip) {
_tempoTrainer.tempoRange = range;
setState(() {});
},
onDragEnd: (value) {
_tempoTrainer.saveConfig();
},
label: 'Tempo Range',
labelFormatter: (ranges) =>
"${ranges.start.round()} - ${ranges.end.round()}"),
ListTile(
enabled: widget.enabled,
contentPadding: const EdgeInsets.symmetric(horizontal: 8),
title: const FittedBox(
alignment: Alignment.centerLeft,
fit: BoxFit.none,
child: Text(
"Mode",
style: TextStyle(fontSize: 20),
),
),
trailing: ConstrainedBox(
constraints: const BoxConstraints(maxHeight: 40),
child: ModeControlRegular(
options: _dropDownValues,
textStyle: DrumEditor.fontStyle,
selected: _tempoTrainer.changeMode.index,
onSelected: !widget.enabled
? null
: (index) {
setState(() {
_tempoTrainer.changeMode =
TempoChangeMode.values[index];
_tempoTrainer.saveConfig();
});
}),
),
),
ThickSlider(
min: 2,
max: 100,
enabled: widget.enabled,
maxHeight: widget.smallControls ? 40 : null,
activeColor: Colors.blue,
label: "Increase every",
labelFormatter: (val) {
return "${val.round()} ${_tempoTrainer.changeMode == TempoChangeMode.beat ? "beats" : "seconds"}";
},
value: _tempoTrainer.changeUnits.toDouble(),
onChanged: (value, skip) {
_tempoTrainer.changeUnits = value.round();
setState(() {});
},
onDragEnd: (value) {
_tempoTrainer.saveConfig();
}),
ThickSlider(
min: 1,
max: 20,
enabled: widget.enabled,
maxHeight: widget.smallControls ? 40 : null,
activeColor: Colors.blue,
label: "Increase by",
labelFormatter: (val) {
return "${val.round()} bpm";
},
value: _tempoTrainer.tempoStep.toDouble(),
onChanged: (value, skip) {
_tempoTrainer.tempoStep = value.round();
setState(() {});
},
onDragEnd: (value) {
_tempoTrainer.saveConfig();
}),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Expanded(child: SizedBox.shrink()),
_progressPlayPauseButton(widget.smallControls),
Expanded(
child: Padding(
padding: const EdgeInsets.only(left: 8.0),
child: Text(
_tempoTrainer.enable ? "${device.drumsTempo.round()} bpm" : "",
style: DrumEditor.fontStyle.copyWith(
color: widget.enabled ? Colors.white : Colors.grey[600]),
),
),
)
],
),
]);
}
}
================================================
FILE: lib/UI/pages/drumsPage.dart
================================================
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/pages/drum_editor/drumEditor.dart';
class DrumsPage extends StatelessWidget {
const DrumsPage({super.key});
@override
Widget build(BuildContext context) {
return const SafeArea(
child: DrumEditor(),
);
}
}
================================================
FILE: lib/UI/pages/hotkeysMainPage.dart
================================================
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/pages/hotkeysSetup.dart';
import 'package:mighty_plug_manager/bluetooth/NuxDeviceControl.dart';
import 'package:mighty_plug_manager/bluetooth/devices/features/tuner.dart';
import 'package:mighty_plug_manager/midi/ControllerConstants.dart';
import 'package:mighty_plug_manager/midi/controllers/MidiController.dart';
import '../../bluetooth/devices/features/looper.dart';
class HotkeysMainPage extends StatelessWidget {
final MidiController controller;
const HotkeysMainPage({Key? key, required this.controller}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Setup"),
),
body: ListView(
children: [
ListTile(
title: const Text("Channel/Preset Hotkeys"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (context) => HotkeysSetup(
controller: controller,
category: HotkeyCategory.Channels,
))),
),
ListTile(
title: const Text("Effect Hotkeys"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (context) => HotkeysSetup(
controller: controller,
category: HotkeyCategory.EffectSlots,
))),
),
ListTile(
title: const Text("Parameter Hotkeys"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (context) => HotkeysSetup(
controller: controller,
category: HotkeyCategory.EffectParameters,
)))),
ListTile(
title: const Text("Drums Hotkeys"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (context) => HotkeysSetup(
controller: controller,
category: HotkeyCategory.Drums,
)))),
if (NuxDeviceControl.instance().device is Looper)
ListTile(
title: const Text("Looper Hotkeys"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (context) => HotkeysSetup(
controller: controller,
category: HotkeyCategory.Looper,
)))),
ListTile(
title: const Text("JamTracks Hotkeys"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (context) => HotkeysSetup(
controller: controller,
category: HotkeyCategory.JamTracks,
)))),
if (NuxDeviceControl.instance().device is Tuner)
ListTile(
title: const Text("Misc Hotkeys"),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () => Navigator.of(context).push(MaterialPageRoute(
builder: (context) => HotkeysSetup(
controller: controller,
category: HotkeyCategory.Misc,
)))),
],
),
);
}
}
================================================
FILE: lib/UI/pages/hotkeysSetup.dart
================================================
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/popups/hotkeyInput.dart';
import 'package:mighty_plug_manager/UI/popups/midiControlInfo.dart';
import 'package:mighty_plug_manager/bluetooth/NuxDeviceControl.dart';
import 'package:mighty_plug_manager/bluetooth/devices/effects/MidiControllerHandles.dart';
import 'package:mighty_plug_manager/bluetooth/devices/effects/Processor.dart';
import 'package:mighty_plug_manager/midi/ControllerConstants.dart';
import 'package:mighty_plug_manager/midi/MidiControllerManager.dart';
import 'package:mighty_plug_manager/midi/controllers/MidiController.dart';
class HotkeysSetup extends StatefulWidget {
final MidiController controller;
final HotkeyCategory category;
const HotkeysSetup(
{Key? key, required this.controller, required this.category})
: super(key: key);
@override
State createState() => _HotkeysSetupState();
}
class _HotkeysSetupState extends State<HotkeysSetup> {
Widget buildWidget(String name, IconData? icon, Color? color,
HotkeyControl ctrl, int ctrlIndex, int ctrlSubIndex, bool sliderMode,
{Function()? infoButton}) {
//sliders are not enabled in hid mode
bool enabled =
!(sliderMode && widget.controller.type == ControllerType.Hid);
Widget trailing;
var hk =
widget.controller.getHotkeyByFunction(ctrl, ctrlIndex, ctrlSubIndex);
String key = hk == null ? "None" : hk.hotkeyName;
if (infoButton == null) {
trailing = Text(key);
} else {
trailing = Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
onPressed: infoButton, icon: const Icon(Icons.info_outline)),
Text(key)
],
);
}
return ListTile(
enabled: enabled,
leading: Icon(
icon,
color: color,
),
minLeadingWidth: 0,
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) => HotkeyInputDialog().buildDialog(
context,
hotkeyName: name,
midiController: widget.controller,
ctrl: ctrl,
ctrlIndex: ctrlIndex,
ctrlSubIndex: ctrlSubIndex,
sliderMode: sliderMode),
).then((value) {
MidiControllerManager().cancelOnDataOverride();
setState(() {});
});
},
title: Text(name),
subtitle: enabled ? null : const Text("Not supported in HID mode"),
trailing: trailing);
}
List<Widget> _buildChannelWidgets() {
List<Widget> widgets = [];
widgets.add(buildWidget("Previous Channel", Icons.keyboard_arrow_left, null,
HotkeyControl.PreviousChannel, 0, 0, false));
widgets.add(buildWidget("Next Channel", Icons.keyboard_arrow_right, null,
HotkeyControl.NextChannel, 0, 0, false));
var colors =
NuxDeviceControl.instance().device.presets[0].channelColorsList;
for (int i = 0; i < NuxDeviceControl.instance().device.channelsCount; i++) {
widgets.add(buildWidget("Channel ${i + 1}", Icons.circle, colors[i],
HotkeyControl.ChannelByIndex, i, 0, false));
}
widgets.add(buildWidget("Previous Preset", Icons.keyboard_double_arrow_up,
null, HotkeyControl.PreviousPresetGlobal, 0, 0, false));
widgets.add(buildWidget("Next Preset", Icons.keyboard_double_arrow_down,
null, HotkeyControl.NextPresetGlobal, 0, 0, false));
widgets.add(buildWidget(
"Previous Preset in Category",
Icons.keyboard_arrow_up,
null,
HotkeyControl.PreviousPresetCategory,
0,
0,
false));
widgets.add(buildWidget(
"Next Preset in Category",
Icons.keyboard_arrow_down,
null,
HotkeyControl.NextPresetCategory,
0,
0,
false));
return widgets;
}
List<Widget> _buildEffectsWidgets() {
List<Widget> widgets = [];
var dev = NuxDeviceControl.instance().device;
for (int i = 0; i < dev.processorList.length; i++) {
var fxid = dev.processorList[i].nuxFXID;
var slot = dev.getPreset(dev.selectedChannel).getSlotFromFXID(fxid)!;
//var count =
// dev.getPreset(dev.selectedChannel).getEffectsForSlot(prc).length;
//var index = fxid.toInt();
var name = dev.processorList[i].longName;
var icon = dev.processorList[i].icon;
var color = dev.processorList[i].color;
var switchable = dev.getPreset(dev.selectedChannel).slotSwitchable(slot);
var effects = dev.getPreset(dev.selectedChannel).getEffectsForSlot(slot);
var fx = effects[0];
if (switchable) {
widgets.add(buildWidget(
"Switch $name on",
icon,
color,
HotkeyControl.EffectSlotEnable,
fx.midiControlOn!.id.index,
0,
false));
widgets.add(buildWidget(
"Switch $name off",
icon,
color,
Ho
gitextract_4w2zv_vh/
├── .firebaserc
├── .github/
│ └── FUNDING.yml
├── .gitignore
├── .metadata
├── .vscode/
│ ├── launch.json
│ └── settings.json
├── LICENSE.md
├── PRIVACY_POLICY.md
├── README.md
├── analysis_options.yaml
├── android/
│ ├── .gitignore
│ ├── app/
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── debug/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── strings.xml
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── tuntori/
│ │ │ │ └── mightieramp/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ └── launcher_icon.xml
│ │ │ └── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── profile/
│ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── gradle/
│ │ └── wrapper/
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ ├── settings.gradle
│ └── settings_aar.gradle
├── fastlane/
│ └── metadata/
│ └── android/
│ └── en-US/
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
├── firebase.json
├── ios/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ └── LaunchImage.imageset/
│ │ │ ├── Contents.json
│ │ │ └── README.md
│ │ ├── Base.lproj/
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ └── Runner.xcworkspace/
│ ├── contents.xcworkspacedata
│ └── xcshareddata/
│ ├── IDEWorkspaceChecks.plist
│ └── WorkspaceSettings.xcsettings
├── lib/
│ ├── UI/
│ │ ├── mainTabs.dart
│ │ ├── mightierIcons.dart
│ │ ├── pages/
│ │ │ ├── DebugConsolePage.dart
│ │ │ ├── calibration.dart
│ │ │ ├── developerPage.dart
│ │ │ ├── device_specific_settings/
│ │ │ │ ├── LiteMk2Settings.dart
│ │ │ │ ├── PlugAirSettings.dart
│ │ │ │ ├── PlugAirUsbSettings.dart
│ │ │ │ ├── PlugProMicSettings.dart
│ │ │ │ ├── PlugProSettings.dart
│ │ │ │ ├── PlugProUsbSettings.dart
│ │ │ │ └── eq/
│ │ │ │ ├── MightySpaceSpeakerEQ.dart
│ │ │ │ ├── PlugProEQSettings.dart
│ │ │ │ ├── bt_audio_options.dart
│ │ │ │ └── eq_group.dart
│ │ │ ├── drum_editor/
│ │ │ │ ├── DrumStyleBottomSheet.dart
│ │ │ │ ├── drumEditor.dart
│ │ │ │ ├── drum_eq_bottom_sheet.dart
│ │ │ │ ├── drumstyle_scroll_picker.dart
│ │ │ │ ├── looperPage.dart
│ │ │ │ ├── tap_buttons.dart
│ │ │ │ └── tempoTrainerSheet.dart
│ │ │ ├── drumsPage.dart
│ │ │ ├── hotkeysMainPage.dart
│ │ │ ├── hotkeysSetup.dart
│ │ │ ├── jamTracks.dart
│ │ │ ├── midiControllers.dart
│ │ │ ├── mighty_patches_importer.dart
│ │ │ ├── presetEditor.dart
│ │ │ ├── settings.dart
│ │ │ ├── settings_advanced.dart
│ │ │ └── tunerPage.dart
│ │ ├── popups/
│ │ │ ├── alertDialogs.dart
│ │ │ ├── changeCategory.dart
│ │ │ ├── exportQRCode.dart
│ │ │ ├── hotkeyInput.dart
│ │ │ ├── midiControlInfo.dart
│ │ │ ├── savePreset.dart
│ │ │ ├── selectPreset.dart
│ │ │ └── selectTrack.dart
│ │ ├── theme.dart
│ │ ├── toneshare/
│ │ │ ├── cloud_authentication.dart
│ │ │ ├── cloud_login.dart
│ │ │ ├── cloud_signup.dart
│ │ │ ├── share_preset.dart
│ │ │ ├── toneshare_home.dart
│ │ │ └── toneshare_main.dart
│ │ ├── utils.dart
│ │ └── widgets/
│ │ ├── MidiDeviceTile.dart
│ │ ├── ModeControl.dart
│ │ ├── NuxAppBar.dart
│ │ ├── VolumeDrawer.dart
│ │ ├── app_drawer.dart
│ │ ├── bottomBar.dart
│ │ ├── circular_button.dart
│ │ ├── common/
│ │ │ ├── blinkWidget.dart
│ │ │ ├── customPopupMenu.dart
│ │ │ ├── modeControlRegular.dart
│ │ │ ├── nestedWillPopScope.dart
│ │ │ ├── numberPicker.dart
│ │ │ ├── rounded_icon_button.dart
│ │ │ └── searchTextField.dart
│ │ ├── deviceList.dart
│ │ ├── fabMenu.dart
│ │ ├── hold_to_repeat.dart
│ │ ├── presets/
│ │ │ ├── EffectChainBar.dart
│ │ │ ├── EffectChainButton.dart
│ │ │ ├── channelSelector.dart
│ │ │ ├── effectEditor.dart
│ │ │ ├── effectEditors/
│ │ │ │ ├── EqualizerEditor.dart
│ │ │ │ └── SlidersEditor.dart
│ │ │ ├── effectSelector.dart
│ │ │ ├── preset_list/
│ │ │ │ ├── presetEffectPreview.dart
│ │ │ │ ├── presetItem.dart
│ │ │ │ ├── presetList.dart
│ │ │ │ ├── presetListMethods.dart
│ │ │ │ ├── preset_widget.dart
│ │ │ │ └── presets_popup_menus.dart
│ │ │ └── trackEventsBlockInfo.dart
│ │ ├── rounded_icon_button.dart
│ │ ├── scrollParent.dart
│ │ ├── scrollPicker.dart
│ │ ├── search_field.dart
│ │ ├── thickRangeSlider.dart
│ │ ├── thickSlider.dart
│ │ └── verticalThickSlider.dart
│ ├── audio/
│ │ ├── audioEditor.dart
│ │ ├── automationController.dart
│ │ ├── models/
│ │ │ ├── jamTrack.dart
│ │ │ ├── setlist.dart
│ │ │ ├── trackAutomation.dart
│ │ │ └── waveform_data.dart
│ │ ├── online_sources/
│ │ │ ├── YoutubeSource.dart
│ │ │ ├── backingTracksCoSource.dart
│ │ │ ├── guitarBackingTracksSource.dart
│ │ │ ├── onlineSource.dart
│ │ │ ├── onlineTrack.dart
│ │ │ └── sourceResolver.dart
│ │ ├── setlistPage.dart
│ │ ├── setlist_player/
│ │ │ └── setlistPlayerState.dart
│ │ ├── setlistsPage.dart
│ │ ├── trackdata/
│ │ │ └── trackData.dart
│ │ ├── tracksPage.dart
│ │ └── widgets/
│ │ ├── eventEditor.dart
│ │ ├── jamtracksView.dart
│ │ ├── loopPanel.dart
│ │ ├── media_library/
│ │ │ ├── albumTracks.dart
│ │ │ ├── artistAlbums.dart
│ │ │ └── media_browse.dart
│ │ ├── online_source/
│ │ │ ├── online_source.dart
│ │ │ └── search_screen.dart
│ │ ├── painted_waveform.dart
│ │ ├── presetsPanel.dart
│ │ ├── setlistPlayer.dart
│ │ ├── speedPanel.dart
│ │ └── waveform_painter.dart
│ ├── bluetooth/
│ │ ├── NuxDeviceControl.dart
│ │ ├── bleMidiHandler.dart
│ │ ├── ble_controllers/
│ │ │ ├── BLEController.dart
│ │ │ ├── DummyBLEController.dart
│ │ │ ├── FlutterBluePluginController.dart
│ │ │ ├── FlutterBluePlusController.dart
│ │ │ ├── FlutterReactiveBle.dart
│ │ │ ├── MightyBle.dart
│ │ │ ├── QuickBlueController.dart
│ │ │ ├── WebBleController.dart
│ │ │ └── WinBleController.dart
│ │ └── devices/
│ │ ├── NuxConstants.dart
│ │ ├── NuxDevice.dart
│ │ ├── NuxFXID.dart
│ │ ├── NuxMighty2040BT.dart
│ │ ├── NuxMighty8BT.dart
│ │ ├── NuxMighty8BTMk2.dart
│ │ ├── NuxMightyLite.dart
│ │ ├── NuxMightyLiteMk2.dart
│ │ ├── NuxMightyPlugAir.dart
│ │ ├── NuxMightyPlugPro.dart
│ │ ├── NuxMightySpace.dart
│ │ ├── NuxReorderableDevice.dart
│ │ ├── communication/
│ │ │ ├── communication.dart
│ │ │ ├── liteCommunication.dart
│ │ │ ├── liteMk2Communication.dart
│ │ │ ├── plugAirCommunication.dart
│ │ │ └── plugProCommunication.dart
│ │ ├── device_data/
│ │ │ ├── drumstyles.dart
│ │ │ └── processors_list.dart
│ │ ├── effects/
│ │ │ ├── MidiControllerHandles.dart
│ │ │ ├── NoiseGate.dart
│ │ │ ├── Processor.dart
│ │ │ ├── lite/
│ │ │ │ ├── Ambience.dart
│ │ │ │ ├── Amps.dart
│ │ │ │ └── Modulation.dart
│ │ │ ├── liteMk2/
│ │ │ │ ├── delay.dart
│ │ │ │ ├── efx.dart
│ │ │ │ ├── modulation.dart
│ │ │ │ └── reverb.dart
│ │ │ ├── mighty_2040bt/
│ │ │ │ ├── Amps.dart
│ │ │ │ ├── Delay.dart
│ │ │ │ ├── Modulation.dart
│ │ │ │ └── Reverb.dart
│ │ │ ├── mighty_8bt/
│ │ │ │ ├── Amps.dart
│ │ │ │ ├── Delay.dart
│ │ │ │ ├── Modulation.dart
│ │ │ │ └── Reverb.dart
│ │ │ ├── plug_air/
│ │ │ │ ├── Amps.dart
│ │ │ │ ├── Ampsv2.dart
│ │ │ │ ├── Cabinet.dart
│ │ │ │ ├── Delay.dart
│ │ │ │ ├── EFX.dart
│ │ │ │ ├── EFXv2.dart
│ │ │ │ ├── Modulation.dart
│ │ │ │ └── Reverb.dart
│ │ │ └── plug_pro/
│ │ │ ├── Amps.dart
│ │ │ ├── Cabinet.dart
│ │ │ ├── Compressor.dart
│ │ │ ├── Delay.dart
│ │ │ ├── EFX.dart
│ │ │ ├── EQ.dart
│ │ │ ├── EmptyEffects.dart
│ │ │ ├── Modulation.dart
│ │ │ └── Reverb.dart
│ │ ├── features/
│ │ │ ├── drumsTone.dart
│ │ │ ├── looper.dart
│ │ │ ├── proUsbSettings.dart
│ │ │ └── tuner.dart
│ │ ├── presets/
│ │ │ ├── Mighty8BTPreset.dart
│ │ │ ├── MightyLitePreset.dart
│ │ │ ├── MightyMk2Preset.dart
│ │ │ ├── MightyXXBTPreset.dart
│ │ │ ├── PlugAirPreset.dart
│ │ │ ├── PlugProPreset.dart
│ │ │ ├── Preset.dart
│ │ │ └── preset_constants.dart
│ │ └── value_formatters/
│ │ ├── DecibelFormatter.dart
│ │ ├── FrequencyFormatter.dart
│ │ ├── PercentageFormatter.dart
│ │ ├── SwitchFormatters.dart
│ │ ├── TempoFormatter.dart
│ │ └── ValueFormatter.dart
│ ├── main.dart
│ ├── midi/
│ │ ├── BleMidiManager.dart
│ │ ├── ControllerConstants.dart
│ │ ├── MidiControllerManager.dart
│ │ ├── UsbMidiManager.dart
│ │ └── controllers/
│ │ ├── BleMidiController.dart
│ │ ├── ControllerHotkey.dart
│ │ ├── HidController.dart
│ │ ├── MidiController.dart
│ │ └── UsbMidiController.dart
│ ├── modules/
│ │ ├── cloud/
│ │ │ ├── cloudManager.dart
│ │ │ ├── cloudStorageListener.dart
│ │ │ ├── customAuthStore.dart
│ │ │ └── presetEncoder.dart
│ │ └── tempo_trainer.dart
│ ├── platform/
│ │ ├── fileSaver.dart
│ │ ├── platformUtils.dart
│ │ ├── presetStorageListener.dart
│ │ ├── presetsStorage.dart
│ │ └── simpleSharedPrefs.dart
│ └── utilities/
│ ├── DelayTapTimer.dart
│ ├── MathEx.dart
│ ├── list_extenstions.dart
│ └── string_extensions.dart
├── linux/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter/
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ ├── main.cc
│ ├── my_application.cc
│ └── my_application.h
├── mightieramp.code-workspace
├── plugins/
│ ├── audio_picker/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── app/
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── GeneratedPluginRegistrant.java
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── gradlew
│ │ │ ├── gradlew.bat
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── audio_picker/
│ │ │ │ └── audio_picker/
│ │ │ │ └── FileUtils.java
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── audio_picker/
│ │ │ └── audio_picker/
│ │ │ └── AudioPickerPlugin.kt
│ │ ├── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ ├── AudioPickerPlugin.h
│ │ │ │ ├── AudioPickerPlugin.m
│ │ │ │ └── SwiftAudioPickerPlugin.swift
│ │ │ └── audio_picker.podspec
│ │ ├── lib/
│ │ │ └── audio_picker.dart
│ │ └── pubspec.yaml
│ ├── audio_waveform/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ ├── gradle/
│ │ │ │ └── wrapper/
│ │ │ │ └── gradle-wrapper.properties
│ │ │ ├── gradle.properties
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── tuntori/
│ │ │ └── audio_waveform/
│ │ │ ├── AudioWaveformPlugin.java
│ │ │ ├── SimpleEncoder.java
│ │ │ └── WaveformExtractor.java
│ │ ├── darwin/
│ │ │ ├── .gitignore
│ │ │ └── Classes/
│ │ │ └── AudioWaveformPlugin.m
│ │ ├── ios/
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ ├── AudioWaveformPlugin.h
│ │ │ │ ├── AudioWaveformPlugin.m
│ │ │ │ ├── SwiftWaveformPlugin.swift
│ │ │ │ └── WaveformExtractor.swift
│ │ │ └── audio_waveform.podspec
│ │ ├── lib/
│ │ │ └── audio_waveform.dart
│ │ ├── macos/
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ └── AudioWaveformPlugin.h
│ │ │ └── audio_waveform.podspec
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── audio_waveform_test.dart
│ ├── drag_and_drop_list/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── drag_and_drop_builder_parameters.dart
│ │ │ ├── drag_and_drop_interface.dart
│ │ │ ├── drag_and_drop_item.dart
│ │ │ ├── drag_and_drop_item_target.dart
│ │ │ ├── drag_and_drop_item_wrapper.dart
│ │ │ ├── drag_and_drop_list.dart
│ │ │ ├── drag_and_drop_list_expansion.dart
│ │ │ ├── drag_and_drop_list_interface.dart
│ │ │ ├── drag_and_drop_list_target.dart
│ │ │ ├── drag_and_drop_list_wrapper.dart
│ │ │ ├── drag_and_drop_lists.dart
│ │ │ ├── drag_handle.dart
│ │ │ ├── measure_size.dart
│ │ │ └── programmatic_expansion_tile.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── drag_and_drop_lists_test.dart
│ ├── file_picker/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── file_picker/
│ │ │ └── FilePickerPlugin.kt
│ │ ├── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ ├── FilePickerPlugin.h
│ │ │ │ ├── FilePickerPlugin.m
│ │ │ │ └── SwiftFilePickerPlugin.swift
│ │ │ └── file_picker.podspec
│ │ ├── lib/
│ │ │ ├── file_picker.dart
│ │ │ ├── file_picker_method_channel.dart
│ │ │ └── file_picker_platform_interface.dart
│ │ └── pubspec.yaml
│ ├── flutter_blue_plus/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── android/
│ │ │ ├── build.gradle
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── boskokg/
│ │ │ └── flutter_blue_plus/
│ │ │ ├── AdvertisementParser.java
│ │ │ ├── FlutterBluePlusPlugin.java
│ │ │ └── ProtoMaker.java
│ │ ├── ios/
│ │ │ ├── Classes/
│ │ │ │ ├── FlutterBluePlusPlugin.h
│ │ │ │ └── FlutterBluePlusPlugin.m
│ │ │ ├── flutter_blue_plus.podspec
│ │ │ └── gen/
│ │ │ ├── Flutterblueplus.pbobjc.h
│ │ │ └── Flutterblueplus.pbobjc.m
│ │ ├── lib/
│ │ │ ├── flutter_blue_plus.dart
│ │ │ ├── gen/
│ │ │ │ ├── flutterblueplus.pb.dart
│ │ │ │ ├── flutterblueplus.pbenum.dart
│ │ │ │ ├── flutterblueplus.pbjson.dart
│ │ │ │ └── flutterblueplus.pbserver.dart
│ │ │ └── src/
│ │ │ ├── bluetooth_characteristic.dart
│ │ │ ├── bluetooth_descriptor.dart
│ │ │ ├── bluetooth_device.dart
│ │ │ ├── bluetooth_service.dart
│ │ │ ├── flutter_blue_plus.dart
│ │ │ └── guid.dart
│ │ ├── protos/
│ │ │ ├── flutterblueplus.proto
│ │ │ └── regenerate.md
│ │ └── pubspec.yaml
│ ├── flutter_midi_command/
│ │ ├── flutter_midi_command-0.3.7/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ └── src/
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ └── GeneratedPluginRegistrant.java
│ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ └── com/
│ │ │ │ │ │ │ └── invisiblewrench/
│ │ │ │ │ │ │ └── flutter_midi_command/
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ └── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── invisiblewrench/
│ │ │ │ └── fluttermidicommand/
│ │ │ │ └── FlutterMidiCommandPlugin.kt
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Assets/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── FlutterMidiCommandPlugin.h
│ │ │ │ │ ├── FlutterMidiCommandPlugin.m
│ │ │ │ │ └── SwiftFlutterMidiCommandPlugin.swift
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ └── Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── README.md
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ └── flutter_midi_command.podspec
│ │ │ ├── lib/
│ │ │ │ ├── flutter_midi_command.dart
│ │ │ │ ├── flutter_midi_command_linux_stub.dart
│ │ │ │ └── flutter_midi_command_messages.dart
│ │ │ ├── macos/
│ │ │ │ ├── Classes/
│ │ │ │ │ └── SwiftFlutterMidiCommandPlugin.swift
│ │ │ │ └── flutter_midi_command.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── flutter_midi_command_test.dart
│ │ ├── flutter_midi_command_linux-0.1.3/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── .vscode/
│ │ │ │ ├── c_cpp_properties.json
│ │ │ │ ├── launch.json
│ │ │ │ └── settings.json
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── alsa_generated_bindings.dart
│ │ │ │ └── flutter_midi_command_linux.dart
│ │ │ ├── linux/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ ├── generated_plugin_registrant.cc
│ │ │ │ │ ├── generated_plugin_registrant.h
│ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ ├── flutter_midi_command_linux_plugin.cc
│ │ │ │ └── include/
│ │ │ │ └── flutter_midi_command_linux/
│ │ │ │ └── flutter_midi_command_linux_plugin.h
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── flutter_midi_command_linux_test.dart
│ │ └── flutter_midi_command_platform_interface-0.3.3/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── flutter_midi_command_platform_interface.dart
│ │ │ ├── method_channel_midi_command.dart
│ │ │ ├── midi_device.dart
│ │ │ ├── midi_packet.dart
│ │ │ └── midi_port.dart
│ │ └── pubspec.yaml
│ ├── mighty_ble/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── tuntori/
│ │ │ └── mighty_ble/
│ │ │ ├── BLEManager.java
│ │ │ └── MightyBlePlugin.java
│ │ ├── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ ├── MightyBlePlugin.h
│ │ │ │ ├── MightyBlePlugin.m
│ │ │ │ └── SwiftMightyBlePlugin.swift
│ │ │ └── mighty_ble.podspec
│ │ ├── lib/
│ │ │ ├── mighty_ble.dart
│ │ │ ├── mighty_ble_method_channel.dart
│ │ │ └── mighty_ble_platform_interface.dart
│ │ └── pubspec.yaml
│ └── qr_utils-0.1.5/
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── android/
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── gradle.properties
│ │ ├── settings.gradle
│ │ └── src/
│ │ └── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── aeologic/
│ │ │ └── adhoc/
│ │ │ └── qr_utils/
│ │ │ ├── QrUtilsPlugin.java
│ │ │ ├── activity/
│ │ │ │ └── QRScannerActivity.java
│ │ │ └── utils/
│ │ │ └── Utility.java
│ │ └── res/
│ │ ├── drawable/
│ │ │ ├── ic_flash_active.xml
│ │ │ ├── ic_flash_inactive.xml
│ │ │ └── ic_shape_circle.xml
│ │ ├── layout/
│ │ │ └── activity_qr_scanner.xml
│ │ ├── values/
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── xml/
│ │ └── provider_paths.xml
│ ├── ios/
│ │ ├── .gitignore
│ │ ├── Assets/
│ │ │ └── .gitkeep
│ │ ├── Classes/
│ │ │ ├── QrUtilsPlugin.h
│ │ │ ├── QrUtilsPlugin.m
│ │ │ ├── SwiftQRScanner.swift
│ │ │ └── SwiftQrUtilsPlugin.swift
│ │ └── qr_utils.podspec
│ ├── lib/
│ │ └── qr_utils.dart
│ └── pubspec.yaml
├── pubspec.yaml
├── web/
│ ├── index.html
│ └── manifest.json
└── windows/
├── .gitignore
├── CMakeLists.txt
├── flutter/
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
└── runner/
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
Showing preview only (723K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8021 symbols across 289 files)
FILE: lib/UI/mainTabs.dart
class MainTabs (line 26) | class MainTabs extends StatefulWidget {
method createState (line 32) | State<MainTabs> createState()
class MainTabsState (line 35) | class MainTabsState extends State<MainTabs> with TickerProviderStateMixin {
method initState (line 49) | void initState()
method bleErrorHandler (line 92) | void bleErrorHandler(BleError error, dynamic data)
method dispose (line 125) | void dispose()
method onConnectionTimeout (line 130) | void onConnectionTimeout()
method connectionStateListener (line 141) | void connectionStateListener(DeviceConnectionState event)
method _willPopCallback (line 215) | Future<bool> _willPopCallback()
method onDeviceChanged (line 232) | void onDeviceChanged()
method build (line 237) | Widget build(BuildContext context)
method _onBottomBarSwipe (line 308) | void _onBottomBarSwipe(DragUpdateDetails details)
method _onSwitchPageIndex (line 322) | void _onSwitchPageIndex(int index)
class TabVisibilityEventHandler (line 331) | class TabVisibilityEventHandler {
class TabVisibilityController (line 336) | class TabVisibilityController {
method getEventHandler (line 343) | TabVisibilityEventHandler getEventHandler(int tab)
method onTabChanged (line 347) | void onTabChanged(int oldTab, int newTab)
FILE: lib/UI/mightierIcons.dart
class MightierIcons (line 22) | class MightierIcons {
FILE: lib/UI/pages/DebugConsolePage.dart
class DebugConsole (line 4) | class DebugConsole extends StatelessWidget {
method print (line 9) | void print(Object? value)
method printHex (line 13) | void printHex(List<int> array)
method printString (line 21) | void printString(Object? value)
method build (line 26) | Widget build(BuildContext context)
FILE: lib/UI/pages/calibration.dart
class Calibration (line 13) | class Calibration extends StatefulWidget {
method createState (line 17) | State createState()
class _CalibrationState (line 20) | class _CalibrationState extends State<Calibration> {
method initState (line 29) | void initState()
method onPositionUpdate (line 44) | void onPositionUpdate(Duration pos)
method build (line 64) | Widget build(BuildContext context)
FILE: lib/UI/pages/developerPage.dart
type midiMessage (line 9) | enum midiMessage { ccMessage, sysExMessage }
class DeveloperPage (line 11) | class DeveloperPage extends StatefulWidget {
method createState (line 15) | State createState()
class _DeveloperPageState (line 18) | class _DeveloperPageState extends State<DeveloperPage> {
method initState (line 27) | void initState()
method _onDataReceive (line 33) | void _onDataReceive(List<int> data)
method _buildCCPage (line 39) | Widget _buildCCPage()
method _buildSysExPage (line 132) | Widget _buildSysExPage()
method build (line 241) | Widget build(BuildContext context)
FILE: lib/UI/pages/device_specific_settings/LiteMk2Settings.dart
class LiteMk2Settings (line 8) | class LiteMk2Settings extends StatefulWidget {
method createState (line 13) | State<LiteMk2Settings> createState()
class _LiteMk2SettingsState (line 16) | class _LiteMk2SettingsState extends State<LiteMk2Settings> {
method build (line 18) | Widget build(BuildContext context)
FILE: lib/UI/pages/device_specific_settings/PlugAirSettings.dart
class PlugAirSettings (line 21) | class PlugAirSettings extends StatefulWidget {
method createState (line 26) | State<PlugAirSettings> createState()
class _PlugAirSettingsState (line 31) | class _PlugAirSettingsState extends State<PlugAirSettings> {
method build (line 33) | Widget build(BuildContext context)
FILE: lib/UI/pages/device_specific_settings/PlugAirUsbSettings.dart
class RouteModel (line 9) | class RouteModel {
class PlugAirUsbSettings (line 17) | class PlugAirUsbSettings extends StatefulWidget {
method createState (line 34) | State createState()
class _PlugAirUsbSettingsState (line 37) | class _PlugAirUsbSettingsState extends State<PlugAirUsbSettings> {
method didChangeDependencies (line 42) | void didChangeDependencies()
method _modeButton (line 50) | Widget _modeButton(String mode)
method _setUsbInputValue (line 57) | void _setUsbInputValue(double value, bool skip)
method _setUsbOutputValue (line 66) | void _setUsbOutputValue(double value, bool skip)
method build (line 76) | Widget build(BuildContext context)
FILE: lib/UI/pages/device_specific_settings/PlugProMicSettings.dart
class PlugProMicSettings (line 9) | class PlugProMicSettings extends StatefulWidget {
method createState (line 13) | State createState()
class _PlugProMicSettingsState (line 16) | class _PlugProMicSettingsState extends State<PlugProMicSettings> {
method initState (line 22) | void initState()
method build (line 27) | Widget build(BuildContext context)
FILE: lib/UI/pages/device_specific_settings/PlugProSettings.dart
class PlugProSettings (line 12) | class PlugProSettings extends StatefulWidget {
method createState (line 20) | State<PlugProSettings> createState()
class _PlugProSettingsState (line 23) | class _PlugProSettingsState extends State<PlugProSettings> {
method build (line 25) | Widget build(BuildContext context)
FILE: lib/UI/pages/device_specific_settings/PlugProUsbSettings.dart
class RouteModel (line 11) | class RouteModel {
class PlugProUsbSettings (line 25) | class PlugProUsbSettings extends StatefulWidget {
method createState (line 50) | State createState()
class _PlugProUsbSettingsState (line 53) | class _PlugProUsbSettingsState extends State<PlugProUsbSettings> {
method didChangeDependencies (line 62) | void didChangeDependencies()
method _setUsbDryWetValue (line 70) | void _setUsbDryWetValue(double value, bool skip)
method _setUsbRecordingValue (line 79) | void _setUsbRecordingValue(double value, bool skip)
method _setUsbPlaybackValue (line 88) | void _setUsbPlaybackValue(double value, bool skip)
method build (line 98) | Widget build(BuildContext context)
FILE: lib/UI/pages/device_specific_settings/eq/MightySpaceSpeakerEQ.dart
class SpaceSpeakerEQSettings (line 13) | class SpaceSpeakerEQSettings extends StatefulWidget {
method createState (line 17) | State createState()
class _SpaceSpeakerEQSettingsState (line 20) | class _SpaceSpeakerEQSettingsState extends State<SpaceSpeakerEQSettings> {
method initState (line 41) | void initState()
method _requestEQData (line 46) | void _requestEQData(int index)
method _buildGroupWidget (line 51) | Widget _buildGroupWidget()
method _buildButtons (line 66) | List<Widget> _buildButtons(EQTenBandSpeaker btEQ)
method build (line 93) | Widget build(BuildContext context)
method _changeEQValue (line 150) | void _changeEQValue(Parameter parameter, double value, bool skip)
FILE: lib/UI/pages/device_specific_settings/eq/PlugProEQSettings.dart
class PlugProEQSettings (line 14) | class PlugProEQSettings extends StatefulWidget {
method createState (line 18) | State createState()
class _PlugProEQSettingsState (line 21) | class _PlugProEQSettingsState extends State<PlugProEQSettings> {
method initState (line 28) | void initState()
method _requestEQData (line 33) | void _requestEQData(int index)
method _buildGroupWidget (line 38) | List<Widget> _buildGroupWidget()
method _buildButtons (line 68) | List<Widget> _buildButtons(EQTenBandBT btEQ)
method build (line 89) | Widget build(BuildContext context)
method _changeEQValue (line 152) | void _changeEQValue(Parameter parameter, double value, bool skip)
FILE: lib/UI/pages/device_specific_settings/eq/bt_audio_options.dart
class BTAudioOptions (line 5) | class BTAudioOptions extends StatelessWidget {
method build (line 18) | Widget build(BuildContext context)
FILE: lib/UI/pages/device_specific_settings/eq/eq_group.dart
class EQGroup (line 3) | class EQGroup extends StatelessWidget {
method build (line 28) | Widget build(BuildContext context)
FILE: lib/UI/pages/drum_editor/DrumStyleBottomSheet.dart
type DrumStyleMode (line 4) | enum DrumStyleMode { flat, categorized }
class DrumStyleBottomSheet (line 6) | class DrumStyleBottomSheet extends StatefulWidget {
method createState (line 20) | State<DrumStyleBottomSheet> createState()
class _DrumStyleBottomSheetState (line 23) | class _DrumStyleBottomSheetState extends State<DrumStyleBottomSheet> {
method initState (line 30) | void initState()
method _onCategoryChanged (line 49) | void _onCategoryChanged(int value, bool userGenerated)
method _onStyleChanged (line 61) | void _onStyleChanged(int value, bool userGenerated, bool finalChange)
method _onFlatStyleChanged (line 79) | void _onFlatStyleChanged(int value, bool finalChange)
method build (line 86) | Widget build(BuildContext context)
FILE: lib/UI/pages/drum_editor/drumEditor.dart
type DrumEditorLayout (line 19) | enum DrumEditorLayout { standard, extendedToneControls }
type DrumEditorMode (line 21) | enum DrumEditorMode { regular, trainer, looper }
class DrumEditor (line 23) | class DrumEditor extends StatefulWidget {
method createState (line 28) | State createState()
class _DrumEditorState (line 31) | class _DrumEditorState extends State<DrumEditor>
method initState (line 40) | void initState()
method dispose (line 47) | void dispose()
method _createScrollPicker (line 52) | Widget _createScrollPicker(
method _landscapePlayControl (line 86) | Widget _landscapePlayControl(bool enabled)
method _createModeControl (line 101) | Widget _createModeControl(
method _drumLevelSlider (line 152) | Widget _drumLevelSlider(bool small)
method _tempoControlsEnabled (line 169) | bool _tempoControlsEnabled()
method _tempoSlider (line 175) | Widget _tempoSlider(bool small, bool landscape)
method _toneSliders (line 197) | List<Widget> _toneSliders(bool small)
method _tapButton (line 246) | Widget _tapButton(bool smallControls)
method build (line 259) | Widget build(BuildContext context)
method _onScrollPickerChanged (line 408) | void _onScrollPickerChanged(value)
method _onScrollPickerChangedFinal (line 413) | void _onScrollPickerChangedFinal(
method _modifyTempo (line 425) | void _modifyTempo(double amount)
method _onTempoChanged (line 432) | void _onTempoChanged(double value)
method _onStateChanged (line 438) | void _onStateChanged()
FILE: lib/UI/pages/drum_editor/drum_eq_bottom_sheet.dart
class DrumEQBottomSheet (line 6) | class DrumEQBottomSheet extends StatefulWidget {
method createState (line 10) | State<DrumEQBottomSheet> createState()
class _DrumEQBottomSheetState (line 13) | class _DrumEQBottomSheetState extends State<DrumEQBottomSheet> {
method build (line 15) | Widget build(BuildContext context)
FILE: lib/UI/pages/drum_editor/drumstyle_scroll_picker.dart
class DrumStyleScrollPicker (line 7) | class DrumStyleScrollPicker extends StatelessWidget {
method _getComplexListStyle (line 32) | String _getComplexListStyle(Map<String, Map> list)
method build (line 42) | Widget build(BuildContext context)
FILE: lib/UI/pages/drum_editor/looperPage.dart
class LooperControl (line 13) | class LooperControl extends StatefulWidget {
method createState (line 20) | State<LooperControl> createState()
class _LooperControlState (line 23) | class _LooperControlState extends State<LooperControl> {
method initState (line 32) | void initState()
method dispose (line 42) | void dispose()
method _onData (line 48) | void _onData(LooperData data)
method _onBlink (line 54) | void _onBlink(timer)
method getRecordButtonIcon (line 59) | IconData getRecordButtonIcon()
method _getRecordButtonColor (line 76) | Color _getRecordButtonColor()
method getUndoButtonIcon (line 96) | IconData getUndoButtonIcon()
method _getUndoButtonColor (line 101) | Color _getUndoButtonColor()
method getStopEnabled (line 106) | bool getStopEnabled()
method getClearEnabled (line 116) | bool getClearEnabled()
method getUndoEnabled (line 121) | bool getUndoEnabled()
method build (line 126) | Widget build(BuildContext context)
FILE: lib/UI/pages/drum_editor/tap_buttons.dart
class TapButtons (line 7) | class TapButtons extends StatelessWidget {
method _onTapTempo (line 22) | void _onTapTempo()
method build (line 31) | Widget build(BuildContext context)
FILE: lib/UI/pages/drum_editor/tempoTrainerSheet.dart
class TempoTrainerSheet (line 10) | class TempoTrainerSheet extends StatefulWidget {
method createState (line 22) | State<TempoTrainerSheet> createState()
class _TempoTrainerSheetState (line 25) | class _TempoTrainerSheetState extends State<TempoTrainerSheet>
method initState (line 32) | void initState()
method dispose (line 43) | void dispose()
method _updateBpm (line 51) | void _updateBpm()
method _progressPlayPauseButton (line 60) | Widget _progressPlayPauseButton(bool small)
method build (line 109) | Widget build(BuildContext context)
FILE: lib/UI/pages/drumsPage.dart
class DrumsPage (line 4) | class DrumsPage extends StatelessWidget {
method build (line 8) | Widget build(BuildContext context)
FILE: lib/UI/pages/hotkeysMainPage.dart
class HotkeysMainPage (line 10) | class HotkeysMainPage extends StatelessWidget {
method build (line 15) | Widget build(BuildContext context)
FILE: lib/UI/pages/hotkeysSetup.dart
class HotkeysSetup (line 11) | class HotkeysSetup extends StatefulWidget {
method createState (line 19) | State createState()
class _HotkeysSetupState (line 22) | class _HotkeysSetupState extends State<HotkeysSetup> {
method buildWidget (line 23) | Widget buildWidget(String name, IconData? icon, Color? color,
method _buildChannelWidgets (line 74) | List<Widget> _buildChannelWidgets()
method _buildEffectsWidgets (line 111) | List<Widget> _buildEffectsWidgets()
method _buildParametersWidgets (line 177) | List<Widget> _buildParametersWidgets()
method _buildWidgetsRange (line 223) | List<Widget> _buildWidgetsRange(HotkeyControl from, HotkeyControl to)
method build (line 243) | Widget build(BuildContext context)
FILE: lib/UI/pages/jamTracks.dart
class JamTracks (line 20) | class JamTracks extends StatefulWidget {
method createState (line 26) | State createState()
class _JamTracksState (line 29) | class _JamTracksState extends State<JamTracks>
method initState (line 36) | void initState()
method dispose (line 70) | void dispose()
method onPlayerStateChange (line 76) | void onPlayerStateChange()
method showSetlists (line 80) | Widget showSetlists()
method mainView (line 96) | Widget mainView()
method _permissionInfo (line 139) | Widget _permissionInfo()
method _jamtracksWidget (line 175) | Widget _jamtracksWidget()
method build (line 193) | Widget build(BuildContext context)
class SetlistArguments (line 220) | class SetlistArguments {
FILE: lib/UI/pages/midiControllers.dart
class MidiControllers (line 11) | class MidiControllers extends StatefulWidget {
method createState (line 15) | State createState()
class _MidiControllersState (line 18) | class _MidiControllersState extends State<MidiControllers> {
method initState (line 22) | void initState()
method dispose (line 28) | void dispose()
method build (line 45) | Widget build(BuildContext context)
FILE: lib/UI/pages/presetEditor.dart
class PresetEditor (line 16) | class PresetEditor extends StatefulWidget {
method createState (line 19) | _PresetEditorState createState()
class _PresetEditorState (line 22) | class _PresetEditorState extends State<PresetEditor> {
method initState (line 26) | void initState()
method dispose (line 35) | void dispose()
method onDeviceChanged (line 42) | void onDeviceChanged()
method onJamTracksStateChange (line 51) | void onJamTracksStateChange()
method savePresetToDevice (line 55) | void savePresetToDevice()
method onDeviceDataChanged (line 68) | void onDeviceDataChanged()
method wrapContainer (line 72) | Widget wrapContainer(bool isExpanded, List<Widget> children)
method build (line 84) | Widget build(BuildContext context)
FILE: lib/UI/pages/settings.dart
type TimeUnit (line 24) | enum TimeUnit { BPM, Seconds }
class Settings (line 28) | class Settings extends StatefulWidget {
method print (line 34) | void print(String value)
method createState (line 40) | State<Settings> createState()
class _SettingsState (line 43) | class _SettingsState extends State<Settings> {
method initState (line 49) | void initState()
method dispose (line 62) | void dispose()
method _deviceChanged (line 67) | void _deviceChanged()
method build (line 72) | Widget build(BuildContext context)
FILE: lib/UI/pages/settings_advanced.dart
class AdvancedSettings (line 8) | class AdvancedSettings extends StatefulWidget {
method createState (line 12) | State<AdvancedSettings> createState()
class _AdvancedSettingsState (line 15) | class _AdvancedSettingsState extends State<AdvancedSettings> {
method build (line 17) | Widget build(BuildContext context)
FILE: lib/UI/pages/tunerPage.dart
class TunerPage (line 11) | class TunerPage extends StatefulWidget {
method createState (line 50) | State<TunerPage> createState()
class _TunerPageState (line 53) | class _TunerPageState extends State<TunerPage> {
method initState (line 67) | void initState()
method dispose (line 93) | void dispose()
method _onMidiControllerMessage (line 101) | void _onMidiControllerMessage(HotkeyControl event)
method onData (line 107) | void onData(TunerData event)
method _onTimeout (line 121) | void _onTimeout()
method _indicator (line 133) | Widget _indicator()
method _noteDisplay (line 182) | Widget _noteDisplay()
method build (line 223) | Widget build(BuildContext context)
FILE: lib/UI/popups/alertDialogs.dart
class AlertDialogs (line 7) | class AlertDialogs {
method showInfoDialog (line 12) | showInfoDialog(BuildContext context,
method showConfirmDialog (line 46) | showConfirmDialog(BuildContext context,
method showInputDialog (line 89) | showInputDialog(BuildContext context,
method showOptionDialog (line 165) | showOptionDialog(BuildContext context,
method showLocationPrompt (line 236) | showLocationPrompt(
method _askLocation (line 252) | _askLocation(Function? onPromptFinished)
FILE: lib/UI/popups/changeCategory.dart
class ChangeCategoryDialog (line 8) | class ChangeCategoryDialog {
method buildDialog (line 26) | Widget buildDialog(BuildContext context)
FILE: lib/UI/popups/exportQRCode.dart
class QRExportDialog (line 13) | class QRExportDialog {
method buildDialog (line 19) | Widget buildDialog(BuildContext context)
FILE: lib/UI/popups/hotkeyInput.dart
class HotkeyInputDialog (line 9) | class HotkeyInputDialog {
method buildDialog (line 70) | Widget buildDialog(BuildContext context,
FILE: lib/UI/popups/midiControlInfo.dart
class MidiControlInfoDialog (line 9) | class MidiControlInfoDialog {
method buildDialog (line 10) | Widget buildDialog(BuildContext context,
FILE: lib/UI/popups/savePreset.dart
class SavePresetDialog (line 12) | class SavePresetDialog {
method buildDialog (line 37) | Widget buildDialog(NuxDevice device, BuildContext context)
FILE: lib/UI/popups/selectPreset.dart
class SelectPresetDialog (line 7) | class SelectPresetDialog {
method buildDialog (line 8) | Widget buildDialog(BuildContext context, {required bool noneOption})
FILE: lib/UI/popups/selectTrack.dart
class SelectTrackDialog (line 9) | class SelectTrackDialog {
method buildDialog (line 13) | Widget buildDialog(BuildContext context)
FILE: lib/UI/theme.dart
class AppThemeConfig (line 5) | class AppThemeConfig {
method toggleButtonHeight (line 12) | double toggleButtonHeight(bool hasLongNames)
function getTheme (line 18) | ThemeData getTheme()
FILE: lib/UI/toneshare/cloud_authentication.dart
type AuthPage (line 5) | enum AuthPage { signIn, signUp }
class CloudAuthentication (line 7) | class CloudAuthentication extends StatefulWidget {
method createState (line 11) | State<CloudAuthentication> createState()
class _CloudAuthenticationState (line 14) | class _CloudAuthenticationState extends State<CloudAuthentication> {
method _showSignup (line 17) | void _showSignup()
method _showSignIn (line 23) | void _showSignIn()
method build (line 30) | Widget build(BuildContext context)
FILE: lib/UI/toneshare/cloud_login.dart
class SignInForm (line 7) | class SignInForm extends StatefulWidget {
method createState (line 12) | _SignInFormState createState()
class _SignInFormState (line 15) | class _SignInFormState extends State<SignInForm> {
method _validateAndSaveForm (line 22) | bool _validateAndSaveForm()
method _signInWithEmailAndPassword (line 31) | void _signInWithEmailAndPassword()
method _signInWithGoogle (line 57) | void _signInWithGoogle()
method build (line 80) | Widget build(BuildContext context)
FILE: lib/UI/toneshare/cloud_signup.dart
class SignUpForm (line 7) | class SignUpForm extends StatefulWidget {
method createState (line 12) | _SignUpFormState createState()
class _SignUpFormState (line 15) | class _SignUpFormState extends State<SignUpForm> {
method _validateAndSaveForm (line 22) | bool _validateAndSaveForm()
method _signUpWithEmailAndPassword (line 31) | void _signUpWithEmailAndPassword()
method _signUpWithGoogle (line 63) | void _signUpWithGoogle()
method build (line 86) | Widget build(BuildContext context)
FILE: lib/UI/toneshare/share_preset.dart
class PresetForm (line 3) | class PresetForm extends StatefulWidget {
method createState (line 5) | _PresetFormState createState()
class _PresetFormState (line 8) | class _PresetFormState extends State<PresetForm> {
method _submitForm (line 26) | void _submitForm()
method build (line 33) | Widget build(BuildContext context)
FILE: lib/UI/toneshare/toneshare_home.dart
class ToneShareHome (line 6) | class ToneShareHome extends StatefulWidget {
method createState (line 10) | State<ToneShareHome> createState()
class _ToneShareHomeState (line 13) | class _ToneShareHomeState extends State<ToneShareHome> {
method initState (line 18) | void initState()
method _search (line 23) | void _search(String? query)
method dispose (line 42) | void dispose()
method build (line 49) | Widget build(BuildContext context)
FILE: lib/UI/toneshare/toneshare_main.dart
class ToneShare (line 7) | class ToneShare extends StatefulWidget {
method createState (line 11) | State<ToneShare> createState()
method startLoading (line 13) | Future<void> startLoading(BuildContext context)
method stopLoading (line 32) | Future<void> stopLoading(BuildContext context)
class _ToneShareState (line 37) | class _ToneShareState extends State<ToneShare> {
method initState (line 39) | void initState()
method dispose (line 45) | void dispose()
method _onAuthChange (line 50) | void _onAuthChange()
method build (line 55) | Widget build(BuildContext context)
FILE: lib/UI/utils.dart
type LayoutMode (line 3) | enum LayoutMode { navBar, drawer }
type EditorLayoutMode (line 5) | enum EditorLayoutMode { scroll, expand }
function getLayoutMode (line 7) | LayoutMode getLayoutMode(MediaQueryData mediaQuery)
function getEditorLayoutMode (line 15) | EditorLayoutMode getEditorLayoutMode(MediaQueryData mediaQuery)
FILE: lib/UI/widgets/MidiDeviceTile.dart
class MidiControllerTile (line 4) | class MidiControllerTile extends StatelessWidget {
method build (line 16) | Widget build(BuildContext context)
FILE: lib/UI/widgets/ModeControl.dart
class ModeControl (line 7) | class ModeControl extends StatelessWidget {
method getText (line 22) | String getText()
method getElementsCount (line 26) | List<String> getElementsCount()
method getElementValues (line 30) | List<int> getElementValues()
method getIndexByValue (line 34) | int getIndexByValue(int midiValue)
method getButtonItem (line 49) | Widget getButtonItem(String text)
method build (line 60) | Widget build(BuildContext context)
FILE: lib/UI/widgets/NuxAppBar.dart
class MAAppBar (line 19) | class MAAppBar extends StatefulWidget implements PreferredSizeWidget {
method createState (line 37) | State<MAAppBar> createState()
class _NuxAppBarState (line 40) | class _NuxAppBarState extends State<MAAppBar> {
method initState (line 47) | void initState()
method dispose (line 58) | void dispose()
method _onMidiControllerMessage (line 64) | void _onMidiControllerMessage(HotkeyControl event)
method build (line 83) | Widget build(BuildContext context)
class AppBarTitle (line 226) | class AppBarTitle extends StatelessWidget {
method build (line 230) | Widget build(BuildContext context)
FILE: lib/UI/widgets/VolumeDrawer.dart
class BottomDrawer (line 12) | class BottomDrawer extends StatelessWidget {
method build (line 25) | Widget build(BuildContext context)
class VolumeSlider (line 70) | class VolumeSlider extends StatelessWidget {
method build (line 75) | Widget build(BuildContext context)
method _onVolumeDragEnd (line 99) | void _onVolumeDragEnd(value)
method _onVolumeChanged (line 109) | void _onVolumeChanged(value, bool skip)
FILE: lib/UI/widgets/app_drawer.dart
class AppDrawer (line 14) | class AppDrawer extends StatefulWidget {
method createState (line 27) | State<AppDrawer> createState()
class _AppDrawerState (line 30) | class _AppDrawerState extends State<AppDrawer> {
method initState (line 38) | void initState()
method _onExpandChange (line 46) | void _onExpandChange(bool expand)
method build (line 55) | Widget build(BuildContext context)
class _DrawerTile (line 139) | class _DrawerTile extends StatelessWidget {
method build (line 154) | Widget build(BuildContext context)
class TileModel (line 185) | @immutable
FILE: lib/UI/widgets/bottomBar.dart
class BottomBar (line 7) | class BottomBar extends StatefulWidget {
method createState (line 18) | State<BottomBar> createState()
class _BottomBarState (line 21) | class _BottomBarState extends State<BottomBar> {
method build (line 23) | Widget build(BuildContext context)
FILE: lib/UI/widgets/circular_button.dart
class CircularButton (line 3) | class CircularButton extends StatelessWidget {
method build (line 18) | Widget build(BuildContext context)
FILE: lib/UI/widgets/common/blinkWidget.dart
class BlinkWidget (line 6) | class BlinkWidget extends StatefulWidget {
method createState (line 14) | State createState()
class _BlinkWidgetState (line 17) | class _BlinkWidgetState extends State<BlinkWidget>
method build (line 51) | Widget build(BuildContext context)
FILE: lib/UI/widgets/common/customPopupMenu.dart
class PopupMenuEntry (line 50) | abstract class PopupMenuEntry<T> extends StatefulWidget {
method represents (line 75) | bool represents(T value)
class LabeledDivider (line 139) | class LabeledDivider extends StatelessWidget {
method build (line 206) | Widget build(BuildContext context)
class PopupMenuDivider (line 255) | class PopupMenuDivider extends PopupMenuEntry<Null> {
method represents (line 275) | bool represents(void value)
method createState (line 278) | State createState()
class _PopupMenuDividerState (line 281) | class _PopupMenuDividerState extends State<PopupMenuDivider> {
method build (line 283) | Widget build(BuildContext context)
class PopupMenuItem (line 329) | class PopupMenuItem<T> extends PopupMenuEntry<T> {
method represents (line 372) | bool represents(T value)
method createState (line 375) | PopupMenuItemState<T, PopupMenuItem<T>> createState()
class PopupMenuItemState (line 395) | class PopupMenuItemState<T, W extends PopupMenuItem<T>> extends State<W> {
method buildChild (line 403) | Widget buildChild()
method handleTap (line 412) | void handleTap()
method build (line 417) | Widget build(BuildContext context)
class CheckedPopupMenuItem (line 513) | class CheckedPopupMenuItem<T> extends PopupMenuItem<T> {
method createState (line 554) | _CheckedPopupMenuItemState<T> createState()
class _CheckedPopupMenuItemState (line 558) | class _CheckedPopupMenuItemState<T>
method initState (line 566) | void initState()
method handleTap (line 574) | void handleTap()
method buildChild (line 585) | Widget buildChild()
class _PopupMenu (line 597) | class _PopupMenu<T> extends StatelessWidget {
method build (line 609) | Widget build(BuildContext context)
class _PopupMenuRouteLayout (line 687) | class _PopupMenuRouteLayout extends SingleChildLayoutDelegate {
method getConstraintsForChild (line 707) | BoxConstraints getConstraintsForChild(BoxConstraints constraints)
method getPositionForChild (line 716) | Offset getPositionForChild(Size size, Size childSize)
method shouldRelayout (line 764) | bool shouldRelayout(_PopupMenuRouteLayout oldDelegate)
class _PopupMenuRoute (line 769) | class _PopupMenuRoute<T> extends PopupRoute<T> {
method createAnimation (line 788) | Animation<double> createAnimation()
method buildPage (line 811) | Widget buildPage(BuildContext context, Animation<double> animation,
function showMenu (line 902) | Future<T?> showMenu<T>({
type PopupMenuItemSelected (line 946) | typedef PopupMenuItemSelected<T> = void Function(T value);
type PopupMenuCanceled (line 952) | typedef PopupMenuCanceled = void Function();
type PopupMenuItemBuilder (line 958) | typedef PopupMenuItemBuilder<T> = List<PopupMenuEntry<T>> Function(
class PopupMenuButton (line 1012) | class PopupMenuButton<T> extends StatelessWidget {
method showButtonMenu (line 1096) | void showButtonMenu(BuildContext context)
method _getIcon (line 1128) | Icon _getIcon(TargetPlatform platform)
method build (line 1141) | Widget build(BuildContext context)
FILE: lib/UI/widgets/common/modeControlRegular.dart
class ModeControlRegular (line 3) | class ModeControlRegular extends StatelessWidget {
method _modeButton (line 15) | Widget _modeButton(String mode)
method build (line 23) | Widget build(BuildContext context)
FILE: lib/UI/widgets/common/nestedWillPopScope.dart
class NestedWillPopScope (line 3) | class NestedWillPopScope extends StatefulWidget {
method createState (line 14) | _NestedWillPopScopeState createState()
method of (line 16) | _NestedWillPopScopeState? of(BuildContext context)
class _NestedWillPopScopeState (line 21) | class _NestedWillPopScopeState extends State<NestedWillPopScope> {
method onWillPop (line 30) | Future<bool> onWillPop()
method updateRouteCallback (line 41) | void updateRouteCallback()
method didChangeDependencies (line 48) | void didChangeDependencies()
method dispose (line 58) | void dispose()
method build (line 64) | Widget build(BuildContext context)
FILE: lib/UI/widgets/common/numberPicker.dart
type TextMapper (line 4) | typedef TextMapper = String Function(String numberText);
class NumberPicker (line 6) | class NumberPicker extends StatefulWidget {
method createState (line 86) | State createState()
class _NumberPickerState (line 89) | class _NumberPickerState extends State<NumberPicker> {
method initState (line 93) | void initState()
method _scrollListener (line 101) | void _scrollListener()
method didUpdateWidget (line 119) | void didUpdateWidget(NumberPicker oldWidget)
method dispose (line 127) | void dispose()
method build (line 142) | Widget build(BuildContext context)
method _itemBuilder (line 177) | Widget _itemBuilder(BuildContext context, int index)
method _getDisplayedValue (line 203) | String _getDisplayedValue(int value)
method _intValueFromIndex (line 222) | int _intValueFromIndex(int index)
method _maybeCenterValue (line 228) | void _maybeCenterValue()
class _NumberPickerSelectedItemDecoration (line 241) | class _NumberPickerSelectedItemDecoration extends StatelessWidget {
method build (line 254) | Widget build(BuildContext context)
FILE: lib/UI/widgets/common/rounded_icon_button.dart
class RoundedIconButton (line 3) | class RoundedIconButton extends StatelessWidget {
method build (line 18) | Widget build(BuildContext context)
FILE: lib/UI/widgets/common/searchTextField.dart
class SearchTextField (line 3) | class SearchTextField extends StatelessWidget {
method build (line 11) | Widget build(BuildContext context)
FILE: lib/UI/widgets/deviceList.dart
class DeviceList (line 8) | class DeviceList extends StatelessWidget {
method isConnected (line 13) | bool isConnected(String id)
method build (line 25) | Widget build(BuildContext context)
FILE: lib/UI/widgets/fabMenu.dart
class Bubble (line 7) | class Bubble {
class BubbleMenu (line 24) | class BubbleMenu extends StatelessWidget {
method build (line 30) | Widget build(BuildContext context)
class _DefaultHeroTag (line 61) | class _DefaultHeroTag {
method toString (line 64) | String toString()
class FloatingActionBubble (line 67) | class FloatingActionBubble extends AnimatedWidget {
method buildItem (line 92) | Widget buildItem(BuildContext context, int index)
method buildItems (line 108) | List<Widget> buildItems(BuildContext context)
method _preventPopIfOpen (line 119) | Future<bool> _preventPopIfOpen()
method build (line 144) | Widget build(BuildContext context)
FILE: lib/UI/widgets/hold_to_repeat.dart
class HoldToRepeat (line 3) | class HoldToRepeat extends StatefulWidget {
method createState (line 18) | _HoldToRepeatState createState()
class _HoldToRepeatState (line 21) | class _HoldToRepeatState extends State<HoldToRepeat> {
method _doRepeatingAction (line 24) | void _doRepeatingAction()
method _onTapDown (line 31) | void _onTapDown()
method _onTapUp (line 44) | void _onTapUp()
method build (line 51) | Widget build(BuildContext context)
FILE: lib/UI/widgets/presets/EffectChainBar.dart
class EffectChainBar (line 10) | class EffectChainBar extends StatelessWidget {
method buildItem (line 32) | EffectChainButton buildItem(context, index)
method build (line 50) | Widget build(BuildContext context)
FILE: lib/UI/widgets/presets/EffectChainButton.dart
class EffectChainButton (line 5) | class EffectChainButton extends StatelessWidget {
method build (line 28) | Widget build(BuildContext context)
FILE: lib/UI/widgets/presets/channelSelector.dart
class ChannelSelector (line 19) | class ChannelSelector extends StatefulWidget {
method createState (line 24) | State createState()
class _ChannelSelectorState (line 27) | class _ChannelSelectorState extends State<ChannelSelector> {
method initState (line 74) | void initState()
method _createButtons (line 78) | List<Widget> _createButtons(double _width)
method showQRExport (line 216) | void showQRExport(Image img, String name)
method showQRError (line 225) | void showQRError()
method setupFromQRData (line 235) | void setupFromQRData(String qrData)
method build (line 252) | Widget build(BuildContext context)
FILE: lib/UI/widgets/presets/effectEditor.dart
class EffectEditor (line 12) | class EffectEditor extends StatefulWidget {
method createState (line 18) | State createState()
class _EffectEditorState (line 21) | class _EffectEditorState extends State<EffectEditor> {
method build (line 23) | Widget build(BuildContext context)
method _updateSliderValue (line 50) | void _updateSliderValue(
FILE: lib/UI/widgets/presets/effectEditors/EqualizerEditor.dart
class EqualizerEditor (line 7) | class EqualizerEditor extends StatefulWidget {
method createState (line 21) | State<EqualizerEditor> createState()
class _EqualizerEditorState (line 24) | class _EqualizerEditorState extends State<EqualizerEditor> {
method build (line 29) | Widget build(BuildContext context)
FILE: lib/UI/widgets/presets/effectEditors/SlidersEditor.dart
class SlidersEditor (line 18) | class SlidersEditor extends StatefulWidget {
method createState (line 25) | State<SlidersEditor> createState()
class _SlidersEditorState (line 28) | class _SlidersEditorState extends State<SlidersEditor> {
method _createSlider (line 31) | ThickSlider _createSlider(Parameter param, bool handleVerticalDrag)
method _updateParameterValue (line 60) | void _updateParameterValue(Parameter param, double val)
method _createModeControl (line 81) | ModeControl _createModeControl(Parameter param)
method _createTapTempo (line 95) | Widget _createTapTempo(Parameter param)
method _createCabinetRename (line 132) | Widget _createCabinetRename(Cabinet cab)
method build (line 193) | Widget build(BuildContext context)
FILE: lib/UI/widgets/presets/effectSelector.dart
class EffectSelector (line 21) | class EffectSelector extends StatefulWidget {
method createState (line 28) | State createState()
class _EffectSelectorState (line 31) | class _EffectSelectorState extends State<EffectSelector> {
method initState (line 42) | void initState()
method setSelectedEffect (line 46) | void setSelectedEffect(dynamic index)
method build (line 99) | Widget build(BuildContext context)
method _setSlotEnabledState (line 307) | void _setSlotEnabledState(int slot, bool value)
method _selectSlotByFXID (line 317) | void _selectSlotByFXID(NuxFXID type)
FILE: lib/UI/widgets/presets/preset_list/presetEffectPreview.dart
class PresetEffectPreview (line 5) | class PresetEffectPreview extends StatelessWidget {
method _buildEffectsPreview (line 20) | List<Widget> _buildEffectsPreview(
method build (line 61) | Widget build(BuildContext context)
FILE: lib/UI/widgets/presets/preset_list/presetItem.dart
class PresetItem (line 10) | class PresetItem extends StatelessWidget {
method _createPresetTrailingWidget (line 28) | Widget? _createPresetTrailingWidget(
method _iconLabel (line 71) | Widget _iconLabel(String label, Color color)
method build (line 102) | Widget build(BuildContext context)
FILE: lib/UI/widgets/presets/preset_list/presetList.dart
class PresetList (line 23) | class PresetList extends StatefulWidget {
method createState (line 35) | State<PresetList> createState()
class _PresetListState (line 38) | class _PresetListState extends State<PresetList>
method initState (line 48) | void initState()
method dispose (line 62) | void dispose()
method _registerListeners (line 68) | void _registerListeners()
method _onTabSelected (line 77) | void _onTabSelected()
method _onTabDeselected (line 84) | void _onTabDeselected()
method refreshPresets (line 96) | void refreshPresets()
method _openToneShare (line 100) | void _openToneShare()
method _mainPopupMenu (line 108) | Widget _mainPopupMenu()
method _createHeader (line 123) | Widget? _createHeader()
method _createDragDropList (line 167) | Widget _createDragDropList(
method _createPresetTree (line 224) | Widget _createPresetTree(Widget? header, bool hideNonApplicable)
method _createPresetTreeSimple (line 245) | Widget _createPresetTreeSimple(bool hideNonApplicable)
method _createSearchResultsList (line 251) | Widget _createSearchResultsList(Widget? header, bool hideNonApplicable)
method build (line 293) | Widget build(BuildContext context)
method _categoryMenu (line 323) | void _categoryMenu(CategoryMenuActions action, String item)
method _presetWidget (line 366) | Widget _presetWidget(Map<String, dynamic> item, bool hideNonApplicable)
method mainMenuActions (line 415) | void mainMenuActions(action)
method _deleteCategory (line 430) | void _deleteCategory(String category)
method _renameCategory (line 446) | void _renameCategory(String category)
method _exportCategory (line 466) | void _exportCategory(String category)
method _importPresets (line 489) | void _importPresets()
method _onFileRead (line 499) | void _onFileRead(String value)
FILE: lib/UI/widgets/presets/preset_list/presetListMethods.dart
class PresetListMethods (line 12) | class PresetListMethods {
method exportQR (line 13) | void exportQR(Map<String, dynamic> preset, BuildContext context)
method saveFileIos (line 40) | void saveFileIos(String name, String data, BuildContext context)
method exportPreset (line 58) | void exportPreset(Map<String, dynamic> preset, BuildContext context)
FILE: lib/UI/widgets/presets/preset_list/preset_widget.dart
class PresetWidget (line 13) | class PresetWidget extends StatefulWidget {
method createState (line 29) | State<PresetWidget> createState()
class _PresetWidgetState (line 32) | class _PresetWidgetState extends State<PresetWidget> {
method _presetWidget (line 33) | Widget _presetWidget(Map<String, dynamic> item, bool hideNonApplicable)
method _deletePreset (line 83) | void _deletePreset(Map<String, dynamic> preset)
method _renamePreset (line 104) | void _renamePreset(Map<String, dynamic> preset)
method _changePresetChannel (line 126) | void _changePresetChannel(Map<String, dynamic> preset)
method _duplicatePreset (line 156) | void _duplicatePreset(Map<String, dynamic> preset)
method _changePresetCategory (line 167) | void _changePresetCategory(Map<String, dynamic> preset)
method build (line 188) | Widget build(BuildContext context)
FILE: lib/UI/widgets/presets/preset_list/presets_popup_menus.dart
type PresetsTopMenuActions (line 6) | enum PresetsTopMenuActions { ExportAll, Import }
type CategoryMenuActions (line 8) | enum CategoryMenuActions { Delete, Rename, Export }
type PresetItemActions (line 10) | enum PresetItemActions {
class PresetsPopupMenus (line 20) | class PresetsPopupMenus {
FILE: lib/UI/widgets/presets/trackEventsBlockInfo.dart
class TrackEventsBlockInfo (line 6) | class TrackEventsBlockInfo extends StatelessWidget {
method build (line 13) | Widget build(BuildContext context)
FILE: lib/UI/widgets/rounded_icon_button.dart
class RoundedIconButton (line 3) | class RoundedIconButton extends StatelessWidget {
method build (line 18) | Widget build(BuildContext context)
FILE: lib/UI/widgets/scrollParent.dart
class ScrollParent (line 6) | class ScrollParent extends StatelessWidget {
method build (line 14) | Widget build(BuildContext context)
FILE: lib/UI/widgets/scrollPicker.dart
class ScrollPicker (line 8) | class ScrollPicker extends StatefulWidget {
method createState (line 31) | _ScrollPickerState createState()
class _ScrollPickerState (line 34) | class _ScrollPickerState extends State<ScrollPicker> {
method initState (line 46) | void initState()
method build (line 52) | Widget build(BuildContext context)
method _itemTapped (line 139) | void _itemTapped(TapUpDetails details)
method _onSelectedItemChanged (line 151) | void _onSelectedItemChanged(int index)
FILE: lib/UI/widgets/search_field.dart
class SearchField (line 3) | class SearchField extends StatelessWidget {
method build (line 13) | Widget build(BuildContext context)
FILE: lib/UI/widgets/thickRangeSlider.dart
class SliderRangeValues (line 11) | class SliderRangeValues {
class ThickRangeSlider (line 21) | class ThickRangeSlider extends StatefulWidget {
method createState (line 53) | State createState()
class _ThickRangeSliderState (line 56) | class _ThickRangeSliderState extends State<ThickRangeSlider> {
method _lerpSingle (line 72) | double _lerpSingle(double value)
method _lerp (line 78) | SliderRangeValues _lerp(SliderRangeValues values)
method _lerp2Single (line 84) | double _lerp2Single(double value, double min, double max)
method _lerp2 (line 90) | SliderRangeValues _lerp2(SliderRangeValues values, double min, double ...
method _unlerpSingle (line 97) | double _unlerpSingle(double value)
method _unlerp (line 105) | SliderRangeValues _unlerp(SliderRangeValues value)
method initState (line 111) | void initState()
method addPercentage (line 125) | void addPercentage(value, width, int index)
method dragStart (line 138) | void dragStart(DragStartDetails details)
method dragUpdate (line 148) | void dragUpdate(DragUpdateDetails details)
method dragEnd (line 165) | void dragEnd(DragEndDetails details)
method manualValueEnter (line 175) | void manualValueEnter()
method build (line 213) | Widget build(BuildContext context)
FILE: lib/UI/widgets/thickSlider.dart
class ThickSlider (line 13) | class ThickSlider extends StatefulWidget {
method createState (line 49) | State createState()
class _ThickSliderState (line 52) | class _ThickSliderState extends State<ThickSlider> {
method _lerp (line 67) | double _lerp(double value)
method _lerp2 (line 74) | double _lerp2(double value, double min, double max)
method _unlerp (line 81) | double _unlerp(double value)
method _lerpSnap (line 90) | double _lerpSnap(double value)
method _lerpSnap2 (line 98) | double _lerpSnap2(double value, double min, double max)
method initState (line 106) | void initState()
method addPercentage (line 117) | void addPercentage(value, width)
method dragStart (line 123) | void dragStart(DragStartDetails details)
method dragUpdate (line 128) | void dragUpdate(DragUpdateDetails details)
method dragEnd (line 148) | void dragEnd(DragEndDetails details)
method manualValueEnter (line 159) | void manualValueEnter()
method build (line 214) | Widget build(BuildContext context)
FILE: lib/UI/widgets/verticalThickSlider.dart
class VerticalThickSlider (line 12) | class VerticalThickSlider extends StatefulWidget {
method createState (line 46) | State createState()
class _VerticalThickSliderState (line 49) | class _VerticalThickSliderState extends State<VerticalThickSlider> {
method _lerp (line 62) | double _lerp(double value)
method _lerp2 (line 69) | double _lerp2(double value, double _min, double _max)
method _unlerp (line 76) | double _unlerp(double value)
method initState (line 85) | void initState()
method addPercentage (line 96) | void addPercentage(value, height)
method dragStart (line 102) | void dragStart(DragStartDetails details)
method dragUpdate (line 107) | void dragUpdate(DragUpdateDetails details)
method dragEnd (line 127) | void dragEnd(DragEndDetails details)
method manualValueEnter (line 135) | void manualValueEnter()
method build (line 184) | Widget build(BuildContext context)
FILE: lib/audio/audioEditor.dart
type EditorState (line 29) | enum EditorState { play, insert, duplicateInsert, insertLoop1, insertLoo...
class AudioEditor (line 31) | class AudioEditor extends StatefulWidget {
method createState (line 35) | State createState()
class _AudioEditorState (line 38) | class _AudioEditorState extends State<AudioEditor> {
method initState (line 68) | void initState()
method decodeAudio (line 108) | Future decodeAudio(String path)
method freeDecoder (line 135) | void freeDecoder()
method sampleToMs (line 139) | int sampleToMs(int sample)
method playFrom (line 144) | void playFrom(int sample)
method playPositionUpdate (line 149) | void playPositionUpdate(Duration position)
method playerStateUpdate (line 158) | void playerStateUpdate(PlayerState state)
method timingData (line 163) | void timingData(double samplesPerPixel, double msPerSample)
method stepLeft (line 168) | void stepLeft()
method stepRight (line 183) | void stepRight()
method editEvent (line 199) | void editEvent(AutomationEvent event, bool noneOption)
method duplicateEvent (line 206) | void duplicateEvent(AutomationEvent event)
method useLoopPoints (line 212) | void useLoopPoints(bool enable)
method showEventType (line 218) | AutomationEventType? showEventType()
method build (line 225) | Widget build(BuildContext context)
FILE: lib/audio/automationController.dart
type ABRepeatState (line 14) | enum ABRepeatState { off, addedA, addedB }
class AutomationController (line 16) | class AutomationController {
method setGain (line 63) | void setGain(double gain)
method setAudioFile (line 117) | Future setAudioFile(String path, int positionEventSkips)
method setTrackCompleteEvent (line 143) | void setTrackCompleteEvent(Function onComplete)
method playPositionUpdate (line 148) | void playPositionUpdate(Duration position)
method executeEvent (line 204) | void executeEvent(AutomationEvent event)
method play (line 239) | Future play()
method playPause (line 247) | Future playPause()
method stop (line 256) | Future stop()
method setSpeed (line 262) | void setSpeed(double speed)
method setPitch (line 266) | void setPitch(int pitch)
method rewind (line 272) | void rewind()
method forceLoopDisable (line 277) | void forceLoopDisable()
method seek (line 281) | void seek(Duration position)
method sortEvents (line 296) | void sortEvents()
method _updateActiveEvent (line 301) | void _updateActiveEvent()
method addEvent (line 335) | AutomationEvent addEvent(Duration atPosition, AutomationEventType type)
method addEventFromOther (line 347) | void addEventFromOther(AutomationEvent other, Duration atPosition)
method removeEvent (line 358) | void removeEvent(AutomationEvent event)
method bypassPresetChanges (line 366) | void bypassPresetChanges()
method removeAllLoopEvents (line 371) | void removeAllLoopEvents()
method hasLoopPoints (line 377) | bool hasLoopPoints()
method getLoopPoints (line 389) | List<AutomationEvent> getLoopPoints()
method toggleABRepeat (line 398) | void toggleABRepeat()
method dispose (line 421) | Future dispose()
FILE: lib/audio/models/jamTrack.dart
class JamTrack (line 3) | class JamTrack {
method toJson (line 75) | Map<String, dynamic> toJson()
FILE: lib/audio/models/setlist.dart
class SetlistItem (line 5) | class SetlistItem {
class Setlist (line 12) | class Setlist {
method addTrackByUuid (line 22) | void addTrackByUuid(String uuid)
method addTrack (line 31) | void addTrack(JamTrack track)
method clear (line 35) | void clear()
method toJson (line 43) | Map<String, dynamic> toJson()
FILE: lib/audio/models/trackAutomation.dart
type AutomationEventType (line 6) | enum AutomationEventType { preset, loop }
class AutomationEvent (line 8) | class AutomationEvent {
method setPresetUuid (line 32) | void setPresetUuid(String presetUuid)
method getPresetUuid (line 44) | String getPresetUuid()
method clearPreset (line 48) | void clearPreset()
method getPreset (line 53) | dynamic getPreset()
method toJson (line 57) | Map<String, dynamic> toJson()
class TrackAutomation (line 79) | class TrackAutomation {
method sortEvents (line 99) | void sortEvents()
method toJson (line 103) | List<dynamic> toJson()
FILE: lib/audio/models/waveform_data.dart
class WaveformData (line 9) | class WaveformData {
method setUpdate (line 29) | void setUpdate()
method setReady (line 34) | void setReady()
method verticalLine (line 40) | double verticalLine(Size size, int sample, int fromFrame, int toFrame)
method path (line 48) | Path? path(Size size, {int? toFrame, int fromFrame = 0})
method _path (line 80) | Path _path(List<int> samples, Size size)
method overallPath (line 119) | Path? overallPath(Size size)
FILE: lib/audio/online_sources/YoutubeSource.dart
class YoutubeSource (line 6) | class YoutubeSource extends OnlineSource {
method getSearchResults (line 14) | Future<List<OnlineTrack>> getSearchResults(String query)
method getSuggestions (line 34) | Future<List<String>> getSuggestions(String query)
method getTrackUri (line 39) | Future<String> getTrackUri(OnlineTrack track)
method getPreviewUrl (line 44) | Future<String> getPreviewUrl(OnlineTrack track)
method getYoutubeUrlFromId (line 51) | Future<String> getYoutubeUrlFromId(String id)
method getHighestBitrateMP4 (line 59) | AudioOnlyStreamInfo getHighestBitrateMP4(StreamManifest manifest)
FILE: lib/audio/online_sources/backingTracksCoSource.dart
class BackingTracksCoSource (line 6) | class BackingTracksCoSource extends OnlineSource {
method getSearchResults (line 18) | Future<List<OnlineTrack>> getSearchResults(String query)
method getSuggestions (line 45) | Future<List<String>> getSuggestions(String query)
method getTrackUri (line 50) | Future<String> getTrackUri(OnlineTrack track)
method getPreviewUrl (line 55) | Future<String> getPreviewUrl(OnlineTrack track)
FILE: lib/audio/online_sources/guitarBackingTracksSource.dart
class GuitarBackingTracksSource (line 8) | class GuitarBackingTracksSource extends OnlineSource {
method getSearchResults (line 20) | Future<List<OnlineTrack>> getSearchResults(String query)
method getSuggestions (line 46) | Future<List<String>> getSuggestions(String query)
method getTrackUri (line 62) | Future<String> getTrackUri(OnlineTrack track)
method getPreviewUrl (line 75) | Future<String> getPreviewUrl(OnlineTrack track)
FILE: lib/audio/online_sources/onlineSource.dart
class OnlineSource (line 3) | abstract class OnlineSource {
method getSuggestions (line 7) | Future<List<String>> getSuggestions(String query)
method getSearchResults (line 9) | Future<List<OnlineTrack>> getSearchResults(String query)
method getTrackUri (line 11) | Future<String> getTrackUri(OnlineTrack track)
method getPreviewUrl (line 12) | Future<String> getPreviewUrl(OnlineTrack track)
FILE: lib/audio/online_sources/onlineTrack.dart
class OnlineTrack (line 1) | class OnlineTrack {
FILE: lib/audio/online_sources/sourceResolver.dart
class SourceResolver (line 5) | class SourceResolver {
method getSourceUrl (line 7) | Future<String> getSourceUrl(String sourceUri)
method releaseUrl (line 24) | void releaseUrl(String sourceUrl, String resolvedUrl)
method addToCache (line 33) | void addToCache(String id, String url)
method getFromCache (line 37) | String? getFromCache(String id)
FILE: lib/audio/setlistPage.dart
class SetlistPage (line 11) | class SetlistPage extends StatefulWidget {
method createState (line 18) | State createState()
class _SetlistPageState (line 21) | class _SetlistPageState extends State<SetlistPage> {
method menuActions (line 47) | void menuActions(BuildContext context, int action, SetlistItem item)
method addTrack (line 70) | void addTrack()
method multiselectHandler (line 90) | void multiselectHandler(int index)
method deselectAll (line 102) | void deselectAll()
method findPlayedTrack (line 108) | SetlistItem? findPlayedTrack()
method reattachTrackIndex (line 115) | void reattachTrackIndex(SetlistItem? currentSong)
method createTrailingWidget (line 126) | Widget? createTrailingWidget(BuildContext context, int index)
method build (line 155) | Widget build(BuildContext context)
FILE: lib/audio/setlist_player/setlistPlayerState.dart
type PlayerState (line 9) | enum PlayerState { idle, play, pause }
class SetlistPlayerState (line 11) | class SetlistPlayerState extends ChangeNotifier {
method openTrack (line 70) | void openTrack(int setlistIndex)
method openSetlist (line 80) | void openSetlist(Setlist newSetlist)
method _openTrack (line 84) | Future _openTrack(int index)
method play (line 102) | Future play()
method playPause (line 108) | Future playPause()
method stop (line 121) | Future stop()
method clear (line 127) | Future clear()
method previous (line 133) | void previous()
method next (line 148) | void next()
method closeTrack (line 159) | Future? closeTrack()
method onTrackRemoved (line 163) | void onTrackRemoved(String trackUuld)
method _onPosition (line 173) | void _onPosition(Duration pos)
method getMMSS (line 178) | String getMMSS(Duration d)
method getDuration (line 184) | Duration getDuration()
method setPosition (line 188) | void setPosition(int positionMS)
method setPositionUpdateMode (line 202) | void setPositionUpdateMode(bool enabled)
method _onTrackComplete (line 207) | void _onTrackComplete()
method toggleExpanded (line 229) | void toggleExpanded()
method toggleABRepeat (line 234) | void toggleABRepeat()
FILE: lib/audio/setlistsPage.dart
class Setlists (line 8) | class Setlists extends StatefulWidget {
method createState (line 16) | State createState()
class _SetlistsState (line 19) | class _SetlistsState extends State<Setlists> {
method initState (line 23) | void initState()
method createSetlist (line 27) | void createSetlist()
method showContextMenu (line 89) | void showContextMenu(
method menuActions (line 106) | void menuActions(BuildContext context, int action, Setlist item)
method renameSetlist (line 126) | void renameSetlist(BuildContext context, Setlist setlist)
method build (line 147) | Widget build(BuildContext context)
FILE: lib/audio/trackdata/trackData.dart
class TrackData (line 15) | class TrackData {
method waitLoading (line 98) | Future waitLoading()
method findByUuid (line 114) | JamTrack? findByUuid(String uuid)
method isPresetInUse (line 163) | bool isPresetInUse(String presetUuid)
method isAnyPresetInUse (line 177) | bool isAnyPresetInUse(List<String> presetsUuid)
method removePresetInstances (line 189) | void removePresetInstances(String presetUuid)
method removeMultiplePresetsInstances (line 204) | void removeMultiplePresetsInstances(List<String> presetsUuid)
method findSetlist (line 234) | Setlist? findSetlist(String name)
method _generateUuid (line 253) | String _generateUuid()
method _onBookmarkUpdated (line 266) | void _onBookmarkUpdated(String oldBookmark, String newBookmark)
FILE: lib/audio/tracksPage.dart
class TracksPage (line 23) | class TracksPage extends StatefulWidget {
method createState (line 36) | State createState()
class _TracksPageState (line 39) | class _TracksPageState extends State<TracksPage>
method menuActions (line 105) | void menuActions(BuildContext context, int action, JamTrack item)
method getProperTags (line 129) | String getProperTags(Map? tags, String filename)
method initState (line 148) | void initState()
method querySongs (line 170) | void querySongs()
method multiselectHandler (line 178) | void multiselectHandler(int index)
method deselectAll (line 190) | void deselectAll()
method stopPlayer (line 196) | void stopPlayer()
method editTrack (line 200) | void editTrack(BuildContext context, JamTrack track)
method renameTrack (line 210) | void renameTrack(BuildContext context, JamTrack track)
method createTrailingWidget (line 229) | Widget? createTrailingWidget(BuildContext context, int index)
method deleteSelected (line 257) | void deleteSelected(BuildContext context)
method _processMediaList (line 278) | Future _processMediaList(List<String> urls)
method addFromFile (line 291) | void addFromFile()
method addFromIosFile (line 297) | void addFromIosFile()
method _processFileUrl (line 302) | Future _processFileUrl(String path)
method addFromMediaLibrary (line 358) | void addFromMediaLibrary(BuildContext context)
method addFromOnlineSource (line 379) | void addFromOnlineSource(BuildContext context)
method addFromYoutubeSource (line 399) | void addFromYoutubeSource(BuildContext context)
method _scrollToNewSongs (line 419) | void _scrollToNewSongs()
method build (line 426) | Widget build(BuildContext context)
method _bubbles (line 521) | List<Bubble> _bubbles(BuildContext context)
FILE: lib/audio/widgets/eventEditor.dart
class EventEditor (line 9) | class EventEditor {
method createPresetTiles (line 14) | List<Widget> createPresetTiles(
method buildDialog (line 50) | Future buildDialog(BuildContext context)
FILE: lib/audio/widgets/jamtracksView.dart
class JamtracksView (line 6) | class JamtracksView extends StatelessWidget {
method build (line 11) | Widget build(BuildContext context)
FILE: lib/audio/widgets/loopPanel.dart
class LoopPanel (line 5) | class LoopPanel extends StatelessWidget {
method build (line 19) | Widget build(BuildContext context)
FILE: lib/audio/widgets/media_library/albumTracks.dart
class AlbumTracks (line 8) | class AlbumTracks extends StatefulWidget {
method createState (line 17) | State createState()
class _AlbumTracksState (line 20) | class _AlbumTracksState extends State<AlbumTracks> {
method initState (line 28) | void initState()
method multiselectHandler (line 35) | void multiselectHandler(int index)
method deselectAll (line 47) | void deselectAll()
method createTrailingWidget (line 53) | Widget? createTrailingWidget(BuildContext context, int index)
method build (line 67) | Widget build(BuildContext context)
FILE: lib/audio/widgets/media_library/artistAlbums.dart
class ArtistAlbums (line 9) | class ArtistAlbums extends StatelessWidget {
method build (line 16) | Widget build(BuildContext context)
FILE: lib/audio/widgets/media_library/media_browse.dart
class MediaLibraryBrowser (line 11) | class MediaLibraryBrowser extends StatefulWidget {
method createState (line 15) | _MediaLibraryBrowserState createState()
class _MediaLibraryBrowserState (line 18) | class _MediaLibraryBrowserState extends State<MediaLibraryBrowser> {
method initState (line 28) | void initState()
method getArtists (line 37) | Future<void> getArtists({bool refresh = true})
method build (line 44) | Widget build(BuildContext context)
FILE: lib/audio/widgets/online_source/online_source.dart
class OnlineSourceSearch (line 11) | class OnlineSourceSearch extends StatefulWidget {
method createState (line 15) | _OnlineSourceSearchState createState()
class _OnlineSourceSearchState (line 18) | class _OnlineSourceSearchState extends State<OnlineSourceSearch> {
method initState (line 25) | void initState()
method build (line 34) | Widget build(BuildContext context)
FILE: lib/audio/widgets/online_source/search_screen.dart
class OnlineSearchScreen (line 12) | class OnlineSearchScreen extends StatefulWidget {
method createState (line 18) | State createState()
class _OnlineSearchScreenState (line 21) | class _OnlineSearchScreenState extends State<OnlineSearchScreen> {
method initState (line 35) | void initState()
method multiselectHandler (line 43) | void multiselectHandler(int index)
method deselectAll (line 55) | void deselectAll()
method createTrailingWidget (line 61) | Widget? createTrailingWidget(BuildContext context, int index)
method onSubmit (line 74) | void onSubmit()
method closeTrack (line 84) | void closeTrack()
method previewPlay (line 91) | void previewPlay(int index)
method build (line 116) | Widget build(BuildContext context)
FILE: lib/audio/widgets/painted_waveform.dart
class PaintedWaveform (line 11) | class PaintedWaveform extends StatefulWidget {
method createState (line 34) | _PaintedWaveformState createState()
class _PaintedWaveformState (line 37) | class _PaintedWaveformState extends State<PaintedWaveform> {
method initState (line 55) | void initState()
method initScaling (line 59) | void initScaling()
method scroll (line 71) | void scroll(d)
method zoomViewOnTapUp (line 87) | void zoomViewOnTapUp(TapUpDetails e)
method zoomViewScaleStart (line 97) | void zoomViewScaleStart(ScaleStartDetails d)
method zoomViewScaleUpdate (line 103) | void zoomViewScaleUpdate(ScaleUpdateDetails d)
method _eventPointer (line 153) | Widget _eventPointer(
method build (line 207) | Widget build(context)
class GuitarPickClipper (line 311) | class GuitarPickClipper extends CustomClipper<Path> {
method shouldReclip (line 324) | bool shouldReclip(CustomClipper oldClipper)
FILE: lib/audio/widgets/presetsPanel.dart
class PresetsPanel (line 6) | class PresetsPanel extends StatelessWidget {
method build (line 22) | Widget build(BuildContext context)
FILE: lib/audio/widgets/setlistPlayer.dart
class SetlistPlayer (line 16) | class SetlistPlayer extends StatefulWidget {
method createState (line 20) | State<SetlistPlayer> createState()
class _SetlistPlayerState (line 23) | class _SetlistPlayerState extends State<SetlistPlayer> {
method initState (line 29) | void initState()
method dispose (line 37) | void dispose()
method _onPlayerPosition (line 44) | void _onPlayerPosition(Duration position)
method _onPlayerStateChange (line 48) | void _onPlayerStateChange()
method build (line 53) | Widget build(BuildContext context)
method createTitle (line 57) | Widget? createTitle()
method createPlayerView (line 67) | Widget createPlayerView(BuildContext context)
method createLoopLabel (line 189) | String createLoopLabel()
method getABRepeatIcon (line 194) | IconData getABRepeatIcon()
method createFullTrackControls (line 205) | List<Widget> createFullTrackControls(BoxConstraints constraints)
class SliderRepeatTrackShape (line 283) | class SliderRepeatTrackShape extends RoundedRectSliderTrackShape {
method paint (line 311) | void paint(
class SetlistMiniPlayer (line 366) | class SetlistMiniPlayer extends StatefulWidget {
method createState (line 370) | State<SetlistMiniPlayer> createState()
class SetlistMiniPlayerState (line 373) | class SetlistMiniPlayerState extends State<SetlistMiniPlayer> {
method initState (line 378) | void initState()
method dispose (line 385) | void dispose()
method _opPlayerPosition (line 391) | void _opPlayerPosition(Duration position)
method _onPlayerStateChange (line 395) | void _onPlayerStateChange()
method createTitle (line 399) | Widget? createTitle()
method createMiniTrackControls (line 409) | List<Widget> createMiniTrackControls()
method build (line 433) | Widget build(BuildContext context)
FILE: lib/audio/widgets/speedPanel.dart
class SpeedPanel (line 7) | class SpeedPanel extends StatelessWidget {
method _modifySpeed (line 23) | void _modifySpeed(double amount)
method _modifyPitch (line 30) | void _modifyPitch(int amount)
method _speedControl (line 36) | Widget _speedControl()
method _pitchControl (line 67) | Widget _pitchControl()
method build (line 95) | Widget build(BuildContext context)
FILE: lib/audio/widgets/waveform_painter.dart
class WaveformPainter (line 12) | class WaveformPainter extends CustomPainter {
method paint (line 61) | void paint(Canvas canvas, Size size)
method shouldRepaint (line 127) | bool shouldRepaint(WaveformPainter oldDelegate)
FILE: lib/bluetooth/NuxDeviceControl.dart
type DeviceConnectionState (line 26) | enum DeviceConnectionState {
class NuxDiagnosticData (line 33) | class NuxDiagnosticData {
method toMap (line 38) | Map<String, dynamic> toMap(bool includeJsonPreset)
class NuxDeviceControl (line 52) | class NuxDeviceControl extends ChangeNotifier {
method deviceBLEName (line 125) | List<String> deviceBLEName()
method deviceFromBLEId (line 176) | NuxDevice deviceFromBLEId(String id)
method getDeviceNameFromId (line 187) | String getDeviceNameFromId(String id)
method getDeviceFromId (line 196) | NuxDevice? getDeviceFromId(String id)
method getDeviceFromPresetClass (line 203) | NuxDevice? getDeviceFromPresetClass(String presetClass)
method clearPresetData (line 232) | void clearPresetData()
method _statusListener (line 285) | void _statusListener(statusValue)
method _onConnect (line 323) | void _onConnect()
method _onDisconnect (line 332) | void _onDisconnect()
method _onDataReceive (line 341) | void _onDataReceive(List<int> data)
method _onBatteryTimer (line 346) | void _onBatteryTimer(Timer? t)
method requestFirmwareVersion (line 350) | void requestFirmwareVersion()
method onFirmwareVersionReady (line 360) | void onFirmwareVersionReady()
method onConnectionStepReady (line 364) | void onConnectionStepReady()
method isConnectionComplete (line 380) | bool isConnectionComplete()
method onPresetsReady (line 384) | void onPresetsReady()
method requestPresetDelayed (line 389) | void requestPresetDelayed(int? delay)
method requestPreset (line 394) | void requestPreset(int index)
method onBatteryPercentage (line 398) | void onBatteryPercentage(int val)
method parameterChangedListener (line 403) | void parameterChangedListener(Parameter param)
method changeDeviceChannel (line 408) | void changeDeviceChannel(int channel)
method effectChangedListener (line 413) | void effectChangedListener(int slot)
method effectSwitchedListener (line 417) | void effectSwitchedListener(int slot)
method slotSwappedListener (line 421) | void slotSwappedListener(int slot)
method sendFullEffectSettings (line 425) | void sendFullEffectSettings(int slot, bool force)
method sendFullPresetSettings (line 468) | void sendFullPresetSettings()
method resetToChannelDefaults (line 485) | void resetToChannelDefaults()
method sendParameter (line 491) | List<int> sendParameter(Parameter param, bool returnOnly)
method saveNuxPreset (line 505) | void saveNuxPreset()
method resetNuxPresets (line 525) | void resetNuxPresets()
method sendBLEData (line 537) | void sendBLEData(List<int> data)
method createCCMessage (line 541) | List<int> createCCMessage(int controlNumber, int value)
method updateDiagnosticsData (line 551) | void updateDiagnosticsData(
FILE: lib/bluetooth/bleMidiHandler.dart
type BluetoothErrorCallback (line 16) | typedef BluetoothErrorCallback = void Function(BleError, dynamic data);
class BLEMidiHandler (line 18) | class BLEMidiHandler {
method _onScanResults (line 146) | void _onScanResults(
method setAmpDeviceIdProvider (line 152) | void setAmpDeviceIdProvider(List<String> Function() provider)
method startScanning (line 156) | void startScanning(bool manual)
method stopScanning (line 162) | void stopScanning()
method connectToDevice (line 167) | Future<BLEConnection?> connectToDevice(BLEDevice device)
method disconnectDevice (line 172) | void disconnectDevice()
method registerDataListener (line 177) | StreamSubscription<List<int>> registerDataListener(
method clearDataQueue (line 182) | void clearDataQueue()
method onDataQueueEmpty (line 186) | void onDataQueueEmpty(VoidCallback onEmpty)
method sendData (line 190) | void sendData(List<int> data)
method dispose (line 195) | void dispose()
FILE: lib/bluetooth/ble_controllers/BLEController.dart
type MidiSetupStatus (line 9) | enum MidiSetupStatus {
type BleState (line 20) | enum BleState { off, on }
type BleDeviceState (line 22) | enum BleDeviceState { disconnected, connecting, connected, disconnecting }
type BleError (line 24) | enum BleError {
type ScanResultsCallback (line 31) | typedef ScanResultsCallback = void Function(
class BLEScanResult (line 34) | abstract class BLEScanResult {
class BLEDevice (line 45) | abstract class BLEDevice {
class BLEConnection (line 56) | class BLEConnection {
class BLEController (line 63) | abstract class BLEController {
method setAmpDeviceIdProvider (line 102) | void setAmpDeviceIdProvider(List<String> Function() provider)
method init (line 106) | Future init(ScanResultsCallback callback)
method isAvailable (line 110) | Future<bool> isAvailable()
method startScanning (line 112) | void startScanning()
method stopScanning (line 113) | void stopScanning()
method connectToDevice (line 115) | Future<BLEConnection?> connectToDevice(BLEDevice device)
method disconnectDevice (line 116) | void disconnectDevice()
method registerDataListener (line 118) | StreamSubscription<List<int>> registerDataListener(
method sendData (line 121) | void sendData(List<int> data)
method clearDataQueue (line 135) | void clearDataQueue()
method onDataQueueEmpty (line 141) | void onDataQueueEmpty(VoidCallback onQueueEmpty)
method dispose (line 149) | void dispose()
method _queueSender (line 151) | void _queueSender()
method setMidiSetupStatus (line 223) | void setMidiSetupStatus(MidiSetupStatus status)
method setScanningStatus (line 229) | void setScanningStatus(bool scanning)
method writeToCharacteristic (line 235) | Future writeToCharacteristic(List<int> data, bool noResponse)
FILE: lib/bluetooth/ble_controllers/DummyBLEController.dart
class DummyBLEController (line 5) | class DummyBLEController extends BLEController {
method connectToDevice (line 9) | Future<BLEConnection?> connectToDevice(BLEDevice device)
method disconnectDevice (line 17) | void disconnectDevice()
method dispose (line 20) | void dispose()
method isAvailable (line 23) | Future<bool> isAvailable()
method registerDataListener (line 31) | StreamSubscription<List<int>> registerDataListener(
method startScanning (line 37) | void startScanning()
method stopScanning (line 40) | void stopScanning()
method writeToCharacteristic (line 43) | Future writeToCharacteristic(List<int> data, bool noResponse)
FILE: lib/bluetooth/ble_controllers/FlutterBluePlusController.dart
class FBPScanResult (line 17) | class FBPScanResult extends BLEScanResult {
class FBPBleDevice (line 29) | class FBPBleDevice extends BLEDevice {
class FlutterBluePlusController (line 68) | class FlutterBluePlusController extends BLEController {
method isAvailable (line 85) | Future<bool> isAvailable()
method init (line 90) | Future init(ScanResultsCallback callback)
method startScanning (line 100) | void startScanning()
method stopScanning (line 115) | Future stopScanning()
method connectToDevice (line 121) | Future<BLEConnection?> connectToDevice(BLEDevice device)
method _connectAmpDevice (line 180) | void _connectAmpDevice(
method registerDataListener (line 207) | StreamSubscription<List<int>> registerDataListener(
method disconnectDevice (line 213) | void disconnectDevice()
method dispose (line 223) | void dispose()
method writeToCharacteristic (line 326) | Future writeToCharacteristic(List<int> data, bool noResponse)
FILE: lib/bluetooth/ble_controllers/MightyBle.dart
class MBScanResult (line 7) | class MBScanResult extends BLEScanResult {
class MBDevice (line 19) | class MBDevice extends BLEDevice {
method statePost (line 36) | void statePost(BleDeviceState state)
method dispose (line 40) | void dispose()
class MightyBLEController (line 45) | class MightyBLEController extends BLEController {
method init (line 55) | Future init(ScanResultsCallback callback)
method connectToDevice (line 77) | Future<BLEConnection?> connectToDevice(BLEDevice device)
method disconnectDevice (line 87) | void disconnectDevice()
method dispose (line 97) | void dispose()
method isAvailable (line 104) | Future<bool> isAvailable()
method writeToCharacteristic (line 112) | Future writeToCharacteristic(List<int> data, bool noResponse)
method registerDataListener (line 117) | StreamSubscription<List<int>> registerDataListener(
method startScanning (line 124) | void startScanning()
method stopScanning (line 130) | void stopScanning()
FILE: lib/bluetooth/ble_controllers/WebBleController.dart
class WebBleScanResult (line 20) | class WebBleScanResult extends BLEScanResult {
class WebBleDevice (line 32) | class WebBleDevice extends BLEDevice {
class WebBleController (line 62) | class WebBleController extends BLEController {
method init (line 76) | Future init(ScanResultsCallback callback)
method isAvailable (line 82) | Future<bool> isAvailable()
method connectToDevice (line 90) | Future<BLEConnection?> connectToDevice(BLEDevice dev)
method disconnectDevice (line 116) | void disconnectDevice()
method startScanning (line 124) | void startScanning()
method stopScanning (line 142) | void stopScanning()
method registerDataListener (line 145) | StreamSubscription<List<int>> registerDataListener(
method writeToCharacteristic (line 164) | Future writeToCharacteristic(List<int> data, noResponse)
method dispose (line 174) | void dispose()
FILE: lib/bluetooth/devices/NuxConstants.dart
class AppConstants (line 6) | class AppConstants {
class EProductNo (line 11) | class EProductNo {
class CherubSysExMessageID (line 21) | class CherubSysExMessageID {
class SysCtrlState (line 26) | class SysCtrlState {
class DeviceMessageID (line 41) | class DeviceMessageID {
class PresetDataIndexPlugAir (line 75) | class PresetDataIndexPlugAir {
class PresetDataIndex8BT (line 121) | class PresetDataIndex8BT {
class PresetDataIndex2040BT (line 125) | class PresetDataIndex2040BT {
class PresetDataIndexLite (line 157) | class PresetDataIndexLite {
class PresetDataIndexPlugPro (line 201) | class PresetDataIndexPlugPro {
class MidiMessageValues (line 354) | class MidiMessageValues {
class SysexPrivacy (line 361) | class SysexPrivacy {
class SyxMsg (line 375) | class SyxMsg {
class SyxDir (line 436) | class SyxDir {
class MidiCCValues (line 444) | class MidiCCValues {
class MidiCCValuesPro (line 529) | class MidiCCValuesPro {
FILE: lib/bluetooth/devices/NuxDevice.dart
class NuxDeviceConfiguration (line 23) | class NuxDeviceConfiguration {
class NuxDevice (line 35) | abstract class NuxDevice extends ChangeNotifier {
method setFirmwareVersion (line 109) | void setFirmwareVersion(int ver)
method setFirmwareVersionByIndex (line 111) | void setFirmwareVersionByIndex(int ver)
method getAvailableVersions (line 117) | int getAvailableVersions()
method getProductNameVersion (line 121) | String getProductNameVersion(int version)
method getProductNameForQR (line 125) | String getProductNameForQR(int version)
method getProcessorInfoByKey (line 129) | ProcessorInfo? getProcessorInfoByKey(String key)
method getSlotByEffectKeyName (line 136) | int? getSlotByEffectKeyName(String key)
method getProcessorInfoByFXID (line 144) | ProcessorInfo? getProcessorInfoByFXID(NuxFXID fxid)
method setSelectedChannel (line 148) | void setSelectedChannel(int chan,
method getChannelActive (line 170) | bool getChannelActive(int channel)
method toggleChannelActive (line 174) | void toggleChannelActive(int channel)
method onConnect (line 208) | void onConnect()
method onDisconnect (line 217) | void onDisconnect()
method getDrumStyles (line 222) | dynamic getDrumStyles()
method getDrumStylesCount (line 223) | int getDrumStylesCount()
method resetDrumSettings (line 227) | void resetDrumSettings()
method setDrumsEnabled (line 234) | void setDrumsEnabled(bool enabled)
method setDrumsStyle (line 239) | void setDrumsStyle(int style)
method setDrumsLevel (line 245) | void setDrumsLevel(double level, bool send)
method setDrumsTempo (line 251) | void setDrumsTempo(double tempo, bool send)
method setEcoMode (line 258) | void setEcoMode(bool enabled)
method sendAmpLevel (line 264) | void sendAmpLevel()
method getPreset (line 278) | Preset getPreset(int index)
method getCustomPreset (line 283) | Preset getCustomPreset(int channel)
method getAmpNameByNuxIndex (line 285) | String getAmpNameByNuxIndex(int index, int version)
method renameCabinet (line 289) | void renameCabinet(int cabIndex, String name)
method getPresetsList (line 296) | List<Preset> getPresetsList()
method channelName (line 300) | String channelName(int channel)
method onPresetsReady (line 304) | void onPresetsReady()
method _handleChannelChange (line 313) | void _handleChannelChange(int index)
method _handleKnobReceiveData (line 340) | void _handleKnobReceiveData(List<int> data)
method onDataReceived (line 385) | void onDataReceived(List<int> data)
method saveNuxPreset (line 425) | void saveNuxPreset()
method resetNuxPresets (line 429) | void resetNuxPresets()
method isPresetSupported (line 434) | bool isPresetSupported(dynamic preset)
method getSettingsWidget (line 439) | Widget getSettingsWidget()
method setupFromQRData (line 443) | PresetQRError setupFromQRData(String qrData)
method setupDetachedPresetFromQRData (line 453) | Preset? setupDetachedPresetFromQRData(String qrData)
method jsonToQR (line 461) | String? jsonToQR(Map<String, dynamic> jsonPreset)
method jsonToCompressedData (line 470) | List<int>? jsonToCompressedData(Map<String, dynamic> jsonPreset)
method channelToQR (line 480) | String channelToQR(int channel)
method checkQRValid (line 485) | bool checkQRValid(int deviceId, int ver)
method parseEffect (line 487) | void parseEffect(
method presetFromJson (line 568) | Preset? presetFromJson(Map<String, dynamic> preset, double? overrideLe...
method presetToJson (line 649) | Map<String, dynamic> presetToJson({Preset? customPreset})
FILE: lib/bluetooth/devices/NuxFXID.dart
class NuxFXID (line 3) | class NuxFXID {
method fromInt (line 9) | fromInt(int val)
class PlugAirFXID (line 15) | class PlugAirFXID extends NuxFXID {
class PlugProFXID (line 26) | class PlugProFXID extends NuxFXID {
class PlugBTFXID (line 45) | class PlugBTFXID extends NuxFXID {
class LiteFXID (line 54) | class LiteFXID extends NuxFXID {
class LiteMK2FXID (line 62) | class LiteMK2FXID extends NuxFXID {
FILE: lib/bluetooth/devices/NuxMighty2040BT.dart
type M2040BTChannel (line 16) | enum M2040BTChannel {
class NuxMighty2040BT (line 27) | class NuxMighty2040BT extends NuxDevice {
method getDrumStyles (line 155) | dynamic getDrumStyles()
method setFirmwareVersion (line 158) | void setFirmwareVersion(int ver)
method setFirmwareVersionByIndex (line 161) | void setFirmwareVersionByIndex(int ver)
method getCustomPreset (line 164) | MXXBTPreset getCustomPreset(int channel)
method checkQRValid (line 171) | bool checkQRValid(int deviceId, int ver)
FILE: lib/bluetooth/devices/NuxMighty8BT.dart
type M8BTChannel (line 15) | enum M8BTChannel { Clean, Overdrive, Distortion }
class NuxMighty8BT (line 17) | class NuxMighty8BT extends NuxDevice {
method getDrumStyles (line 108) | dynamic getDrumStyles()
method setFirmwareVersion (line 111) | void setFirmwareVersion(int ver)
method setFirmwareVersionByIndex (line 114) | void setFirmwareVersionByIndex(int ver)
method getCustomPreset (line 117) | M8BTPreset getCustomPreset(int channel)
method checkQRValid (line 124) | bool checkQRValid(int deviceId, int ver)
FILE: lib/bluetooth/devices/NuxMighty8BTMk2.dart
type LiteMK2Version (line 22) | enum LiteMK2Version { LiteMK2v1 }
class NuxMighty8BT2Configuration (line 24) | class NuxMighty8BT2Configuration extends NuxDeviceConfiguration {
class NuxMighty8BTMk2 (line 53) | class NuxMighty8BTMk2 extends NuxDevice
method getDrumStylesCount (line 181) | int getDrumStylesCount()
method setFirmwareVersion (line 192) | void setFirmwareVersion(int ver)
method setFirmwareVersionByIndex (line 197) | void setFirmwareVersionByIndex(int ver)
method getSettingsWidget (line 202) | Widget getSettingsWidget()
method checkQRValid (line 207) | bool checkQRValid(int deviceId, int ver)
method getCustomPreset (line 213) | MightyMk2Preset getCustomPreset(int channel)
method setDrumsTone (line 221) | void setDrumsTone(double value, DrumsToneControl control, bool send)
method tunerEnable (line 242) | void tunerEnable(bool enable)
method tunerRequestSettings (line 247) | void tunerRequestSettings()
method tunerSetMode (line 252) | void tunerSetMode(TunerMode mode)
method tunerSetReferencePitch (line 259) | void tunerSetReferencePitch(int refPitch)
method tunerMute (line 266) | void tunerMute(bool enable)
method getTunerDataStream (line 273) | Stream<TunerData> getTunerDataStream()
method notifyTunerListeners (line 278) | void notifyTunerListeners()
method setUsbMode (line 295) | void setUsbMode(int mode)
method setUsbRecordingVol (line 301) | void setUsbRecordingVol(int vol)
method setUsbPlaybackVol (line 307) | void setUsbPlaybackVol(int vol)
method setUsbDryWetVol (line 313) | void setUsbDryWetVol(int vol)
method getLooperDataStream (line 319) | Stream<LooperData> getLooperDataStream()
method notifyLooperListeners (line 323) | void notifyLooperListeners()
method looperClear (line 328) | void looperClear()
method looperRecordPlay (line 333) | void looperRecordPlay()
method looperStop (line 338) | void looperStop()
method looperUndoRedo (line 343) | void looperUndoRedo()
method looperLevel (line 348) | void looperLevel(int vol)
method looperNrAr (line 354) | void looperNrAr(bool auto)
method requestLooperSettings (line 360) | void requestLooperSettings()
FILE: lib/bluetooth/devices/NuxMightyLite.dart
type MLiteChannel (line 15) | enum MLiteChannel { Clean, Overdrive, Distortion }
class NuxMightyLite (line 17) | class NuxMightyLite extends NuxDevice {
method getDrumStyles (line 112) | dynamic getDrumStyles()
method setFirmwareVersion (line 115) | void setFirmwareVersion(int ver)
method setFirmwareVersionByIndex (line 118) | void setFirmwareVersionByIndex(int ver)
method getCustomPreset (line 121) | MLitePreset getCustomPreset(int channel)
method checkQRValid (line 128) | bool checkQRValid(int deviceId, int ver)
FILE: lib/bluetooth/devices/NuxMightyLiteMk2.dart
type LiteMK2Version (line 20) | enum LiteMK2Version { LiteMK2v1 }
class NuxMightyLiteMk2 (line 22) | class NuxMightyLiteMk2 extends NuxDevice
method getDrumStylesCount (line 139) | int getDrumStylesCount()
method setFirmwareVersion (line 150) | void setFirmwareVersion(int ver)
method setFirmwareVersionByIndex (line 155) | void setFirmwareVersionByIndex(int ver)
method getSettingsWidget (line 160) | Widget getSettingsWidget()
method checkQRValid (line 165) | bool checkQRValid(int deviceId, int ver)
method getCustomPreset (line 171) | MightyMk2Preset getCustomPreset(int channel)
method setDrumsTone (line 179) | void setDrumsTone(double value, DrumsToneControl control, bool send)
method tunerEnable (line 200) | void tunerEnable(bool enable)
method tunerRequestSettings (line 205) | void tunerRequestSettings()
method tunerSetMode (line 210) | void tunerSetMode(TunerMode mode)
method tunerSetReferencePitch (line 217) | void tunerSetReferencePitch(int refPitch)
method tunerMute (line 224) | void tunerMute(bool enable)
method getTunerDataStream (line 231) | Stream<TunerData> getTunerDataStream()
method notifyTunerListeners (line 236) | void notifyTunerListeners()
method setUsbMode (line 253) | void setUsbMode(int mode)
method setUsbRecordingVol (line 259) | void setUsbRecordingVol(int vol)
method setUsbPlaybackVol (line 265) | void setUsbPlaybackVol(int vol)
method setUsbDryWetVol (line 271) | void setUsbDryWetVol(int vol)
FILE: lib/bluetooth/devices/NuxMightyPlugAir.dart
type PlugAirChannel (line 20) | enum PlugAirChannel { Clean, Overdrive, Distortion, AGSim, Pop, Rock, Fu...
type PlugAirVersion (line 22) | enum PlugAirVersion { PlugAir15, PlugAir21 }
type PlugAirVariant (line 24) | enum PlugAirVariant { MightyPlug, MightyAir }
class NuxMightyPlugConfiguration (line 26) | class NuxMightyPlugConfiguration extends NuxDeviceConfiguration {
class NuxMightyPlug (line 33) | class NuxMightyPlug extends NuxDevice {
method getDrumStyles (line 168) | dynamic getDrumStyles()
method onConnect (line 171) | void onConnect()
method setFirmwareVersion (line 182) | void setFirmwareVersion(int ver)
method setFirmwareVersionByIndex (line 196) | void setFirmwareVersionByIndex(int ver)
method getAvailableVersions (line 206) | int getAvailableVersions()
method getProductNameVersion (line 211) | String getProductNameVersion(int version)
method getProductNameForQR (line 221) | String getProductNameForQR(int version)
method getCustomPreset (line 231) | PlugAirPreset getCustomPreset(int channel)
method setUsbMode (line 238) | void setUsbMode(int mode)
method setUsbInputVol (line 243) | void setUsbInputVol(int vol)
method setUsbOutputVol (line 248) | void setUsbOutputVol(int vol)
method setBtEq (line 253) | void setBtEq(int eq)
method getSettingsWidget (line 259) | Widget getSettingsWidget()
method checkQRValid (line 264) | bool checkQRValid(int deviceId, int ver)
FILE: lib/bluetooth/devices/NuxMightyPlugPro.dart
type PlugProChannel (line 27) | enum PlugProChannel { Clean, Overdrive, Distortion, AGSim, Pop, Rock, Fu...
type PlugProVersion (line 29) | enum PlugProVersion { PlugPro1 }
class NuxPlugProConfiguration (line 31) | class NuxPlugProConfiguration extends NuxDeviceConfiguration {
class NuxMightyPlugPro (line 60) | class NuxMightyPlugPro extends NuxReorderableDevice<PlugProPreset>
method getDrumStyles (line 166) | Map<String, Map<dynamic, dynamic>> getDrumStyles()
method getDrumStylesCount (line 171) | int getDrumStylesCount()
method setFirmwareVersion (line 182) | void setFirmwareVersion(int ver)
method setFirmwareVersionByIndex (line 192) | void setFirmwareVersionByIndex(int ver)
method setVersionDate (line 202) | void setVersionDate(String vDate)
method getCustomPreset (line 214) | PlugProPreset getCustomPreset(int channel)
method setUsbMode (line 221) | void setUsbMode(int mode)
method setUsbRecordingVol (line 227) | void setUsbRecordingVol(int vol)
method setUsbPlaybackVol (line 233) | void setUsbPlaybackVol(int vol)
method setUsbDryWetVol (line 239) | void setUsbDryWetVol(int vol)
method getSettingsWidget (line 245) | Widget getSettingsWidget()
method checkQRValid (line 250) | bool checkQRValid(int deviceId, int ver)
method setDrumsTone (line 255) | void setDrumsTone(double value, DrumsToneControl control, bool send)
method tunerEnable (line 276) | void tunerEnable(bool enable)
method tunerRequestSettings (line 281) | void tunerRequestSettings()
method tunerSetMode (line 286) | void tunerSetMode(TunerMode mode)
method tunerSetReferencePitch (line 293) | void tunerSetReferencePitch(int refPitch)
method tunerMute (line 300) | void tunerMute(bool enable)
method getTunerDataStream (line 307) | Stream<TunerData> getTunerDataStream()
method notifyTunerListeners (line 312) | void notifyTunerListeners()
FILE: lib/bluetooth/devices/NuxMightySpace.dart
class NuxMightySpaceConfiguration (line 12) | class NuxMightySpaceConfiguration extends NuxPlugProConfiguration {
class NuxMightySpace (line 17) | class NuxMightySpace extends NuxMightyPlugPro implements Tuner, Looper {
method getSettingsWidget (line 55) | Widget getSettingsWidget()
method getLooperDataStream (line 60) | Stream<LooperData> getLooperDataStream()
method notifyLooperListeners (line 64) | void notifyLooperListeners()
method looperClear (line 69) | void looperClear()
method looperRecordPlay (line 74) | void looperRecordPlay()
method looperStop (line 79) | void looperStop()
method looperUndoRedo (line 84) | void looperUndoRedo()
method looperLevel (line 89) | void looperLevel(int vol)
method looperNrAr (line 95) | void looperNrAr(bool auto)
method requestLooperSettings (line 101) | void requestLooperSettings()
FILE: lib/bluetooth/devices/NuxReorderableDevice.dart
class NuxReorderableDevice (line 7) | abstract class NuxReorderableDevice<T extends Preset> extends NuxDevice {
method getProcessorInfoByFXID (line 41) | ProcessorInfo? getProcessorInfoByFXID(NuxFXID fxid)
method getSlotByEffectKeyName (line 49) | int? getSlotByEffectKeyName(String key)
FILE: lib/bluetooth/devices/communication/communication.dart
class DeviceCommunication (line 6) | abstract class DeviceCommunication {
method createFirmwareMessage (line 12) | List<int> createFirmwareMessage()
method requestPresetByIndex (line 14) | List<int> requestPresetByIndex(int index)
method requestBatteryStatus (line 16) | void requestBatteryStatus()
method isConnectionReady (line 24) | bool isConnectionReady()
method performNextConnectionStep (line 28) | void performNextConnectionStep()
method connectionStepReady (line 31) | void connectionStepReady()
method sendSlotEnabledState (line 37) | void sendSlotEnabledState(int slot)
method sendSlotEffect (line 50) | void sendSlotEffect(int slot, int index)
method saveCurrentPreset (line 60) | void saveCurrentPreset(int index)
method sendActiveChannels (line 62) | void sendActiveChannels(List<bool> channels)
method sendSlotOrder (line 63) | void sendSlotOrder()
method sendReset (line 64) | void sendReset()
method sendDrumsEnabled (line 66) | void sendDrumsEnabled(bool enabled)
method sendDrumsStyle (line 67) | void sendDrumsStyle(int style)
method sendDrumsLevel (line 68) | void sendDrumsLevel(double volume)
method sendDrumsTempo (line 69) | void sendDrumsTempo(double tempo)
method setEcoMode (line 71) | void setEcoMode(bool enable)
method setBTEq (line 72) | void setBTEq(int eq)
method setUsbAudioMode (line 73) | void setUsbAudioMode(int mode)
method setUsbInputVolume (line 74) | void setUsbInputVolume(int vol)
method setUsbOutputVolume (line 75) | void setUsbOutputVolume(int vol)
method onDataReceive (line 77) | void onDataReceive(List<int> data)
method onDisconnect (line 79) | void onDisconnect()
method setChannel (line 83) | List<int> setChannel(int channel)
method createCCMessage (line 86) | List<int> createCCMessage(int controlNumber, int value)
method createPCMessage (line 96) | List<int> createPCMessage(int programNumber)
method createSysExMessage (line 105) | List<int> createSysExMessage(int deviceMessageId, var data,
method createSysExMessagePro (line 137) | List<int> createSysExMessagePro(
method percentageTo7Bit (line 159) | int percentageTo7Bit(double val)
method fillTestData (line 163) | void fillTestData()
FILE: lib/bluetooth/devices/communication/liteCommunication.dart
class LiteCommunication (line 6) | class LiteCommunication extends DeviceCommunication {
method performNextConnectionStep (line 16) | void performNextConnectionStep()
method requestAllPresets (line 27) | void requestAllPresets()
method createFirmwareMessage (line 35) | List<int> createFirmwareMessage()
method requestPresetByIndex (line 40) | List<int> requestPresetByIndex(int index)
method setChannel (line 45) | List<int> setChannel(int channel)
method requestBatteryStatus (line 50) | void requestBatteryStatus()
method sendReset (line 58) | void sendReset()
method sendDrumsEnabled (line 66) | void sendDrumsEnabled(bool enabled)
method sendDrumsStyle (line 74) | void sendDrumsStyle(int style)
method sendDrumsLevel (line 81) | void sendDrumsLevel(double volume)
method sendDrumsTempo (line 89) | void sendDrumsTempo(double tempo)
method setEcoMode (line 109) | void setEcoMode(bool enable)
method setBTEq (line 111) | void setBTEq(int eq)
method setUsbAudioMode (line 113) | void setUsbAudioMode(int mode)
method setUsbInputVolume (line 115) | void setUsbInputVolume(int vol)
method setUsbOutputVolume (line 117) | void setUsbOutputVolume(int vol)
method saveCurrentPreset (line 119) | void saveCurrentPreset(int index)
method _handlePresetDataPiece (line 124) | void _handlePresetDataPiece(List<int> data)
method onDataReceive (line 155) | void onDataReceive(List<int> data)
method onDisconnect (line 172) | void onDisconnect()
method fillTestData (line 178) | void fillTestData()
FILE: lib/bluetooth/devices/communication/liteMk2Communication.dart
class LiteMk2Communication (line 4) | class LiteMk2Communication extends PlugProCommunication {
method performNextConnectionStep (line 12) | void performNextConnectionStep()
method createFirmwareMessage (line 39) | List<int> createFirmwareMessage()
FILE: lib/bluetooth/devices/communication/plugAirCommunication.dart
class PlugAirCommunication (line 7) | class PlugAirCommunication extends DeviceCommunication {
method createFirmwareMessage (line 21) | List<int> createFirmwareMessage()
method performNextConnectionStep (line 45) | void performNextConnectionStep()
method saveCurrentPreset (line 64) | void saveCurrentPreset(int index)
method requestPresetByIndex (line 70) | List<int> requestPresetByIndex(int index)
method requestBatteryStatus (line 75) | void requestBatteryStatus()
method sendReset (line 83) | void sendReset()
method setChannel (line 91) | List<int> setChannel(int channel)
method sendDrumsEnabled (line 99) | void sendDrumsEnabled(bool enabled)
method sendDrumsStyle (line 107) | void sendDrumsStyle(int style)
method sendDrumsLevel (line 114) | void sendDrumsLevel(double volume)
method sendDrumsTempo (line 122) | void sendDrumsTempo(double tempo)
method setEcoMode (line 145) | void setEcoMode(bool enable)
method setBTEq (line 152) | void setBTEq(int eq)
method setUsbAudioMode (line 159) | void setUsbAudioMode(int mode)
method setUsbInputVolume (line 165) | void setUsbInputVolume(int vol)
method setUsbOutputVolume (line 172) | void setUsbOutputVolume(int vol)
method _handlePresetDataPiece (line 178) | void _handlePresetDataPiece(List<int> data)
method _handleFirmwareData (line 202) | bool _handleFirmwareData(List<int> data)
method _handleBTEcoMode (line 215) | void _handleBTEcoMode(List<int> data)
method _handleUSBConfig (line 228) | void _handleUSBConfig(List<int> data)
method onDataReceive (line 236) | void onDataReceive(List<int> data)
method onDisconnect (line 263) | void onDisconnect()
FILE: lib/bluetooth/devices/communication/plugProCommunication.dart
class PlugProCommunication (line 19) | class PlugProCommunication extends DeviceCommunication {
method createFirmwareMessage (line 50) | List<int> createFirmwareMessage()
method performNextConnectionStep (line 69) | void performNextConnectionStep()
method saveCurrentPreset (line 95) | void saveCurrentPreset(int index)
method requestPresetByIndex (line 106) | List<int> requestPresetByIndex(int index)
method requestCurrentChannel (line 112) | List<int> requestCurrentChannel()
method _requestSystemSettings (line 117) | List<int> _requestSystemSettings()
method requestIRName (line 123) | List<int> requestIRName(int index)
method _requestEffectsOrder (line 128) | List<int> _requestEffectsOrder()
method _requestDrumData (line 133) | List<int> _requestDrumData()
method _requestMicSettings (line 138) | List<int> _requestMicSettings()
method requestBTEQData (line 143) | void requestBTEQData(int index)
method requestSpeakerEQData (line 151) | void requestSpeakerEQData(int index)
method requestBatteryStatus (line 160) | void requestBatteryStatus()
method sendReset (line 176) | void sendReset()
method _sendSlotData (line 188) | void _sendSlotData(int slot, bool enabled, int effectIndex)
method sendSlotEnabledState (line 202) | void sendSlotEnabledState(int slot)
method setSlotEffect (line 213) | void setSlotEffect(int slot, int index)
method sendActiveChannels (line 220) | void sendActiveChannels(List<bool> channels)
method sendSlotOrder (line 232) | void sendSlotOrder()
method sendChannelVolume (line 248) | void sendChannelVolume(int value)
method setChannel (line 255) | List<int> setChannel(int channel)
method sendDrumsEnabled (line 260) | void sendDrumsEnabled(bool enabled)
method sendDrumsStyle (line 267) | void sendDrumsStyle(int style)
method sendDrumsLevel (line 274) | void sendDrumsLevel(double volume)
method sendDrumsTempo (line 299) | void sendDrumsTempo(double tempo)
method setEcoMode (line 322) | void setEcoMode(bool enable)
method setBTEq (line 326) | void setBTEq(int eq)
method saveBTEQGroup (line 332) | void saveBTEQGroup(int group)
method setSpeakerEq (line 343) | void setSpeakerEq(int eq)
method saveSpeakerEQGroup (line 349) | void saveSpeakerEQGroup(int group)
method setBTInvert (line 360) | void setBTInvert(bool invert)
method setBTMute (line 366) | void setBTMute(bool mute)
method setMicMute (line 372) | void setMicMute(bool mute)
method setMicLevel (line 378) | void setMicLevel(int level)
method setMicNoiseGate (line 384) | void setMicNoiseGate(bool enable)
method setMicNoiseGateSens (line 390) | void setMicNoiseGateSens(int level)
method setMicNoiseGateDecay (line 396) | void setMicNoiseGateDecay(int level)
method setUsbAudioMode (line 403) | void setUsbAudioMode(int mode)
method setUsbInputVolume (line 410) | void setUsbInputVolume(int vol)
method setUsbOutputVolume (line 417) | void setUsbOutputVolume(int vol)
method setUsbDryWet (line 423) | void setUsbDryWet(int vol)
method enableTuner (line 429) | void enableTuner(bool enable)
method tunerSetSettings (line 433) | void tunerSetSettings({bool tunerOn = true})
method requestTunerSettings (line 449) | void requestTunerSettings()
method looperRecord (line 457) | void looperRecord()
method looperStop (line 463) | void looperStop()
method looperClear (line 469) | void looperClear()
method looperUndoRedo (line 475) | void looperUndoRedo()
method looperVolume (line 481) | void looperVolume(int volume)
method looperNrAr (line 487) | void looperNrAr(bool auto)
method requestLooperSettings (line 493) | void requestLooperSettings()
method _splitPresetData (line 501) | List<List<int>> _splitPresetData(List<int> data)
method _handlePresetDataPiece (line 522) | void _handlePresetDataPiece(List<int> data)
method _handleIRName (line 558) | void _handleIRName(List<int> data)
method _handleEffectsOrderData (line 612) | bool _handleEffectsOrderData(List<int> data)
method _handleFirmwareData (line 633) | bool _handleFirmwareData(List<int> data)
method _handleDrumCCData (line 657) | bool _handleDrumCCData(int control, int value)
method _handleActiveChannelsData (line 692) | void _handleActiveChannelsData(int bitfield)
method _handleVolumeData (line 699) | void _handleVolumeData(int vol)
method _handleLooperState (line 704) | void _handleLooperState(int state)
method _handleLooperCC (line 710) | void _handleLooperCC(int ccNumber, int value)
method _handleLooperSysEx (line 725) | void _handleLooperSysEx(List<int> data)
method _handleTuner (line 733) | void _handleTuner(int ccNumber, int value)
method _handleTunerSysEx (line 748) | void _handleTunerSysEx(List<int> data)
method _handleSystemSettings (line 786) | void _handleSystemSettings(List<int> data)
method _handleDrumData (line 811) | void _handleDrumData(List<int> data)
method _handleMicSettings (line 830) | void _handleMicSettings(List<int> data)
method _handleBTEqData (line 846) | void _handleBTEqData(List<int> data)
method _handleSpeakerEqData (line 853) | void _handleSpeakerEqData(List<int> data)
method onDataReceive (line 865) | void onDataReceive(List<int> data)
method onDisconnect (line 968) | void onDisconnect()
FILE: lib/bluetooth/devices/device_data/drumstyles.dart
class DrumStyles (line 1) | class DrumStyles {
FILE: lib/bluetooth/devices/device_data/processors_list.dart
class ProcessorsList (line 7) | class ProcessorsList {
FILE: lib/bluetooth/devices/effects/MidiControllerHandles.dart
type ControllerHandleId (line 1) | enum ControllerHandleId {
class MidiControllerHandle (line 89) | class MidiControllerHandle {
class MidiControllerHandles (line 95) | class MidiControllerHandles {
FILE: lib/bluetooth/devices/effects/NoiseGate.dart
class NoiseGate2Param (line 6) | class NoiseGate2Param extends Processor {
class NoiseGate1Param (line 59) | class NoiseGate1Param extends Processor {
class NoiseGatePro (line 106) | class NoiseGatePro extends Processor {
FILE: lib/bluetooth/devices/effects/Processor.dart
class Parameter (line 13) | class Parameter {
method toHumanInput (line 39) | double toHumanInput()
method fromHumanInput (line 43) | double fromHumanInput(double val)
class ProcessorInfo (line 49) | class ProcessorInfo {
type EffectEditorUI (line 65) | enum EffectEditorUI { Sliders, EQ }
class Processor (line 67) | abstract class Processor {
method setupFromNuxPayload (line 106) | void setupFromNuxPayload(List<int> nuxData)
method getNuxPayload (line 127) | void getNuxPayload(List<int> nuxData, bool enabled)
method getEquivalentEffect (line 147) | int? getEquivalentEffect(int version)
class Amplifier (line 152) | abstract class Amplifier extends Processor {
class Cabinet (line 160) | abstract class Cabinet extends Processor {
FILE: lib/bluetooth/devices/effects/lite/Ambience.dart
class Ambience (line 9) | abstract class Ambience extends Processor {
class Delay1 (line 37) | class Delay1 extends Ambience {
class Delay2 (line 73) | class Delay2 extends Ambience {
class Delay3 (line 109) | class Delay3 extends Ambience {
class Delay4 (line 145) | class Delay4 extends Ambience {
class RoomReverb (line 181) | class RoomReverb extends Ambience {
class HallReverb (line 208) | class HallReverb extends Ambience {
class PlateReverb (line 235) | class PlateReverb extends Ambience {
class SpringReverb (line 262) | class SpringReverb extends Ambience {
FILE: lib/bluetooth/devices/effects/lite/Amps.dart
class LiteAmplifier (line 9) | abstract class LiteAmplifier extends Amplifier {
class AmpClean (line 39) | class AmpClean extends LiteAmplifier {
FILE: lib/bluetooth/devices/effects/lite/Modulation.dart
class Modulation (line 9) | abstract class Modulation extends Processor {
class Phaser (line 38) | class Phaser extends Modulation {
class Chorus (line 65) | class Chorus extends Modulation {
class Tremolo (line 92) | class Tremolo extends Modulation {
class Vibe (line 119) | class Vibe extends Modulation {
FILE: lib/bluetooth/devices/effects/liteMk2/delay.dart
class AnalogDelayLiteMk2 (line 8) | class AnalogDelayLiteMk2 extends DelayPro {
class DigitalDelayLiteV2 (line 44) | class DigitalDelayLiteV2 extends DelayPro {
class ModDelayLiteMk2 (line 80) | class ModDelayLiteMk2 extends DelayPro {
class TapeEchoLiteMk2 (line 123) | class TapeEchoLiteMk2 extends DelayPro {
class PhiDelayLiteMk2 (line 158) | class PhiDelayLiteMk2 extends DelayPro {
FILE: lib/bluetooth/devices/effects/liteMk2/efx.dart
class RoseCompLiteMk2 (line 7) | class RoseCompLiteMk2 extends EFXPro {
class KCompLiteMk2 (line 35) | class KCompLiteMk2 extends EFXPro {
class TouchWahLiteMk2 (line 71) | class TouchWahLiteMk2 extends EFXPro {
class TremoloEFXLiteMk2 (line 106) | class TremoloEFXLiteMk2 extends EFXPro {
class VibeEFXLiteMk2 (line 133) | class VibeEFXLiteMk2 extends EFXPro {
class PH100LiteMk2 (line 167) | class PH100LiteMk2 extends EFXPro {
FILE: lib/bluetooth/devices/effects/liteMk2/modulation.dart
class FlangerLiteMk2 (line 8) | class FlangerLiteMk2 extends FlangerPro {
class Phase90LiteMk2 (line 13) | class Phase90LiteMk2 extends Phase90 {
class Phase100LiteMk2 (line 18) | class Phase100LiteMk2 extends Phase100 {
class SCFLiteMk2 (line 23) | class SCFLiteMk2 extends SCFPro {
class VibeLiteMk2 (line 28) | class VibeLiteMk2 extends VibePro {
class TremoloLiteMk2 (line 60) | class TremoloLiteMk2 extends TremoloPro {
class SCH1LiteMk2 (line 65) | class SCH1LiteMk2 extends SCH1Pro {
FILE: lib/bluetooth/devices/effects/liteMk2/reverb.dart
class RoomReverbLiteMk2 (line 8) | class RoomReverbLiteMk2 extends Reverb {
class HallReverbLiteMk2 (line 43) | class HallReverbLiteMk2 extends Reverb {
class DampReverbLiteMk2 (line 78) | class DampReverbLiteMk2 extends DampReverbPro {
FILE: lib/bluetooth/devices/effects/mighty_2040bt/Amps.dart
class MXXBTAmplifier (line 9) | abstract class MXXBTAmplifier extends Amplifier {
class Amp1 (line 35) | class Amp1 extends MXXBTAmplifier {
FILE: lib/bluetooth/devices/effects/mighty_2040bt/Delay.dart
class Delay (line 9) | abstract class Delay extends Processor {
class AnalogDelay (line 36) | class AnalogDelay extends Delay {
class ModulationDelay (line 72) | class ModulationDelay extends Delay {
class DigitalDelay (line 107) | class DigitalDelay extends Delay {
FILE: lib/bluetooth/devices/effects/mighty_2040bt/Modulation.dart
class Modulation (line 9) | abstract class Modulation extends Processor {
class Phaser (line 36) | class Phaser extends Modulation {
class Chorus (line 63) | class Chorus extends Modulation {
class Tremolo (line 90) | class Tremolo extends Modulation {
FILE: lib/bluetooth/devices/effects/mighty_2040bt/Reverb.dart
class Reverb (line 6) | abstract class Reverb extends Processor {
class HallReverb (line 33) | class HallReverb extends Reverb {
class PlateReverb (line 60) | class PlateReverb extends Reverb {
class SpringReverb (line 87) | class SpringReverb extends Reverb {
FILE: lib/bluetooth/devices/effects/mighty_8bt/Amps.dart
class M8BTAmplifier (line 9) | abstract class M8BTAmplifier extends Amplifier {
class AmpClean (line 38) | class AmpClean extends M8BTAmplifier {
FILE: lib/bluetooth/devices/effects/mighty_8bt/Delay.dart
class Delay (line 6) | abstract class Delay extends Processor {
class Delay1 (line 34) | class Delay1 extends Delay {
class Delay2 (line 70) | class Delay2 extends Delay {
class Delay3 (line 106) | class Delay3 extends Delay {
class Delay4 (line 142) | class Delay4 extends Delay {
FILE: lib/bluetooth/devices/effects/mighty_8bt/Modulation.dart
class Modulation (line 9) | abstract class Modulation extends Processor {
class Phaser (line 37) | class Phaser extends Modulation {
class Chorus (line 64) | class Chorus extends Modulation {
class Tremolo (line 91) | class Tremolo extends Modulation {
class Vibe (line 118) | class Vibe extends Modulation {
FILE: lib/bluetooth/devices/effects/mighty_8bt/Reverb.dart
class Reverb (line 6) | abstract class Reverb extends Processor {
class RoomReverb (line 33) | class RoomReverb extends Reverb {
class HallReverb (line 60) | class HallReverb extends Reverb {
class PlateReverb (line 87) | class PlateReverb extends Reverb {
class SpringReverb (line 114) | class SpringReverb extends Reverb {
FILE: lib/bluetooth/devices/effects/plug_air/Amps.dart
class PlugAirAmplifier (line 13) | abstract class PlugAirAmplifier extends Amplifier {
class TwinVerb (line 40) | class TwinVerb extends PlugAirAmplifier {
method getEquivalentEffect (line 84) | int? getEquivalentEffect(int version)
class JZ120 (line 90) | class JZ120 extends PlugAirAmplifier {
method getEquivalentEffect (line 153) | int? getEquivalentEffect(int version)
class TweedDlx (line 159) | class TweedDlx extends PlugAirAmplifier {
method getEquivalentEffect (line 222) | int? getEquivalentEffect(int version)
class Plexi (line 228) | class Plexi extends PlugAirAmplifier {
method getEquivalentEffect (line 271) | int? getEquivalentEffect(int version)
class TopBoost (line 278) | class TopBoost extends PlugAirAmplifier {
method getEquivalentEffect (line 341) | int? getEquivalentEffect(int version)
class Lead100 (line 347) | class Lead100 extends PlugAirAmplifier {
method getEquivalentEffect (line 409) | int? getEquivalentEffect(int version)
class Fireman (line 415) | class Fireman extends PlugAirAmplifier {
class DIEVH4 (line 459) | class DIEVH4 extends PlugAirAmplifier {
method getEquivalentEffect (line 521) | int? getEquivalentEffect(int version)
class Recto (line 527) | class Recto extends PlugAirAmplifier {
method getEquivalentEffect (line 591) | int? getEquivalentEffect(int version)
class Optima (line 597) | class Optima extends PlugAirAmplifier {
method getEquivalentEffect (line 656) | int? getEquivalentEffect(int version)
class Stageman (line 662) | class Stageman extends PlugAirAmplifier {
method getEquivalentEffect (line 717) | int? getEquivalentEffect(int version)
class MLD (line 723) | class MLD extends PlugAirAmplifier {
method getEquivalentEffect (line 791) | int? getEquivalentEffect(int version)
class AGL (line 797) | class AGL extends PlugAirAmplifier {
method getEquivalentEffect (line 859) | int? getEquivalentEffect(int version)
FILE: lib/bluetooth/devices/effects/plug_air/Ampsv2.dart
class JazzClean (line 9) | class JazzClean extends PlugAirAmplifier {
method getEquivalentEffect (line 76) | int? getEquivalentEffect(int version)
class DeluxeRvb (line 82) | class DeluxeRvb extends PlugAirAmplifier {
method getEquivalentEffect (line 136) | int? getEquivalentEffect(int version)
class TwinRvbV2 (line 142) | class TwinRvbV2 extends PlugAirAmplifier {
method getEquivalentEffect (line 203) | int? getEquivalentEffect(int version)
class ClassA30 (line 209) | class ClassA30 extends PlugAirAmplifier {
method getEquivalentEffect (line 269) | int? getEquivalentEffect(int version)
class Brit800 (line 275) | class Brit800 extends PlugAirAmplifier {
method getEquivalentEffect (line 337) | int? getEquivalentEffect(int version)
class Plexi1987x50 (line 343) | class Plexi1987x50 extends PlugAirAmplifier {
method getEquivalentEffect (line 405) | int? getEquivalentEffect(int version)
class FiremanHBE (line 411) | class FiremanHBE extends PlugAirAmplifier {
class DualRect (line 474) | class DualRect extends PlugAirAmplifier {
method getEquivalentEffect (line 536) | int? getEquivalentEffect(int version)
class DIEVH4v2 (line 542) | class DIEVH4v2 extends PlugAirAmplifier {
method getEquivalentEffect (line 604) | int? getEquivalentEffect(int version)
class AGLv2 (line 610) | class AGLv2 extends PlugAirAmplifier {
method getEquivalentEffect (line 677) | int? getEquivalentEffect(int version)
class Starlift (line 683) | class Starlift extends PlugAirAmplifier {
method getEquivalentEffect (line 744) | int? getEquivalentEffect(int version)
class MLDv2 (line 750) | class MLDv2 extends PlugAirAmplifier {
method getEquivalentEffect (line 812) | int? getEquivalentEffect(int version)
class Stagemanv2 (line 818) | class Stagemanv2 extends PlugAirAmplifier {
method getEquivalentEffect (line 877) | int? getEquivalentEffect(int version)
FILE: lib/bluetooth/devices/effects/plug_air/Cabinet.dart
class CabinetMP2 (line 14) | abstract class CabinetMP2 extends Cabinet {
class V1960 (line 60) | class V1960 extends CabinetMP2 {
class A212 (line 72) | class A212 extends CabinetMP2 {
class BS410 (line 80) | class BS410 extends CabinetMP2 {
class DR112 (line 88) | class DR112 extends CabinetMP2 {
class GB412 (line 96) | class GB412 extends CabinetMP2 {
class JZ120IR (line 104) | class JZ120IR extends CabinetMP2 {
class TR212 (line 112) | class TR212 extends CabinetMP2 {
class V412 (line 120) | class V412 extends CabinetMP2 {
class AGLDB810 (line 128) | class AGLDB810 extends CabinetMP2 {
class AMPSV810 (line 141) | class AMPSV810 extends CabinetMP2 {
class MKB410 (line 149) | class MKB410 extends CabinetMP2 {
class TRC410 (line 157) | class TRC410 extends CabinetMP2 {
class GHBird (line 165) | class GHBird extends CabinetMP2 {
class GJ15 (line 178) | class GJ15 extends CabinetMP2 {
class MD45 (line 186) | class MD45 extends CabinetMP2 {
class GIBJ200 (line 194) | class GIBJ200 extends CabinetMP2 {
class GIBJ45 (line 202) | class GIBJ45 extends CabinetMP2 {
class TL314 (line 210) | class TL314 extends CabinetMP2 {
class MHD28 (line 218) | class MHD28 extends CabinetMP2 {
FILE: lib/bluetooth/devices/effects/plug_air/Delay.dart
class Delay (line 10) | abstract class Delay extends Processor {
class AnalogDelay (line 36) | class AnalogDelay extends Delay {
class TapeEcho (line 72) | class TapeEcho extends Delay {
method getEquivalentEffect (line 106) | int? getEquivalentEffect(int version)
class DigitalDelay (line 112) | class DigitalDelay extends Delay {
method getEquivalentEffect (line 146) | int? getEquivalentEffect(int version)
class PingPong (line 153) | class PingPong extends Delay {
class DigitalDelayv2 (line 188) | class DigitalDelayv2 extends Delay {
method getEquivalentEffect (line 222) | int? getEquivalentEffect(int version)
class ModDelay (line 230) | class ModDelay extends Delay {
method getEquivalentEffect (line 265) | int? getEquivalentEffect(int version)
FILE: lib/bluetooth/devices/effects/plug_air/EFX.dart
class EFX (line 12) | abstract class EFX extends Processor {
class TouchWah (line 43) | class TouchWah extends EFX {
class UniVibe (line 77) | class UniVibe extends EFX {
class TremoloEFX (line 111) | class TremoloEFX extends EFX {
class PhaserEFX (line 138) | class PhaserEFX extends EFX {
class Boost (line 173) | class Boost extends EFX {
method getEquivalentEffect (line 200) | int? getEquivalentEffect(int version)
class TSDrive (line 206) | class TSDrive extends EFX {
class BassTS (line 241) | class BassTS extends EFX {
method getEquivalentEffect (line 276) | int? getEquivalentEffect(int version)
class ThreeBandEQ (line 282) | class ThreeBandEQ extends EFX {
class Muff (line 317) | class Muff extends EFX {
class Crunch (line 352) | class Crunch extends EFX {
class RedDist (line 387) | class RedDist extends EFX {
class MorningDrive (line 422) | class MorningDrive extends EFX {
class DistOne (line 457) | class DistOne extends EFX {
FILE: lib/bluetooth/devices/effects/plug_air/EFXv2.dart
class PH100EFX (line 8) | class PH100EFX extends EFX {
class STSinger (line 35) | class STSinger extends EFX {
method getEquivalentEffect (line 70) | int? getEquivalentEffect(int version)
class Katana (line 76) | class Katana extends EFX {
method getEquivalentEffect (line 103) | int? getEquivalentEffect(int version)
class RedDirt (line 109) | class RedDirt extends EFX {
class RoseComp (line 144) | class RoseComp extends EFX {
method getEquivalentEffect (line 171) | int? getEquivalentEffect(int version)
FILE: lib/bluetooth/devices/effects/plug_air/Modulation.dart
class Modulation (line 9) | abstract class Modulation extends Processor {
class Phaser (line 36) | class Phaser extends Modulation {
class Chorus (line 71) | class Chorus extends Modulation {
class STChorus (line 106) | class STChorus extends Modulation {
class Flanger (line 141) | class Flanger extends Modulation {
class Vibe (line 176) | class Vibe extends Modulation {
class Tremolo (line 210) | class Tremolo extends Modulation {
class PH100 (line 237) | class PH100 extends Modulation {
class CE1 (line 264) | class CE1 extends Modulation {
class STChorusv2 (line 299) | class STChorusv2 extends Modulation {
class SCF (line 334) | class SCF extends Modulation {
FILE: lib/bluetooth/devices/effects/plug_air/Reverb.dart
class Reverb (line 10) | abstract class Reverb extends Processor {
class RoomReverb (line 36) | class RoomReverb extends Reverb {
class HallReverb (line 63) | class HallReverb extends Reverb {
class PlateReverb (line 90) | class PlateReverb extends Reverb {
class SpringReverb (line 125) | class SpringReverb extends Reverb {
class ShimmerReverb (line 152) | class ShimmerReverb extends Reverb {
method getEquivalentEffect (line 178) | int? getEquivalentEffect(int version)
class RoomReverbv2 (line 185) | class RoomReverbv2 extends Reverb {
class HallReverbv2 (line 220) | class HallReverbv2 extends Reverb {
class PlateReverbv2 (line 255) | class PlateReverbv2 extends Reverb {
FILE: lib/bluetooth/devices/effects/plug_pro/Amps.dart
class PlugProAmplifier (line 11) | abstract class PlugProAmplifier extends Amplifier {
class JazzClean (line 44) | class JazzClean extends PlugProAmplifier {
class DeluxeRvb (line 112) | class DeluxeRvb extends PlugProAmplifier {
class BassMate (line 167) | class BassMate extends PlugProAmplifier {
class Tweedy (line 235) | class Tweedy extends PlugProAmplifier {
class HiWire (line 279) | class HiWire extends PlugProAmplifier {
class CaliCrunch (line 342) | class CaliCrunch extends PlugProAmplifier {
class ClassA15 (line 405) | class ClassA15 extends PlugProAmplifier {
class ClassA30 (line 460) | class ClassA30 extends PlugProAmplifier {
class Plexi100 (line 515) | class Plexi100 extends PlugProAmplifier {
class Plexi45 (line 578) | class Plexi45 extends PlugProAmplifier {
class Brit800 (line 641) | class Brit800 extends PlugProAmplifier {
class Pl1987x50 (line 704) | class Pl1987x50 extends PlugProAmplifier {
class Slo100 (line 767) | class Slo100 extends PlugProAmplifier {
class FiremanHBE (line 830) | class FiremanHBE extends PlugProAmplifier {
class DualRect (line 893) | class DualRect extends PlugProAmplifier {
class DIEVH4 (line 956) | class DIEVH4 extends PlugProAmplifier {
class MrZ38 (line 1019) | class MrZ38 extends PlugProAmplifier {
class SuperRvb (line 1082) | class SuperRvb extends PlugProAmplifier {
class AGL (line 1145) | class AGL extends PlugProAmplifier {
class MLD (line 1213) | class MLD extends PlugProAmplifier {
class OptimaAir (line 1276) | class OptimaAir extends PlugProAmplifier {
class Stageman (line 1336) | class Stageman extends PlugProAmplifier {
class TwinRvb (line 1391) | class TwinRvb extends PlugProAmplifier {
class VibroKing (line 1454) | class VibroKing extends PlugProAmplifier {
class Budda (line 1517) | class Budda extends PlugProAmplifier {
class BritBlues (line 1580) | class BritBlues extends PlugProAmplifier {
class MatchD30 (line 1643) | class MatchD30 extends PlugProAmplifier {
class Brit2000 (line 1698) | class Brit2000 extends PlugProAmplifier {
class UberHiGain (line 1761) | class UberHiGain extends PlugProAmplifier {
FILE: lib/bluetooth/devices/effects/plug_pro/Cabinet.dart
class CabinetPro (line 11) | abstract class CabinetPro extends Cabinet {
class JZ120Pro (line 72) | class JZ120Pro extends CabinetPro {
class DR112Pro (line 84) | class DR112Pro extends CabinetPro {
class TR212Pro (line 92) | class TR212Pro extends CabinetPro {
class HIWIRE412 (line 100) | class HIWIRE412 extends CabinetPro {
class CALI112 (line 108) | class CALI112 extends CabinetPro {
class A112 (line 116) | class A112 extends CabinetPro {
class GB412Pro (line 124) | class GB412Pro extends CabinetPro {
class M1960AX (line 132) | class M1960AX extends CabinetPro {
class M1960AV (line 140) | class M1960AV extends CabinetPro {
class M1960TV (line 148) | class M1960TV extends CabinetPro {
class SLO412 (line 156) | class SLO412 extends CabinetPro {
class FIREMAN412 (line 164) | class FIREMAN412 extends CabinetPro {
class RECT412 (line 172) | class RECT412 extends CabinetPro {
class DIE412 (line 180) | class DIE412 extends CabinetPro {
class MATCH212 (line 188) | class MATCH212 extends CabinetPro {
class UBER412 (line 196) | class UBER412 extends CabinetPro {
class BS410 (line 204) | class BS410 extends CabinetPro {
class A212Pro (line 212) | class A212Pro extends CabinetPro {
class M1960AHW (line 220) | class M1960AHW extends CabinetPro {
class M1936 (line 228) | class M1936 extends CabinetPro {
class BUDDA112 (line 236) | class BUDDA112 extends CabinetPro {
class Z212 (line 244) | class Z212 extends CabinetPro {
class SUPERVERB410 (line 252) | class SUPERVERB410 extends CabinetPro {
class VIBROKING310 (line 260) | class VIBROKING310 extends CabinetPro {
class AGLDB810 (line 269) | class AGLDB810 extends CabinetPro {
class AMPSV212 (line 281) | class AMPSV212 extends CabinetPro {
class AMPSV410 (line 289) | class AMPSV410 extends CabinetPro {
class AMPSV810 (line 297) | class AMPSV810 extends CabinetPro {
class BASSGUY410 (line 305) | class BASSGUY410 extends CabinetPro {
class EDEN410 (line 313) | class EDEN410 extends CabinetPro {
class MKB410 (line 321) | class MKB410 extends CabinetPro {
class GHBIRDPro (line 329) | class GHBIRDPro extends CabinetPro {
class GJ15Pro (line 341) | class GJ15Pro extends CabinetPro {
class MD45Pro (line 349) | class MD45Pro extends CabinetPro {
class UserCab (line 357) | class UserCab extends CabinetPro {
method setName (line 366) | void setName(String name)
method setNuxIndex (line 370) | void setNuxIndex(int index)
method setActive (line 374) | void setActive(bool active)
FILE: lib/bluetooth/devices/effects/plug_pro/Compressor.dart
class Compressor (line 9) | abstract class Compressor extends Processor {
class RoseCompPro (line 39) | class RoseCompPro extends Compressor {
class KComp (line 67) | class KComp extends Compressor {
class StudioComp (line 103) | class StudioComp extends Compressor {
FILE: lib/bluetooth/devices/effects/plug_pro/Delay.dart
class DelayPro (line 9) | abstract class DelayPro extends Processor {
class AnalogDelay (line 39) | class AnalogDelay extends DelayPro {
class AnalogDelayV2 (line 75) | class AnalogDelayV2 extends DelayPro {
class DigitalDelay (line 111) | class DigitalDelay extends DelayPro {
class ModDelay (line 146) | class ModDelay extends DelayPro {
class TapeEcho (line 189) | class TapeEcho extends DelayPro {
class PanDelay (line 224) | class PanDelay extends DelayPro {
class PhiDelayPro (line 259) | class PhiDelayPro extends DelayPro {
FILE: lib/bluetooth/devices/effects/plug_pro/EFX.dart
class EFXPro (line 9) | abstract class EFXPro extends Processor {
class DistortionPlus (line 40) | class DistortionPlus extends EFXPro {
class RCBoost (line 67) | class RCBoost extends EFXPro {
class ACBoost (line 110) | class ACBoost extends EFXPro {
class DistOne (line 153) | class DistOne extends EFXPro {
class TSDrive (line 188) | class TSDrive extends EFXPro {
class BluesDrive (line 222) | class BluesDrive extends EFXPro {
class MorningDrive (line 257) | class MorningDrive extends EFXPro {
class EatDist (line 292) | class EatDist extends EFXPro {
class RedDirt (line 327) | class RedDirt extends EFXPro {
class Crunch (line 362) | class Crunch extends EFXPro {
class MuffFuzz (line 397) | class MuffFuzz extends EFXPro {
class Katana (line 432) | class Katana extends EFXPro {
class STSinger (line 459) | class STSinger extends EFXPro {
class TouchWahPro (line 494) | class TouchWahPro extends EFXPro {
FILE: lib/bluetooth/devices/effects/plug_pro/EQ.dart
class EQ (line 9) | abstract class EQ extends Processor {
class EQSixBand (line 40) | class EQSixBand extends EQ {
class EQTenBand (line 94) | class EQTenBand extends EQ {
class EQTenBandBT (line 183) | class EQTenBandBT extends EQ {
method getNuxCommand (line 266) | List<int> getNuxCommand()
method setupFromNuxPayload (line 276) | void setupFromNuxPayload(List<int> nuxData)
class EQTenBandSpeaker (line 289) | class EQTenBandSpeaker extends EQ {
method getNuxCommand (line 372) | List<int> getNuxCommand()
method setupFromNuxPayload (line 382) | void setupFromNuxPayload(List<int> nuxData)
FILE: lib/bluetooth/devices/effects/plug_pro/EmptyEffects.dart
class WahDummyPro (line 6) | class WahDummyPro extends Processor {
FILE: lib/bluetooth/devices/effects/plug_pro/Modulation.dart
class Modulation (line 10) | abstract class Modulation extends Processor {
class ModCE1 (line 41) | class ModCE1 extends Modulation {
class ModCE2 (line 76) | class ModCE2 extends Modulation {
class STChorusPro (line 103) | class STChorusPro extends Modulation {
class Vibrato (line 138) | class Vibrato extends Modulation {
class Detune (line 165) | class Detune extends Modulation {
class FlangerPro (line 200) | class FlangerPro extends Modulation {
class Phase90 (line 242) | class Phase90 extends Modulation {
class Phase100 (line 261) | class Phase100 extends Modulation {
class SCFPro (line 288) | class SCFPro extends Modulation {
class VibePro (line 330) | class VibePro extends Modulation {
class TremoloPro (line 372) | class TremoloPro extends Modulation {
class Rotary (line 399) | class Rotary extends Modulation {
class SCH1Pro (line 426) | class SCH1Pro extends Modulation {
class MonoOctave (line 461) | class MonoOctave extends Modulation {
FILE: lib/bluetooth/devices/effects/plug_pro/Reverb.dart
class Reverb (line 9) | abstract class Reverb extends Processor {
class RoomReverb (line 39) | class RoomReverb extends Reverb {
class HallReverb (line 74) | class HallReverb extends Reverb {
class PlateReverb (line 116) | class PlateReverb extends Reverb {
class SpringReverb (line 143) | class SpringReverb extends Reverb {
class ShimmerReverb (line 170) | class ShimmerReverb extends Reverb {
class DampReverbPro (line 205) | class DampReverbPro extends Reverb {
FILE: lib/bluetooth/devices/features/drumsTone.dart
type DrumsToneControl (line 1) | enum DrumsToneControl { bass, middle, treble }
class DrumsTone (line 3) | abstract class DrumsTone {
method setDrumsTone (line 8) | void setDrumsTone(double value, DrumsToneControl control, bool send)
FILE: lib/bluetooth/devices/features/looper.dart
class Looper (line 1) | abstract class Looper {
method looperRecordPlay (line 7) | void looperRecordPlay()
method looperStop (line 8) | void looperStop()
method looperClear (line 9) | void looperClear()
method looperUndoRedo (line 10) | void looperUndoRedo()
method looperLevel (line 11) | void looperLevel(int vol)
method looperNrAr (line 12) | void looperNrAr(bool auto)
method requestLooperSettings (line 13) | void requestLooperSettings()
method getLooperDataStream (line 14) | Stream<LooperData> getLooperDataStream()
class LooperData (line 17) | class LooperData {
FILE: lib/bluetooth/devices/features/proUsbSettings.dart
class ProUsbSettings (line 1) | abstract class ProUsbSettings {
method setUsbMode (line 2) | void setUsbMode(int mode)
method setUsbRecordingVol (line 3) | void setUsbRecordingVol(int vol)
method setUsbPlaybackVol (line 4) | void setUsbPlaybackVol(int vol)
method setUsbDryWetVol (line 5) | void setUsbDryWetVol(int vol)
FILE: lib/bluetooth/devices/features/tuner.dart
type TunerMode (line 3) | enum TunerMode {
class Tuner (line 20) | abstract class Tuner {
method tunerEnable (line 34) | void tunerEnable(bool enable)
method tunerRequestSettings (line 35) | void tunerRequestSettings()
method tunerSetMode (line 36) | void tunerSetMode(TunerMode mode)
method tunerSetReferencePitch (line 37) | void tunerSetReferencePitch(int refPitch)
method tunerMute (line 38) | void tunerMute(bool enable)
method getTunerDataStream (line 39) | Stream<TunerData> getTunerDataStream()
method notifyTunerListeners (line 40) | void notifyTunerListeners()
class TunerData (line 43) | class TunerData {
method clear (line 53) | void clear()
FILE: lib/bluetooth/devices/presets/Mighty8BTPreset.dart
class M8BTPreset (line 16) | class M8BTPreset extends Preset {
method slotSwitchable (line 60) | bool slotSwitchable(int index)
method slotEnabled (line 67) | bool slotEnabled(int index)
method setSlotEnabled (line 84) | void setSlotEnabled(int index, bool value, bool notifyBT)
method getEffectsForSlot (line 107) | List<Processor> getEffectsForSlot(int slot)
method getSelectedEffectForSlot (line 125) | int getSelectedEffectForSlot(int slot)
method setSelectedEffectForSlot (line 144) | void setSelectedEffectForSlot(int slot, int index, bool notifyBT)
method effectColor (line 160) | Color effectColor(int index)
FILE: lib/bluetooth/devices/presets/MightyLitePreset.dart
class MLitePreset (line 16) | class MLitePreset extends Preset {
method slotSwitchable (line 63) | bool slotSwitchable(int index)
method slotEnabled (line 70) | bool slotEnabled(int index)
method setSlotEnabled (line 87) | void setSlotEnabled(int index, bool value, bool notifyBT)
method getEffectsForSlot (line 110) | List<Processor> getEffectsForSlot(int slot)
method getSelectedEffectForSlot (line 126) | int getSelectedEffectForSlot(int slot)
method setSelectedEffectForSlot (line 143) | void setSelectedEffectForSlot(int slot, int index, bool notifyBT)
method getEffectArrayIndexFromNuxIndex (line 156) | int getEffectArrayIndexFromNuxIndex(NuxFXID fxid, int nuxIndex)
method effectColor (line 166) | Color effectColor(int index)
FILE: lib/bluetooth/devices/presets/MightyMk2Preset.dart
class MightyMk2Preset (line 29) | class MightyMk2Preset extends Preset {
method slotSwitchable (line 223) | bool slotSwitchable(int index)
method slotEnabled (line 229) | bool slotEnabled(int index)
method setSlotEnabled (line 252) | void setSlotEnabled(int index, bool value, bool notifyBT)
method getEffectsForSlot (line 284) | List<Processor> getEffectsForSlot(int slot)
method getSelectedEffectForSlot (line 306) | int getSelectedEffectForSlot(int slot)
method setSelectedEffectForSlot (line 329) | void setSelectedEffectForSlot(int slot, int index, bool notifyBT)
method getEffectArrayIndexFromNuxIndex (line 354) | int getEffectArrayIndexFromNuxIndex(NuxFXID fxid, int nuxIndex)
method effectColor (line 366) | Color effectColor(int index)
method setVolume (line 376) | void setVolume(double vol, bool btTransmit)
method sendVolume (line 384) | void sendVolume()
method setupPresetFromNuxDataArray (line 390) | void setupPresetFromNuxDataArray(List<int> nuxData)
FILE: lib/bluetooth/devices/presets/MightyXXBTPreset.dart
class MXXBTPreset (line 17) | class MXXBTPreset extends Preset {
method slotSwitchable (line 69) | bool slotSwitchable(int index)
method slotEnabled (line 76) | bool slotEnabled(int index)
method setSlotEnabled (line 93) | void setSlotEnabled(int index, bool value, bool notifyBT)
method getEffectsForSlot (line 116) | List<Processor> getEffectsForSlot(int slot)
method getSelectedEffectForSlot (line 134) | int getSelectedEffectForSlot(int slot)
method setSelectedEffectForSlot (line 153) | void setSelectedEffectForSlot(int slot, int index, bool notifyBT)
method effectColor (line 169) | Color effectColor(int index)
FILE: lib/bluetooth/devices/presets/PlugAirPreset.dart
class PlugAirPreset (line 22) | class PlugAirPreset extends Preset {
method slotSwitchable (line 202) | bool slotSwitchable(int index)
method slotEnabled (line 209) | bool slotEnabled(int index)
method setSlotEnabled (line 228) | void setSlotEnabled(int index, bool value, bool notifyBT)
method getEffectsForSlot (line 254) | List<Processor> getEffectsForSlot(int slot)
method getSelectedEffectForSlot (line 276) | int getSelectedEffectForSlot(int slot)
method setSelectedEffectForSlot (line 299) | void setSelectedEffectForSlot(int slot, int index, bool notifyBT)
method effectColor (line 324) | Color effectColor(int index)
method getAmpNameByNuxIndex (line 344) | String getAmpNameByNuxIndex(int index, int version)
FILE: lib/bluetooth/devices/presets/PlugProPreset.dart
class PlugProPreset (line 27) | class PlugProPreset extends Preset {
method slotSwitchable (line 228) | bool slotSwitchable(int index)
method slotEnabled (line 234) | bool slotEnabled(int index)
method _FXIDEnabled (line 239) | bool _FXIDEnabled(NuxFXID fxid)
method setSlotEnabled (line 268) | void setSlotEnabled(int index, bool value, bool notifyBT)
method _setFXIDEnabled (line 274) | void _setFXIDEnabled(NuxFXID fxid, bool value)
method getFXIDFromSlot (line 312) | NuxFXID getFXIDFromSlot(int slot)
method getSlotFromFXID (line 317) | int? getSlotFromFXID(NuxFXID fxid)
method setFXIDAtSlot (line 325) | void setFXIDAtSlot(int slot, NuxFXID fxid)
method swapProcessorSlots (line 330) | void swapProcessorSlots(int from, int to, notifyBT)
method getEffectsForSlot (line 351) | List<Processor> getEffectsForSlot(int slot)
method _getEffectsForFXID (line 356) | List<Processor> _getEffectsForFXID(NuxFXID fxid)
method getSelectedEffectForSlot (line 384) | int getSelectedEffectForSlot(int slot)
method _getSelectedEffectForFXID (line 389) | int _getSelectedEffectForFXID(NuxFXID fxid)
method setSelectedEffectForSlot (line 414) | void setSelectedEffectForSlot(int slot, int index, bool notifyBT)
method _setSelectedEffectForFXID (line 421) | void _setSelectedEffectForFXID(NuxFXID fxid, int index)
method getEffectArrayIndexFromNuxIndex (line 451) | int getEffectArrayIndexFromNuxIndex(NuxFXID fxid, int nuxIndex)
method effectColor (line 463) | Color effectColor(int index)
method setupPresetFromNuxDataArray (line 474) | void setupPresetFromNuxDataArray(List<int> nuxData)
method createNuxDataFromPreset (line 527) | List<int> createNuxDataFromPreset()
method setVolume (line 566) | void setVolume(double vol, bool btTransmit)
method sendVolume (line 574) | void sendVolume()
method setVolumeRaw (line 579) | void setVolumeRaw(int vol)
FILE: lib/bluetooth/devices/presets/Preset.dart
class Preset (line 16) | abstract class Preset {
method slotSwitchable (line 37) | bool slotSwitchable(int index)
method slotEnabled (line 40) | bool slotEnabled(int index)
method getFXIDFromSlot (line 43) | NuxFXID getFXIDFromSlot(int slot)
method getSlotFromFXID (line 47) | int? getSlotFromFXID(NuxFXID fxid)
method setupPresetFromNuxDataArray (line 51) | void setupPresetFromNuxDataArray(List<int> nuxData)
method setFXIDAtSlot (line 102) | void setFXIDAtSlot(int slot, NuxFXID fxid)
method swapProcessorSlots (line 103) | void swapProcessorSlots(int from, int to, bool notifyBT)
method setSlotEnabled (line 108) | void setSlotEnabled(int index, bool value, bool notifyBT)
method getEffectsForSlot (line 113) | List<Processor> getEffectsForSlot(int slot)
method getSelectedEffectForSlot (line 116) | int getSelectedEffectForSlot(int slot)
method setSelectedEffectForSlot (line 119) | void setSelectedEffectForSlot(int slot, int index, bool notifyBT)
method setFirmwareVersion (line 123) | void setFirmwareVersion(int version)
method setParameterValue (line 126) | void setParameterValue(Parameter param, double value, {bool notify = t...
method getEffectArrayIndexFromNuxIndex (line 134) | int getEffectArrayIndexFromNuxIndex(NuxFXID fxid, int nuxIndex)
method effectColor (line 138) | Color effectColor(int index)
method resetNuxData (line 140) | void resetNuxData()
method addNuxPayloadPiece (line 145) | void addNuxPayloadPiece(List<int> data, int part, int total)
method payloadPiecesReady (line 154) | bool payloadPiecesReady()
method createNuxDataFromPreset (line 162) | List<int> createNuxDataFromPreset()
method setupPresetFromNuxData (line 177) | void setupPresetFromNuxData()
method setupPresetFromQRData (line 185) | PresetQRError setupPresetFromQRData(String qrData)
method getAmpNameByNuxIndex (line 200) | String getAmpNameByNuxIndex(int index, int version)
method setVolume (line 210) | void setVolume(double vol, bool btTransmit)
method sendVolume (line 212) | void sendVolume()
FILE: lib/bluetooth/devices/presets/preset_constants.dart
class PresetConstants (line 5) | class PresetConstants {
FILE: lib/bluetooth/devices/value_formatters/DecibelFormatter.dart
class DecibelFormatterMP2 (line 3) | class DecibelFormatterMP2 extends ValueFormatter {
method valueToMidi7Bit (line 14) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 19) | double midi7BitToValue(int midi7bit)
method toLabel (line 24) | String toLabel(double value)
class DecibelFormatterMPPro (line 29) | class DecibelFormatterMPPro extends ValueFormatter {
method valueToMidi7Bit (line 40) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 45) | double midi7BitToValue(int midi7bit)
method toLabel (line 50) | String toLabel(double value)
class DecibelFormatterEQ (line 55) | class DecibelFormatterEQ extends ValueFormatter {
method valueToMidi7Bit (line 66) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 71) | double midi7BitToValue(int midi7bit)
method toLabel (line 76) | String toLabel(double value)
FILE: lib/bluetooth/devices/value_formatters/FrequencyFormatter.dart
function log10 (line 4) | double log10(num x)
class LowFrequencyFormatter (line 6) | class LowFrequencyFormatter extends ValueFormatter {
method valueToMidi7Bit (line 17) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 22) | double midi7BitToValue(int midi7bit)
method toLabel (line 27) | String toLabel(double value)
class HighFrequencyFormatter (line 32) | class HighFrequencyFormatter extends ValueFormatter {
method _valueToFreq (line 42) | double _valueToFreq(double value)
method _freqToValue (line 47) | double _freqToValue(double freq)
method valueToMidi7Bit (line 55) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 60) | double midi7BitToValue(int midi7bit)
method toLabel (line 65) | String toLabel(double value)
method toHumanInput (line 70) | double toHumanInput(double value)
method fromHumanInput (line 75) | double fromHumanInput(double value)
FILE: lib/bluetooth/devices/value_formatters/PercentageFormatter.dart
class PercentageFormatter (line 3) | class PercentageFormatter extends ValueFormatter {
method valueToMidi7Bit (line 8) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 13) | double midi7BitToValue(int midi7bit)
method toLabel (line 18) | String toLabel(double value)
class PercentageFormatterMPPro (line 23) | class PercentageFormatterMPPro extends ValueFormatter {
method valueToMidi7Bit (line 28) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 33) | double midi7BitToValue(int midi7bit)
method toLabel (line 38) | String toLabel(double value)
FILE: lib/bluetooth/devices/value_formatters/SwitchFormatters.dart
class SwitchFormatter (line 3) | abstract class SwitchFormatter extends ValueFormatter {
method midi7BitToValue (line 13) | double midi7BitToValue(int midi7bit)
method toLabel (line 18) | String toLabel(double value)
method valueToMidi7Bit (line 24) | int valueToMidi7Bit(double value)
class BrightModeFormatter (line 29) | class BrightModeFormatter extends SwitchFormatter {
class BrightModeFormatterMPPro (line 40) | class BrightModeFormatterMPPro extends SwitchFormatter {
class BoostModeFormatter (line 51) | class BoostModeFormatter extends SwitchFormatter {
class BoostModeFormatterMPPro (line 62) | class BoostModeFormatterMPPro extends SwitchFormatter {
class VibeModeFormatter (line 73) | class VibeModeFormatter extends SwitchFormatter {
class VibeModeFormatterPro (line 84) | class VibeModeFormatterPro extends SwitchFormatter {
class ContourModeFormatter (line 95) | class ContourModeFormatter extends SwitchFormatter {
class SCFModeFormatter (line 106) | class SCFModeFormatter extends SwitchFormatter {
class TouchWahModeFormatter (line 117) | class TouchWahModeFormatter extends SwitchFormatter {
class TouchWahModeFormatterLiteMk2 (line 128) | class TouchWahModeFormatterLiteMk2 extends SwitchFormatter {
class TouchWahDirectionFormatterPro (line 139) | class TouchWahDirectionFormatterPro extends SwitchFormatter {
FILE: lib/bluetooth/devices/value_formatters/TempoFormatter.dart
class TempoFormatter (line 5) | class TempoFormatter extends ValueFormatter {
method percentageToTime (line 19) | double percentageToTime(double p)
method percentageToBPM (line 28) | double percentageToBPM(double p)
method bpmToPercentage (line 32) | double bpmToPercentage(double b)
method timeToPercentage (line 36) | double timeToPercentage(t)
method valueToMidi7Bit (line 60) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 65) | double midi7BitToValue(int midi7bit)
method toLabel (line 70) | String toLabel(double value)
method toHumanInput (line 80) | double toHumanInput(double value)
method fromHumanInput (line 89) | double fromHumanInput(double value)
class TempoFormatterPro (line 98) | class TempoFormatterPro extends TempoFormatter {
method valueToMidi7Bit (line 111) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 116) | double midi7BitToValue(int midi7bit)
class TempoFormatterProMod (line 121) | class TempoFormatterProMod extends TempoFormatterPro {
class TempoFormatterProAnalog (line 134) | class TempoFormatterProAnalog extends TempoFormatterPro {
class TempoFormatterProTapeEcho (line 147) | class TempoFormatterProTapeEcho extends TempoFormatterPro {
FILE: lib/bluetooth/devices/value_formatters/ValueFormatter.dart
type InputType (line 8) | enum InputType { SliderInput, SwitchInput }
class ValueFormatters (line 10) | class ValueFormatters {
class ValueFormatter (line 39) | abstract class ValueFormatter {
method valueToMidi7Bit (line 44) | int valueToMidi7Bit(double value)
method midi7BitToValue (line 45) | double midi7BitToValue(int midi7bit)
method toLabel (line 46) | String toLabel(double value)
method toHumanInput (line 47) | double toHumanInput(double value)
method fromHumanInput (line 51) | double fromHumanInput(double value)
FILE: lib/main.dart
function main (line 27) | void main()
function mainRunApp (line 44) | mainRunApp()
class App (line 51) | class App extends StatefulWidget {
method createState (line 55) | State createState()
class _AppState (line 58) | class _AppState extends State<App> {
method build (line 64) | Widget build(BuildContext context)
FILE: lib/midi/BleMidiManager.dart
class BleMidiManager (line 11) | class BleMidiManager extends ChangeNotifier {
FILE: lib/midi/ControllerConstants.dart
class MidiConstants (line 5) | class MidiConstants {
type HotkeyControl (line 15) | enum HotkeyControl {
type HotkeyCategory (line 169) | enum HotkeyCategory {
FILE: lib/midi/MidiControllerManager.dart
type MidiDataOverride (line 18) | typedef MidiDataOverride = void Function(
class MidiControllerManager (line 21) | class MidiControllerManager extends ChangeNotifier {
method _statusListener (line 68) | void _statusListener(statusValue)
method loadConfig (line 242) | Future<void> loadConfig()
method _loadControllerHotkeys (line 277) | bool _loadControllerHotkeys(MidiController ctrl)
method _onHotkeyReceived (line 289) | void _onHotkeyReceived(HotkeyControl hotkey)
FILE: lib/midi/UsbMidiManager.dart
class UsbMidiManager (line 11) | class UsbMidiManager {
method getDevices (line 39) | Future<List<MidiController>> getDevices()
FILE: lib/midi/controllers/BleMidiController.dart
class BleMidiController (line 9) | class BleMidiController extends MidiController {
method connect (line 31) | Future<bool> connect()
FILE: lib/midi/controllers/ControllerHotkey.dart
class ControllerHotkey (line 16) | class ControllerHotkey {
method midiToPercentage (line 250) | double midiToPercentage(int? midiVal)
method _changeToAdjacentPreset (line 256) | void _changeToAdjacentPreset(
method _modifyTempo (line 273) | void _modifyTempo(NuxDevice device, double amount)
method _tapTempo (line 279) | void _tapTempo(NuxDevice device)
method _delayTapTempo (line 288) | void _delayTapTempo(NuxDevice device)
method _hotkeyParameterSet (line 309) | void _hotkeyParameterSet(int? value, NuxDevice device)
method _mapValueToFormatter (line 327) | double _mapValueToFormatter(double value, ValueFormatter formatter)
method _getEffectCached (line 332) | Preset _getEffectCached(NuxDevice device)
method _findSlotByFunction (line 362) | int? _findSlotByFunction(HotkeyControl func)
method _findParameterByControllerHandleId (line 394) | int? _findParameterByControllerHandleId(
method toJson (line 402) | Map<String, dynamic> toJson()
method getHKFromString (line 426) | HotkeyControl getHKFromString(String controlAsString)
FILE: lib/midi/controllers/HidController.dart
class HidController (line 3) | class HidController extends MidiController {
method connect (line 7) | Future<bool> connect()
FILE: lib/midi/controllers/MidiController.dart
type ControllerType (line 6) | enum ControllerType { Hid, MidiUsb, MidiBle }
type ControllerStatus (line 8) | enum ControllerStatus { Connected, Disconnected }
class MidiController (line 10) | abstract class MidiController {
method getHotkeyByCode (line 60) | ControllerHotkey? getHotkeyByCode(int code, bool ignoreLowByte)
method getHotkeyByFunction (line 76) | ControllerHotkey? getHotkeyByFunction(
method connect (line 117) | Future<bool> connect()
method toJson (line 119) | Map<String, dynamic> toJson()
FILE: lib/midi/controllers/UsbMidiController.dart
class UsbMidiController (line 4) | class UsbMidiController extends MidiController {
method connect (line 33) | Future<bool> connect()
method checkForDisconnection (line 53) | void checkForDisconnection()
method onDataReceivedLoopback (line 69) | void onDataReceivedLoopback(List<int> data)
FILE: lib/modules/cloud/cloudManager.dart
class CloudManager (line 10) | class CloudManager extends ChangeNotifier {
method initialize (line 28) | void initialize()
method signIn (line 48) | Future<RecordAuth> signIn({required String email, required String pass...
method refreshToken (line 53) | Future<RecordAuth> refreshToken()
method register (line 57) | Future register({required String email, required String password})
method requestValidation (line 67) | Future requestValidation(String email)
method signOut (line 72) | void signOut()
method createPreset (line 83) | Future<RecordModel> createPreset(Map preset, String categoryId)
method updatePreset (line 95) | Future<RecordModel> updatePreset(Map preset)
method syncPresets (line 108) | void syncPresets()
FILE: lib/modules/cloud/cloudStorageListener.dart
class CloudStorageListener (line 8) | class CloudStorageListener implements PresetStorageListener {
method onPresetCreated (line 18) | void onPresetCreated(Map<String, dynamic> preset)
method onPresetUpdated (line 26) | void onPresetUpdated(Map<String, dynamic> preset)
method onPresetDeleted (line 34) | void onPresetDeleted(String uuid)
method _creationQueueHandler (line 40) | void _creationQueueHandler()
method _updateQueueHandler (line 61) | void _updateQueueHandler()
method _deletionQueueHandler (line 77) | void _deletionQueueHandler()
method onCategoryReordered (line 99) | void onCategoryReordered(int from, int to)
FILE: lib/modules/cloud/customAuthStore.dart
class CustomAuthStore (line 7) | class CustomAuthStore extends AuthStore {
method save (line 24) | void save(
method clear (line 37) | void clear()
FILE: lib/modules/cloud/presetEncoder.dart
class PresetEncoder (line 1) | class PresetEncoder {
method encode (line 8) | List<int> encode(List<int> data)
method decode (line 30) | List<int> decode(List<int> data)
FILE: lib/modules/tempo_trainer.dart
type TempoChangeMode (line 9) | enum TempoChangeMode { beat, time }
class TempoTrainer (line 11) | class TempoTrainer {
method _startTrainer (line 49) | void _startTrainer()
method _setupTimer (line 55) | void _setupTimer()
method getTimerCountdown (line 65) | double getTimerCountdown()
method _onTimerStep (line 70) | void _onTimerStep()
method _loadConfig (line 81) | void _loadConfig()
method saveConfig (line 92) | void saveConfig()
FILE: lib/platform/fileSaver.dart
function saveFileString (line 3) | Future<String> saveFileString(String mime, String name, String data)
function saveFile (line 20) | Future<String> saveFile(String mime, String name, List<int> data)
function openFileString (line 37) | Future<String> openFileString(String mime)
function openFile (line 52) | Future<List<int>> openFile(String mime)
FILE: lib/platform/platformUtils.dart
class PlatformUtils (line 6) | class PlatformUtils {
method getAppDataDirectory (line 19) | Future<io.Directory?> getAppDataDirectory()
FILE: lib/platform/presetStorageListener.dart
class PresetStorageListener (line 1) | abstract class PresetStorageListener {
method onPresetCreated (line 2) | void onPresetCreated(Map<String, dynamic> preset)
method onPresetUpdated (line 3) | void onPresetUpdated(Map<String, dynamic> preset)
method onPresetDeleted (line 4) | void onPresetDeleted(String uuid)
method onCategoryReordered (line 5) | void onCategoryReordered(int from, int to)
FILE: lib/platform/presetsStorage.dart
type PresetChangeDirection (line 14) | enum PresetChangeDirection { previous, next }
class PresetsStorage (line 16) | class PresetsStorage extends ChangeNotifier {
method init (line 45) | Future init()
method waitLoading (line 110) | Future waitLoading()
method getCategories (line 117) | List<String> getCategories()
method _findCategory (line 128) | Map<String, dynamic>? _findCategory(String category)
method presetExists (line 135) | bool presetExists(String name, String category)
method findPreset (line 138) | Map<String, dynamic>? findPreset(String name, String category)
method findPresetInCategory (line 144) | Map<String, dynamic>? findPresetInCategory(
method findPresetByUuid (line 154) | dynamic findPresetByUuid(String uuid)
method findAdjacentPreset (line 163) | dynamic findAdjacentPreset(
method findCategoryOfPreset (line 186) | Map<String, dynamic>? findCategoryOfPreset(Map<String, dynamic> preset)
method _findOrCreateCategory (line 195) | Map<String, dynamic> _findOrCreateCategory(String name)
method savePreset (line 206) | String savePreset(
method deletePreset (line 238) | Future deletePreset(Map<String, dynamic> preset)
method duplicatePreset (line 250) | Future duplicatePreset(String category, String name)
method renamePreset (line 276) | Future renamePreset(Map<String, dynamic> preset, String newName)
method reorderCategories (line 282) | void reorderCategories(int oldListIndex, int newListIndex)
method reorderPresets (line 289) | bool reorderPresets(
method changeChannel (line 314) | Future changeChannel(Map<String, dynamic> preset, int channel)
method changePresetCategory (line 319) | Future changePresetCategory(
method deleteCategory (line 335) | Future<List<String>> deleteCategory(String category)
method renameCategory (line 358) | Future renameCategory(String category, String newName)
method presetToJson (line 369) | String? presetToJson(String category, String name)
method presetsToJson (line 388) | String? presetsToJson([String? category])
method presetsFromJson (line 416) | Future<int> presetsFromJson(String jsonData)
method _presetFromJson (line 443) | Future<bool> _presetFromJson(
method _getAdjacentPreset (line 467) | dynamic _getAdjacentPreset(int catIndex, int pIndex,
method _findFreeName (line 505) | String? _findFreeName(String name, String category)
method _presetsEquivalent (line 533) | bool _presetsEquivalent(Map<String, dynamic> p1, Map<String, dynamic> p2)
method fixPresetCompatibility (line 551) | Map<String, dynamic> fixPresetCompatibility(Map<String, dynamic> prese...
method upgradeDataVersion (line 562) | void upgradeDataVersion(int version)
method _getPresetsInCategoryOldFormat (line 573) | List<dynamic> _getPresetsInCategoryOldFormat(
method _convertOldToNewFormat (line 582) | Map<String, dynamic> _convertOldToNewFormat(List<dynamic> oldFormat)
method _addUuid (line 612) | void _addUuid(Map<String, dynamic> preset)
method registerPresetStorageListener (line 626) | void registerPresetStorageListener(PresetStorageListener listener)
method _presetCreated (line 630) | void _presetCreated(Map<String, dynamic> preset)
method _presetUpdated (line 636) | void _presetUpdated(Map<String, dynamic> preset)
method _presetDeleted (line 642) | void _presetDeleted(String uuid)
method _categoryReordered (line 648) | void _categoryReordered(int from, int to)
FILE: lib/platform/simpleSharedPrefs.dart
class SettingsKeys (line 11) | class SettingsKeys {
class SharedPrefs (line 31) | class SharedPrefs {
method waitLoading (line 81) | Future waitLoading()
method setInt (line 95) | void setInt(String key, int value)
method getInt (line 100) | int getInt(String key, int _default)
method setValue (line 105) | void setValue(String key, dynamic value)
method remove (line 110) | void remove(String key)
method getValue (line 115) | dynamic getValue(String key, dynamic _default)
method getCustomCabinetName (line 120) | String? getCustomCabinetName(String productId, int cabIndex)
FILE: lib/utilities/DelayTapTimer.dart
class DelayTapTimer (line 1) | class DelayTapTimer {
method addClickTime (line 8) | addClickTime()
method calculate (line 23) | calculate()
method calculateBpm (line 35) | calculateBpm()
FILE: lib/utilities/MathEx.dart
class MathEx (line 1) | class MathEx {
method map (line 2) | double map(
FILE: lib/utilities/list_extenstions.dart
function containsPartial (line 2) | bool containsPartial(String partialString)
FILE: lib/utilities/string_extensions.dart
function containsIgnoreCase (line 2) | bool containsIgnoreCase(String secondString)
FILE: linux/flutter/generated_plugin_registrant.cc
function fl_register_plugins (line 11) | void fl_register_plugins(FlPluginRegistry* registry) {
FILE: linux/main.cc
function main (line 3) | int main(int argc, char** argv) {
FILE: linux/my_application.cc
type _MyApplication (line 10) | struct _MyApplication {
function my_application_activate (line 18) | static void my_application_activate(GApplication* application) {
function gboolean (line 66) | static gboolean my_application_local_command_line(GApplication* applicat...
function my_application_dispose (line 85) | static void my_application_dispose(GObject* object) {
function my_application_class_init (line 91) | static void my_application_class_init(MyApplicationClass* klass) {
function my_application_init (line 97) | static void my_application_init(MyApplication* self) {}
function MyApplication (line 99) | MyApplication* my_application_new() {
FILE: plugins/audio_picker/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
class GeneratedPluginRegistrant (line 9) | public final class GeneratedPluginRegistrant {
method registerWith (line 10) | public static void registerWith(PluginRegistry registry) {
method alreadyRegisteredWith (line 17) | private static boolean alreadyRegisteredWith(PluginRegistry registry) {
FILE: plugins/audio_picker/android/src/main/java/com/audio_picker/audio_picker/FileUtils.java
class FileUtils (line 20) | public class FileUtils {
method getPath (line 23) | @SuppressLint("NewApi")
method fileExists (line 174) | private static boolean fileExists(String filePath) {
method getPathFromExtSD (line 180) | private static String getPathFromExtSD(String[] pathData) {
method getDriveFilePath (line 235) | private static String getDriveFilePath(Uri uri, Context context) {
method getMediaFilePathForN (line 270) | private static String getMediaFilePathForN(Uri uri, Context context) {
method getDataColumn (line 306) | private static String getDataColumn(Context context, Uri uri,
method isExternalStorageDocument (line 328) | private static boolean isExternalStorageDocument(Uri uri) {
method isDownloadsDocument (line 332) | private static boolean isDownloadsDocument(Uri uri) {
method isMediaDocument (line 336) | private static boolean isMediaDocument(Uri uri) {
method isGooglePhotosUri (line 340) | private static boolean isGooglePhotosUri(Uri uri) {
method isGoogleDriveUri (line 345) | private static boolean isGoogleDriveUri(Uri uri) {
FILE: plugins/audio_picker/lib/audio_picker.dart
type StaleBookmarkCallback (line 6) | typedef StaleBookmarkCallback = void Function(String old, String updated);
class AudioPicker (line 8) | class AudioPicker {
method regusterOnStaleBookmark (line 33) | void regusterOnStaleBookmark(StaleBookmarkCallback callback)
method pickAudio (line 37) | Future<String> pickAudio()
method pickAudioMultiple (line 42) | Future<List<String>> pickAudioMultiple()
method pickAudioFiles (line 49) | Future<List<String>> pickAudioFiles()
method iosBookmarkToUrl (line 57) | Future<String> iosBookmarkToUrl(String bookmark)
method iosReleaseSecurityScope (line 63) | void iosReleaseSecurityScope(String url)
method getMetadata (line 67) | Future<Map<String, String?>> getMetadata(String assetUrl)
FILE: plugins/audio_waveform/android/src/main/java/com/tuntori/audio_waveform/AudioWaveformPlugin.java
class AudioWaveformPlugin (line 15) | public class AudioWaveformPlugin implements FlutterPlugin, MethodCallHan...
method onAttachedToEngine (line 20) | @Override
method onMethodCall (line 27) | @Override
method onDetachedFromEngine (line 72) | @Override
FILE: plugins/audio_waveform/android/src/main/java/com/tuntori/audio_waveform/SimpleEncoder.java
class SimpleEncoder (line 22) | public class SimpleEncoder {
type ProgressListener (line 62) | public interface ProgressListener {
method reportProgress (line 68) | boolean reportProgress(double fractionComplete);
class InvalidInputException (line 72) | public class InvalidInputException extends Exception {
method InvalidInputException (line 73) | public InvalidInputException(String message) {
method create (line 79) | public static SimpleEncoder create(String fileName, Context context,
method getFileSizeBytes (line 90) | public int getFileSizeBytes() {
method getSampleRate (line 94) | public int getSampleRate() {
method getChannels (line 98) | public int getChannels() {
method getDuration (line 102) | public long getDuration() {
method getNumSamples (line 106) | public int getNumSamples() {
method getSamples (line 110) | public byte[] getSamples() {
method SimpleEncoder (line 114) | private SimpleEncoder() {
method setProgressListener (line 117) | private void setProgressListener(ProgressListener progressListener) {
method logState (line 121) | private void logState() {
method decodeAudio (line 135) | private void decodeAudio() {
method createAudioDecoder (line 209) | private MediaCodec createAudioDecoder(MediaFormat inputFormat) throws ...
method ReadFile (line 315) | private void ReadFile(String inputFile, Context context)
method simplifyData (line 378) | public byte[] simplifyData(ByteBuffer buffer, int size) {
FILE: plugins/audio_waveform/android/src/main/java/com/tuntori/audio_waveform/WaveformExtractor.java
class WaveformExtractor (line 36) | public class WaveformExtractor {
method WaveformExtractor (line 57) | public WaveformExtractor(){}
method open (line 59) | public void open(String inputFilename, Context context, boolean legacy...
method release (line 127) | public void release()
method readData (line 139) | private BufferInfo readData() {
method readDataLegacy (line 215) | private BufferInfo readDataLegacy() {
method currentBuffer (line 274) | private ByteBuffer currentBuffer()
method releaseBuffer (line 279) | private void releaseBuffer()
method getSampleRate (line 287) | public int getSampleRate() {
method getDuration (line 291) | public long getDuration() {
method readShortData (line 297) | public byte[] readShortData() {
method simplifyData (line 329) | public byte[] simplifyData(ByteBuffer buffer, int size) {
FILE: plugins/audio_waveform/lib/audio_waveform.dart
class AudioWaveformDecoder (line 7) | class AudioWaveformDecoder {
method open (line 16) | Future<void> open(String path, bool legacy)
method nextBuffer (line 36) | Future<List<int>?> nextBuffer()
method _duration (line 47) | Future<int> _duration()
method _sampleRate (line 51) | Future<int> _sampleRate()
method release (line 55) | Future<void> release()
method decode (line 63) | void decode(void Function() onStart, bool Function() onProgress,
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_builder_parameters.dart
type OnPointerMove (line 5) | typedef OnPointerMove = void Function(PointerMoveEvent event);
type OnPointerUp (line 6) | typedef OnPointerUp = void Function(PointerUpEvent event);
type OnPointerDown (line 7) | typedef OnPointerDown = void Function(PointerDownEvent event);
type OnItemReordered (line 8) | typedef OnItemReordered = void Function(
type OnItemDropOnLastTarget (line 12) | typedef OnItemDropOnLastTarget = void Function(
type OnListReordered (line 17) | typedef OnListReordered = void Function(
class DragAndDropBuilderParameters (line 22) | class DragAndDropBuilderParameters {
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_interface.dart
class DragAndDropInterface (line 1) | abstract class DragAndDropInterface {}
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_item.dart
class DragAndDropItem (line 4) | class DragAndDropItem implements DragAndDropInterface {
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_item_target.dart
class DragAndDropItemTarget (line 6) | class DragAndDropItemTarget extends StatefulWidget {
method createState (line 21) | State<StatefulWidget> createState()
class _DragAndDropItemTarget (line 24) | class _DragAndDropItemTarget extends State<DragAndDropItemTarget>
method build (line 29) | Widget build(BuildContext context)
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_item_wrapper.dart
class DragAndDropItemWrapper (line 5) | class DragAndDropItemWrapper extends StatefulWidget {
method createState (line 14) | State<StatefulWidget> createState()
class _DragAndDropItemWrapper (line 17) | class _DragAndDropItemWrapper extends State<DragAndDropItemWrapper>
method build (line 26) | Widget build(BuildContext context)
method _feedbackContainerOffset (line 249) | Offset _feedbackContainerOffset()
method _setContainerSize (line 267) | void _setContainerSize(Size? size)
method _setDragging (line 275) | void _setDragging(bool dragging)
method _onPointerMove (line 286) | void _onPointerMove(PointerMoveEvent event)
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_list.dart
class DragAndDropList (line 9) | class DragAndDropList implements DragAndDropListInterface {
method generateWidget (line 68) | Widget generateWidget(DragAndDropBuilderParameters params)
method _generateDragAndDropListInnerContents (line 112) | List<Widget> _generateDragAndDropListInnerContents(
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_list_expansion.dart
type OnExpansionChanged (line 11) | typedef OnExpansionChanged = void Function(bool expanded);
class DragAndDropListExpansion (line 14) | class DragAndDropListExpansion implements DragAndDropListExpansionInterf...
method generateWidget (line 69) | Widget generateWidget(DragAndDropBuilderParameters params)
method _generateDragAndDropListInnerContents (line 135) | List<Widget> _generateDragAndDropListInnerContents(
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_list_interface.dart
class DragAndDropListInterface (line 6) | abstract class DragAndDropListInterface implements DragAndDropInterface {
method generateWidget (line 14) | Widget generateWidget(DragAndDropBuilderParameters params)
class DragAndDropListExpansionInterface (line 17) | abstract class DragAndDropListExpansionInterface
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_list_target.dart
type OnDropOnLastTarget (line 6) | typedef OnDropOnLastTarget = void Function(
class DragAndDropListTarget (line 11) | class DragAndDropListTarget extends StatefulWidget {
method createState (line 26) | State<StatefulWidget> createState()
class _DragAndDropListTarget (line 29) | class _DragAndDropListTarget extends State<DragAndDropListTarget>
method build (line 34) | Widget build(BuildContext context)
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_list_wrapper.dart
class DragAndDropListWrapper (line 7) | class DragAndDropListWrapper extends StatefulWidget {
method createState (line 16) | State<StatefulWidget> createState()
class _DragAndDropListWrapper (line 19) | class _DragAndDropListWrapper extends State<DragAndDropListWrapper>
method initState (line 28) | void initState()
method build (line 33) | Widget build(BuildContext context)
method buildFeedbackWithHandle (line 215) | Material buildFeedbackWithHandle(
method buildFeedbackWithoutHandle (line 249) | Widget buildFeedbackWithoutHandle(
method draggableAxis (line 274) | Axis? draggableAxis()
method _dragHandleDistanceFromTop (line 281) | double _dragHandleDistanceFromTop()
method _feedbackContainerOffset (line 294) | Offset _feedbackContainerOffset()
method _setDragging (line 313) | void _setDragging(bool dragging)
method _onPointerMove (line 325) | void _onPointerMove(PointerMoveEvent event)
FILE: plugins/drag_and_drop_list/lib/drag_and_drop_lists.dart
type OnItemReorder (line 38) | typedef OnItemReorder = void Function(
type OnItemAdd (line 44) | typedef OnItemAdd = void Function(
type OnListAdd (line 49) | typedef OnListAdd = void Function(
type OnListReorder (line 51) | typedef OnListReorder = void Function(int oldListIndex, int newListIndex);
type OnListDraggingChanged (line 52) | typedef OnListDraggingChanged = void Function(
type ListOnWillAccept (line 56) | typedef ListOnWillAccept = bool Function(
type ListOnAccept (line 60) | typedef ListOnAccept = void Function(
type ListTargetOnWillAccept (line 64) | typedef ListTargetOnWillAccept = bool Function(
type ListTargetOnAccept (line 66) | typedef ListTargetOnAccept = void Function(
type OnItemDraggingChanged (line 68) | typedef OnItemDraggingChanged = void Function(
type ItemOnWillAccept (line 72) | typedef ItemOnWillAccept = bool Function(
type ItemOnAccept (line 76) | typedef ItemOnAccept = void Function(
type ItemTargetOnWillAccept (line 80) | typedef ItemTargetOnWillAccept = bool Function(
type ItemTargetOnAccept (line 82) | typedef ItemTargetOnAccept = void Function(
class DragAndDropLists (line 88) | class DragAndDropLists extends StatefulWidget {
method createState (line 361) | State<StatefulWidget> createState()
class DragAndDropListsState (line 364) | class DragAndDropListsState extends State<DragAndDropLists> {
method initState (line 373) | void initState()
method build (line 384) | Widget build(BuildContext context)
method _buildSliverList (line 467) | SliverList _buildSliverList(DragAndDropListTarget dragAndDropListTarget,
method _buildUnscrollableList (line 483) | Widget _buildUnscrollableList(DragAndDropListTarget dragAndDropListTar...
method _buildListView (line 496) | Widget _buildListView(DragAndDropBuilderParameters parameters,
method _buildOuterList (line 513) | List<Widget> _buildOuterList(DragAndDropListTarget dragAndDropListTarget,
method _calculateChildrenCount (line 527) | int _calculateChildrenCount(bool includeSeparators)
method _buildInnerList (line 537) | Widget _buildInnerList(
method _scrollListVertical (line 753) | double? _scrollListVertical(Offset topLeftOffset, Offset bottomRightOf...
method _scrollListHorizontalLtr (line 781) | double? _scrollListHorizontalLtr(
method _scrollListHorizontalRtl (line 814) | double? _scrollListHorizontalRtl(
method localToGlobal (line 847) | Offset localToGlobal(RenderObject object, Offset point,
FILE: plugins/drag_and_drop_list/lib/drag_handle.dart
type DragHandleVerticalAlignment (line 3) | enum DragHandleVerticalAlignment {
class DragHandle (line 9) | class DragHandle extends StatelessWidget {
method build (line 27) | Widget build(BuildContext context)
FILE: plugins/drag_and_drop_list/lib/measure_size.dart
type OnWidgetSizeChange (line 4) | typedef OnWidgetSizeChange = void Function(Size? size);
class MeasureSize (line 6) | class MeasureSize extends StatefulWidget {
method createState (line 17) | State createState()
class _MeasureSizeState (line 20) | class _MeasureSizeState extends State<MeasureSize> {
method build (line 22) | Widget build(BuildContext context)
method postFrameCallback (line 34) | void postFrameCallback(_)
FILE: plugins/drag_and_drop_list/lib/programmatic_expansion_tile.dart
class ProgrammaticExpansionTile (line 25) | class ProgrammaticExpansionTile extends StatefulWidget {
method createState (line 97) | ProgrammaticExpansionTileState createState()
class ProgrammaticExpansionTileState (line 101) | class ProgrammaticExpansionTileState extends State<ProgrammaticExpansion...
method initState (line 126) | void initState()
method dispose (line 152) | void dispose()
method expand (line 157) | void expand()
method collapse (line 161) | void collapse()
method toggle (line 165) | void toggle()
method _setExpanded (line 169) | void _setExpanded(bool expanded)
method _buildChildren (line 193) | Widget _buildChildren(BuildContext context, Widget? child)
method didChangeDependencies (line 246) | void didChangeDependencies()
method build (line 262) | Widget build(BuildContext context)
FILE: plugins/drag_and_drop_list/test/drag_and_drop_lists_test.dart
function main (line 5) | void main()
FILE: plugins/file_picker/lib/file_picker.dart
class FilePicker (line 3) | class FilePicker {
method readFile (line 4) | Future<String?> readFile()
method saveFile (line 8) | Future saveFile(String fileName, String fileContents)
FILE: plugins/file_picker/lib/file_picker_method_channel.dart
class MethodChannelFilePicker (line 7) | class MethodChannelFilePicker extends FilePickerPlatform {
method readFile (line 13) | Future<String?> readFile()
method saveFile (line 19) | Future saveFile(String fileName, String fileContents)
FILE: plugins/file_picker/lib/file_picker_platform_interface.dart
class FilePickerPlatform (line 5) | abstract class FilePickerPlatform extends PlatformInterface {
method readFile (line 26) | Future<String?> readFile()
method saveFile (line 30) | Future saveFile(String fileName, String fileContents)
FILE: plugins/flutter_blue_plus/android/src/main/java/com/boskokg/flutter_blue_plus/AdvertisementParser.java
class AdvertisementParser (line 41) | class AdvertisementParser {
method parse (line 50) | static AdvertisementData parse(byte[] rawData) {
FILE: plugins/flutter_blue_plus/android/src/main/java/com/boskokg/flutter_blue_plus/FlutterBluePlusPlugin.java
class FlutterBluePlusPlugin (line 66) | public class FlutterBluePlusPlugin implements FlutterPlugin, MethodCallH...
type OperationOnPermission (line 86) | private interface OperationOnPermission {
method op (line 87) | void op(boolean granted, String permission);
method FlutterBluePlusPlugin (line 96) | public FlutterBluePlusPlugin() {}
method onAttachedToEngine (line 98) | @Override
method onDetachedFromEngine (line 106) | @Override
method onAttachedToActivity (line 113) | @Override
method onDetachedFromActivityForConfigChanges (line 120) | @Override
method onReattachedToActivityForConfigChanges (line 126) | @Override
method onDetachedFromActivity (line 132) | @Override
method setup (line 139) | private void setup(
method tearDown (line 154) | private void tearDown() {
method onRequestPermissionsResult (line 167) | @Override
method onMethodCall (line 177) | @Override
method ensurePermissionBeforeAction (line 743) | private void ensurePermissionBeforeAction(String permission, Operation...
method locateGatt (line 760) | private BluetoothGatt locateGatt(String remoteId) throws Exception {
method locateCharacteristic (line 769) | private BluetoothGattCharacteristic locateCharacteristic(BluetoothGatt...
method locateDescriptor (line 793) | private BluetoothGattDescriptor locateDescriptor(BluetoothGattCharacte...
method onReceive (line 805) | @Override
method onListen (line 830) | @Override
method onCancel (line 837) | @Override
method startScan (line 844) | private void startScan(MethodCall call, Result result) {
method stopScan (line 862) | private void stopScan() {
method getScanCallback21 (line 872) | @TargetApi(21)
method startScan21 (line 907) | @TargetApi(21)
method fetchFilters (line 926) | @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
method stopScan21 (line 950) | @TargetApi(21)
method getScanCallback18 (line 958) | private BluetoothAdapter.LeScanCallback getScanCallback18() {
method startScan18 (line 973) | @SuppressWarnings("deprecation")
method stopScan18 (line 984) | @SuppressWarnings("deprecation")
method onConnectionStateChange (line 990) | @Override
method onServicesDiscovered (line 1001) | @Override
method onCharacteristicRead (line 1012) | @Override
method onCharacteristicWrite (line 1021) | @Override
method onCharacteristicChanged (line 1034) | @Override
method onDescriptorRead (line 1043) | @Override
method onDescriptorWrite (line 1071) | @Override
method onReliableWriteCompleted (line 1093) | @Override
method onReadRemoteRssi (line 1098) | @Override
method onMtuChanged (line 1109) | @Override
method log (line 1127) | private void log(LogLevel level, String message) {
method invokeMethodUIThread (line 1133) | private void invokeMethodUIThread(final String name, final byte[] byte...
type LogLevel (line 1147) | enum LogLevel
class BluetoothDeviceCache (line 1154) | static class BluetoothDeviceCache {
method BluetoothDeviceCache (line 1158) | BluetoothDeviceCache(BluetoothGatt gatt) {
FILE: plugins/flutter_blue_plus/android/src/main/java/com/boskokg/flutter_blue_plus/ProtoMaker.java
class ProtoMaker (line 33) | public class ProtoMaker {
method from (line 37) | static Protos.ScanResult from(BluetoothDevice device, byte[] advertise...
method from (line 46) | @TargetApi(21)
method from (line 100) | static Protos.BluetoothDevice from(BluetoothDevice device) {
method from (line 124) | static Protos.BluetoothService from(BluetoothDevice device, BluetoothG...
method from (line 138) | static Protos.BluetoothCharacteristic from(BluetoothDevice device, Blu...
method from (line 165) | static Protos.BluetoothDescriptor from(BluetoothDevice device, Bluetoo...
method from (line 176) | static Protos.CharacteristicProperties from(int properties) {
method from (line 191) | static Protos.DeviceStateResponse from(BluetoothDevice device, int sta...
FILE: plugins/flutter_blue_plus/lib/gen/flutterblueplus.pb.dart
class Int32Value (line 16) | class Int32Value extends $pb.GeneratedMessage {
method clone (line 38) | Int32Value clone()
method copyWith (line 43) | Int32Value copyWith(void Function(Int32Value) updates)
method create (line 46) | Int32Value create()
method createEmptyInstance (line 47) | Int32Value createEmptyInstance()
method createRepeated (line 48) | $pb.PbList<Int32Value> createRepeated()
method getDefault (line 50) | Int32Value getDefault()
method hasValue (line 58) | $core.bool hasValue()
method clearValue (line 60) | void clearValue()
class BluetoothState (line 63) | class BluetoothState extends $pb.GeneratedMessage {
method clone (line 85) | BluetoothState clone()
method copyWith (line 90) | BluetoothState copyWith(void Function(BluetoothState) updates)
method create (line 93) | BluetoothState create()
method createEmptyInstance (line 94) | BluetoothState createEmptyInstance()
method createRepeated (line 95) | $pb.PbList<BluetoothState> createRepeated()
method getDefault (line 97) | BluetoothState getDefault()
method hasState (line 105) | $core.bool hasState()
method clearState (line 107) | void clearState()
class AdvertisementData (line 110) | class AdvertisementData extends $pb.GeneratedMessage {
method clone (line 157) | AdvertisementData clone()
method copyWith (line 162) | AdvertisementData copyWith(void Function(AdvertisementData) updates)
method create (line 165) | AdvertisementData create()
method createEmptyInstance (line 166) | AdvertisementData createEmptyInstance()
method createRepeated (line 167) | $pb.PbList<AdvertisementData> createRepeated()
method getDefault (line 169) | AdvertisementData getDefault()
method hasLocalName (line 177) | $core.bool hasLocalName()
method clearLocalName (line 179) | void clearLocalName()
method hasTxPowerLevel (line 186) | $core.bool hasTxPowerLevel()
method clearTxPowerLevel (line 188) | void clearTxPowerLevel()
method ensureTxPowerLevel (line 190) | Int32Value ensureTxPowerLevel()
method hasConnectable (line 197) | $core.bool hasConnectable()
method clearConnectable (line 199) | void clearConnectable()
class ScanSettings (line 211) | class ScanSettings extends $pb.GeneratedMessage {
method clone (line 248) | ScanSettings clone()
method copyWith (line 253) | ScanSettings copyWith(void Function(ScanSettings) updates)
method create (line 256) | ScanSettings create()
method createEmptyInstance (line 257) | ScanSettings createEmptyInstance()
method createRepeated (line 258) | $pb.PbList<ScanSettings> createRepeated()
method getDefault (line 260) | ScanSettings getDefault()
method hasAndroidScanMode (line 268) | $core.bool hasAndroidScanMode()
method clearAndroidScanMode (line 270) | void clearAndroidScanMode()
method hasAllowDuplicates (line 280) | $core.bool hasAllowDuplicates()
method clearAllowDuplicates (line 282) | void clearAllowDuplicates()
class ScanResult (line 288) | class ScanResult extends $pb.GeneratedMessage {
method clone (line 320) | ScanResult clone()
method copyWith (line 325) | ScanResult copyWith(void Function(ScanResult) updates)
method create (line 328) | ScanResult create()
method createEmptyInstance (line 329) | ScanResult createEmptyInstance()
method createRepeated (line 330) | $pb.PbList<ScanResult> createRepeated()
method getDefault (line 332) | ScanResult getDefault()
method hasDevice (line 340) | $core.bool hasDevice()
method clearDevice (line 342) | void clearDevice()
method ensureDevice (line 344) | BluetoothDevice ensureDevice()
method hasAdvertisementData (line 351) | $core.bool hasAdvertisementData()
method clearAdvertisementData (line 353) | void clearAdvertisementData()
method ensureAdvertisementData (line 355) | AdvertisementData ensureAdvertisementData()
method hasRssi (line 362) | $core.bool hasRssi()
method clearRssi (line 364) | void clearRssi()
class ConnectRequest (line 367) | class ConnectRequest extends $pb.GeneratedMessage {
method clone (line 394) | ConnectRequest clone()
method copyWith (line 399) | ConnectRequest copyWith(void Function(ConnectRequest) updates)
method create (line 402) | ConnectRequest create()
method createEmptyInstance (line 403) | ConnectRequest createEmptyInstance()
method createRepeated (line 404) | $pb.PbList<ConnectRequest> createRepeated()
method getDefault (line 406) | ConnectRequest getDefault()
method hasRemoteId (line 414) | $core.bool hasRemoteId()
method clearRemoteId (line 416) | void clearRemoteId()
method hasAndroidAutoConnect (line 423) | $core.bool hasAndroidAutoConnect()
method clearAndroidAutoConnect (line 425) | void clearAndroidAutoConnect()
class BluetoothDevice (line 428) | class BluetoothDevice extends $pb.GeneratedMessage {
method clone (line 460) | BluetoothDevice clone()
method copyWith (line 465) | BluetoothDevice copyWith(void Function(BluetoothDevice) updates)
method create (line 468) | BluetoothDevice create()
method createEmptyInstance (line 469) | BluetoothDevice createEmptyInstance()
method createRepeated (line 470) | $pb.PbList<BluetoothDevice> createRepeated()
method getDefault (line 472) | BluetoothDevice getDefault()
method hasRemoteId (line 480) | $core.bool hasRemoteId()
method clearRemoteId (line 482) | void clearRemoteId()
method hasName (line 489) | $core.bool hasName()
method clearName (line 491) | void clearName()
method hasType (line 498) | $core.bool hasType()
method clearType (line 500) | void clearType()
class BluetoothService (line 503) | class BluetoothService extends $pb.GeneratedMessage {
method clone (line 545) | BluetoothService clone()
method copyWith (line 550) | BluetoothService copyWith(void Function(BluetoothService) updates)
method create (line 553) | BluetoothService create()
method createEmptyInstance (line 554) | BluetoothService createEmptyInstance()
method createRepeated (line 555) | $pb.PbList<BluetoothService> createRepeated()
method getDefault (line 557) | BluetoothService getDefault()
method hasUuid (line 565) | $core.bool hasUuid()
method clearUuid (line 567) | void clearUuid()
method hasRemoteId (line 574) | $core.bool hasRemoteId()
method clearRemoteId (line 576) | void clearRemoteId()
method hasIsPrimary (line 583) | $core.bool hasIsPrimary()
method clearIsPrimary (line 585) | void clearIsPrimary()
class BluetoothCharacteristic (line 594) | class BluetoothCharacteristic extends $pb.GeneratedMessage {
method clone (line 646) | BluetoothCharacteristic clone()
method copyWith (line 651) | BluetoothCharacteristic copyWith(void Function(BluetoothCharacteristic...
method create (line 654) | BluetoothCharacteristic create()
method createEmptyInstance (line 655) | BluetoothCharacteristic createEmptyInstance()
method createRepeated (line 656) | $pb.PbList<BluetoothCharacteristic> createRepeated()
method getDefault (line 658) | BluetoothCharacteristic getDefault()
method hasUuid (line 666) | $core.bool hasUuid()
method clearUuid (line 668) | void clearUuid()
method hasRemoteId (line 675) | $core.bool hasRemoteId()
method clearRemoteId (line 677) | void clearRemoteId()
method hasServiceUuid (line 684) | $core.bool hasServiceUuid()
method clearServiceUuid (line 686) | void clearServiceUuid()
method hasSecondaryServiceUuid (line 693) | $core.bool hasSecondaryServiceUuid()
method clearSecondaryServiceUuid (line 695) | void clearSecondaryServiceUuid()
method hasProperties (line 705) | $core.bool hasProperties()
method clearProperties (line 707) | void clearProperties()
method ensureProperties (line 709) | CharacteristicProperties ensureProperties()
method hasValue (line 716) | $core.bool hasValue()
method clearValue (line 718) | void clearValue()
class BluetoothDescriptor (line 721) | class BluetoothDescriptor extends $pb.GeneratedMessage {
method clone (line 763) | BluetoothDescriptor clone()
method copyWith (line 768) | BluetoothDescriptor copyWith(void Function(BluetoothDescriptor) updates)
method create (line 771) | BluetoothDescriptor create()
method createEmptyInstance (line 772) | BluetoothDescriptor createEmptyInstance()
method createRepeated (line 773) | $pb.PbList<BluetoothDescriptor> createRepeated()
method getDefault (line 775) | BluetoothDescriptor getDefault()
method hasUuid (line 783) | $core.bool hasUuid()
method clearUuid (line 785) | void clearUuid()
method hasRemoteId (line 792) | $core.bool hasRemoteId()
method clearRemoteId (line 794) | void clearRemoteId()
method hasServiceUuid (line 801) | $core.bool hasServiceUuid()
method clearServiceUuid (line 803) | void clearServiceUuid()
method hasCharacteristicUuid (line 810) | $core.bool hasCharacteristicUuid()
method clearCharacteristicUuid (line 812) | void clearCharacteristicUuid()
method hasValue (line 819) | $core.bool hasValue()
method clearValue (line 821) | void clearValue()
class CharacteristicProperties (line 824) | class CharacteristicProperties extends $pb.GeneratedMessage {
method clone (line 891) | CharacteristicProperties clone()
method copyWith (line 896) | CharacteristicProperties copyWith(void Function(CharacteristicProperti...
method create (line 899) | CharacteristicProperties create()
method createEmptyInstance (line 900) | CharacteristicProperties createEmptyInstance()
method createRepeated (line 901) | $pb.PbList<CharacteristicProperties> createRepeated()
method getDefault (line 903) | CharacteristicProperties getDefault()
method hasBroadcast (line 911) | $core.bool hasBroadcast()
method clearBroadcast (line 913) | void clearBroadcast()
method hasRead (line 920) | $core.bool hasRead()
method clearRead (line 922) | void clearRead()
method hasWriteWithoutResponse (line 929) | $core.bool hasWriteWithoutResponse()
method clearWriteWithoutResponse (line 931) | void clearWriteWithoutResponse()
method hasWrite (line 938) | $core.bool hasWrite()
method clearWrite (line 940) | void clearWrite()
method hasNotify (line 947) | $core.bool hasNotify()
method clearNotify (line 949) | void clearNotify()
method hasIndicate (line 956) | $core.bool hasIndicate()
method clearIndicate (line 958) | void clearIndicate()
method hasAuthenticatedSignedWrites (line 965) | $core.bool hasAuthenticatedSignedWrites()
method clearAuthenticatedSignedWrites (line 967) | void clearAuthenticatedSignedWrites()
method hasExtendedProperties (line 974) | $core.bool hasExtendedProperties()
method clearExtendedProperties (line 976) | void clearExtendedProperties()
method hasNotifyEncryptionRequired (line 983) | $core.bool hasNotifyEncryptionRequired()
method clearNotifyEncryptionRequired (line 985) | void clearNotifyEncryptionRequired()
method hasIndicateEncryptionRequired (line 992) | $core.bool hasIndicateEncryptionRequired()
method clearIndicateEncryptionRequired (line 994) | void clearIndicateEncryptionRequired()
class DiscoverServicesResult (line 997) | class DiscoverServicesResult extends $pb.GeneratedMessage {
method clone (line 1024) | DiscoverServicesResult clone()
method copyWith (line 1029) | DiscoverServicesResult copyWith(void Function(DiscoverServicesResult) ...
method create (line 1032) | DiscoverServicesResult create()
method createEmptyInstance (line 1033) | DiscoverServicesResult createEmptyInstance()
method createRepeated (line 1034) | $pb.PbList<DiscoverServicesResult> createRepeated()
method getDefault (line 1036) | DiscoverServicesResult getDefault()
method hasRemoteId (line 1044) | $core.bool hasRemoteId()
method clearRemoteId (line 1046) | void clearRemoteId()
class ReadCharacteristicRequest (line 1052) | class ReadCharacteristicRequest extends $pb.GeneratedMessage {
method clone (line 1089) | ReadCharacteristicRequest clone()
method copyWith (line 1094) | ReadCharacteristicRequest copyWith(void Function(ReadCharacteristicReq...
method create (line 1097) | ReadCharacteristicRequest create()
method createEmptyInstance (line 1098) | ReadCharacteristicRequest createEmptyInstance()
method createRepeated (line 1099) | $pb.PbList<ReadCharacteristicRequest> createRepeated()
method getDefault (line 1101) | ReadCharacteristicRequest getDefault()
method hasRemoteId (line 1109) | $core.bool hasRemoteId()
method clearRemoteId (line 1111) | void clearRemoteId()
method hasCharacteristicUuid (line 1118) | $core.bool hasCharacteristicUuid()
method clearCharacteristicUuid (line 1120) | void clearCharacteristicUuid()
method hasServiceUuid (line 1127) | $core.bool hasServiceUuid()
method clearServiceUuid (line 1129) | void clearServiceUuid()
method hasSecondaryServiceUuid (line 1136) | $core.bool hasSecondaryServiceUuid()
method clearSecondaryServiceUuid (line 1138) | void clearSecondaryServiceUuid()
class ReadCharacteristicResponse (line 1141) | class ReadCharacteristicResponse extends $pb.GeneratedMessage {
method clone (line 1168) | ReadCharacteristicResponse clone()
method copyWith (line 1173) | ReadCharacteristicResponse copyWith(void Function(ReadCharacteristicRe...
method create (line 1176) | ReadCharacteristicResponse create()
method createEmptyInstance (line 1177) | ReadCharacteristicResponse createEmptyInstance()
method createRepeated (line 1178) | $pb.PbList<ReadCharacteristicResponse> createRepeated()
method getDefault (line 1180) | ReadCharacteristicResponse getDefault()
method hasRemoteId (line 1188) | $core.bool hasRemoteId()
method clearRemoteId (line 1190) | void clearRemoteId()
method hasCharacteristic (line 1197) | $core.bool hasCharacteristic()
method clearCharacteristic (line 1199) | void clearCharacteristic()
method ensureCharacteristic (line 1201) | BluetoothCharacteristic ensureCharacteristic()
class ReadDescriptorRequest (line 1204) | class ReadDescriptorRequest extends $pb.GeneratedMessage {
method clone (line 1246) | ReadDescriptorRequest clone()
method copyWith (line 1251) | ReadDescriptorRequest copyWith(void Function(ReadDescriptorRequest) up...
method create (line 1254) | ReadDescriptorRequest create()
method createEmptyInstance (line 1255) | ReadDescriptorRequest createEmptyInstance()
method createRepeated (line 1256) | $pb.PbList<ReadDescriptorRequest> createRepeated()
method getDefault (line 1258) | ReadDescriptorRequest getDefault()
method hasRemoteId (line 1266) | $core.bool hasRemoteId()
method clearRemoteId (line 1268) | void clearRemoteId()
method hasDescriptorUuid (line 1275) | $core.bool hasDescriptorUuid()
method clearDescriptorUuid (line 1277) | void clearDescriptorUuid()
method hasServiceUuid (line 1284) | $core.bool hasServiceUuid()
method clearServiceUuid (line 1286) | void clearServiceUuid()
method hasSecondaryServiceUuid (line 1293) | $core.bool hasSecondaryServiceUuid()
method clearSecondaryServiceUuid (line 1295) | void clearSecondaryServiceUuid()
method hasCharacteristicUuid (line 1302) | $core.bool hasCharacteristicUuid()
method clearCharacteristicUuid (line 1304) | void clearCharacteristicUuid()
class ReadDescriptorResponse (line 1307) | class ReadDescriptorResponse extends $pb.GeneratedMessage {
method clone (line 1334) | ReadDescriptorResponse clone()
method copyWith (line 1339) | ReadDescriptorResponse copyWith(void Function(ReadDescriptorResponse) ...
method create (line 1342) | ReadDescriptorResponse create()
method createEmptyInstance (line 1343) | ReadDescriptorResponse createEmptyInstance()
method createRepeated (line 1344) | $pb.PbList<ReadDescriptorResponse> createRepeated()
method getDefault (line 1346) | ReadDescriptorResponse getDefault()
method hasRequest (line 1354) | $core.bool hasRequest()
method clearRequest (line 1356) | void clearRequest()
method ensureRequest (line 1358) | ReadDescriptorRequest ensureRequest()
method hasValue (line 1365) | $core.bool hasValue()
method clearValue (line 1367) | void clearValue()
class WriteCharacteristicRequest (line 1370) | class WriteCharacteristicRequest extends $pb.GeneratedMessage {
method clone (line 1417) | WriteCharacteristicRequest clone()
method copyWith (line 1422) | WriteCharacteristicRequest copyWith(void Function(WriteCharacteristicR...
method create (line 1425) | WriteCharacteristicRequest create()
method createEmptyInstance (line 1426) | WriteCharacteristicRequest createEmptyInstance()
method createRepeated (line 1427) | $pb.PbList<WriteCharacteristicRequest> createRepeated()
method getDefault (line 1429) | WriteCharacteristicRequest getDefault()
method hasRemoteId (line 1437) | $core.bool hasRemoteId()
method clearRemoteId (line 1439) | void clearRemoteId()
method hasCharacteristicUuid (line 1446) | $core.bool hasCharacteristicUuid()
method clearCharacteristicUuid (line 1448) | void clearCharacteristicUuid()
method hasServiceUuid (line 1455) | $core.bool hasServiceUuid()
method clearServiceUuid (line 1457) | void clearServiceUuid()
method hasSecondaryServiceUuid (line 1464) | $core.bool hasSecondaryServiceUuid()
method clearSecondaryServiceUuid (line 1466) | void clearSecondaryServiceUuid()
method hasWriteType (line 1473) | $core.bool hasWriteType()
method clearWriteType (line 1475) | void clearWriteType()
method hasValue (line 1482) | $core.bool hasValue()
method clearValue (line 1484) | void clearValue()
class WriteCharacteristicResponse (line 1487) | class WriteCharacteristicResponse extends $pb.GeneratedMessage {
method clone (line 1514) | WriteCharacteristicResponse clone()
method copyWith (line 1519) | WriteCharacteristicResponse copyWith(void Function(WriteCharacteristic...
method create (line 1522) | WriteCharacteristicResponse create()
method createEmptyInstance (line 1523) | WriteCharacteristicResponse createEmptyInstance()
method createRepeated (line 1524) | $pb.PbList<WriteCharacteristicResponse> createRepeated()
method getDefault (line 1526) | WriteCharacteristicResponse getDefault()
method hasRequest (line 1534) | $core.bool hasRequest()
method clearRequest (line 1536) | void clearRequest()
method ensureRequest (line 1538) | WriteCharacteristicRequest ensureRequest()
method hasSuccess (line 1545) | $core.bool hasSuccess()
method clearSuccess (line 1547) | void clearSuccess()
class WriteDescriptorRequest (line 1550) | class WriteDescriptorRequest extends $pb.GeneratedMessage {
method clone (line 1597) | WriteDescriptorRequest clone()
method copyWith (line 1602) | WriteDescriptorRequest copyWith(void Function(WriteDescriptorRequest) ...
method create (line 1605) | WriteDescriptorRequest create()
method createEmptyInstance (line 1606) | WriteDescriptorRequest createEmptyInstance()
method createRepeated (line 1607) | $pb.PbList<WriteDescriptorRequest> createRepeated()
method getDefault (line 1609) | WriteDescriptorRequest getDefault()
method hasRemoteId (line 1617) | $core.bool hasRemoteId()
method clearRemoteId (line 1619) | void clearRemoteId()
method hasDescriptorUuid (line 1626) | $core.bool hasDescriptorUuid()
method clearDescriptorUuid (line 1628) | void clearDescriptorUuid()
method hasServiceUuid (line 1635) | $core.bool hasServiceUuid()
method clearServiceUuid (line 1637) | void clearServiceUuid()
method hasSecondaryServiceUuid (line 1644) | $core.bool hasSecondaryServiceUuid()
method clearSecondaryServiceUuid (line 1646) | void clearSecondaryServiceUuid()
method hasCharacteristicUuid (line 1653) | $core.bool hasCharacteristicUuid()
method clearCharacteristicUuid (line 1655) | void clearCharacteristicUuid()
method hasValue (line 1662) | $core.bool hasValue()
method clearValue (line 1664) | void clearValue()
class WriteDescriptorResponse (line 1667) | class WriteDescriptorResponse extends $pb.GeneratedMessage {
method clone (line 1694) | WriteDescriptorResponse clone()
method copyWith (line 1699) | WriteDescriptorResponse copyWith(void Function(WriteDescriptorResponse...
method create (line 1702) | WriteDescriptorResponse create()
method createEmptyInstance (line 1703) | WriteDescriptorResponse createEmptyInstance()
method createRepeated (line 1704) | $pb.PbList<WriteDescriptorResponse> createRepeated()
method getDefault (line 1706) | WriteDescriptorResponse getDefault()
method hasRequest (line 1714) | $core.bool hasRequest()
method clearRequest (line 1716) | void clearRequest()
method ensureRequest (line 1718) | WriteDesc
Condensed preview — 560 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,824K chars).
[
{
"path": ".firebaserc",
"chars": 317,
"preview": "{\n \"projects\": {\n \"default\": \"mightier-amp\"\n },\n \"targets\": {\n \"mightieramp\": {\n \"hosting\": {\n \"mig"
},
{
"path": ".github/FUNDING.yml",
"chars": 673,
"preview": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [u"
},
{
"path": ".gitignore",
"chars": 700,
"preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.i"
},
{
"path": ".metadata",
"chars": 928,
"preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
},
{
"path": ".vscode/launch.json",
"chars": 617,
"preview": "{\n // Use IntelliSense to learn about possible attributes.\n // Hover to view descriptions of existing attributes.\n"
},
{
"path": ".vscode/settings.json",
"chars": 42,
"preview": "{\n \"cmake.configureOnOpen\": false,\n} "
},
{
"path": "LICENSE.md",
"chars": 1083,
"preview": "MIT License\n\nCopyright (c) 2020-2021 Dian Iliev (Tuntorius)\n\nPermission is hereby granted, free of charge, to any person"
},
{
"path": "PRIVACY_POLICY.md",
"chars": 1301,
"preview": "# Privacy Policy\n\nI (Diyan Iliev) built the Mightier Amp app as an Open Source app. This SERVICE is provided by me at no"
},
{
"path": "README.md",
"chars": 2725,
"preview": "# Mightier Amp\nAlternative app for controlling NUX Mighty amps series.\n\n## Features\nThis app aims to cover all the funct"
},
{
"path": "analysis_options.yaml",
"chars": 1453,
"preview": "# This file configures the analyzer, which statically analyzes Dart code to\n# check for errors, warnings, and lints.\n#\n#"
},
{
"path": "android/.gitignore",
"chars": 262,
"preview": "gradle-wrapper.jar\n/.gradle\n/captures/\n/gradlew\n/gradlew.bat\n/local.properties\nGeneratedPluginRegistrant.java\n\n# Remembe"
},
{
"path": "android/app/build.gradle",
"chars": 2709,
"preview": "def localProperties = new Properties()\ndef localPropertiesFile = rootProject.file('local.properties')\nif (localPropertie"
},
{
"path": "android/app/proguard-rules.pro",
"chars": 92,
"preview": "-keep class androidx.lifecycle.** { *; }\n-keep class com.boskokg.flutter_blue_plus.** { *; }"
},
{
"path": "android/app/src/debug/AndroidManifest.xml",
"chars": 411,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"com.tuntori.mightieramp\">\n <!-- Flu"
},
{
"path": "android/app/src/debug/res/values/strings.xml",
"chars": 116,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<string name=\"app_name\">Mightier Amp Debug</string>\n</resources>"
},
{
"path": "android/app/src/main/AndroidManifest.xml",
"chars": 3675,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"com.tuntori.mightieramp\"\n xmlns:too"
},
{
"path": "android/app/src/main/kotlin/com/tuntori/mightieramp/MainActivity.kt",
"chars": 6976,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\npackage"
},
{
"path": "android/app/src/main/res/drawable/launch_background.xml",
"chars": 434,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
},
{
"path": "android/app/src/main/res/mipmap-anydpi-v26/launcher_icon.xml",
"chars": 264,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <bac"
},
{
"path": "android/app/src/main/res/values/colors.xml",
"chars": 120,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"ic_launcher_background\">#ffffff</color>\n</resources>"
},
{
"path": "android/app/src/main/res/values/strings.xml",
"chars": 110,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<string name=\"app_name\">Mightier Amp</string>\n</resources>"
},
{
"path": "android/app/src/main/res/values/styles.xml",
"chars": 1022,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- Theme applied to the Android Window while the process is sta"
},
{
"path": "android/app/src/profile/AndroidManifest.xml",
"chars": 331,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"com.tuntori.mightieramp\">\n <!-- Flu"
},
{
"path": "android/build.gradle",
"chars": 745,
"preview": "buildscript {\n ext.kotlin_version = '1.8.22'\n repositories {\n google()\n mavenCentral()\n }\n\n de"
},
{
"path": "android/gradle/wrapper/gradle-wrapper.properties",
"chars": 231,
"preview": "#Fri Jun 23 08:50:38 CEST 2017\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER"
},
{
"path": "android/gradle.properties",
"chars": 149,
"preview": "org.gradle.jvmargs=-Xmx1536M\nandroid.enableR8=true\nandroid.useAndroidX=true\nandroid.enableJetifier=true\norg.gradle.java."
},
{
"path": "android/settings.gradle",
"chars": 462,
"preview": "include ':app'\n\ndef localPropertiesFile = new File(rootProject.projectDir, \"local.properties\")\ndef properties = new Prop"
},
{
"path": "android/settings_aar.gradle",
"chars": 15,
"preview": "include ':app'\n"
},
{
"path": "fastlane/metadata/android/en-US/full_description.txt",
"chars": 613,
"preview": "An alternative app for controlling NUX Mighty series guitar amplifiers\n\nThis app aims to cover all of the functionality "
},
{
"path": "fastlane/metadata/android/en-US/short_description.txt",
"chars": 59,
"preview": "An alternative app for controlling NUX Mighty amps series.\n"
},
{
"path": "fastlane/metadata/android/en-US/title.txt",
"chars": 12,
"preview": "Mightier Amp"
},
{
"path": "firebase.json",
"chars": 304,
"preview": "{\n \"hosting\": {\n \"public\": \"/build/web/\",\n \"ignore\": [\n \"firebase.json\",\n \"**/.*\",\n \"**/node_modul"
},
{
"path": "ios/.gitignore",
"chars": 542,
"preview": "*.mode1v3\n*.mode2v3\n*.moved-aside\n*.pbxuser\n*.perspectivev3\n**/*sync/\n.sconsign.dblite\n.tags*\n**/.vagrant/\n**/DerivedDat"
},
{
"path": "ios/Flutter/AppFrameworkInfo.plist",
"chars": 795,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Flutter/Debug.xcconfig",
"chars": 107,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig\"\n#include \"Generated.xcconfig\"\n"
},
{
"path": "ios/Flutter/Release.xcconfig",
"chars": 109,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig\"\n#include \"Generated.xcconfig\"\n"
},
{
"path": "ios/Podfile",
"chars": 1605,
"preview": "# Uncomment this line to define a global platform for your project\nplatform :ios, '12.0'\n\n# CocoaPods analytics sends ne"
},
{
"path": "ios/Runner/AppDelegate.swift",
"chars": 404,
"preview": "import UIKit\nimport Flutter\n\n@UIApplicationMain\n@objc class AppDelegate: FlutterAppDelegate {\n override func applicatio"
},
{
"path": "ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 2440,
"preview": "{\n \"images\" : [\n {\n \"filename\" : \"Icon_20x20@2x.png\",\n \"idiom\" : \"iphone\",\n \"scale\" : \"2x\",\n \"si"
},
{
"path": "ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
"chars": 391,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"LaunchImage.png\",\n \"scale\" : \"1x\"\n },\n "
},
{
"path": "ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
"chars": 336,
"preview": "# Launch Screen Assets\n\nYou can customize the launch screen with your own desired assets by replacing the image files in"
},
{
"path": "ios/Runner/Base.lproj/LaunchScreen.storyboard",
"chars": 2377,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "ios/Runner/Base.lproj/Main.storyboard",
"chars": 1605,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "ios/Runner/Info.plist",
"chars": 3837,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Runner/Runner-Bridging-Header.h",
"chars": 38,
"preview": "#import \"GeneratedPluginRegistrant.h\"\n"
},
{
"path": "ios/Runner.xcodeproj/project.pbxproj",
"chars": 24273,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 135,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:\">\n </FileRef"
},
{
"path": "ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
"chars": 226,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme",
"chars": 3185,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1300\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "ios/Runner.xcworkspace/contents.xcworkspacedata",
"chars": 224,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"group:Runner.xcodepr"
},
{
"path": "ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
"chars": 226,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "lib/UI/mainTabs.dart",
"chars": 11339,
"preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:mi"
},
{
"path": "lib/UI/mightierIcons.dart",
"chars": 2209,
"preview": "/// Flutter icons MightierIcons\n/// Copyright (C) 2021 by original authors @ fluttericon.com, fontello.com\n/// This font"
},
{
"path": "lib/UI/pages/DebugConsolePage.dart",
"chars": 1654,
"preview": "import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\n\nclass DebugConsole extends StatelessWid"
},
{
"path": "lib/UI/pages/calibration.dart",
"chars": 3649,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/pages/developerPage.dart",
"chars": 8721,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/widgets/common/nestedWillPopScope.dart';\n"
},
{
"path": "lib/UI/pages/device_specific_settings/LiteMk2Settings.dart",
"chars": 2583,
"preview": "import 'package:flutter/material.dart';\n\nimport '../../../bluetooth/bleMidiHandler.dart';\nimport '../../../bluetooth/dev"
},
{
"path": "lib/UI/pages/device_specific_settings/PlugAirSettings.dart",
"chars": 3721,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/bluetooth/devices/NuxMightyPlugAir.dart';\n\ni"
},
{
"path": "lib/UI/pages/device_specific_settings/PlugAirUsbSettings.dart",
"chars": 4832,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/pages/device_specific_settings/PlugProMicSettings.dart",
"chars": 4264,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/pages/device_specific_settings/PlugProSettings.dart",
"chars": 3506,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/pages/device_specific_settings/eq/MightyS"
},
{
"path": "lib/UI/pages/device_specific_settings/PlugProUsbSettings.dart",
"chars": 6709,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/pages/device_specific_settings/eq/MightySpaceSpeakerEQ.dart",
"chars": 5186,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/pages/device_specific_settings/eq/PlugProEQSettings.dart",
"chars": 5754,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/pages/device_specific_settings/eq/bt_audio_options.dart",
"chars": 1402,
"preview": "import 'package:flutter/material.dart';\n\nimport '../../../mightierIcons.dart';\n\nclass BTAudioOptions extends StatelessWi"
},
{
"path": "lib/UI/pages/device_specific_settings/eq/eq_group.dart",
"chars": 970,
"preview": "import 'package:flutter/material.dart';\n\nclass EQGroup extends StatelessWidget {\n final int eqGroup;\n final void Funct"
},
{
"path": "lib/UI/pages/drum_editor/DrumStyleBottomSheet.dart",
"chars": 4369,
"preview": "import 'package:flutter/material.dart';\nimport '../../widgets/scrollPicker.dart';\n\nenum DrumStyleMode { flat, categorize"
},
{
"path": "lib/UI/pages/drum_editor/drumEditor.dart",
"chars": 14995,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/pages/drum_editor/drum_eq_bottom_sheet.dart",
"chars": 2114,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/bluetooth/NuxDeviceControl.dart';\nimport '.."
},
{
"path": "lib/UI/pages/drum_editor/drumstyle_scroll_picker.dart",
"chars": 2405,
"preview": "import 'package:flutter/material.dart';\n\nimport '../../../bluetooth/devices/NuxDevice.dart';\nimport 'DrumStyleBottomShee"
},
{
"path": "lib/UI/pages/drum_editor/looperPage.dart",
"chars": 6203,
"preview": "import 'dart:async';\nimport 'dart:math';\n\nimport 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI"
},
{
"path": "lib/UI/pages/drum_editor/tap_buttons.dart",
"chars": 3491,
"preview": "import 'package:flutter/material.dart';\n\nimport '../../../bluetooth/devices/NuxDevice.dart';\nimport '../../../utilities/"
},
{
"path": "lib/UI/pages/drum_editor/tempoTrainerSheet.dart",
"chars": 7075,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/pages/drum_editor/drumEditor.dart';\nimpor"
},
{
"path": "lib/UI/pages/drumsPage.dart",
"chars": 309,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/pages/drum_editor/drumEditor.dart';\n\nclas"
},
{
"path": "lib/UI/pages/hotkeysMainPage.dart",
"chars": 3770,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/pages/hotkeysSetup.dart';\nimport 'package"
},
{
"path": "lib/UI/pages/hotkeysSetup.dart",
"chars": 9674,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/popups/hotkeyInput.dart';\nimport 'package"
},
{
"path": "lib/UI/pages/jamTracks.dart",
"chars": 6763,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\n//impor"
},
{
"path": "lib/UI/pages/midiControllers.dart",
"chars": 3656,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/pages/hotkeysMainPage.dart';\nimport 'pack"
},
{
"path": "lib/UI/pages/mighty_patches_importer.dart",
"chars": 7891,
"preview": "// import the necessary packages\n/*\nimport 'dart:convert';\n\nimport 'package:flutter/material.dart';\nimport 'package:migh"
},
{
"path": "lib/UI/pages/presetEditor.dart",
"chars": 8655,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\n\nimport"
},
{
"path": "lib/UI/pages/settings.dart",
"chars": 14458,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/pages/settings_advanced.dart",
"chars": 2307,
"preview": "import 'package:flutter/material.dart';\n\nimport '../../bluetooth/NuxDeviceControl.dart';\nimport '../../platform/platform"
},
{
"path": "lib/UI/pages/tunerPage.dart",
"chars": 8202,
"preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'dart:math' as math;\n\nimport '../../bluetooth/devic"
},
{
"path": "lib/UI/popups/alertDialogs.dart",
"chars": 7063,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/popups/changeCategory.dart",
"chars": 4215,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/popups/exportQRCode.dart",
"chars": 4729,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/platform/fileSaver.dart';"
},
{
"path": "lib/UI/popups/hotkeyInput.dart",
"chars": 5257,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/popups/midiControlInfo.dart",
"chars": 1670,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/popups/savePreset.dart",
"chars": 6378,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/popups/selectPreset.dart",
"chars": 1451,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/popups/selectTrack.dart",
"chars": 1930,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/theme.dart",
"chars": 3729,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\nimport '"
},
{
"path": "lib/UI/toneshare/cloud_authentication.dart",
"chars": 902,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/toneshare/cloud_login.dart';\nimport 'pack"
},
{
"path": "lib/UI/toneshare/cloud_login.dart",
"chars": 4057,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/modules/cloud/cloudManager.dart';\nimport 'pa"
},
{
"path": "lib/UI/toneshare/cloud_signup.dart",
"chars": 4439,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pocketbase/pocketbase.dart';\n\nimport '../../modules/cloud/cloudM"
},
{
"path": "lib/UI/toneshare/share_preset.dart",
"chars": 3370,
"preview": "import 'package:flutter/material.dart';\n\nclass PresetForm extends StatefulWidget {\n @override\n _PresetFormState create"
},
{
"path": "lib/UI/toneshare/toneshare_home.dart",
"chars": 1913,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/modules/cloud/cloudManager.dart';\n\nimport '."
},
{
"path": "lib/UI/toneshare/toneshare_main.dart",
"chars": 1536,
"preview": "import 'package:flutter/material.dart';\n\nimport '../../modules/cloud/cloudManager.dart';\nimport 'cloud_authentication.da"
},
{
"path": "lib/UI/utils.dart",
"chars": 607,
"preview": "import 'package:flutter/widgets.dart';\n\nenum LayoutMode { navBar, drawer }\n\nenum EditorLayoutMode { scroll, expand }\n\nLa"
},
{
"path": "lib/UI/widgets/MidiDeviceTile.dart",
"chars": 1245,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/midi/controllers/MidiController.dart';\n\nclas"
},
{
"path": "lib/UI/widgets/ModeControl.dart",
"chars": 3070,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/bluetooth/devices/effects/Processor.dart';\ni"
},
{
"path": "lib/UI/widgets/NuxAppBar.dart",
"chars": 8619,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/widgets/VolumeDrawer.dart",
"chars": 3489,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/bluetooth/devices/value_formatters/ValueForm"
},
{
"path": "lib/UI/widgets/app_drawer.dart",
"chars": 5887,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/mightierIcons.dart';\nimport 'package:migh"
},
{
"path": "lib/UI/widgets/bottomBar.dart",
"chars": 1284,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/widgets/circular_button.dart",
"chars": 813,
"preview": "import 'package:flutter/material.dart';\n\nclass CircularButton extends StatelessWidget {\n final IconData icon;\n final C"
},
{
"path": "lib/UI/widgets/common/blinkWidget.dart",
"chars": 1273,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/widgets/common/customPopupMenu.dart",
"chars": 39351,
"preview": "// Copyright 2015 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": "lib/UI/widgets/common/modeControlRegular.dart",
"chars": 1021,
"preview": "import 'package:flutter/material.dart';\n\nclass ModeControlRegular extends StatelessWidget {\n final List<String> options"
},
{
"path": "lib/UI/widgets/common/nestedWillPopScope.dart",
"chars": 1561,
"preview": "import 'package:flutter/material.dart';\n\nclass NestedWillPopScope extends StatefulWidget {\n const NestedWillPopScope({\n"
},
{
"path": "lib/UI/widgets/common/numberPicker.dart",
"chars": 7358,
"preview": "import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\n\ntypedef TextMapper = String Function(St"
},
{
"path": "lib/UI/widgets/common/rounded_icon_button.dart",
"chars": 836,
"preview": "import 'package:flutter/material.dart';\n\nclass RoundedIconButton extends StatelessWidget {\n final VoidCallback? onPress"
},
{
"path": "lib/UI/widgets/common/searchTextField.dart",
"chars": 878,
"preview": "import 'package:flutter/material.dart';\n\nclass SearchTextField extends StatelessWidget {\n final TextEditingController c"
},
{
"path": "lib/UI/widgets/deviceList.dart",
"chars": 1500,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/widgets/fabMenu.dart",
"chars": 5301,
"preview": "import 'dart:math';\n\nimport 'package:flutter/material.dart';\n\nimport 'common/nestedWillPopScope.dart';\n\nclass Bubble {\n "
},
{
"path": "lib/UI/widgets/hold_to_repeat.dart",
"chars": 1298,
"preview": "import 'package:flutter/material.dart';\n\nclass HoldToRepeat extends StatefulWidget {\n final Widget child;\n final VoidC"
},
{
"path": "lib/UI/widgets/presets/EffectChainBar.dart",
"chars": 3189,
"preview": "import 'dart:math';\nimport 'dart:ui';\n\nimport 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/bluet"
},
{
"path": "lib/UI/widgets/presets/EffectChainButton.dart",
"chars": 2857,
"preview": "import 'package:flutter/material.dart';\n\nimport '../../../bluetooth/devices/effects/Processor.dart';\n\nclass EffectChainB"
},
{
"path": "lib/UI/widgets/presets/channelSelector.dart",
"chars": 11162,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n//\n\nimpo"
},
{
"path": "lib/UI/widgets/presets/effectEditor.dart",
"chars": 2470,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/widgets/presets/effectEditors/EqualizerEditor.dart",
"chars": 3063,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/widgets/verticalThickSlider.dart';\nimport"
},
{
"path": "lib/UI/widgets/presets/effectEditors/SlidersEditor.dart",
"chars": 8214,
"preview": "import 'package:flutter/material.dart';\nimport 'package:tinycolor2/tinycolor2.dart';\nimport 'package:undo/undo.dart';\nim"
},
{
"path": "lib/UI/widgets/presets/effectSelector.dart",
"chars": 11478,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/widgets/presets/preset_list/presetEffectPreview.dart",
"chars": 1984,
"preview": "import 'package:flutter/material.dart';\nimport '../../../../bluetooth/devices/NuxDevice.dart';\nimport '../../../../bluet"
},
{
"path": "lib/UI/widgets/presets/preset_list/presetItem.dart",
"chars": 5409,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI"
},
{
"path": "lib/UI/widgets/presets/preset_list/presetList.dart",
"chars": 15746,
"preview": "import 'package:drag_and_drop_lists/drag_and_drop_list_interface.dart';\nimport 'package:drag_and_drop_lists/drag_and_dro"
},
{
"path": "lib/UI/widgets/presets/preset_list/presetListMethods.dart",
"chars": 2584,
"preview": "import 'package:file_picker/file_picker.dart';\nimport 'package:flutter/material.dart';\nimport 'package:qr_utils/qr_utils"
},
{
"path": "lib/UI/widgets/presets/preset_list/preset_widget.dart",
"chars": 6015,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/bluetooth/devices/NuxDevice.dart';\n\nimport '"
},
{
"path": "lib/UI/widgets/presets/preset_list/presets_popup_menus.dart",
"chars": 4459,
"preview": "import 'package:flutter/material.dart';\n\nimport '../../../mightierIcons.dart';\nimport '../../../theme.dart';\n\nenum Prese"
},
{
"path": "lib/UI/widgets/presets/trackEventsBlockInfo.dart",
"chars": 1541,
"preview": "import 'dart:ui';\n\nimport 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/audio/setlist_player/setl"
},
{
"path": "lib/UI/widgets/rounded_icon_button.dart",
"chars": 836,
"preview": "import 'package:flutter/material.dart';\n\nclass RoundedIconButton extends StatelessWidget {\n final VoidCallback? onPress"
},
{
"path": "lib/UI/widgets/scrollParent.dart",
"chars": 1120,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/widgets/scrollPicker.dart",
"chars": 5191,
"preview": "// Copyright (c) 2018, codegrue. All rights reserved. Use of this source code\n// is governed by the MIT license that can"
},
{
"path": "lib/UI/widgets/search_field.dart",
"chars": 902,
"preview": "import 'package:flutter/material.dart';\n\nclass SearchField extends StatelessWidget {\n final TextEditingController textE"
},
{
"path": "lib/UI/widgets/thickRangeSlider.dart",
"chars": 10228,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/widgets/thickSlider.dart",
"chars": 9583,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/UI/widgets/verticalThickSlider.dart",
"chars": 8333,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/audio/audioEditor.dart",
"chars": 15440,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/audio/automationController.dart",
"chars": 12093,
"preview": "import 'dart:async';\nimport 'dart:io';\nimport 'dart:math';\n\nimport 'package:flutter/foundation.dart';\nimport 'package:ju"
},
{
"path": "lib/audio/models/jamTrack.dart",
"chars": 2272,
"preview": "import 'package:mighty_plug_manager/audio/models/trackAutomation.dart';\n\nclass JamTrack {\n final TrackAutomation _autom"
},
{
"path": "lib/audio/models/setlist.dart",
"chars": 1344,
"preview": "import 'package:flutter/foundation.dart';\nimport 'package:mighty_plug_manager/audio/models/jamTrack.dart';\nimport 'packa"
},
{
"path": "lib/audio/models/trackAutomation.dart",
"chars": 2953,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/audio/models/waveform_data.dart",
"chars": 3429,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/audio/online_sources/YoutubeSource.dart",
"chars": 2020,
"preview": "import 'package:mighty_plug_manager/audio/online_sources/onlineSource.dart';\nimport 'package:mighty_plug_manager/audio/o"
},
{
"path": "lib/audio/online_sources/backingTracksCoSource.dart",
"chars": 1742,
"preview": "import 'package:mighty_plug_manager/audio/online_sources/onlineSource.dart';\nimport 'package:mighty_plug_manager/audio/o"
},
{
"path": "lib/audio/online_sources/guitarBackingTracksSource.dart",
"chars": 2441,
"preview": "import 'dart:convert';\n\nimport 'package:mighty_plug_manager/audio/online_sources/onlineSource.dart';\nimport 'package:mig"
},
{
"path": "lib/audio/online_sources/onlineSource.dart",
"chars": 322,
"preview": "import 'onlineTrack.dart';\n\nabstract class OnlineSource {\n String get name;\n bool get hasSuggestions;\n\n Future<List<S"
},
{
"path": "lib/audio/online_sources/onlineTrack.dart",
"chars": 346,
"preview": "class OnlineTrack {\n String title;\n String artist;\n bool hasUrl;\n String url;\n String id;\n String detailsUrl;\n St"
},
{
"path": "lib/audio/online_sources/sourceResolver.dart",
"chars": 1190,
"preview": "import 'package:audio_picker/audio_picker.dart';\nimport 'package:mighty_plug_manager/audio/online_sources/YoutubeSource."
},
{
"path": "lib/audio/setlistPage.dart",
"chars": 11843,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/popups/alertDialogs.dart';\nimport 'packag"
},
{
"path": "lib/audio/setlist_player/setlistPlayerState.dart",
"chars": 5948,
"preview": "import 'dart:async';\n\nimport 'package:flutter/foundation.dart';\n\nimport '../../platform/simpleSharedPrefs.dart';\nimport "
},
{
"path": "lib/audio/setlistsPage.dart",
"chars": 9399,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/popups/alertDialogs.dart';\nimport 'packag"
},
{
"path": "lib/audio/trackdata/trackData.dart",
"chars": 7566,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/audio/tracksPage.dart",
"chars": 17913,
"preview": "import 'package:audio_picker/audio_picker.dart';\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/mater"
},
{
"path": "lib/audio/widgets/eventEditor.dart",
"chars": 5836,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/popups/selectPreset.dart';\nimport 'packag"
},
{
"path": "lib/audio/widgets/jamtracksView.dart",
"chars": 1057,
"preview": "import 'package:flutter/material.dart';\n\nimport '../setlist_player/setlistPlayerState.dart';\nimport 'setlistPlayer.dart'"
},
{
"path": "lib/audio/widgets/loopPanel.dart",
"chars": 3566,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/widgets/common/numberPicker.dart';\nimport"
},
{
"path": "lib/audio/widgets/media_library/albumTracks.dart",
"chars": 4982,
"preview": "// (c) 2020 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport 'pack"
},
{
"path": "lib/audio/widgets/media_library/artistAlbums.dart",
"chars": 2575,
"preview": "// (c) 2020 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport 'pack"
},
{
"path": "lib/audio/widgets/media_library/media_browse.dart",
"chars": 4610,
"preview": "// (c) 2020 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n//\nimport 'da"
},
{
"path": "lib/audio/widgets/online_source/online_source.dart",
"chars": 2207,
"preview": "// (c) 2020 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n//\n\nimport 'p"
},
{
"path": "lib/audio/widgets/online_source/search_screen.dart",
"chars": 8105,
"preview": "// (c) 2020 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n//\n\nimport 'p"
},
{
"path": "lib/audio/widgets/painted_waveform.dart",
"chars": 10502,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/audio/widgets/presetsPanel.dart",
"chars": 3307,
"preview": "import 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/popups/selectPreset.dart';\nimport 'packag"
},
{
"path": "lib/audio/widgets/setlistPlayer.dart",
"chars": 13903,
"preview": "import 'dart:async';\nimport 'dart:math' as math;\n\nimport 'package:flutter/material.dart';\nimport 'package:marquee_text/m"
},
{
"path": "lib/audio/widgets/speedPanel.dart",
"chars": 3964,
"preview": "import 'dart:math';\n\nimport 'package:flutter/material.dart';\nimport '../../UI/widgets/hold_to_repeat.dart';\nimport '../."
},
{
"path": "lib/audio/widgets/waveform_painter.dart",
"chars": 4402,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/bluetooth/NuxDeviceControl.dart",
"chars": 15881,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/bluetooth/bleMidiHandler.dart",
"chars": 6072,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\n//Good "
},
{
"path": "lib/bluetooth/ble_controllers/BLEController.dart",
"chars": 6444,
"preview": "import 'dart:async';\nimport 'dart:collection';\nimport 'dart:io';\n\nimport 'package:flutter/foundation.dart';\n\nimport '../"
},
{
"path": "lib/bluetooth/ble_controllers/DummyBLEController.dart",
"chars": 1037,
"preview": "import 'dart:async';\n\nimport 'BLEController.dart';\n\nclass DummyBLEController extends BLEController {\n DummyBLEControlle"
},
{
"path": "lib/bluetooth/ble_controllers/FlutterBluePluginController.dart",
"chars": 9147,
"preview": "/*\nAlmost identical to flutte_blue_plus - comes from the same base, but added\nWindows and macOS support.\nHowever, doesn'"
},
{
"path": "lib/bluetooth/ble_controllers/FlutterBluePlusController.dart",
"chars": 9989,
"preview": "/*\nThe original plugin used in Mightier Amp. For Android and iOS\nhttps://pub.dev/packages/flutter_blue_plus\n\nThis plugin"
},
{
"path": "lib/bluetooth/ble_controllers/FlutterReactiveBle.dart",
"chars": 8338,
"preview": "\n/*\nimport 'dart:async';\n\nimport 'package:flutter/widgets.dart';\nimport 'package:flutter_reactive_ble/flutter_reactive_b"
},
{
"path": "lib/bluetooth/ble_controllers/MightyBle.dart",
"chars": 5694,
"preview": "import 'dart:async';\nimport 'package:mighty_plug_manager/utilities/list_extenstions.dart';\n\nimport 'BLEController.dart';"
},
{
"path": "lib/bluetooth/ble_controllers/QuickBlueController.dart",
"chars": 8865,
"preview": "/*\nController that uses quick_blue plugin, which supports all platforms, except web\nhttps://pub.dev/packages/quick_blue\n"
},
{
"path": "lib/bluetooth/ble_controllers/WebBleController.dart",
"chars": 5703,
"preview": "/*\nController that uses flutter_web_bluetooth plugin for adding BLE support for web\nhttps://pub.dev/packages/flutter_web"
},
{
"path": "lib/bluetooth/ble_controllers/WinBleController.dart",
"chars": 9204,
"preview": "/*\nController that uses win_ble plugin for adding BLE support for Windows\nhttps://pub.dev/packages/win_ble\n\nSummary\nStat"
},
{
"path": "lib/bluetooth/devices/NuxConstants.dart",
"chars": 20242,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/bluetooth/devices/NuxDevice.dart",
"chars": 20726,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/bluetooth/devices/NuxFXID.dart",
"chars": 2834,
"preview": "import \"NuxConstants.dart\";\n\nclass NuxFXID {\n final int value;\n const NuxFXID._internal(this.value);\n @override\n toS"
},
{
"path": "lib/bluetooth/devices/NuxMighty2040BT.dart",
"chars": 4434,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/bluetooth/devices/NuxMighty8BT.dart",
"chars": 3359,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/bluetooth/devices/NuxMighty8BTMk2.dart",
"chars": 8557,
"preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/UI/pages/device_specif"
},
{
"path": "lib/bluetooth/devices/NuxMightyLite.dart",
"chars": 3489,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/bluetooth/devices/NuxMightyLiteMk2.dart",
"chars": 6549,
"preview": "import 'dart:async';\n\nimport 'package:flutter/material.dart';\nimport 'package:mighty_plug_manager/bluetooth/devices/NuxD"
},
{
"path": "lib/bluetooth/devices/NuxMightyPlugAir.dart",
"chars": 7508,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/bluetooth/devices/NuxMightyPlugPro.dart",
"chars": 8181,
"preview": "// (c) 2020-2021 Dian Iliev (Tuntorius)\n// This code is licensed under MIT license (see LICENSE.md for details)\n\nimport "
},
{
"path": "lib/bluetooth/devices/NuxMightySpace.dart",
"chars": 2615,
"preview": "import 'dart:async';\n\nimport 'package:flutter/widgets.dart';\nimport 'package:mighty_plug_manager/bluetooth/devices/commu"
},
{
"path": "lib/bluetooth/devices/NuxReorderableDevice.dart",
"chars": 1346,
"preview": "import 'package:mighty_plug_manager/bluetooth/devices/NuxDevice.dart';\n\nimport 'NuxFXID.dart';\nimport 'effects/Processor"
},
{
"path": "lib/bluetooth/devices/communication/communication.dart",
"chars": 3902,
"preview": "import 'package:flutter/widgets.dart';\n\nimport '../NuxConstants.dart';\nimport '../NuxDevice.dart';\n\nabstract class Devic"
},
{
"path": "lib/bluetooth/devices/communication/liteCommunication.dart",
"chars": 7614,
"preview": "import 'package:mighty_plug_manager/bluetooth/devices/NuxDevice.dart';\n\nimport '../NuxConstants.dart';\nimport 'communica"
},
{
"path": "lib/bluetooth/devices/communication/liteMk2Communication.dart",
"chars": 1177,
"preview": "import 'package:mighty_plug_manager/bluetooth/devices/communication/plugProCommunication.dart';\nimport '../NuxDevice.dar"
},
{
"path": "lib/bluetooth/devices/communication/plugAirCommunication.dart",
"chars": 7703,
"preview": "import '../NuxMightyPlugAir.dart';\nimport '../../../platform/simpleSharedPrefs.dart';\nimport '../NuxDevice.dart';\nimport"
},
{
"path": "lib/bluetooth/devices/communication/plugProCommunication.dart",
"chars": 29781,
"preview": "import 'dart:async';\nimport 'dart:convert';\n\nimport 'package:flutter/foundation.dart';\n\nimport '../NuxDevice.dart';\nimpo"
},
{
"path": "lib/bluetooth/devices/device_data/drumstyles.dart",
"chars": 5886,
"preview": "class DrumStyles {\n static const List<String> drumStyles8BT = [\n \"Metronome\",\n \"Pop\",\n \"Metal\",\n \"Blues\",\n "
},
{
"path": "lib/bluetooth/devices/device_data/processors_list.dart",
"chars": 8108,
"preview": "import 'package:flutter/material.dart';\n\nimport '../../../UI/mightierIcons.dart';\nimport '../NuxFXID.dart';\nimport '../e"
},
{
"path": "lib/bluetooth/devices/effects/MidiControllerHandles.dart",
"chars": 9671,
"preview": "enum ControllerHandleId {\n unknown,\n gateOff,\n gateOn,\n gateToggle,\n gatePrev,\n gateNext,\n compOff,\n compOn,\n c"
}
]
// ... and 360 more files (download for full content)
About this extraction
This page contains the full source code of the tuntorius/mightier_amp GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 560 files (3.5 MB), approximately 942.9k tokens, and a symbol index with 8021 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.