Skip to content

Project structure

The following hierarchy shows the file structure, noting files of interest.

.
├─ art/ # Photoshop and Blender 3D files
├─ doc/ # Resources for .adoc files
├─ src/
│  └─ main/
│     └─ java/.../midi # Java classes copied from JDK for multiplatform support
│     └─ kotlin/.../   # Main source code location
│        └─ datastructure/       # Data structure classes
│        └─ gui/                 # Declaration and logic of UI and ViewModels
│        └─ instrument/          # Instrument-specific logic
│        └─ midi/                # Classes and processes for parsing and processing MIDI files, and MIDISearch
│        └─ particle/            # Particle effects
│        └─ starter/             # Classes for configuration and JME entrypoint
│        └─ util/                # Utilities
│        └─ world/               # Categories various scene operations into controllers
│        └─ DesktopMidis2jam2.kt # JME AppState
│        └─ Main.kt              # Entrypoint to entire application, starts MP app
│        └─ Midis2jam2.kt        # Abstraction to keep javax packages in DesktopMidis2jam2, for multiplatform support
│     └─ resources/    # Images, textures, models, etc.
│        └─ Assets/              # 3D models and textures
│        └─ i18n/                # Localized strings for UI
│        └─ ico/                 # Icons
│        └─ instrument/          # JSON data for instrument-specific parameters
└─ mkdocs.yml

The following is a list of locations where significant actions take place.

Action Location
Instrument assignment (mapping GM patch numbers to classes) src/main/kotlin/.../instrument/algorithmic/InstrumentAssignment.kt
Event collection (fetching MIDI events on each frame) src/main/kotlin/.../instrument/algorithmic/EventCollector.kt
MIDI file event processing src/main/kotlin/.../midi/DesktopMidiFile.kt
MIDISearch indexing and filtering src/main/kotlin/.../midi/search/MidiSearchEngine.kt
JME application execution src/main/kotlin/.../starter/Execution.kt