├── linux ├── .gitignore └── runner │ ├── main.cc │ ├── my_application.h │ └── CMakeLists.txt ├── assets ├── icons │ ├── note_editor │ │ ├── note_color.svg │ │ ├── portamento.svg │ │ └── slide.svg │ ├── arranger │ │ ├── clip │ │ │ ├── audio.svg │ │ │ ├── automations.svg │ │ │ ├── note.svg │ │ │ └── hybrid.svg │ │ └── focus.svg │ ├── off.svg │ ├── icon │ │ ├── record.svg │ │ ├── stop.svg │ │ ├── arranger_timeline.svg │ │ ├── io_routing.svg │ │ ├── midi.svg │ │ ├── track_group_menu.svg │ │ ├── clip_launcher.svg │ │ ├── large_track_height.svg │ │ ├── show_automation_editor.svg │ │ ├── show_mixer.svg │ │ ├── show_fx_track.svg │ │ ├── automation_lanes.svg │ │ ├── show_detail_editor.svg │ │ ├── play.svg │ │ ├── arrow_down.svg │ │ ├── arrow_up.svg │ │ ├── modulators.svg │ │ ├── arrow_right.svg │ │ ├── loop.svg │ │ ├── shuffle.svg │ │ ├── sound_on.svg │ │ ├── cursor_pointer.svg │ │ ├── sound_off.svg │ │ ├── show_deactivated_tracks.svg │ │ ├── add.svg │ │ ├── expanded_device.svg │ │ ├── show_device_panel.svg │ │ ├── folder.svg │ │ └── random.svg │ ├── main_toolbar │ │ ├── record.svg │ │ ├── stop.svg │ │ ├── play_small.svg │ │ ├── punch_in.svg │ │ ├── punch_out.svg │ │ ├── play.svg │ │ └── typing_keyboard_to_piano_keyboard.svg │ ├── misc │ │ ├── dropdown_arrow___angle.svg │ │ ├── dropdown_arrow___angle_big.svg │ │ ├── hamburgner.svg │ │ └── dropdown_arrow___down.svg │ ├── small │ │ ├── dropdown_arrow.svg │ │ ├── dropdown_arrow_right.svg │ │ ├── minimize.svg │ │ ├── maximize.svg │ │ ├── check.svg │ │ ├── restore_down.svg │ │ └── add.svg │ ├── placeholder_16px.svg │ ├── on.svg │ ├── instrument_and_effect_rack │ │ ├── triangle.svg │ │ ├── pulse.svg │ │ ├── sine.svg │ │ └── arpeggio_off.svg │ ├── tools │ │ └── cut.svg │ ├── 12px_9.svg │ ├── plus.svg │ ├── wave.svg │ ├── automation_editor │ │ ├── midi_keyboard.svg │ │ ├── target_links.svg │ │ ├── slide_succeeding_points.svg │ │ └── midi_keyboard_smaller.svg │ ├── mixer │ │ ├── stereo_properties.svg │ │ └── track_inspector.svg │ ├── channel_rack │ │ ├── loop_editor.svg │ │ └── interactive_step_sequencer.svg │ ├── options │ │ ├── blend_recording.svg │ │ └── metronome.svg │ ├── bottom_bar │ │ └── instruments_effects_panel.svg │ └── mute.svg ├── anthem-icon.afdesign ├── fonts │ └── RobotoMono.ttf └── icons_old │ ├── main_toolbar │ ├── record.svg │ ├── stop.svg │ ├── play.svg │ ├── repeat.svg │ ├── multilink_to_controllers.svg │ ├── punch_in.svg │ └── punch_out.svg │ ├── scrollbar │ ├── clip_size.svg │ ├── add.svg │ ├── scrollbar_v.svg │ ├── scrollbar_h.svg │ ├── arrow_down.svg │ ├── arrow_left.svg │ ├── arrow_up.svg │ └── arrow_right.svg │ ├── instrument_and_effect_rack │ ├── triangle.svg │ ├── pulse.svg │ ├── sine.svg │ ├── arpeggio_down.svg │ ├── arpeggio_up.svg │ ├── arpeggio_off.svg │ ├── arpeggio_up_down.svg │ ├── arpeggio_random.svg │ └── arpeggio_sticky.svg │ ├── note_editor │ ├── portamento.svg │ ├── slide.svg │ ├── control.svg │ └── note_color.svg │ ├── mixer │ ├── latency.svg │ ├── input.svg │ ├── output.svg │ ├── arm_disk_recording.svg │ ├── stereo_properties.svg │ ├── track_inspector.svg │ └── xsend_to.svg │ ├── edit │ ├── redo.svg │ ├── undo.svg │ └── save.svg │ ├── misc │ ├── hamburgner.svg │ ├── dropdown_arrow___angle.svg │ ├── dropdown_arrow___down.svg │ └── dropdown_arrow___angle_big.svg │ ├── arranger │ ├── focus.svg │ └── clip │ │ └── audio.svg │ ├── options │ ├── blend_recording.svg │ ├── wait_for_input_to_start_recording.svg │ └── metronome.svg │ ├── off.svg │ ├── small │ ├── dropdown_arrow.svg │ ├── dropdown_arrow___right.svg │ ├── minimize.svg │ ├── maximize.svg │ └── add.svg │ ├── main │ ├── separator.svg │ └── anthem.svg │ ├── placeholder_16px.svg │ ├── on.svg │ ├── topbar │ └── learn.svg │ ├── controller_rack │ ├── saw_wave.svg │ ├── square_wave.svg │ ├── trinagle_wave.svg │ ├── moog_saw_wave.svg │ ├── exponential_wave.svg │ ├── sine_wave.svg │ └── user_defined_shape.svg │ ├── folder.svg │ ├── automation_editor │ ├── slide_succeeding_points.svg │ ├── midi_keyboard.svg │ └── midi_keyboard_smaller.svg │ ├── device_panel │ ├── lfo.svg │ └── misc.svg │ ├── tools │ └── cut.svg │ ├── audio.svg │ ├── 12px_16.svg │ ├── misc.svg │ ├── wave.svg │ ├── 12px_1.svg │ ├── plus.svg │ ├── channel_rack │ └── interactive_step_sequencer.svg │ ├── 12px_7.svg │ ├── file_locate.svg │ ├── placeholder_15px.svg │ └── bottom_bar │ └── instruments_effects_panel.svg ├── lib ├── widgets │ └── basic │ │ ├── dialog │ │ └── dialog_overlay.dart │ │ ├── scroll │ │ └── scroll_controller_scrollbar.dart │ │ └── tree_view │ │ └── tree_item_indent.dart ├── web_init_stub.dart ├── helpers │ ├── id.dart │ ├── constants.dart │ ├── window_utils_none.dart │ ├── window_utils_desktop.dart │ ├── window_utils.dart │ ├── window_utils_web.dart │ └── measure_text.dart ├── engine_api │ └── engine_connector.dart └── model │ └── store.dart ├── macos ├── Runner │ ├── Configs │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ ├── Warnings.xcconfig │ │ └── AppInfo.xcconfig │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── app_icon_128.png │ │ │ ├── app_icon_16.png │ │ │ ├── app_icon_256.png │ │ │ ├── app_icon_32.png │ │ │ ├── app_icon_512.png │ │ │ ├── app_icon_64.png │ │ │ └── app_icon_1024.png │ ├── Release.entitlements │ ├── AppDelegate.swift │ ├── MainFlutterWindow.swift │ ├── DebugProfile.entitlements │ └── Info.plist ├── .gitignore ├── Flutter │ ├── Flutter-Debug.xcconfig │ └── Flutter-Release.xcconfig ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Runner.xcodeproj │ └── project.xcworkspace │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── RunnerTests │ └── RunnerTests.swift ├── windows ├── runner │ ├── resources │ │ └── app_icon.ico │ ├── resource.h │ ├── runner.exe.manifest │ ├── utils.h │ └── flutter_window.h └── .gitignore ├── codegen ├── analysis_options.yaml ├── pubspec.yaml ├── lib │ ├── include.dart │ └── generators │ │ └── util │ │ └── enum_info.dart └── build.yaml ├── web_dev_config.yaml ├── analysis_options.yaml ├── .gitmodules ├── engine ├── include │ └── CMakeLists.txt └── src │ ├── modules │ ├── command_handlers │ │ ├── sequencer_command_handler.h │ │ ├── visualization_command_handler.h │ │ ├── processing_graph_command_handler.h │ │ └── model_sync_command_handler.h │ ├── util │ │ └── id_generator.cpp │ └── processing_graph │ │ └── compiler │ │ ├── anthem_graph_compilation_result.cpp │ │ └── actions │ │ ├── anthem_graph_compiler_action.h │ │ └── process_node_action.cpp │ └── console_logger.h ├── web ├── _headers ├── icons │ └── logo.svg └── manifest.json ├── scripts └── misc │ └── normalize_icon_names.ps1 ├── bin └── util │ └── misc.dart ├── .vscode ├── c_cpp_properties.json └── launch.json └── test └── widget_test.dart /linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /assets/icons/note_editor/note_color.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/widgets/basic/dialog/dialog_overlay.dart: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/anthem-icon.afdesign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/assets/anthem-icon.afdesign -------------------------------------------------------------------------------- /assets/fonts/RobotoMono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/assets/fonts/RobotoMono.ttf -------------------------------------------------------------------------------- /macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /windows/runner/resources/app_icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/windows/runner/resources/app_icon.ico -------------------------------------------------------------------------------- /codegen/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | linter: 4 | rules: 5 | prefer_single_quotes: true 6 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/anthem-audio/anthem/HEAD/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /assets/icons_old/main_toolbar/record.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/scrollbar/clip_size.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/main_toolbar/stop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /linux/runner/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /assets/icons_old/instrument_and_effect_rack/triangle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/instrument_and_effect_rack/pulse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /web_dev_config.yaml: -------------------------------------------------------------------------------- 1 | server: 2 | headers: 3 | - name: Cross-Origin-Opener-Policy 4 | value: same-origin 5 | - name: Cross-Origin-Embedder-Policy 6 | value: require-corp 7 | - name: Cross-Origin-Resource-Policy 8 | value: same-origin 9 | -------------------------------------------------------------------------------- /assets/icons_old/note_editor/portamento.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | analyzer: 4 | language: 5 | strict-inference: true 6 | strict-raw-types: true 7 | 8 | linter: 9 | rules: 10 | prefer_single_quotes: true 11 | unnecessary_statements: true 12 | -------------------------------------------------------------------------------- /assets/icons/arranger/clip/audio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/instrument_and_effect_rack/sine.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/scrollbar/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/icons_old/scrollbar/scrollbar_v.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/icons_old/note_editor/slide.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/scrollbar/scrollbar_h.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/icons_old/mixer/latency.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /assets/icons_old/edit/redo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/icons_old/edit/undo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /assets/icons_old/misc/hamburgner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /macos/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-write 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /windows/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | 3 | # Visual Studio user-specific files. 4 | *.suo 5 | *.user 6 | *.userosscache 7 | *.sln.docstates 8 | 9 | # Visual Studio build-related files. 10 | x64/ 11 | x86/ 12 | 13 | # Visual Studio cache files 14 | # files ending in .cache can be ignored 15 | *.[Cc]ache 16 | # but keep track of directories ending in .cache 17 | !*.[Cc]ache/ 18 | -------------------------------------------------------------------------------- /macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @main 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | 10 | override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { 11 | return true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "engine/include/JUCE"] 2 | path = engine/include/JUCE 3 | url = https://github.com/anthem-audio/juce-with-wasm-subset.git 4 | [submodule "engine/include/reflect-cpp"] 5 | path = engine/include/reflect-cpp 6 | url = https://github.com/getml/reflect-cpp.git 7 | [submodule "engine/include/brickworks"] 8 | path = engine/include/brickworks 9 | url = https://github.com/Orastron/brickworks.git 10 | -------------------------------------------------------------------------------- /engine/include/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # reflect-cpp 2 | 3 | add_subdirectory(reflect-cpp) 4 | target_compile_options(reflectcpp PRIVATE) 5 | 6 | # Brickworks 7 | 8 | add_library(brickworks_headers INTERFACE) 9 | 10 | target_include_directories(brickworks_headers 11 | SYSTEM 12 | INTERFACE 13 | ${CMAKE_CURRENT_SOURCE_DIR}/brickworks/include 14 | ) 15 | 16 | add_library(brickworks::brickworks ALIAS brickworks_headers) 17 | -------------------------------------------------------------------------------- /web/_headers: -------------------------------------------------------------------------------- 1 | # This is a _headers file for CloudFlare Pages. This applies response headers 2 | # that are needed to run the the audio engine, as well as to prevent Flutter 3 | # from falling back to the slower non-WASM build on browsers that support the 4 | # faster one. 5 | 6 | /* 7 | Cross-Origin-Opener-Policy: same-origin 8 | Cross-Origin-Embedder-Policy: require-corp 9 | Cross-Origin-Resource-Policy: same-Origin 10 | -------------------------------------------------------------------------------- /assets/icons_old/arranger/focus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/icons_old/note_editor/control.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /linux/runner/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | com.apple.security.files.user-selected.read-write 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /windows/runner/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Runner.rc 4 | // 5 | #define IDI_APP_ICON 101 6 | 7 | // Next default values for new objects 8 | // 9 | #ifdef APSTUDIO_INVOKED 10 | #ifndef APSTUDIO_READONLY_SYMBOLS 11 | #define _APS_NEXT_RESOURCE_VALUE 102 12 | #define _APS_NEXT_COMMAND_VALUE 40001 13 | #define _APS_NEXT_CONTROL_VALUE 1001 14 | #define _APS_NEXT_SYMED_VALUE 101 15 | #endif 16 | #endif 17 | -------------------------------------------------------------------------------- /assets/icons_old/scrollbar/arrow_down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/scrollbar/arrow_left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/scrollbar/arrow_up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /web/icons/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Anthem", 3 | "short_name": "Anthem", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#3D3D3D", 7 | "theme_color": "#25C29D", 8 | "description": "An open-source digital audio workstation", 9 | "orientation": "landscape-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/logo.svg", 14 | "sizes": "192x192 512x512", 15 | "type": "image/svg" 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /assets/icons_old/scrollbar/arrow_right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/options/blend_recording.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /assets/icons_old/main_toolbar/play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /windows/runner/runner.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PerMonitorV2 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /assets/icons_old/options/wait_for_input_to_start_recording.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = Anthem 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.anthem 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright (C) 2021 - 2025 Anthem authors. Code licensed under the GNU General Public License version 3. 15 | -------------------------------------------------------------------------------- /scripts/misc/normalize_icon_names.ps1: -------------------------------------------------------------------------------- 1 | $WorkingDirectory = Convert-Path . 2 | 3 | if (-not(Test-Path ($WorkingDirectory + "\pubspec.yaml"))) { 4 | Write-Error "This script must be run from the project root." 5 | Exit 6 | } 7 | 8 | Get-ChildItem -Path .\assets\icons -Recurse | 9 | % { 10 | if ($_.Name -cne $_.Name.ToLower().Replace("-", "_").Replace(" ", "_") ) { 11 | # https://til.secretgeek.net/powershell/Rename_to_lower_case.html 12 | $NewName = $_.Name.ToLower().Replace("-", "_").Replace(" ", "_") 13 | 14 | $TempItem = Rename-Item -Path $_.FullName -NewName "x$NewName" -PassThru 15 | 16 | Rename-Item -Path $TempItem.FullName -NewName $NewName 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /assets/icons/arranger/clip/automations.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/edit/save.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /codegen/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: anthem_codegen 2 | description: Code generation for Anthem 3 | publish_to: 'none' 4 | version: 0.0.1 5 | 6 | environment: 7 | sdk: ">=3.10.0 <4.0.0" 8 | 9 | dependencies: 10 | analyzer: ^8.2.0 11 | build: ^4.0.1 12 | source_gen: ^4.0.1 13 | flutter_test: 14 | sdk: flutter 15 | mobx: ^2.5.0 16 | collection: ^1.19.1 17 | dev_dependencies: 18 | build_runner: ^2.6.0 19 | flutter_lints: ^6.0.0 20 | 21 | # We don't use this, but the parent Anthem pubspec does, and it has prevented 22 | # us from upgrading packages in the past. This allows us to run `flutter pub 23 | # upgrade --major-versions` here without getting package versions that are 24 | # incompatible with the parent. 25 | mobx_codegen: ^2.7.2 26 | -------------------------------------------------------------------------------- /windows/runner/utils.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_UTILS_H_ 2 | #define RUNNER_UTILS_H_ 3 | 4 | #include 5 | #include 6 | 7 | // Creates a console for the process, and redirects stdout and stderr to 8 | // it for both the runner and the Flutter library. 9 | void CreateAndAttachConsole(); 10 | 11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string 12 | // encoded in UTF-8. Returns an empty std::string on failure. 13 | std::string Utf8FromUtf16(const wchar_t* utf16_string); 14 | 15 | // Gets the command line arguments passed in as a std::vector, 16 | // encoded in UTF-8. Returns an empty std::vector on failure. 17 | std::vector GetCommandLineArguments(); 18 | 19 | #endif // RUNNER_UTILS_H_ 20 | -------------------------------------------------------------------------------- /lib/web_init_stub.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | void webInit() {} 21 | -------------------------------------------------------------------------------- /lib/widgets/basic/scroll/scroll_controller_scrollbar.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2021 - 2022 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | -------------------------------------------------------------------------------- /assets/icons_old/mixer/input.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/icons_old/mixer/output.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /assets/icons_old/options/metronome.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons_old/main_toolbar/repeat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /lib/helpers/id.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2022 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | import 'package:nanoid/nanoid.dart'; 21 | 22 | typedef Id = String; 23 | 24 | Id getId() { 25 | return nanoid(14); 26 | } 27 | -------------------------------------------------------------------------------- /lib/widgets/basic/tree_view/tree_item_indent.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2021 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | class TreeItemIndent { 21 | final double indent; 22 | 23 | TreeItemIndent({required this.indent}); 24 | } 25 | -------------------------------------------------------------------------------- /codegen/lib/include.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | export 'include/annotations.dart'; 21 | export 'include/collections.dart'; 22 | export 'include/model_base_mixin.dart'; 23 | export 'include/model_filter_builder.dart'; 24 | -------------------------------------------------------------------------------- /engine/src/modules/command_handlers/sequencer_command_handler.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "messages/messages.h" 23 | 24 | std::optional handleSequencerCommand(Request& request); 25 | -------------------------------------------------------------------------------- /lib/helpers/constants.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2022 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | import 'package:flutter/animation.dart'; 21 | 22 | const defaultAnimationDuration = Duration(milliseconds: 250); 23 | const defaultAnimationCurve = Curves.easeOutExpo; 24 | -------------------------------------------------------------------------------- /assets/icons/off.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /lib/engine_api/engine_connector.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | export 'engine_connector_none.dart' 21 | if (dart.library.io) 'engine_connector_desktop.dart' 22 | if (dart.library.js_interop) 'engine_connector_web.dart'; 23 | -------------------------------------------------------------------------------- /assets/icons/arranger/clip/note.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/icon/record.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/main_toolbar/record.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/misc/dropdown_arrow___angle.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/small/dropdown_arrow.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/off.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/stop.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/misc/dropdown_arrow___angle_big.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/small/dropdown_arrow_right.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/misc/dropdown_arrow___angle.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/misc/dropdown_arrow___down.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/small/dropdown_arrow.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/main_toolbar/stop.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/placeholder_16px.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/small/minimize.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/small/maximize.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/mixer/arm_disk_recording.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/small/dropdown_arrow___right.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /engine/src/modules/command_handlers/visualization_command_handler.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include "messages/messages.h" 24 | 25 | std::optional handleVisualizationCommand(Request& request); 26 | -------------------------------------------------------------------------------- /assets/icons_old/main/separator.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/placeholder_16px.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/small/minimize.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /engine/src/modules/util/id_generator.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2024 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | #include "id_generator.h" 21 | 22 | std::atomic counter(0); 23 | 24 | uint64_t GlobalIDGenerator::generateID() { 25 | return counter.fetch_add(1, std::memory_order_relaxed); 26 | } 27 | -------------------------------------------------------------------------------- /assets/icons_old/small/maximize.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /lib/helpers/window_utils_none.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | import 'dart:ui'; 21 | 22 | Future getWindowPosition() async { 23 | throw UnimplementedError(); 24 | } 25 | 26 | Future getWindowSize() async { 27 | throw UnimplementedError(); 28 | } 29 | -------------------------------------------------------------------------------- /assets/icons/on.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons_old/misc/dropdown_arrow___angle_big.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /lib/model/store.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2021 - 2023 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | import 'package:anthem/model/app.dart'; 21 | 22 | class AnthemStore { 23 | static AppModel? _instance; 24 | static AppModel get instance { 25 | _instance ??= AppModel(); 26 | return _instance!; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /assets/icons/instrument_and_effect_rack/triangle.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/main_toolbar/play_small.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/small/check.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/on.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /engine/src/modules/command_handlers/processing_graph_command_handler.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2024 - 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "modules/core/anthem.h" 23 | 24 | #include "messages/messages.h" 25 | 26 | std::optional handleProcessingGraphCommand(Request& request); 27 | -------------------------------------------------------------------------------- /assets/icons/icon/arranger_timeline.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/instrument_and_effect_rack/pulse.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/instrument_and_effect_rack/arpeggio_down.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/instrument_and_effect_rack/arpeggio_up.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/main/anthem.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/topbar/learn.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons/icon/io_routing.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/tools/cut.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/controller_rack/saw_wave.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/folder.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/automation_editor/slide_succeeding_points.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/12px_9.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/midi.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/plus.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons_old/controller_rack/square_wave.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/controller_rack/trinagle_wave.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/device_panel/lfo.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/tools/cut.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /bin/util/misc.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | import 'dart:io'; 21 | 22 | Uri getPackageRootPath() { 23 | final scriptPath = Platform.script; 24 | return Uri.directory( 25 | (Platform.isWindows ? '' : '/') + 26 | scriptPath.pathSegments.takeWhile((s) => s != '.dart_tool').join('/'), 27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /engine/src/modules/processing_graph/compiler/anthem_graph_compilation_result.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | #include "anthem_graph_compilation_result.h" 21 | 22 | void AnthemGraphCompilationResult::cleanup() { 23 | for (auto& processContext : processContexts) { 24 | processContext->cleanup(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/icons/icon/track_group_menu.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/wave.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/main_toolbar/multilink_to_controllers.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons/arranger/clip/hybrid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/icons_old/audio.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "Win32", 5 | "includePath": [ 6 | "${workspaceFolder}/engine/src", 7 | "${workspaceFolder}/engine/src/modules", 8 | "${workspaceFolder}/engine/src/generated", 9 | "${workspaceFolder}/engine/src/generated/lib/engine_api", 10 | 11 | "${workspaceFolder}/engine/include/JUCE", 12 | "${workspaceFolder}/engine/include", 13 | "${workspaceFolder}/engine/include/reflect-cpp", 14 | 15 | "${default}" 16 | ], 17 | "defines": [ 18 | "_DEBUG", 19 | "UNICODE", 20 | "_UNICODE" 21 | ], 22 | "windowsSdkVersion": "10.0.22000.0", 23 | "compilerPath": "cl.exe", 24 | "cStandard": "c17", 25 | "cppStandard": "c++17", 26 | "intelliSenseMode": "windows-msvc-x64" 27 | } 28 | ], 29 | "version": 4 30 | } -------------------------------------------------------------------------------- /assets/icons/automation_editor/midi_keyboard.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/mixer/stereo_properties.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons_old/12px_16.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/main_toolbar/punch_in.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/main_toolbar/punch_out.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/misc.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons_old/wave.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /engine/src/console_logger.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2024 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | class ConsoleLogger : public juce::Logger { 26 | public: 27 | void logMessage (const juce::String& message) override { 28 | std::cout << message << std::endl; 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /engine/src/modules/command_handlers/model_sync_command_handler.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2023 - 2024 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "plugin_window.h" 23 | #include "modules/core/anthem.h" 24 | #include 25 | 26 | #include "messages/messages.h" 27 | 28 | std::optional handleModelSyncCommand(Request& request); 29 | -------------------------------------------------------------------------------- /assets/icons_old/arranger/clip/audio.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/clip_launcher.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/mixer/stereo_properties.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons/icon/large_track_height.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/show_automation_editor.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons_old/controller_rack/moog_saw_wave.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/device_panel/misc.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons_old/12px_1.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/plus.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons/automation_editor/target_links.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/show_mixer.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/instrument_and_effect_rack/sine.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/note_editor/note_color.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /lib/helpers/window_utils_desktop.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | import 'dart:ui'; 21 | 22 | import 'package:window_manager/window_manager.dart'; 23 | 24 | Future getWindowPosition() async { 25 | return await windowManager.getPosition(); 26 | } 27 | 28 | Future getWindowSize() async { 29 | return await windowManager.getSize(); 30 | } 31 | -------------------------------------------------------------------------------- /assets/icons/channel_rack/loop_editor.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons/icon/show_fx_track.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/instrument_and_effect_rack/arpeggio_off.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons/icon/automation_lanes.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons/main_toolbar/punch_in.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /windows/runner/flutter_window.h: -------------------------------------------------------------------------------- 1 | #ifndef RUNNER_FLUTTER_WINDOW_H_ 2 | #define RUNNER_FLUTTER_WINDOW_H_ 3 | 4 | #include 5 | #include 6 | 7 | #include 8 | 9 | #include "win32_window.h" 10 | 11 | // A window that does nothing but host a Flutter view. 12 | class FlutterWindow : public Win32Window { 13 | public: 14 | // Creates a new FlutterWindow hosting a Flutter view running |project|. 15 | explicit FlutterWindow(const flutter::DartProject& project); 16 | virtual ~FlutterWindow(); 17 | 18 | protected: 19 | // Win32Window: 20 | bool OnCreate() override; 21 | void OnDestroy() override; 22 | LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, 23 | LPARAM const lparam) noexcept override; 24 | 25 | private: 26 | // The project to run. 27 | flutter::DartProject project_; 28 | 29 | // The Flutter instance hosted by this window. 30 | std::unique_ptr flutter_controller_; 31 | }; 32 | 33 | #endif // RUNNER_FLUTTER_WINDOW_H_ 34 | -------------------------------------------------------------------------------- /assets/icons/main_toolbar/punch_out.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/mixer/track_inspector.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/instrument_and_effect_rack/arpeggio_off.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /linux/runner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.13) 2 | project(runner LANGUAGES CXX) 3 | 4 | # Define the application target. To change its name, change BINARY_NAME in the 5 | # top-level CMakeLists.txt, not the value here, or `flutter run` will no longer 6 | # work. 7 | # 8 | # Any new source files that you add to the application should be added here. 9 | add_executable(${BINARY_NAME} 10 | "main.cc" 11 | "my_application.cc" 12 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" 13 | ) 14 | 15 | # Apply the standard set of build settings. This can be removed for applications 16 | # that need different build settings. 17 | apply_standard_settings(${BINARY_NAME}) 18 | 19 | # Add preprocessor definitions for the application ID. 20 | add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") 21 | 22 | # Add dependency libraries. Add any application-specific dependencies here. 23 | target_link_libraries(${BINARY_NAME} PRIVATE flutter) 24 | target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) 25 | 26 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") 27 | -------------------------------------------------------------------------------- /assets/icons/icon/show_detail_editor.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/options/blend_recording.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons_old/controller_rack/exponential_wave.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/instrument_and_effect_rack/arpeggio_up_down.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons_old/mixer/track_inspector.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "anthem", 9 | "request": "launch", 10 | "type": "dart" 11 | }, 12 | { 13 | "name": "anthem (profile mode)", 14 | "request": "launch", 15 | "type": "dart", 16 | "flutterMode": "profile" 17 | }, 18 | { 19 | "name": "anthem (release mode)", 20 | "request": "launch", 21 | "type": "dart", 22 | "flutterMode": "release" 23 | }, 24 | { 25 | "name": "(Windows) Launch Engine", 26 | "type": "cppvsdbg", 27 | "request": "launch", 28 | "program": "${workspaceFolder}/engine/build/AnthemEngine_artefacts/Debug/AnthemEngine.exe", 29 | "args": ["-4WDaIANDw0v9d"], 30 | "stopAtEntry": false, 31 | "cwd": "${fileDirname}", 32 | "environment": [], 33 | "console": "externalTerminal" 34 | } 35 | ] 36 | } -------------------------------------------------------------------------------- /assets/icons/icon/play.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/main_toolbar/play.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /lib/helpers/window_utils.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | // This file implements platform-agnostic window utilities. For desktop, it uses 21 | // window_manager, and for web it stubs in reasonable values using package:web. 22 | 23 | export 'window_utils_none.dart' 24 | if (dart.library.io) 'window_utils_desktop.dart' 25 | if (dart.library.js_interop) 'window_utils_web.dart'; 26 | -------------------------------------------------------------------------------- /lib/helpers/window_utils_web.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2025 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | import 'dart:ui'; 21 | 22 | import 'package:web/web.dart'; 23 | 24 | Future getWindowPosition() async { 25 | return Offset.zero; 26 | } 27 | 28 | Future getWindowSize() async { 29 | final bodySize = document.body?.getBoundingClientRect(); 30 | return Size(bodySize?.width ?? 0, bodySize?.height ?? 0); 31 | } 32 | -------------------------------------------------------------------------------- /assets/icons/icon/arrow_down.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/arrow_up.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/modulators.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/misc/hamburgner.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons_old/controller_rack/sine_wave.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/arrow_right.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/note_editor/portamento.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/loop.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/misc/dropdown_arrow___down.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/instrument_and_effect_rack/arpeggio_random.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons_old/channel_rack/interactive_step_sequencer.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /codegen/lib/generators/util/enum_info.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2024 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | import 'package:analyzer/dart/element/element.dart'; 21 | 22 | /// This class contains info about a given enum. 23 | class EnumInfo { 24 | final String name; 25 | final List values; 26 | 27 | EnumInfo(EnumElement element) 28 | : name = element.name!, 29 | values = element.fields.map((field) => field.name!).toList(); 30 | } 31 | -------------------------------------------------------------------------------- /codegen/build.yaml: -------------------------------------------------------------------------------- 1 | targets: 2 | $default: 3 | builders: 4 | anthem_codegen:anthemDartModelGeneratorBuilder: 5 | generate_for: 6 | - test/* 7 | - test/**/* 8 | 9 | builders: 10 | anthemDartModelGeneratorBuilder: 11 | target: ':anthem_model_generator' 12 | import: 'package:anthem_codegen/codegen.dart' 13 | builder_factories: ['anthemDartModelGeneratorBuilder'] 14 | build_extensions: {'.dart': ['.anthem_model_generator.g.part']} 15 | auto_apply: dependents 16 | build_to: source 17 | applies_builders: ['source_gen:combining_builder'] 18 | cppModelBuilder: 19 | import: 'package:anthem_codegen/codegen.dart' 20 | builder_factories: ['cppModelBuilder'] 21 | build_extensions: { 22 | ".dart": [".h", ".cpp"], 23 | } 24 | build_to: source 25 | auto_apply: dependents 26 | debugEnginePathGeneratorBuilder: 27 | import: 'package:anthem_codegen/codegen.dart' 28 | builder_factories: ['debugEnginePathGeneratorBuilder'] 29 | build_extensions: { 30 | ".dart": [".debug_engine_path.g.dart"], 31 | } 32 | build_to: source 33 | auto_apply: dependents 34 | -------------------------------------------------------------------------------- /assets/icons/icon/shuffle.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons/icon/sound_on.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons/small/restore_down.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /engine/src/modules/processing_graph/compiler/actions/anthem_graph_compiler_action.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2024 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | class AnthemGraphCompilerAction { 25 | private: 26 | JUCE_LEAK_DETECTOR(AnthemGraphCompilerAction) 27 | public: 28 | virtual void execute(int numSamples) = 0; 29 | virtual void debugPrint() = 0; 30 | virtual ~AnthemGraphCompilerAction() = default; 31 | }; 32 | -------------------------------------------------------------------------------- /assets/icons/automation_editor/slide_succeeding_points.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/cursor_pointer.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/options/metronome.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons_old/12px_7.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons/automation_editor/midi_keyboard_smaller.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /assets/icons/icon/sound_off.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /assets/icons_old/automation_editor/midi_keyboard.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /assets/icons_old/automation_editor/midi_keyboard_smaller.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /engine/src/modules/processing_graph/compiler/actions/process_node_action.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2024 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | #include "process_node_action.h" 21 | 22 | #include 23 | 24 | void ProcessNodeAction::execute(int numSamples) { 25 | this->processor->process(*this->context, numSamples); 26 | } 27 | 28 | void ProcessNodeAction::debugPrint() { 29 | std::cout << "ProcessNodeAction for node with ID: " << this->context->getGraphNode()->id() << std::endl; 30 | } 31 | -------------------------------------------------------------------------------- /assets/icons/note_editor/slide.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/show_deactivated_tracks.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/main_toolbar/typing_keyboard_to_piano_keyboard.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /macos/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | $(PRODUCT_COPYRIGHT) 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /assets/icons/small/add.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/arranger/focus.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /assets/icons/icon/add.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/expanded_device.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/file_locate.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /assets/icons/bottom_bar/instruments_effects_panel.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons/icon/show_device_panel.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/small/add.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/placeholder_15px.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons_old/bottom_bar/instruments_effects_panel.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons/channel_rack/interactive_step_sequencer.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility in the flutter_test package. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | // import 'package:flutter/material.dart'; 9 | // import 'package:flutter_test/flutter_test.dart'; 10 | 11 | // import 'package:anthem/main.dart'; 12 | 13 | void main() { 14 | // testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // // Build our app and trigger a frame. 16 | // await tester.pumpWidget(const MyApp()); 17 | 18 | // // Verify that our counter starts at 0. 19 | // expect(find.text('0'), findsOneWidget); 20 | // expect(find.text('1'), findsNothing); 21 | 22 | // // Tap the '+' icon and trigger a frame. 23 | // await tester.tap(find.byIcon(Icons.add)); 24 | // await tester.pump(); 25 | 26 | // // Verify that our counter has incremented. 27 | // expect(find.text('0'), findsNothing); 28 | // expect(find.text('1'), findsOneWidget); 29 | // }); 30 | } 31 | -------------------------------------------------------------------------------- /assets/icons_old/instrument_and_effect_rack/arpeggio_sticky.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /assets/icons/icon/folder.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/icon/random.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /lib/helpers/measure_text.dart: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (C) 2021, 2024 Joshua Wade 3 | 4 | This file is part of Anthem. 5 | 6 | Anthem is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 3 of the License, or 9 | (at your option) any later version. 10 | 11 | Anthem is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Anthem. If not, see . 18 | */ 19 | 20 | import 'package:flutter/widgets.dart'; 21 | 22 | Size measureText({ 23 | required String text, 24 | required TextStyle textStyle, 25 | required BuildContext context, 26 | }) { 27 | final textPainter = TextPainter( 28 | text: TextSpan(text: text, style: textStyle), 29 | maxLines: 1, 30 | textScaler: MediaQuery.of(context).textScaler, 31 | textDirection: TextDirection.ltr, 32 | )..layout(); 33 | 34 | return textPainter.size; 35 | } 36 | -------------------------------------------------------------------------------- /assets/icons_old/mixer/xsend_to.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /assets/icons_old/controller_rack/user_defined_shape.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /assets/icons/mute.svg: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 24 | --------------------------------------------------------------------------------