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 |